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
PHPerKaigi 2021 LT PHPで簡単コード生成! 同じようなコードをたくさん書く...
Search
y-tsuzaki
March 28, 2021
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPerKaigi 2021 LT PHPで簡単コード生成! 同じようなコードをたくさん書くなら コード生成しチャイナ!
PHPerKaigi 2021 LT PHPで簡単コード生成! 同じようなコードをたくさん書くなら コード生成しチャイナ!
y-tsuzaki
March 28, 2021
More Decks by y-tsuzaki
See All by y-tsuzaki
PHPカンファレンス福岡2024 【超特急】SQLアンチパターン総おさらいLT
ytsuzaki
1
1.6k
PHPカンファレンス北海道2024 リーダブルSQL
ytsuzaki
5
840
ある日PHPerがベンチャー企業のデータ基盤を作ることになったら
ytsuzaki
1
460
【PhpStorm】モブプログラミングの実践と学び【結局はバランス?】
ytsuzaki
0
540
PHPerKaigi 2022 【Laravel】 サクッとN + 1問題を見つけて倒しチャオ!
ytsuzaki
1
3.3k
【超特急】「SQLアンチパターン」 総おさらいLT 【4分で25個】
ytsuzaki
2
910
Nuxt Composition API 使ってみた
ytsuzaki
0
290
Nuxt.js x Composition API x TypeScript
ytsuzaki
0
820
アクセス制御ライブラリ Casbinを使ってみた
ytsuzaki
2
1.8k
Other Decks in Technology
See All in Technology
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
220
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
220
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
0
120
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
320
Making sense of Google’s agentic dev tools
glaforge
1
200
公式ドキュメントの歩き方etc
coco_se
0
100
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.8k
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.1k
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
620
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
0
120
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
100
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Balancing Empowerment & Direction
lara
6
1.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Agile that works and the tools we love
rasmusluckow
331
22k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
Docker and Python
trallard
47
3.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
260
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
Transcript
Copyright © M&A Cloud All rights reserved. PHPで簡単コード生成! 同じようなコードをたくさん書くなら コード生成しチャイナ!
2021/03/28 PHPerKaigi /LT M&Aクラウド つざき 1
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! 株式会社 M&Aクラウド つざき 2 820zacky
Copyright © M&A Cloud All rights reserved. 3 事業売却と資金調達で次のステージへ 業界初の買い手の顔が見えるM&Aプラットフォーム
Copyright © M&A Cloud All rights reserved. 本題
Copyright © M&A Cloud All rights reserved. そもそも どんなときにコード生成したいか?
Copyright © M&A Cloud All rights reserved. 同じようなコードを たくさん書く必要があるとき
Copyright © M&A Cloud All rights reserved. 具体的には?
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! コード生成できたら嬉しい例 • DBにテーブルを追加したら自動で CRUD操作する画面一式を自動で作る • API定義から実装・テストまで自動で作る • エンティティからリポジトリを自動で作る 8
Copyright © M&A Cloud All rights reserved. コード生成の手法
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! 10 手法① ASTを作成・加工してコードに書き出す (AST=抽象構文木:コードを解析し木構造に分解したもの) ASTを加工 コードに変換 書き出し
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! 11 むずかしそう!
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! 12 手法② コードを文字列として加工して出力 書き出し テンプレート コード片
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! 13 これならできそう!
Copyright © M&A Cloud All rights reserved. 手法② 簡単コード生成のやりかた
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! テンプレートファイル 15 コード片を挿入したいところに適当な文字列を入れておく
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! コード生成するコード 16
Copyright © M&A Cloud All rights reserved. コード生成のメリット
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! コード生成のメリット • 元データに変更があった時、再度コード生成を実行するだけで対応できる • PHPやフレームワークの構文が変わったとしても一気に書き換えられる • 生成されたコードはケアレスミスがない 18
Copyright © M&A Cloud All rights reserved. コード生成のデメリット
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! コード生成のデメリット • 手動で書いた方が早いケースもある • コード生成するコード自体が汚くなりがち ◦ 何をやってるのかわかりづらい ◦ チームメンバーで導入するかどうか相談した方がいいかも 20
Copyright © M&A Cloud All rights reserved. 実務でやった例を紹介
Copyright © M&A Cloud All rights reserved. 実務でやった例を紹介 発表では割愛します 🥺
よければスライドをご覧ください
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! たとえばこんなコード 23 ある「対象物」に対してある「アクション」が許可されているか問い合わせたいケース
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! よくないところ 24 • “books”をリネームしたいけど他に”books”使ってるところどこ? ◦ grepするしかなくてつらい • スペルミス ◦ ランタイムに死ぬ ◦ 文字列なので動かしてみるまで間違いに気づけない • 他にどんなバリエーションがあるんだっけ? ◦ コード補完されないのでドキュメントやコメントを読むしかない
Copyright © M&A Cloud All rights reserved. こんなふうにコードを書きたい 25
Copyright © M&A Cloud All rights reserved. こんなふうにコードを書きたい 26 •
コード補完ができる ◦ Booksに対するアクションってRead以外なにあるっけ? というケースも補完されるので迷わない • しかし、権限の「対象物」や「アクション」ごとにコードをたくさん書かなくてはいけない・・・ • コード自動生成したい!
Copyright © M&A Cloud All rights reserved. 付録:実際のコード生成コード(抜粋)
Copyright © M&A Cloud All rights reserved. 付録:実際のコード生成コード 28 Classのテンプレート
Copyright © M&A Cloud All rights reserved. 29 Methodのテンプレート 付録:実際のコード生成コード
Copyright © M&A Cloud All rights reserved. 30 ①テンプレート読み込み→ ②コード片作成
→ ③テンプレートに挿入→④書き出し ① ② ③ ④ 付録:実際のコード生成コード
Copyright © M&A Cloud All rights reserved. 31 メソッドを作るコード 付録:実際のコード生成コード
Copyright © M&A Cloud All rights reserved. まとめ
Copyright © M&A Cloud All rights reserved. PHPerKaigi 2021 LT
PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ! まとめ • コードをたくさん書く必要があるときはコード生成というアプローチもあり ます • 文字列連結でお手軽にコード生成できます 33
Copyright © M&A Cloud All rights reserved. ご視聴 ありがとうございました