天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

オブジェクト指向のこころを読む会 Vol17に参加してきた

yr-camp.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

今日は、タイトルとは全く違って、ただモデリングをしてみる会でした。

スクフェス新潟でいわおさんとした話の共有

スクフェス新潟でいわおさんとモデリングのことを話したので、以下の内容を共有しました。

  • クラス図のようなものをメインに書いているなら、別のUML(例えばシーケンス図あど)を書いてみるといいという話を聞きました。また、とりあえずコードを実装してみるのもおすすめだという話も聞きました。
    練習として、モデルを壊すための仕様追加を意図的に考えるようにしているということでした。
  • モデリングの題材としては、ドメイン知識をつけたうえでじっくり試行できるようなもの(例えば信号機など)がいわおさん個人としては好きだそうですが、いわおさんが見ている限りだと、インクリメンタルに機能を追加しながらちょっとずつ実装レベルと併せてモデリングを拡張していくのが好きな人が多いきはするということです。最近だと、割り勘のモデリングとかはやったりしていたというお話でした。
  • 最近オブジェクト指向のこころのモデリング会の題材に鳴った自動改札機なら、電子と紙の計算方法の違いをどう吸収するといいの?とかはぱっと見で気になったとフィードバックをいただきました。ただしモデリングには正解はないので、こういう風に意見が割れそうなポイントに対して、自分なりの根拠を持ってどうしてそのようなモデルにしたのか?を説明できるようにすることが大切だということです。
  • オブジェクト指向のこころの次に読む本としては、色々あるがDDD関連の本がおすすめだということでした。モデリングオブジェクト指向で言われている通りに実践してみるのと、DDD関連の本で言われている通りに実践してみるのとを両方試してみて、どのような結果になるのか?を見てみると面白いそうです。
  • Kiroさんに出されたものだが、モデリングのいいお題として信号機があるということでした。ただし激むずで、いわおさんはKiroさんが言っているようなピンと来るモデルを作るのに3ヶ月かかったということでした。なお、Kiroさんのモデリング力は本当にすごいそうで、昔みほらぶさんがKiroさんにフリーマーケットモデリングを即興でするように話した所、フリーマーケットの前提条件を聞いたあとにすらすらとモデルを書き出し、それの精度もめちゃくちゃ高くてその場にいた人が驚いたという話を聞きました。
  • モデリングのお題として、家電をはじめとした物体をモデリングすると、物体の要素を分解したモデリングになって、あまり深くモデルの良さを検討できない罠があるので注意したほうがいいというアドバイスをいただきました。そのため、ものではなく目的があるものをモデリングしてみるといいかもしれないということです。
  • モデリングの際は、いわおさんはとにかく書き直しまくっているという話を伺いました。
  • オブジェクト指向のこころを読んでいるコミュニティにいわおさんにはぜひ来てほしいのですが、行きたいものの残念ながら水曜は品川アジャイルがあるからいけないという話がありました

モデリング会の題材決め

モデリング会の題材として元々は自動改札機を想定していましたが、上の話をして、割り勘をモデリングしてみるのが面白いのではないか?という話になりました。

そこで割り勘の種類を色々と調べていたところ、以下のスライドが見つかり、折角ならこのお題でやってみようという話になりました。

speakerdeck.com

モデリング

残り時間でモデリングをしていきました。色々話したのですが、悩んだ(意見が分かれたり議論が発生した)ポイントだけ箇条書きかつ常体でまとめておきます。

  • 割合は合計10割を超えてはだめ?
    • そんなことはないはず。10割を超えていても(多い or 普通 or 少ない/多い + 普通 + 少ない)で計算できるはずなので一旦10割の制限は考慮しなくてよいと思う
  • 支払い区分は何を知る必要があるのか?
    • 区分と区分割合が必要になるはず。区分だけ知らないと、支払い区分ごとに支払い割合を設定するという要求仕様が満たせない
  • 参加者なのか幹事なのかを知るためのフラグを追加する必要があるが、いい名前が思いつかない...役割とか?ただ、役割だと後々出てきそうな「マネージャー」とかの役職と混合しそう

また、実際にモデリングをした後はTDDをしながら(最初にテストを書いて)コードに落としていったのですが、その際に支払い区分を参加者がそのまま保持するのが良いのか?割合だけ保持するようにしたほうがよいのか?が難しいよね、という話になったり、支払い区分のフィールドって何が適切なんだろう?という話になり、もしかしてもっとモデリングをしたほうがよかったのかな?という話になりました。

ただ、実装をした結果支払い区分の渡し方の問題などは初めて気がついたことなので、モデリングとしては一定充分にできていたのではないか?という意見も出ていました。

全体を通した感想

議論をしながら、わいわいとモデリング&コーディングができて、過去でもトップクラスに楽しかったです。

モブでやってみると、みなさんがどういう視点で実装を考えたりしているのかやモデリングの意義をどのように捉えているかなどが言語化できてすごくいいなあと思いました。

ただ、時間が全く足りなかったので、今度は2時間に拡張してリベンジしたいと思います!