何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 35970
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

向こうにポストしようかと思ったけど、ずいぶん本文から外れるので、ブログにしてみる。

複数フォームで同じコードを書いてあるのですが。(Insider.NET 会議室)より:

NAL-6295さんの書き込み (2007-06-08 23:45) より:

そういうデータで初期化する、ComboBox を継承したコントロールを作る。

public class MyComboBox : ComboBox
{
    public MyComboBox() : base() {
        this.Items.Add("指定しない");
        this.Items.Add("内容1");
        this.Items.Add("内容2");
        this.DropDownStyle = ComboBoxStyle.DropDownList;
        this.SelectedIndex = 0;
    }
}

これをやっちゃうとデータの種類分だけ作成する必要があって、現実的な解では無いのでは?

そうなんです。今の課題。「データの種類分だけ作るのか?」
以前のプロジェクトでは、データの種類分だけ作ってみました。

基本的に、フレームワークに用意されているコントロールは、かなり汎化されています。そのため、何らかの動作をさせようとすると、コントロールを配置したコンテナ コントロール(たいていの場合は Form)に、コントロールが行う動作をコーディングすることになります。

ここです。コントロールが行う動作をコーディングする。

「顧客マスタ」と「商品マスタ」で、選択された後に行うことは違います。その違いをコンテナ(つまり Form)に書いていくと、結局複数フォームで同じコードを書いてあるのですが、アプリを作成中にこれでいいのかなと悩んでます。という状態になるのではないでしょうか。

しかし、データごとにコントロールを作ると、本当に「ポトリ、ペタリ」で拡張できるようになります。

その代わり、それぞれのコントロールが何をしなければならないのか、しっかり分析/設計しなければなりません。

なぜそうしてみたかというと、仕様変更による修正を局所化できるのです。

最初は、仕様書には「選択できること。」としか書かれていないわけですよ。で、自分で書き込むことができないので DropDownList で実装します。すると、一旦選択した後、「選択していない状態」に戻せないのです。そんなわけで、仕様書が書き換わるのです。「選択できること。また、選択していない状態に戻せること。」というように。

標準の ComboBox をそのまま使っているなら、データが使われているところをすべて探し出して、処理を書き換えなければなりません。

標準の CommoBox を継承したコントロールを使っているなら、拡張コントロールに「未選択状態があり得る」というフラグでも追加して、コントロールが初期化されているところをすべて探し出して、プロパティを変更する必要があります。

データごとに ComboBox を継承したコントロールを使っているなら、このコントロールが初期化されているところのみ探し出して、プロパティを設定するコードを追加すればいいことになります。

私は、VC++ が目指している「部品化」というのは、こういうことなのかなぁ?と思っています。

もちろん、このようにして作った部品は、そのプロジェクトの中だけでしか有効でないものが多くなります。また、コントロールのデータに対する依存性が強すぎると(たとえば、「このデータベースのこのテーブルから持ってくる」とコーディングされていたりすると)、データの変更に弱くなります。この辺は汎化した方が良く、汎化と特化のバランスが微妙ですけど。

だから、先にきちんと設計しなければならないわけで、現在の課題なんです。

