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
AIがコードを書く時代の ジェネレーティブプログラミング
Search
polidog
PRO
April 10, 2026
Technology
870
3
Share
AIがコードを書く時代の ジェネレーティブプログラミング
polidog
PRO
April 10, 2026
More Decks by polidog
See All by polidog
小さな開発会社を作った理由(再)
polidog
PRO
0
240
React Server ComponentsでAPI不要の開発体験
polidog
PRO
1
780
小さな開発会社が受託開発に力を入れる理由
polidog
PRO
0
470
小さな開発会社を作った理由
polidog
PRO
1
3.5k
小さな開発会社がWebサービスを作る理由
polidog
PRO
1
800
トランザクションスクリプトは何がダメなのか?
polidog
PRO
2
4k
React初心者がHooksを理解するためにコードを読んでみた
polidog
PRO
0
610
object-mapperを作ってる話
polidog
PRO
0
410
2020年から始めるSymfonyフレームワーク
polidog
PRO
2
1.3k
Other Decks in Technology
See All in Technology
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
180
FessのAI検索モード:検索システムとLLMへの取り組み
marevol
0
150
『生成AI時代のクレデンシャルとパーミッション設計 — Claude Code を起点に』の執筆企画
takuros
2
1.8k
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
400
AI와 협업하는 조직으로의 여정
arawn
0
560
Oracle Cloud Infrastructure:2026年4月度サービス・アップデート
oracle4engineer
PRO
0
230
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
510
はじめての MagicPod生成AI機能 機能紹介から活用方法まで
magicpod
0
120
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
190
ハーネスエンジニアリングの概要と設計思想
sergicalsix
9
6.6k
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
170
色を視る
yuzneri
0
290
Featured
See All Featured
How to make the Groovebox
asonas
2
2.1k
Typedesign – Prime Four
hannesfritz
42
3k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
780
It's Worth the Effort
3n
188
29k
Mobile First: as difficult as doing things right
swwweet
225
10k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Statistics for Hackers
jakevdp
799
230k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Ethics towards AI in product and experience design
skipperchong
2
260
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.9k
Transcript
AI がコードを書く時代の ジェネレーティブプログラミング @polidog 設計ナイト 2026 1
自己紹介 @polidog パーティーハード株式会社 Symfony(PHP) が好き 2
AI がコードを書く時代に、 ソフトウェアをどう設計すればいいのか? 3
DDD では動くコードがモデルだった エリック・エヴァンスのDDD は「動くコードこそがモデルである」と説い た。 人間が最終的にコードを書き、システムを作り上げる時代だったからこそ、 動くコードがモデルであった。 人間がコードを書かなくなった今、動くコードはまだモデルと言えるのか? 4
コードがモデルであることの限界 AI が生成したコードを人間が全て読み解くのは現実的ではない。 コード量の爆発的増加 生成されたコードの意図が読み取りにくい 全体像の把握が困難に コードをモデルとすることは、限界を迎えつつある。 5
ただし、AI がコードを書く時代でも、人の頭の中にはモデルがある 問題は、それが外に出ていないこと 6
SDD (仕様駆動開発) SDD (Spec-Driven Development ) という考え方が広まりつつある。 1. 自然言語で仕様を書く 2.
AI がそれに基づいてコードを生成する 3. 生成されたコードをレビュー・修正する 4. 変更があれば仕様を更新し、再生成する 仕様がモデルとなり、コードはその派生物という位置づけになる。 7
自然言語で書かれた仕様はモデルと言えるのか? 自然言語の仕様には、解釈の幅がある。 人によって読み方が変わる AI の解釈も毎回同じとは限らない 実行できない、検証できない 仕様とコードが乖離しても検知する仕組みがない モデルと呼ぶには、曖昧すぎるのではないか。 8
ジェネレーティブプログラミング 9
ジェネレーティブプログラミングとは コードを手で書くのではなく、コードを生成する仕組みを設 計するという考え方。 2000 年にKrzysztof Czarnecki とUlrich Eisenecker が著書 『Generative
Programming 』で体系化した。 10
ジェネレーティブプログラミングのプロセス DEMRAL (Domain Engineering Method for Reusable Algorithmic Libraries )
という方法論で、3 つのフェーズからなる。 フェーズ やること 成果物 ドメイン分析 境界を決め、共通性と可変性を識別 スコープ定義、フィーチャーモデル、制約 ドメイン設計 アーキテクチャやDSL 、構成知識を設計 アーキテクチャ、DSL 記法、マッピングルール ドメイン実装 コンポーネントやジェネレータを実装 生成コード、テスト 11
エッセンスを取り入れる 特に以下の2 つで、モデルを検証可能にする。 1. フィーチャーモデル ドメインの共通性・可変性を構造化し、何が固定で何が変わるかを明示する。 2. コンフィグレーションDSL フィーチャーの選択を宣言的に記述し、バリデーション可能にする。 自然言語の仕様では曖昧だったモデルが、構造を持ち、検証できるものにな
る。 12
フィーチャーモデルとは ドメインが持つ フィーチャー(機能的 特徴) をツリー構造で表現したもの。 どのフィーチャーが必須で、どれが オプションか どのフィーチャーが択一で、どれが 共存可能か フィーチャー間にどんな制約や依存
があるか 図の引用元: https://club- z.zuken.co.jp/hint/20250925_vuca_17.html 13
DSL で仕様を記述する フィーチャーの選択を宣言的に記述するためのDSL を定義する。 リストコンテナではYAML で仕様を記述する: name: IntList language: go
element_type: int storage: type: array initial_capacity: 16 growth_strategy: doubling operations: - remove - insert - linear_search - iteration: direction: forward この記述がAI への入力となり、生成の再現性と検証可能性を高める。 14
DEMRAL を参考にClaude Code のスキルに 各活動をスキルとして実装し、AI と対話しながら設計資産を作る。 活動 スキル 成果物 ドメインスコーピング
/domain-scoping スコープ定義 フィーチャーモデリング /feature-modeling フィーチャーモデル、制約 ドメイン設計 /domain-design アーキテクチャ、コンポーネント、構成の知識 DSL 定義 /dsl-definition DSL 記法、サンプル仕様書 実装 /implement 生成コード テスト /test テストコード 15
サンプル:リストコンテナの生成 Czarnecki の『Generative Programming 』で題材とされたリストコンテナを、 AI 時代のジェネレーティブプログラミングで再実装したサンプル。 フィーチャーモデル — Storage
(Array/LinkedList ) 、Operations (Sort 、 Iteration 等)の可変性を構造化 コンフィグレーションDSL — YAML でフィーチャーを選択 構成の知識 — フィーチャー選択からコンポーネントへのマッピング + 言語 別の導出ルール 生成コード — 同じ仕様からGo ・PHP のコードを生成 https://github.com/polidog/gp-example-list 16
構成の知識 DSL に書かなくても、構成の知識が自動的に導出・補完するものがある。 言語別コントラクト導出: PHP → Countable , IteratorAggregate を自動実装
Go → iter.Seq[T] 互換メソッドを自動生成 Python → Sized , Iterable , Container を自動実装 組み合わせルール: Contains 有効 → LinearSearch を自動で有効化 Sort 有効 → ElementType の比較可能性を確認 LinkedList + Singly + Reverse → 非効率の警告を付与 17
実際に生成できたもの リストコンテナのサンプルでは、同じ設計資産から複数言語のコードを生成で きた。 Go — 配列ベース + iter.Seq[T] 対応のイテレータ PHP
— Countable , IteratorAggregate を自動実装 いずれも構成の知識のマッピングルールに基づいて生成され、テストも通過し ている。 18
まだ実験段階 スキルの構成はまだ試行錯誤中 実際のプロジェクトに導入して、本当に機能するか試していきたい 得た知見は改めて共有したい 19
AI がコードを書く時代の設計手法は、まだ誰も正解を持っていない 20
自分も手探りなので、一緒に試して、共有しあえたら 嬉しい。 21
「動くコード」から 「構造化された仕様」へ 22
ありがとうございました @polidog 23