Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜

Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜

Avatar for Yoda Keisuke

Yoda Keisuke

June 25, 2025
Tweet

More Decks by Yoda Keisuke

Other Decks in Programming

Transcript

  1. # どこにどう注入するか? - 主張 コード(型・関数・テスト)が第一級コンテキストで、細かい規約はリントで守る、 残った手順的知識やサマリ・インデックス的知識は自然言語のruleに落とす 決定的 非決定的 PR作成手順 ビルド・テスト手順

    手順的知識 ドメイン語彙/ユースケース そのコードベースの知識 ドメイン知識 関数型スタイル レイヤ分離やテストのお作法 規約的知識 写す そのまま書く キャッシュする/ インデックスする 制約を実装 語る
  2. # どこにどう注入するか? - 理由 非決定性を最小化し、2重メンテを避けつつ概念・考え方をAIと共有するため 非決定性の最小化 決定的に実装できるルールは決定的に 自然言語より解釈揺れが無い 知識の単一情報源化 自然言語との2重メンテ回避

    コードとドキュメントの距離がゼロ (というか一致) 最も具体的な指示(例示) 自然言語での指示は追随性が低い 実際のコードで語った方が思惑に沿っ てくれる 型付き概念部品の提供 レゴブロックとしての概念を別ユースケー スでも使用 具体的な「機能」だけでなく 「業務概念」とその理解をAIと共有
  3. # どこにどう注入するか? - 一周回ってDDD Code as 業務知識の引継書 (対AI・人間) Code as

    合わせて欲しいスタイル・お作法 Code as Context 業務フロー・その目的 -> 関数を合成した関数・その名 前 業務手順・その目的 -> 関数・関数名 ビジネスルール -> 関数 業務データ・イベント -> データ・イベントの型 業務データの構造・サブセット関係 -> ADT 状態遷移とその制約 -> 関数のシグネチャ 業務概念とその階層 -> モジュール 実例を明示 Code as ドメイン知識 Code as スタイルガイド 渡す追加コンテキストが最小限 自然言語より解釈揺れが無い 実例に追従したコードを書かせ易い 開発時は自己参照
  4. # どこにどう注入するか? - 自然言語・ruleで補完する部分 全てを完全にコードに意図込めできる訳ではない 性能等のため -> コメント 業務上の背景 ->

    コメント なぜそう書いているか? より上段/全体の背景/目的 一般的に従って欲しい心構え 典型的にはその機能全体の概要・目的など コード全て舐めれば把握可能かもしれないが、 非効率 → .md として書く。ある意味キャッシュ 蒸留されたサマリ キャッシュとしての概要 主要概念へのインデック ス 基本、抽象度の高いお気持ち指示は通りが悪 い → rule として書くが、実例となるコード (sample)やtemplate をリンク
  5. # どこにどう注入するか? - as Context としてのコードとスピードの両立には? スピードと両立するには? 品質ブレがあるのでは? 人間に書かせないでAI様に書いていただく ドメイン知識の

    Single Source of Truth としての コード (ここだけ永続化) 3重メンテせ ず、都度ビュ ーとして復元 自然言語 コードの マッピング Rule それぞれ半構造化 された空テンプレ/ サンプルは必要
  6. # Appendix – コードでの知識表現 仕訳集約は 登録された/訂正さ れた/承認された のイベントを返す (コマンドも同様) 登録コマンドには、

    - 明細二行以上 - 貸借の一致 のビジネスルール 仕訳集約は 登録された/訂正さ れた/承認された のイベントを返す (コマンドも同様) 登録コマンドには、 - 明細二行以上 - 貸借の一致 のビジネスルール
  7. # どこからどう抽出・整理するか? - スコープ ドメイン知識の抽出整理が最もコモディティ化せず、扱う量も多い 大量/ 独自性高 PR作成手順 ビルド・テスト手順 手順的知識

    ドメイン語彙/ユースケース そのコードベースの知識 ドメイン知識 関数型スタイル レイヤ分離やテストのお作法 規約的知識 少量/ 独自性低 独自ルールを書かずともツールや LLM自体がカバーするようになっ ていっている 独自性が高く、知識としての絶対 量も多いため、 ドメイン知識をフォーカスして扱 う
  8. # どこからどう抽出・整理するか? - 主張 BDDで評価基準・具体例・振る舞いを見出し、DDDで評価対象・概念・領域を見出す 具体例を収集 こうなったとき・どうなればいい のかの発見・定義 具体 領域を引いて、

    あるべき状態を定義し、 収束させていく 具体例を収集 こうなったとき・どうなればいい のかの発見・定義 振る舞い・検証 抽象化・一般化 業務概念の発見・定義 概念間の関係・全体観を表現 概念 粒度に応じた領域・境界の定義 - 境界づけられたコンテキスト - 集約 - モデル、バリュー 領域・境界 BDD: 評価基準 DDD: 評価対象 https://x.com/t_wada/status/1922110843270885789
  9. # Appendix DDD概要 領域を引き、概念の境界を与える - 境界づけられたコンテキスト - 集約 - 型付きドメイン語彙

    全体観や、概念同士の関係を表現 - 動的関係(フロー) - 静的関係(構造)
  10. 29