初めてOOCに行ったので、感想と情報まとめを残しておこうと思います。
行ってみようと思った理由
普段Javaを使っているのですが、「オブジェクト指向を意識して設計していますか?」と言われると、う〜〜〜ん、まぁ、関連するものをクラスにはまとめてますけど……みたいな曖昧な感じで仕事をしています。
一応、SOLID原則とかデザインパターンとか一通り学んでみたものの、これをどうしたらいいんだろ……みたいな持て余し気味の状態で、設計について知識も経験もないし、皆さんの叡智を授かりに行こう……みたいな気持ちでゆるっと参加しました。
聴いたカンファレンス 感想
オブジェクト指向のリ・オリエンテーション ~歴史を振り返り、AI時代に向きなおる~
大学でしかお目にかからない固定の長机とスライドする椅子に少し懐かしい気持ちになり、またオブジェクト指向の歴史を振り返るという内容も相まって完全に大学の授業を受けている感覚を取り戻しました。笑
(会場が大学の教室でした)
OOP関連の概念が頭の中でとっ散らかっており、段階論にまとめて説明してもらえてかなりスッキリしました。
ちなみに、残念ながら私はまだ段階3なので、段階4を腹落ちさせて実践していきたいです。
段階論はこちらのスライド。メモしか取っていなかったのでツイートお借りします。
変更に強いオブジェクト指向設計
この間、超肥大したメソッドを書いてレビューで指摘をもらったところだったので、神クラス化したクラスの切り分け話は身につまされました。
「10行以上のメソッドは見通しが悪いから切り分けろ」みたいな話もあったりしますが、この感覚は単一責任の原則の意識にもつながるんだなと感じました。
密結合の話に関しても自分の書いたコードを思い出して反省していました。
今までフレームワーク依存になってしまっていることの悪影響をあまり意識したことがなかったのですが、実際のリファクタ例を通してフレームワーク依存になっているコードたちが未来で抱えるだろう課題を理解できたのは良かったです。
今後は普段から意識してインターフェースを設計してみたいと思います。
(が、バッチ処理とかコードベースが大きくならなさそうな場合はいきなりやらなくてもいいのかも……という気も)
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
応用情報の勉強とかしているとモデル図の話題出てくるけど、実際あんまり描かないよな〜、どう活用してるんだろ、と思ったので参加。
ざっくり結論としては、先人たちが作り上げてきたモデルでほとんどの開発が賄えてしまっているので、現時点でわざわざゼロからモデル図を書く状況は少なそう。でも、モデル化して考える能力自体は大切。
冒頭に話されていた日本あんこ協会の話もちょっと気になった。
設計の知識と技能で駆動するソフトウェア開発
設計が解決したい課題というのは、コード自身が不必要に複雑になると変更しづらくなり、本質的な課題に対応できなくなってしまうという点なのだと理解するのは大事だなと感じた。
上記の課題を解決するために、設計で交換(変更)容易性を高める工夫というのが大前提にあるわけですね。
どうやって交換容易性を高めるのか、というのはいろんなアプローチがあると。
この辺りも意識してコードをかけるようになりたいです。
全体を通しての感想
設計で解消したい課題の感覚が掴めた感じがあり、大変楽しかったです。
気になっていたものの、のんびりお昼を食べていたら聞き逃したものなどもあり、またスライドなどが出揃ってきたらチェックしたいと思っています。
また次のOOCも参加したいです。