📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

自分のテーマに合う設計アプローチを選ぶ

概要

  • 日程: Day 3 / セッション 2
  • 時間: [9:30-10:15]
  • 形式: 演習
  • ゴール: 自分の開発テーマに対して(条件)設計アプローチを1つ以上選択し(行動)、選択理由と不採用理由をそれぞれ一文以上で記述できる(基準)
  • 学習形式: AIディスカッション

導入(5分)

前のセッションで、6つの設計アプローチを「どこを中心に据えるか」という軸で整理しました。
知識として並べただけでは、まだ「選べる」とは言えません。このセッションでは、自分の開発テーマに対して実際に選びます。

最初に大事なことを言い切ります。この演習に正解はありません。目的は正解探しではなく、根拠づくりです。

ここで少し考えてみてください。先輩に「なぜこの設計にしたの?」と聞かれたとき、「なんとなく」と「支出データの構造が最も変わりにくいからです」では、どちらがエンジニアとして信頼されるでしょうか?

設計の現場で問われるのは、選択そのものより選択の理由を言葉にできることです。
そして理由を鍛える最良の方法は、反対意見とぶつけることです。今日はAIに「あえて反対の立場」を演じてもらい、ディベートで自分の根拠を鍛えます。

本編(10分)

1. 設計アプローチの適用判断 3つの問い

アプローチ選びは、健康診断の問診のようなものです。次の3つの問いに答えると、候補が絞れます。

  1. 何が一番変わりにくいか? — 変わりにくいもの(多くはデータ)を中心に据える
  2. 何が一番複雑か? — 複雑さの正体(処理手順?データ構造?業務ルール?)に合ったアプローチを選ぶ
  3. どう公開・連携するか? — Web APIで公開するならROA、業務機能単位で連携するならSOAが視野に入る

たとえば「毎月のバッチ集計が主役で画面はほぼない」システムならPOAも候補に該当します。一方、「多数の画面から同じデータをCRUDする」システムにPOAは向きません。なぜなら、画面や手順が増えるたびに処理の複製が増え、データの整合が崩れやすくなるからです。

判断に迷ったら、この3つの問いをそのままAIに投げてみましょう。「私のテーマでは何が一番変わりにくいと思う?」という聞き方で十分です。

コード例・実例

家計簿システムで通しの選択例を示します。皆さんは自分のテーマでこれと同じことをやります。

【家計簿システムの設計方針メモ(例)】

採用: ROA + DOA
- 採用理由(DOA): 家計簿の中心は「支出・収入・費目」というデータであり、
  集計方法や画面は変わっても、この情報モデルの構造は最も変わりにくいから。
- 採用理由(ROA): Day2で抽出した機能はほぼ支出レコードのCRUDであり、
  リソース(/expenses等)にHTTPメソッドを対応させると設計がそのまま
  RESTful APIになり、Day4の実装(モックAPI+UI)に直結するから。

不採用: POA
- 不採用理由: 「入力→集計→表示」という手順を中心に据えると、
  ペルソナの要望(例: 週次でも月次でも見たい)で手順が変わるたびに
  作り直しになるから。手順はこのシステムで最も変わりやすい部分。

不採用: SOA
- 不採用理由: 単独アプリで外部の業務システムと連携する予定がなく、
  サービス分割の恩恵よりも管理の手間が上回るから。

採用理由が「Day1-2の成果物(情報定義書・情報モデル・機能一覧)」に根ざしている点に注目してください。根拠は空から降ってきません。自分の成果物の中にあります。

ここがポイント

  • 「採用理由」と同じくらい「不採用理由」に価値がある。不採用理由を書けた人は、他の選択肢を検討した証拠になる
  • 根拠は必ず自分の成果物(情報定義書・ペルソナ・情報モデル・機能一覧)と結びつける
  • 複数採用(例: ROA+DOA)は普通のこと。ただし「主軸」がどれかは決める

コラム

「ディベートで根拠を鍛える」は歴史ある学習法です。中世ヨーロッパの大学では「討論(disputatio)」が正式な授業形式で、学生はあえて自分の信じていない側を弁護させられました。反対側を本気で弁護してみて初めて、自分の主張の弱点が見えるからです。生成AIの登場で、この贅沢な学習法(専属の論敵)が誰でも使えるようになりました。しかもAIは何度負かしても機嫌を損ねません。

💬 AIに聞いてみよう

  • 「私の開発テーマ◯◯で『最も変わりにくいもの』と『最も変わりやすいもの』は何だと思いますか?情報定義書を貼るので分析してください」
  • 「DOAとOOADを両方採用すると矛盾しますか?実務ではどう共存させていますか?」
  • 「私の不採用理由に説得力がないところを指摘してください」

実習・演習(30分)

課題

以下の4ステップで「設計方針メモ」を作成します。時間配分の目安付きです。

ステップ1: 仮選択(5分)
本編の「3つの問い」に自分のテーマで答え、採用するアプローチを1つ以上、仮に選びます。Day1-2の成果物(情報定義書・ペルソナ・情報モデル・機能一覧)を手元に開いておきましょう。

ステップ2: AIディベート(15分)
AIに反対の立場を演じさせ、最低2ラウンド反論に応答します。次のプロンプトをコピペして使ってください(テーマとアプローチ名は自分のものに置き換える)。

私は家計簿システムに ROA+DOA を採用しようと思います。
理由は「支出データの構造が最も変わりにくく、機能の大半がCRUDだから」です。