投稿日時 : 2007年6月11日 21:54
コメント
  • # re: 部品化をどこまで進めるか?
    Mr.T
    Posted @ 2007/06/12 8:47
    Mr.Tです、こんにちは。
    >しかし、データごとにコントロールを作ると、本当に「ポトリ、ペタリ」で拡張できるようになります。

    今の私も、こういう形でできるような方法をできるだけとっています。
    顧客マスタや、商品マスタ、結局のところそのシステムに特化していなければならないし、顧客データが欲しいのに商品データが出てきては困る...というスタイルをまねっこしてます(^^
    http://www.ailight.jp/blog/kazuk/archive/2006/11/05/13271.aspx
  • # re: 部品化をどこまで進めるか?
    じゃんぬねっと
    Posted @ 2007/06/12 9:02
    たとえば、マスタごとに ComboBox を作成なんて要らないところまで共通化しているにすぎません。

    データの初期化も共通化したいなら、コントロールを作りますが。しかし、どのマスタを表示するという単位で見るならば、プロパティでどのマスタを表示するのかを選べる形式が望ましいでしょう。その都度作るなんて真面目に言ってますかと問いたいです。どれほどの数に及ぶというのでしょう。

    間違いがあるから? 何のためのテスト工程かと言いたいですね。テスト抜きで考えたとして、コントロールの貼り間違え > 安全 > 型を明示化したメソッドの呼び出しの間違い だなんてありえると言うのでしょうか。
  • # re: 部品化をどこまで進めるか?
    NAL-6295
    Posted @ 2007/06/12 10:24
    コントロールとデータは常に分離しておきたいです。
    その代わりコントロールとデータのバインドは、バインドしたいデータ毎に明快なstaticメソッドを持ったクラスを用意するようにしています。(よく見る手ですね。)

    仕様が、ちょっと変わるたびにカスタムコントロールを作り直さなくてはいけないのは、要件の割りに大げさだし、めんどくさいと思ってしまう性質なので。
  • # re: 部品化をどこまで進めるか?
    えムナウ
    Posted @ 2007/06/12 12:11
    マスタごとに ComboBox を作成
    私は初心者にはこちらをお勧めします。

    プロパティでどのマスタを表示するのかを選べる形式
    中級者以上にはどちらもお勧めします。

    データベースにはビジネスロジックが付いてきます。
    どの程度のビジネスロジックかによって専用化したほうがいいか、
    汎用部品でいいかを切り分けるべきだと思います。
  • # 部品化する場合としない場合
    R.Tanaka.Ichiro's Blog
    Posted @ 2007/06/12 17:42
    部品化する場合としない場合
  • # 部品化する場合としない場合
    R.Tanaka.Ichiro's Blog
    Posted @ 2007/06/12 17:44
    部品化する場合としない場合
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/13 7:38
    じゃんぬさんやNAL-6295さんがおっしゃっているのは、データとそれの見せ方まで統合するのか、という理解でいいでしょうか?
    ATLなのかな?IPアドレスを入力するコントロールがあります。サブネットマスクを入力できるサブクラス(コントロール)を作るか、アプリケーション内に判定ロジックを入れるか。
    私はコントロールを作りたいです。今メンテナンスしているアプリケーションでは、0.0.0.0と255.255.255.255しかチェックしていないのです。これが複数のアプリケーションに、複数個あります。
    修正箇所を探すのも大変だし、テストもそれぞれのコントロールに対して行わなければなりません。ひとつのコントロールなら、一ヶ所でテストして、あとはキチンと置き変わっているか、コードレビューで済みます。
    テストが自動化されていれば、そんなに手間じゃないでしょうけど。
  • # re: 部品化をどこまで進めるか?
    通りすがり
    Posted @ 2007/06/13 9:21
    私はじゃんねねっとさんの意見に近いですね。

    例えば、
    ・ビューとしてWindowsアプリ、Webアプリを開発。
    ビジネスロジックとしてWebサービスという構成では
    Jittaさんの方法論では実現ができない。
    ・今はComboBoxだけだとしても、将来同じデータで
    別の見せ方"も"する(例えばListBox)かもしれない。
    (「別の見せ方"も"」なのでComboBox→ListBoxに
    変更すればよいという話でもない。)
    ・選択肢が3つだとして、見せ方がComboBoxから、
     RadioButtonに変わった場合、対応に困ることになる。

    といった例がすぐに浮かびます。
    データに関連したイベントをカスタムコントロール内で
    処理したいというのよくわかりますが、
    カスタムコントロール化をするにしても
    内部のデータ取得部分は別のロジックとして切り出します。

    ただ、やはりカスタムコントロール化は、
    設計が難しく想定外の仕様変更が発生すると
    とたんに破綻するので、業務要件に固有でない部分で
    仕様をまとめるようにしますね。
    例えば、(カスタムコントロールではないけれど)、
    TextBox + Button + Labelで
    コードを入れて名称を表示するパーツ(Buttonは入力補助の呼び出し)をユーザーコントロールで作るといったようなパターン。
  • # re: 部品化をどこまで進めるか?
    えムナウ
    Posted @ 2007/06/13 14:01
    単なるComboBoxをユーザーコントロールにするよりも、
    XxxxComboBoxExを同名のユーザーコントロールにするほうが、
    修正量が少ないでしょうし、アッパーコンパチにしやすいのでは?
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/13 14:40
    なんだか、じゃんぬさん怖いなぁ。。。って、私もこうなんだな。。。


    > その都度作るなんて真面目に言ってますかと問いたいです。
    かなりまじめに言っています。ただし、「汎化と特化のバランスが微妙ですけど。」とも言っています。
     今なら、「マスタ用 ComboBox」とでも言いましょうか。そういうのを作りますね。
    スタイルは DropDownList のみで、「HasBlank」プロパティを持ったもの。true なら、リストの先頭に「未選択」とか「選んでください」とかを追加する。

     あと、書き忘れていますが、分類で親子関係があるものがあります。たとえば、住所の県と市。「東京都 - 右京区」なんて選べないようにしたいですし、そんなリスト、見る気もしません。
    とすると、リストAの選択を変更すると、リストBの選択肢が変わる。
    こいつを、コンテナに書くのではなく、コントロールに書きたいと思っています。
    まぁ、これも汎化できるのですが。。。


     あと、「ポトリ、ペタリ」で拡張できる」も、注意してください。
    「開発できる」とは言っていません。「拡張できる」なのです。

     この辺は、開発体制も関係あるかな、と。
    私が以前いたところ、1プロジェクトの期間が半年以上と、非常に長い。
    また、著作権も、顧客とこちらと両方で持つので、ソースの使い回しがしにくいのです(どちらも、相手の許可を取らないと使えない)。
    そんなわけで、ほとんどのコードは1顧客ごとに使い捨てなので(「俺フレームワーク」はありますけどね)、「その都度作る」ってのは、まじめに言ってますよ。そうしてきたから。
    反対に、今いるところは基本的に1つしかコードはなく、ずっと使い回し。。。
    なので、やはり「その都度作る」というか、データごとに作った方が、後々便利。「後々」ね。


    > 仕様が、ちょっと変わるたびにカスタムコントロールを作り直さなくてはいけない
     考え方の違いだと思います。私は、「そのコントロールだけ直せばよい」と考えます。
  • # re: 部品化をどこまで進めるか?
    R・田中一郎
    Posted @ 2007/06/13 16:38
    >なんだか、じゃんぬさん怖いなぁ。。。って、私もこうなんだな。。。
    >> その都度作るなんて真面目に言ってますかと問いたいです。

    話の腰を折って悪いのですが、僕は、この表現は行き過ぎだと思っています。
    方法論を議論している場で、相手の発言姿勢を疑うような表現は控えるべきではないでしょうか?
  • # re: 部品化する場合としない場合
    R.Tanaka.Ichiro's Blog
    Posted @ 2007/06/13 16:45
    re: 部品化する場合としない場合
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/13 20:54
    > 僕は、この表現は行き過ぎだと思っています。
    えっと、ごめんなさい。どっちのどの発言を指していますか?じゃんぬさんとJittaの発言が引用されているので、ちょっとわかりにくかった。

    んで、「なんだか、じゃんぬさん怖いなぁ。。。って、私もこうなんだな。。。」については、ウェイトは「私もこうなんだな」です。「人の振り見て我が振り直せ」です。
    じゃんぬさんの表現の仕方が起こっているようで怖いと思いました。そして、私も他の人にそういう印象を与える書き方をしているんだなということを、この間の勉強会の時の「じったさん、猫かぶってる」という言葉が被さりました。
    (私の問題なので、あまり気にしないでください>じゃんぬさん)
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/13 21:36

    「起こる」って何だ、「怒る」だろ。
    「あまり」ってなんだ。こんな書き方したら余計に気になるだろorzスミマセヌ
  • # re: 部品化をどこまで進めるか?
    R・田中一郎
    Posted @ 2007/06/14 12:02
    あ、わかりにくかったですね。すみません。

    >その都度作るなんて真面目に言ってますかと問いたいです

    こちらの方です。
  • # re: 部品化をどこまで進めるか?
    じゃんぬねっと
    Posted @ 2007/06/14 13:34
    私へ向けてだったですか。これは、本当に疑問に思って伺っているという意味でしかないです。確かに文章で書くと感情がわからないので怒っているように見えますね。申し訳ないです。

    怒っているどうこうの前に 「真面目に言ってますか」 のところは、相手に 「ふざけているのか?」 と取れそうな表現なので、これに関しては明らかに私の書き方がまずいですね。気をつけたいと思います。

    "真面目に言ってますか" の真意は、その前後の文章にあるとおりです。ポトペタ対応をしたいならば、どのマスタを使うのか選ぶようなプロパティを用意した方がスマートだと思うので、わざわざその方法を取る理由が私には思いつかなかったので、率直に書いてしまったのでした。

    たぶん Jitta さん相手だから、あまり気を使わずに書いたのだと思います。Jitta さんも直球勝負で来るとはいえ、第三者の目も意識せねばなりませんね。ご指摘感謝しております。
  • # re: 部品化をどこまで進めるか?
    じゃんぬねっと
    Posted @ 2007/06/14 13:37
    あ、"気を使わない" というのは、オンラインでとはいえ十分付き合いが長いからという意味であって、悪い意味ではないです。むしろ、それだけ信頼しているということです。

    リアルでも親しい友であればあるほど気など使わなくなると思います。私はオンライン上では言葉づかいにはかなり気をつけていますが、リアルではかなり口が悪いです。
  • # re: 部品化をどこまで進めるか?
    じゃんぬねっと
    Posted @ 2007/06/15 15:54
    Jitta さんから返答がないっていうのも、かなり怖いですよ?
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/15 21:08
    通りすがりさん、コメントありがとうございます。

    > ビューとしてWindowsアプリ、Webアプリを開発。
    > ビジネスロジックとしてWebサービスという構成では
    > Jittaさんの方法論では実現ができない。

     ん...なんだかなぁ。。。だから、「汎化と特化のバランスが微妙ですけど。」とか、「先にきちんと設計しなければならない」とか、書いているんだけど、そういうところ、読んでもらえていないような気がする。。。
     あ、そうか。前の、古川さん時と同じか。あのエントリ、私の妻はコンピュータに疎いって書いているのに、妻も私と同じようにコンピュータに強いと誤解されてたもんなぁ。前に書いたもののインパクトが強すぎて、後に書いてあるものを理解するときに引きずるのか???
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/15 21:09
    > Jitta さんから返答がないっていうのも、かなり怖いですよ?
    昨夜は寝ちゃったんです(--;
    今朝は資源ゴミの回収の日で、ポストする時間がとれなかったのですm(__;)m
  • # re: 部品化をどこまで進めるか?
    じゃんぬねっと
    Posted @ 2007/06/15 23:17
    はは、まあ冗談です。
  • # re: 部品化をどこまで進めるか?
    通りすがり(06/13 9:21)
    Posted @ 2007/06/18 10:53
    ご返答ありがとうございます。

    #なんか誤解があるといけないので・・・
    #じゃんぬねっとさんと意見が近いとコメントしていますが、
    #だからといってJittaさんのコントロール化案も
    #面白いと思っているので、全面否定派としての意見ではありません。

    >だから、「汎化と特化のバランスが微妙ですけど。」とか、
    >「先にきちんと設計しなければならない」とか、書いているんだけど

    その2つの抽象的な言葉から、何を読み取ればよかったのでしょう?
    Jittaさんの中ではぼんやりとしつつも明確なイメージがあるのだと思いますが、
    第三者には曖昧すぎてどうとでも取れると思いました。
    ですので、私は私の受け取ったイメージでコメントしています。

    >ただ、やはりカスタムコントロール化は、
    >設計が難しく想定外の仕様変更が発生すると
    >とたんに破綻するので、業務要件に固有でない部分で
    >仕様をまとめるようにしますね。

    上記の部分が、
    「汎化と特化のバランスが微妙ですけど。」
    「先にきちんと設計しなければならない」
    に対するコメントです。

    >・ビューとしてWindowsアプリ、Webアプリを開発。
    >ビジネスロジックとしてWebサービスという構成では
    >Jittaさんの方法論では実現ができない。

    私の上記のコメントはうまく行かないと考えた具体的な事例を単に挙げているので、
    Jittaさんのイメージする前提条件とそもそもが違うなら、
    そのように説明してくださればよいだけではないでしょうか。

    >ん...なんだかなぁ。。。
    という反応されるのことになんだかなぁと思ってしまいました。

    Jittaさんはよく「プログラムは思った通りに動くんじゃない、
    書いた通りに動くんだ」というような主旨のことを
    おっしゃっていますが、文章についても同じではないでしょうか。

  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/18 22:06
    通りすがりさん:

    >・ビューとしてWindowsアプリ、Webアプリを開発。
    >ビジネスロジックとしてWebサービスという構成では
    >Jittaさんの方法論では実現ができない。

     ごめんなさい、ここに対する思いを、うまくまとめられませんでした。

     6/13付けで LinkedDropDownList を出していますが、これが私が思っていたコントロールです。
    この中で「都道府県と市区町村を選ぶコントロール」を上げています。都道府県を選ぶと市区町村の選択肢が変わります。ここで、「都道府県コントロールで発生したイベントを市区町村コントロールへ伝搬させる」ことが必要です。
    Insider.NET にも書いたとおり、私は「指定しない」という選択肢があることで、このようにビューに影響を与えるビジネスロジックを考えていました。
    この部分について、「ドキュメント&ビュー アーキテクチャ」では、「ビュー」だけで実装可能ではないでしょうか。

     また、ビジネスロジックでどこまでやるかというのも、課題です。
    えっと、例外の実装です。
    「住所」というドキュメントとしてまとめたとして、それぞれ pref と city に入力するわけですが、pref が "東京都" である場合に本来なら "京都府" のデータである "左京区" が設定されたら、「住所」ドキュメントが例外を生成する。
    加えて、チェック メソッドを用意するか?
    それともビューがチェックしてしまうか?
    ビューがチェックする必要がないなら、IME モードや MaxLength といったプロパティも不要ではないでしょうか。

     また、どれくらいの個数使うか、というところも、考えたいところです。
    1回しか使わないなら、そんなものにコントロールを作る手間をかける必要を感じません。
    しかし、分担して開発しているもので、複数の人が同じようなビュー コントロールを実装するなら、1つのコントロールにして使ってもらうことで、ユーザのエクスペリエンスを共通化できます。
    実際、提供しているのに個別にコーディングされ、機能ごとにエクスペリエンスが変わってしまったという製品を出してしまったので、これは共通コントロールを使いたいポイントです。

     Web と Windows の両方を実装するとしても、一人で両方のコントロールを作らせて、他のメンバーにはそれを使わせたいです。

     多分に誤解を与えてしまいましたが、「データを共有する目的でコントロールを共通化する」ということは、したくありません。これは、意図していません。
     しかし、「特定の型を供給することを目的として、コントロールを派生する」ことはしても良いんじゃないかと思います。共通化の中で、データに伴うロジックも共通化されます。ビューに影響されるロジックなら、ビジネスロジックであっても、ビューに載せてしまって良いと考えます。特に、ユーザ エクスペリエンスにつながる部分は、共通化してしまう方が良いと考えます。
  • # re: 部品化をどこまで進めるか?
    通りすがり(06/13 9:21)
    Posted @ 2007/06/21 10:05
    丁寧なご返答ありがとうございます。

    >多分に誤解を与えてしまいましたが、「データを共有する目的でコントロールを共通化する」ということは、
    >したくありません。これは、意図していません。

    ポイントはここですね。私は@ITでのJittaさんのMyComboBoxを見て、
    データを外だしにしていないので、それはまずいのでは?と思いました。

    そういう点で、カスタムコントロール化をするにしても、
    データを外だしにする必要がある。
    だから、

    >・ビューとしてWindowsアプリ、Webアプリを開発。
    >ビジネスロジックとしてWebサービスという構成では
    >Jittaさんの方法論では実現ができない。

    というアンチ例を挙げました。
    が、データを外だしにするようですので、
    それなら問題ないと思います。

    LinkedDropDownListは私の思い描いていたものと同じです。
    Jittaさんはマスタごとに用意するとおっしゃっていた
    と思ったので、
    違うものをイメージされているのだと思ってました。
    #↑@ITとここのブログを読み返しましたが、
    #マスタごとに作るとまでは言ってない様な気がしてきました。
    #脳内補完していたかもしれません。すみません。

    LinkedDropDownListは親子関係を持っていて
    大分類、中分類、小分類のように絞り込めるマスタなら
    汎用的に使えると思います。

    ただ、カスタムコントロール化の設計の難しい要因としては、
    もう一歩突っ込んで特化しようとすると
    カスタムコントロールがデータ構造を知っている必要がでてきたりしてやっかいなんですよね。
    #「指定なし」という存在も意外と扱いがやっかいだったり


  • # re: 部品化をどこまで進めるか?
    じゃんぬねっと
    Posted @ 2007/06/21 10:10
    指定なしくらいであれば、プロパティから有無と文言の設定ができれば、ある程度のカバーはできると思います。厳密にはその内部データをどう返すかなどの問題がありますが。私は null にしてしまうことが多いです。
  • # re: 部品化をどこまで進めるか?
    Jitta
    Posted @ 2007/06/21 21:50
    > Jittaさんはマスタごとに用意するとおっしゃっていた
    > と思ったので、
     ごめんさな~~~~~~いっ!!!!
    Insider.NET で書いたものは、マスタごとに用意しました。
    かつ、コントロールの中で、データを読んで、バインドしていました。
    これは、Insder.NET で言及しているプロジェクトでは、DataView の使い方を知らなかったからです。
    このため、1画面に同じコントロールを2つ張ったときに、違うものを出したいのに同じものが出てしまい、DataTable を分けることで対応しました。
    しかし、Linked.... の方ではそうしたように、DatView で対応可能だったorz


    > 指定なしくらいであれば
    なので、「先にきちんと設計しなければならないわけで」と、書いちゅうと。。。
  • # I just like the valuable info you supply in your articles. I will bookmark your weblog and check again here frequently. I'm moderately sure I will learn many new stuff right here! Best of luck for the following!
    I just like the valuable info you supply in your a
    Posted @ 2019/05/14 21:51
    I just like the valuable info you supply in your articles.
    I will bookmark your weblog and check again here
    frequently. I'm moderately sure I will learn many new stuff right here!

    Best of luck for the following!
  • # I do not even know how I ended up right here, however I thought this submit was great. I don't recognise who you're however definitely you are going to a famous blogger when you are not already. Cheers!
    I do not even know how I ended up right here, how
    Posted @ 2019/05/18 16:16
    I do not even know how I ended up right here, however I thought this submit was great.
    I don't recognise who you're however definitely you are going to a famous blogger when you are not already.
    Cheers!
  • # My brother recommended I would possibly like this website. He was once totally right. This submit actually made my day. You cann't believe simply how so much time I had spent for this information! Thanks!
    My brother recommended I would possibly like this
    Posted @ 2021/09/03 13:19
    My brother recommended I would possibly like this website.
    He was once totally right. This submit actually made my day.
    You cann't believe simply how so much time I had spent for this information! Thanks!
  • # Thanks for sharing your thoughts. I truly appreciate your efforts and I am waiting for your next post thanks once again. quest bars http://bitly.com/3jZgEA2 quest bars
    Thanks for sharing your thoughts. I truly apprecia
    Posted @ 2021/09/10 12:19
    Thanks for sharing your thoughts. I truly appreciate your efforts and
    I am waiting for your next post thanks once again. quest bars http://bitly.com/3jZgEA2 quest bars
  • # Appreciate this post. Let me try it out. scoliosis surgery https://coub.com/stories/962966-scoliosis-surgery scoliosis surgery
    Appreciate this post. Let me try it out. scoliosis
    Posted @ 2021/09/14 15:15
    Appreciate this post. Let me try it out. scoliosis surgery https://coub.com/stories/962966-scoliosis-surgery scoliosis surgery
  • # Appreciate this post. Let me try it out. scoliosis surgery https://coub.com/stories/962966-scoliosis-surgery scoliosis surgery
    Appreciate this post. Let me try it out. scoliosis
    Posted @ 2021/09/14 15:16
    Appreciate this post. Let me try it out. scoliosis surgery https://coub.com/stories/962966-scoliosis-surgery scoliosis surgery
  • # 偽物ブランド
    dfrqvlhhqv@msn.com
    Posted @ 2021/11/30 0:11
    誠実★信用★顧客は至上
    在庫情報随時更新!
    人気最新品┃特恵中┃☆腕時計、バッグ、財布、ベルト、アクセサリー、小物☆
    商品数も大幅に増え、品質も大自信です
    低価格を提供すると共に、品質を絶対保証しております
    ご注文を期待しています
タイトル
名前
Url
コメント