Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AIがコードを書く時代の ジェネレーティブプログラミング
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
polidog
April 10, 2026
Technology
1.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AIがコードを書く時代の ジェネレーティブプログラミング
polidog
April 10, 2026
More Decks by polidog
See All by polidog
omasushiというライブラリを作った
polidog
0
610
RelayerというPHPのフレームワークを作った
polidog
0
230
小さな開発会社を作った理由(再)
polidog
0
330
React Server ComponentsでAPI不要の開発体験
polidog
1
980
小さな開発会社が受託開発に力を入れる理由
polidog
0
590
小さな開発会社を作った理由
polidog
1
3.8k
小さな開発会社がWebサービスを作る理由
polidog
1
900
トランザクションスクリプトは何がダメなのか?
polidog
2
4.1k
React初心者がHooksを理解するためにコードを読んでみた
polidog
0
640
Other Decks in Technology
See All in Technology
企画を Software Factory-ready にする——開発が高速になったとき、PdMの仕事はどう変わったか
yachibit
1
120
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
1
240
顧客価値を追いかけたら、プライシングにたどり着いた
sansantech
PRO
2
310
LLM Content Moderationを支える評価・改善ループの実践
suikabar
2
260
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
0
150
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
310
sue445's proposals 2026
sue445
0
120
React改造してみた
tsukina_7mochi
0
150
大型犬好きによるPugの紹介
yamanoku
1
160
CloudWatch Logsのコスト最適化:どこまでAIに任せてどこから人間が承認すべきか
yama3133
0
150
その Valkey 使いこなしていますか?
onk
PRO
5
1.8k
~最速でビジネスインパクトを創出する~ Sansanのデータ基盤と活用事例
sansantech
PRO
0
110
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1369
210k
Unsuck your backbone
ammeep
672
58k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
540
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
30 Presentation Tips
portentint
PRO
1
430
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Exploring anti-patterns in Rails
aemeredith
4
540
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
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