あかね
良い設計は「目的」なくしてできないと感じた話
2026年07月29日
要約を生成中...
先日API設計について考えていて、土台となる「画面には何を表示したいのか?」「その画面の目的は何か?」が曖昧で、質問を重ねていたのに全然私が知りたい回答が返ってこなくて、なんでこうなるんだろって思い考察していました。
すると話が噛み合わないこととは別の話ですが、設計原則に立ち返る気づきがあったのでまとめてみます。
先日ミノ駆動さんのskillを解読していたのですが、最初のコアの部分に
コードは目的からの逆算でしか決まらない
仕様書だけ眺めていても目的は分からない。つまり変更容易性の設計が困難であることを意味する。
とありました。
例えであったのですが、目的が混ざってしまうと良くないという問題。
たとえばUserモデルがとてもわかりやすい例ですね。
なんのユーザーなのか?が違ったらモデルを一括りにしないということです。
私の携わるプロダクトには「Customer」「HogeUser」「FugaUser」などと主語をデカくするとUserでまとめられそうなモデルが4つくらい存在しています。
確かに目的が違うわ、そういうことね。と思いました。
具体例が浮かぶと抽象的な話もスッと入ってくる。
私が任されたタスクに「Aというアクションをとった商品を一覧で見れるようにしたい」というものがありました。
最初に何を返すか(商品??アクションではないのね?)確認した時には、あくまで今後実装する予定の商品一覧画面での絞り込んだ結果あるということだったので、じゃあリソースは商品やな、エンドポイントは/products?action=Aみたいなイメージですねと合意した上で進めました。
ただ実装してページのh1タグのタイトルなんだこれ、「商品一覧」は今絞ったものしか返さないからちょっと違うな。「Aした商品一覧」か??うーんなんか微妙だなって思って、相談してみました。どう見せましょうかと。
「履歴の一覧」というワードがここにきて登場したのです。なんだと??それは前提が変わってくるではないか。リソースが違うぞ。履歴一覧なら/products?action=Aではないではないか。
前提変わってるのか、無意識に変わってるのか、変わってないのか?どういうつもりでここにきて履歴の一覧というワードが出てきたのか。
私は混乱しました。
あれれ、商品一覧じゃなかったん??と思い、そこを確認するんですが、返ってくるのはクエリパラメータやSQLの話で、そこ変えるだけだしそんな重くないっしょと。
私は実装手段のことはここでは聞いていないんです。
何を返したいの??どう表示したいの??それだけでした。
私は以下の点で困惑しました。
目的(何のためのAPIか)が変わったのか分からない
それに気づいて答えているのか、無自覚にノリで答えているのかすら分からない
質問を重ねるほど私だけが混乱してるのかという困惑
前提がはっきりするまでしつこく質問しましたw
最終的に質問を重ねていると期待する答えが返ってきました。
目的がはっきりした瞬間でした。(実装始める当初の目的とは違っていましたが)
私がしつこく聞いているのは、ずっとパラメータやエンドポイント、ページのタイトルなど具体的なことでした。
これはAPIの目的(なんのためのリソースなのか)という一番大きな抽象を確定させるためでした。
あれ??この議論って、ミノ駆動さんが言っていた「目的を明確にしないと単一責任も変更容易性も成立しない」という話そのものやん!と、ぴーんときました。
考察してみます。
目的(何のためのリソースか)が決まって初めて、単一責任も変更容易も定義できる。
目的がブレたまま手段(クエリやテーブル設計)をどれだけ議論しても、全て不毛になる。
私の「具体パーツを集めて頭の中にモデルを構築する」スタイルは、まさに「ブレている目的を泥臭く炙り出す作業」だった。
具体を通して「目的(抽象)」を掴む力はしっかり働いていた。
目的が曖昧なままでもなんとなく設計して実装することはできると思います。
でも、性格/気質的に耐えられませんw(Tiな部分が全面に出ている。自分の中で筋が通ってることがすごく重要なんです)
どんなに綺麗な設計や変更容易性の高い完璧なコードでも目的がズレてたら無駄になっちゃうことが多そうですよね。
今回の会話の噛み合わなさから、目的がぶれてるから困惑していたということがはっきりしたので次からは「目的は何???」をまず明確にしてからその先のことを考えたいってはっきり伝えようと思います。
でも、実際はそこが曖昧になってるまま進めないといけないこともあるんで葛藤ですw
AI時代こそ、こういった設計思想を学んでAIに目的と設計意図を伝えないといけないなって改めて思いました。
このモデルは〇〇が目的で責務であるということを明確に伝えないで任せてると勝手な解釈で暴走されたりします💦
ほんとにAIとんでもないことしてきたりするので、信頼し切ると痛い目を見ると思います。
今回が目的が明確になってなくてぶれている中で会話していて、なんでこうなったのか考えると目的が重要であるというミノ駆動さんの設計原則に立ち返った話でした。
要約
コメント
まだコメントはありません。