/note/tech

制約を設計する - 非決定性との境界線 / Designing constraints

要約:

■ 1. 発表概要

  • タイトル:「制約を設計する - 非決定性との境界線」(設計ナイト 2026)
  • 発表者: 曽根壮大 (Have Fun Tech LLC 代表社員 / 株式会社リンケージ CTO兼COO)
  • テーマ: LLMの非決定性という課題に対し、制約を設計することで決定性を確保するアプローチを論じる

■ 2. 非決定性との境界線

  • LLMの非決定性の本質:
    • 同一インプットに対して実行ごとに異なるアウトプットが生成される
    • 複数回実行しても出力は不定だが精度は向上する
    • LLMは確率的に、人間は経験的に答えるという違いはあるが、どちらも同一アウトプットを保証しない
  • 標準化による解決:
    • 標準化によって単純化・統一化が行われ、アウトプットのばらつきが揃い品質が向上する
    • 手順の標準化は手順書の作成を意味する
    • 入力の標準化としてテンプレート作成や判断分岐の網羅・対応行動の決定を行う
    • チェックリストによって必要な仕様を満たすことを確定させる
    • 暗黙知を明示的・測定可能・更新可能な仕組みに変えること(業務の言語化)
  • 境界線の必要性:
    • 非決定性の高い状態から決定性の高い状態へ移行するためには境界線が必要
    • ソフトウェアはハードウェアのために非決定的な現実世界を仕様として決定する役割を担う
    • Webフォームが人間とソフトウェアの境界線として機能し、内部のREST API・バリデーション・ロジック・型・データベースは決定性の世界を構成する
    • 再現性を高めるためには境界線の設計が不可欠

■ 3. 制約が決定性を作る

  • 基本原則:
    • ソフトウェアの世界における制約が境界線を作り、品質の担保と安全性を設計する
  • 具体例(GeminiによるGoogleカレンダー操作):
    • 直接指示するだけでは品質が安定しない
    • Gemini → GAS → API → Googleカレンダーという経路に制約を設けることで安定化する
    • GASのバリデーションによってハルシネーションを防ぐ
    • APIレイヤーでエラー処理・リトライが実現できる
  • ソフトウェアにおける境界線の設計例:
    • REST APIは責任境界線とセットで決定性を作る(CLIインターフェースも同様)
    • 標準入力のバリデーションが制約として境界線を形成する
    • アウトプットの品質が固定される(内部にLLMを含む場合は非決定性が維持される)
    • データ層には決定された事実が保存される(集計・分析の元データは揺らいではならない)
    • 契約プログラミングの概念と類似する
  • 制約はガードレールとして機能し、AIが間違った方向に進むことを防ぐ

■ 4. 制約以外のアプローチ

  • 制約はガードレールによってAIの方向性を制限するが、ゴールに直接導くわけではない
  • ハーネスエンジニアリングも標準化の方向性の一つとして位置づけられる
  • ゴールへ導くための手法:
    • テストコード: ソフトウェアに対する期待値を明確化する
    • オブザーバビリティ: ソフトウェアの振る舞いを可視化する
    • 境界線: ソフトウェアのスコープを決める(ドメインモデルと同義)
    • アウトプットの品質指標: コードの方向性を決める(ただし安易な指標はグッドハートの法則を招く。LLMも同様)
  • モデルが変わると設計が陳腐化する課題があるため、コミュニティの集合知を活用することが現実的な対策となる

■ 5. おわりに

  • ソフトウェアエンジニアの役割の変遷:
    • これまで: 人間のあいまいな要求を仕様として決定してきた
    • 今後: 人間とAIの非決定性をソフトウェアとして決定していく
  • AIの発展と人間の学習:
    • AIがどれほど発展しても、仕事の形は変われど抽象度を高める視点は変わらない
    • 知識のある者がAIを活用できることは確かである
    • 理由: 良い質問をするための知識が必要 / AIの出力を評価する能力が必要 / 抽象的なアドバイスを活用する能力が必要
    • AI普及後も人が学ぶことの重要性は変わらない
  • 変化への対応:
    • 半年後の状況は予測できないからこそ、変化できる設計が重要
    • 「どうでもよいことは流行りに従い、重大なことは標準に従い、ドメインのことは自分ら設計する」(郡山昭仁)
    • 不易流行(松尾芭蕉): 変わらない本質を大切にしつつ時代の変化に応じた新しいものを取り入れる
    • 温故知新(孔子): 過去の事実を研究し新しい知識や見解をひらく
  • 結論: 眼の前の問題を解決できるのは自分自身であり、現実と設計を楽しむことが重要