Stack Map新人 Web エンジニアの地図

動くコードを、変えやすいコードにする考え方です。
リファクタリング・技術的負債・ドメイン駆動設計・依存の向きを、Laravel の例で見ていきます。

リファクタリング(動きを変えずに中を整える)

Martin Fowler の定義では、外から見た動きを変えずに、中の作りを整えること。小さな変形を 1 つずつ重ねます。番号を押すと、コードが 1 歩ずつ変わります(色の付いた行が、その歩で変わった所)。コードは作り物です。


        

コードのにおい

「においがする」とは、奥に問題がありそうな、表に出たしるしのこと(Kent Beck が名付けた言い方)。においは、すぐ直す合図ではなく、よく見る合図です。

技術的負債

Ward Cunningham が考えたたとえです。散らかったコードは借金のようなもので、新しい機能を足すたびに余分にかかる手間が「利子」です。Martin Fowler の例では、作りが分かりやすければ 4 日で済む機能が、散らかっていると 6 日かかり、差の 2 日が利子になります。

AI 時代3 つの負債(技術・認知・意図)

AI がコードを作る速さが、人が理解する速さを追い越すと、負債はコードの外にもたまります。研究者の Margaret-Anne Storey は、負債を 3 つに分けて考えることを提案しています(2026 年)。「生成 AI は、ソフトウェアづくりの難しさを取り除くのではなく、置き場所を変える」。

あわせて聞く言葉

自分で確かめる問い 考え方のヒント

    ドメイン駆動設計(DDD)の入口

    Eric Evans が本で広めた、業務(ドメイン)の言葉と決まりを中心にコードを組み立てる考え方です。全部を取り入れなくても、入口の 3 つだけで、会話とコードがそろってきます。

    依存の向き(クリーンアーキテクチャ)

    Robert C. Martin(Uncle Bob)の決まりでは、コードの依存は内側にだけ向けます。内側の「決まり」は、外側のデータベースや画面の名前を知りません。場面を選ぶと、直す所が光ります。図の分け方は一例です。

    差し込み口と変換(ヘキサゴナル)

    Alistair Cockburn の「ポートとアダプター」では、アプリは画面・テスト・バッチのどれからでも同じように動かせ、データベースから切り離して作れるようにする。テストで本物の DB を使わずに済むのも、このおかげ。

    Laravel では

    コントローラーやメソッドの引数に型を書くと、Laravel が組み立てて渡してくれる。差し替えたい所は、インターフェースを決めて、実装を外側に置く。

    分けすぎない 考え方のヒント

    小さなアプリなら、Laravel の標準の形(MVC)で十分なことが多い。層を増やすほど、読む場所も増える。困ってから分ける。設計パターン「実務で出てくる所」も見てください。

    分けるか、まとめるか

    サービスをいくつに分けるかは、あとから変えにくい決定です。

    AI 時代AI と一緒に設計を守る

    AI はコードを速く書きますが、整える・まとめる判断は、人がします。AI の成果物を確かめるも見てください。

    チェックリスト

    確かめたものに印を付けてください(この端末にだけ残ります)。