はじめに
- プログラミングの基礎は勉強した
- 『リーダブルコード』を読んだ
- 『良いコード/悪いコードで学ぶ設計入門(ミノ駆動本)』も読んだ
それでも、
「で、結局どう設計すればいいの?」
となっている人、いませんか。
少なくとも僕は、ずっとそうでした。
この記事は、
- 設計の本を読んでも腹落ちしない
- クラス図を書いてもコードに落とせない
- リポジトリ?ドメイン?で毎回ググって終わる
そんな自分が、ようやく設計の全体像を掴めた学習ルートの話です。
なぜ設計が分からなかったのか
専門学校で学んだこと
専門学校でプログラミングを学びましたが、
- 要件定義 → 設計 → 実装
を一気通貫でやる授業がなかったです。
- アプリ開発:いきなりコーディング
- 設計の授業:設計図を書いて終わり
結果、「設計がコードにどうつながるか」が分からないままでした。
会社で見てきたコード
新卒で入ったのはシステム開発会社ではなくメーカーで、業務アプリを担当していました。
そこには、
- 共通機能をまとめたクラス
- 共通変数をまとめたインクルードファイル
はありましたが、
「なぜこのクラスが存在するのか」
「この責務はどの要件から来ているのか」
を説明できるコードは、正直ほとんど見たことがありませんでした。
何が分からなかったのか
当時の自分は、
- クラスはなんとなく区切るもの
- 共通化できそうならまとめるもの
くらいの理解でした。
だから、
- 要件とコードの関係
- 設計図と実装のつながり
これが一切説明できなかったんだと思います。
転機:設計の「全体像」が見えた
① 要件定義〜クラス図までをリアルタイムでやる設計講座
この講座では、要件定義からクラス図までを実演してくれます。
特に衝撃だったのが、
「要件とコード(クラス)が1:1で対応する」
という考え方でした。
これを聞いた瞬間、
- なぜ自分のコードは説明できなかったのか
- なぜ設計がフワッとしていたのか
全部つながりました。
「クラスを作る」ではなく、
**「要件をコードに翻訳する」**のが設計なんだ、と。
② 設計図をコードに落とすところだけを丁寧に説明した本
講座だけだと、
「で、リポジトリってどう書くの?」
「ドメイン層って何を書くの?」
が分かりませんでした。
ネットで調べるとコードは出てきますが、
前提が分からず理解できない。
この本は、
- 設計図を
- 下から(ボトムアップで)
- 実際のコードに落とす
流れで書かれていて、処理が追いやすかったです。
「こういう理由でこのクラスがあるのか」と、初めて納得できました。
③ 「動物クラス」から卒業できたオブジェクト指向の記事
オブジェクト指向の理解も、
動物クラスの鳴くメソッド
犬はワン、猫はニャー
で止まっていました。
この記事では、
- 変数の抽象化
- 関数の抽象化
- クラスの抽象化
- 抽象化の実践
と段階的に説明されていて、
**「実際のコードでどう使われるか」**が分かりました。
ようやく、
オブジェクト指向=現場で使うための考え方
だと理解できました。
まとめ:設計は「センス」じゃなかった
今振り返ると、設計が分からなかった理由はシンプルで、
- 知識が足りなかったわけでも
- 頭が悪かったわけでもなく
**「学ぶ順番が合っていなかった」**だけでした。
もし今、
- 設計の本を読んでもピンとこない
- クラス図とコードがつながらない
なら、一度
要件 → 設計 → 実装
を一気通貫で見る学習をしてみると、世界が変わるかもしれません。
少なくとも自分は、やっと「設計ってこういうことか」と思えるようになりました。