あなたは SOA を推す立場でディベートしてください。
ルール:
- 私の主張の弱点を具体的に突いてください
- 1回の反論は3点以内、各2文以内で
- 私が応答したら、さらに反論するか、認められる点は認めてください
- 3ラウンド終わったら、ディベートを中立の立場で総括し、
  私の根拠のうち「強かったもの」と「弱かったもの」を挙げてください

ディベート中に「たしかにそうかも」と思った反論は、メモしておきます。それはあなたの設計方針メモの「不採用理由」や「留意点」の材料になります。

ステップ3: 立場を替えてもう1本(5分)
今度は逆をやります。次のように、自分が不採用にしたアプローチをAIに擁護させるのではなく、自分が擁護してみます

今度は立場を交換します。私が POA を擁護するので、
あなたは私の採用案(ROA+DOA)を推す立場で反論してください。
最後に、私のPOA擁護に説得力があったか判定してください。

自分の不採用案を本気で擁護してみると、不採用理由が「食わず嫌い」だったのか「検討の結果」なのかがはっきりします。

ステップ4: 設計方針メモの清書(5分)
ディベートの結果を反映して、設計方針メモを清書します。

成果物

設計方針メモ」(Day 3 成果物の一部。このあとのセッションでも参照し、Day 4 の実装の拠り所になります)

必須項目:

  • 開発テーマ名
  • 採用アプローチ(1つ以上、主軸を明記)
  • 採用理由(各一文以上。自分の成果物への言及を含める)
  • 不採用アプローチ(1つ以上)と不採用理由(各一文以上)
  • ディベートで見つかった留意点(あれば)

ヒント

  • 理由が書けないときは、本編の「3つの問い」に戻る。特に「何が一番変わりにくいか」が最強の出発点
  • 家計簿・レシピ・オークションのようなCRUD中心テーマは、DOA/ROAが有力候補になりやすい。ただし「みんなそうだから」は理由にならない。自分の情報モデルのどこがそれを示すのかを書く
  • AIの反論が強すぎて心が折れそうなら、「反論のレベルを初心者向けに下げて」と頼んでよい。ディベートの難易度も自分で設計できる
  • 選択を変えたくなったら変えてよい。「ディベートの結果、採用案を変更した」というメモは、むしろ高品質な根拠づくりの証拠

まとめ(5分)

今回学んだことを一言でまとめると「設計アプローチの選択とは、正解を当てることではなく、自分の成果物に根ざした根拠を言葉にすることである」です。

  • 3つの問い(変わりにくいもの・複雑さの正体・公開の仕方)で候補を絞った
  • AIディベートで根拠を叩いて鍛えた
  • 採用理由と不採用理由を設計方針メモに残した

休憩のあとのセッション3では、選んだアプローチを実装の形に落とすときの業界標準、**多層アーキテクチャ(3層・MVC・MVVM・DDD)**を学びます。Day 2 でやった「機能とプレゼンテーションの分離」が、実は業界標準そのものだったことが分かります。

🔄 振り返りチェック

  • 自分の採用アプローチと、その理由を一文で言えますか?
  • 不採用にしたアプローチについて、「なぜ不採用か」を一文で言えますか?
  • AIの反論のうち、一番効いたものは何でしたか?それは設計方針メモに反映しましたか?

補足資料

  • 参考リンク:
    • 『Webを支える技術』(山本陽平): ROA/RESTの考え方を日本語で学べる定番書
    • マーチン・ファウラー「Design Stamina Hypothesis」: 設計に投資する価値についての短い記事
  • 発展課題:
    • 自分と違うテーマ(例: リアルタイムチャット、ゲーム)ではどのアプローチが有力になるか、AIと議論して「テーマとアプローチの相性表」を作ってみましょう
    • 自分の設計方針メモをAIに渡し、「新人エンジニアの設計レビュー役」として辛口レビューしてもらいましょう

学習ガイド

想定される質問と回答例

質問 ヒント
どうしても1つに決められません 決めなくてよい。複数採用が普通。ただし「主軸」(迷ったときに優先する方)だけは決める。主軸の決め方は「何が一番変わりにくいか」
AIとのディベートでいつも言い負かされます 負けは学習の材料。「言い負かされた論点」こそメモの価値。また、AIに「私の主張を強くする根拠を一緒に探して」と協力モードに切り替えてもよい
選んだアプローチをDay4で使わなかったら失敗ですか? 失敗ではない。設計方針メモは「その時点の根拠の記録」。実装で判断が変わったら、変わった理由を追記すればメモの価値はむしろ上がる
ROAとRESTは同じものですか? ほぼ同じ文脈で使われる。ROAは設計思想(リソース中心)、RESTはそれを実現するアーキテクチャスタイルの名前。午後のセッションと Day4 でRESTを実際に使う

つまずきやすいポイント

つまずきポイント ヒント
「正解のアプローチ」を探して手が止まる 正解は存在しない。評価されるのは選択ではなく根拠。まず仮選択し、ディベートで根拠を育てる順序で進める
採用理由が「良さそうだから」など感想になってしまう 理由に自分の成果物(情報定義書・情報モデル・機能一覧)の具体名を入れる。「機能一覧の8割がCRUDだからROA」のように、成果物が証拠になる形にする
不採用理由が書けない 不採用アプローチの「中心に据えるもの」が、自分のテーマでは変わりやすい・存在しない・少ないことを指摘すればよい。例:「外部連携する業務機能がないのでSOAは過剰」
ディベートがAIの長文に押されて進まない プロンプトのルール(3点以内・各2文以内)を必ず入れる。守られなければ「ルールを守って短く」と指示し直してよい
読み上げを開始します...

AIに質問する