Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
Search
Yoda Keisuke
June 25, 2025
Programming
4.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
Yoda Keisuke
June 25, 2025
More Decks by Yoda Keisuke
See All by Yoda Keisuke
Eval-Driven Prompt Engineering(プロンプトのevalを書き始めたら〜記事の概要)
yodakeisuke
0
95
Expertise as a Service via MCP
yodakeisuke
1
4.2k
Agent Rules as Domain Parser
yodakeisuke
1
5.1k
.mdc駆動ナレッジマネジメント/.mdc-driven knowledge management
yodakeisuke
32
27k
Reactのミニマム理解 〜UI = f(data)(state)+sideEffect〜
yodakeisuke
5
180
インフラ高級言語としてのAWS CDK〜"設定"より1段階ハイレベルな抽象化〜
yodakeisuke
1
150
Other Decks in Programming
See All in Programming
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
250
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
4.5k
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
140
関数型プログラミングのメリットって何だろう?
wanko_it
0
180
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
120
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
110
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
330
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Fireside Chat
paigeccino
42
4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.5k
Being A Developer After 40
akosma
91
590k
30 Presentation Tips
portentint
PRO
1
350
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Scaling GitHub
holman
464
140k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Transcript
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜 AIの出力の質を上げる!チームの集合知を注入する方法
2025年6月25日 株式会社ログラス 1
# メインの問い どこにどう注入するか? どこから抽出し、どう整理するか? 開発プロセスにおいて、 AIの出力の質を上げるために、チームの集合知を注入する方法
どこにどう注入するか? 3
# どこにどう注入するか? - 主張 コード(型・関数・テスト)が第一級コンテキストで、細かい規約はリントで守る、 残った手順的知識やサマリ・インデックス的知識は自然言語のruleに落とす 決定的 非決定的 PR作成手順 ビルド・テスト手順
手順的知識 ドメイン語彙/ユースケース そのコードベースの知識 ドメイン知識 関数型スタイル レイヤ分離やテストのお作法 規約的知識 写す そのまま書く キャッシュする/ インデックスする 制約を実装 語る
# どこにどう注入するか? - 理由 非決定性を最小化し、2重メンテを避けつつ概念・考え方をAIと共有するため 非決定性の最小化 決定的に実装できるルールは決定的に 自然言語より解釈揺れが無い 知識の単一情報源化 自然言語との2重メンテ回避
コードとドキュメントの距離がゼロ (というか一致) 最も具体的な指示(例示) 自然言語での指示は追随性が低い 実際のコードで語った方が思惑に沿っ てくれる 型付き概念部品の提供 レゴブロックとしての概念を別ユースケー スでも使用 具体的な「機能」だけでなく 「業務概念」とその理解をAIと共有
# どこにどう注入するか? - 組織文脈 ストック的な文書をメンテしていく文化、仕様・規約を日本語でメンテする文化は薄い 「その場の知っているかどうかの知識」をAI Readableにしておくことは必須 「やった自分はわかる」状態を作る、暗黙知負債の負債度合いが急上昇 新規事業・新機能開発のビジネス要求が強い中、既存知識の明文化はそこまで 進められていない…
# どこにどう注入するか? - 組織文脈 それでも…俺たちにはDDDがあるよ! https://speakerdeck.com/loglass2019/loglass-in-10-min-for-engineers?slide=44 エンジニア向けカンパニーデックより @kawashima さん による書評
https://qiita.com/kawasima/it ems/05f231653ef773697991# architecture-modernization https://www.manning.com/books/architecture-modernization https://matarillo.com/dmmf/
# どこにどう注入するか? - 一周回ってDDD Code as 業務知識の引継書 (対AI・人間) Code as
合わせて欲しいスタイル・お作法 Code as Context 業務フロー・その目的 -> 関数を合成した関数・その名 前 業務手順・その目的 -> 関数・関数名 ビジネスルール -> 関数 業務データ・イベント -> データ・イベントの型 業務データの構造・サブセット関係 -> ADT 状態遷移とその制約 -> 関数のシグネチャ 業務概念とその階層 -> モジュール 実例を明示 Code as ドメイン知識 Code as スタイルガイド 渡す追加コンテキストが最小限 自然言語より解釈揺れが無い 実例に追従したコードを書かせ易い 開発時は自己参照
# どこにどう注入するか? - 自然言語・ruleで補完する部分 全てを完全にコードに意図込めできる訳ではない 性能等のため -> コメント 業務上の背景 ->
コメント なぜそう書いているか? より上段/全体の背景/目的 一般的に従って欲しい心構え 典型的にはその機能全体の概要・目的など コード全て舐めれば把握可能かもしれないが、 非効率 → .md として書く。ある意味キャッシュ 蒸留されたサマリ キャッシュとしての概要 主要概念へのインデック ス 基本、抽象度の高いお気持ち指示は通りが悪 い → rule として書くが、実例となるコード (sample)やtemplate をリンク
# どこにどう注入するか? - as Context としてのコードとスピードの両立には? スピードと両立するには? 品質ブレがあるのでは? 人間に書かせないでAI様に書いていただく ドメイン知識の
Single Source of Truth としての コード (ここだけ永続化) 3重メンテせ ず、都度ビュ ーとして復元 自然言語 コードの マッピング Rule それぞれ半構造化 された空テンプレ/ サンプルは必要
# Appendix – コードでの知識表現 仕訳集約は 登録された/訂正さ れた/承認された のイベントを返す (コマンドも同様) 登録コマンドには、
- 明細二行以上 - 貸借の一致 のビジネスルール 仕訳集約は 登録された/訂正さ れた/承認された のイベントを返す (コマンドも同様) 登録コマンドには、 - 明細二行以上 - 貸借の一致 のビジネスルール
# どこにどう注入するか? - Appendix (参考)サンプルコード/サンプルルールも含めた、より具体にフォーカスした話 https://speakerdeck.com/yodakeisuke/agent-rules-as-domain-parser- 10303fa7-cf85-4df5-a1fa-6f511f88d5a7
# どこにどう注入するか? - 可読性に関する私見 対人間と同じように、コードに自然言語的な意味を持たせることは今後も必要か? (もはや機械語のように扱えば良いのではないか?) LLMがLLMである限り(自然言語で情報を受け取り、自然言語で考えているように見 える)コードに自然言語的な意図込めをすることに意味はあるのではなかろーか コードに、①単なる実行命令 だけではなく
②自然言語的な意味ベクトルのニュアンス も 付与し、コンテキストとなす というかそもそも、現状Agentは自然言語の単語でgrepしてコードベース理解している
# どこにどう注入するか? - 結論 どこにどう注入するか? → コードに知識を写す形で注入する
どこから抽出しどう整理するか? 15
# どこからどう抽出・整理するか? - スコープ ドメイン知識の抽出整理が最もコモディティ化せず、扱う量も多い 大量/ 独自性高 PR作成手順 ビルド・テスト手順 手順的知識
ドメイン語彙/ユースケース そのコードベースの知識 ドメイン知識 関数型スタイル レイヤ分離やテストのお作法 規約的知識 少量/ 独自性低 独自ルールを書かずともツールや LLM自体がカバーするようになっ ていっている 独自性が高く、知識としての絶対 量も多いため、 ドメイン知識をフォーカスして扱 う
# どこからどう抽出・整理するか? - どこから?知識のソース 知識の獲得元はなんといっても real world
# どこにどう注入するか? - AI駆動開発の2大ネック しかしreal worldから、どうやって知識を抽出し整理する? 要件からコード生成できるようになる、などというが… 「要件」「仕様」をいい感じに抽出・合意・整理する これだ!というプラクティス・フォーマットは有史以来存在していない 問題とも共通の課題
(UMLやRDRA、sudoモデリングなどの提案はある/あったものの…) 加えて、人間のレビュー・QAもネック化
# どこにどう注入するか? - BDDという仮説 それでも…俺たちにはBDDもあるよ!(形式手法もあるよ) BDD、形式手法、型の3段階でAIにガードレールを与えるというAI駆動 開発のひとつの型を実践して提案 @nakamura_meg @itohiro73 @urmot2
# Appendix BDD概要 時代の要請に一定の回答を与える 「要件・仕様」を関係者で決める、 形式的に表現するところがネックにな っていっている 「こうあるべき」の宣言(2値の評 価関数)からシステムを生成することに なっていっている
# Appendix BDD概要 Example Mapping 形式的なユーザシナリオ 「仕様」をブレストするコラボレーショ ンツールのようなもの ATDD、TDDに接続しやすい ユーザシナリオ記述
# どこからどう抽出・整理するか? - 主張 BDDで評価基準・具体例・振る舞いを見出し、DDDで評価対象・概念・領域を見出す 具体例を収集 こうなったとき・どうなればいい のかの発見・定義 具体 領域を引いて、
あるべき状態を定義し、 収束させていく 具体例を収集 こうなったとき・どうなればいい のかの発見・定義 振る舞い・検証 抽象化・一般化 業務概念の発見・定義 概念間の関係・全体観を表現 概念 粒度に応じた領域・境界の定義 - 境界づけられたコンテキスト - 集約 - モデル、バリュー 領域・境界 BDD: 評価基準 DDD: 評価対象 https://x.com/t_wada/status/1922110843270885789
# Appendix DDD概要 領域を引き、概念の境界を与える - 境界づけられたコンテキスト - 集約 - 型付きドメイン語彙
全体観や、概念同士の関係を表現 - 動的関係(フロー) - 静的関係(構造)
# Appendix BDDと形式手法の比較・併用 ・ BDDは『みんなで共通理解を作る』 ・形式手法は『数学的に証明する』 「こういうときはどうなる?」 仕様の発見という用途は同じ
# どこからどう抽出・整理するか? - 開発プロセスにおいて W字モデルの如く、BDDラインとDDDラインで攻める
# どこからどう抽出・整理するか? - 両者を掛け合わせる必要性 テストだけ人間が見る場合でも、テスト数や因子水準が爆発し管理不能になることを避ける こちらからのみアプローチする (具体・機能のみ見る)と… 因子水準が爆発する テストの分割、階層管理が難しくな る(テストは人間が見る前提)
見出した「領域」を評価単位とす ることで、爆発を防ぐ システムの 縦横構造 検証対象・仕様記述対象として… 「具体機能」のみならず「概念」も必要
# どこからどう抽出・整理するか? - 結論 どこからどう抽出するか? → Real Worldから、 BDDやDDDのプラクティスを使い抽出・整理する
# 自己紹介 株式会社ログラス エンジニア 依田 啓佑 Keisuke Yoda x: kei_output_1104
29