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
More Context, Better Code. 既存コードやOAS等をコンテキストとして...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
uzulla
October 16, 2024
Technology
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
More Context, Better Code. 既存コードやOAS等をコンテキストとしてLLMに与える事で、よりよいコード生成を行う話
at: 【リンケージ x セレス】生成AI利用の現実 ~開発者は本当にAIと向き合えているのか~
date: 2024/10/17
author: uzulla
uzulla
October 16, 2024
More Decks by uzulla
See All by uzulla
ALL CODE BASE ARE BELONG TO STUDY
uzulla
30
7.8k
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
580
PHPer's Guide to Daemon Crafting Taming and Summoning
uzulla
2
2.3k
似たもの同士のPerlとPHP
uzulla
1
310
あなたのアプリ、ログはでてますか?あるいはログをだしてますか? (Funabashi.dev用 軽量版)
uzulla
3
330
セッションのトークセッション / Traps for PHP session features in growing web apps
uzulla
2
240
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
5
3.2k
例外を投げるのをやめてみないか? あるいは受け入れてみないか? - How to use exceptions other than throwing
uzulla
6
1.5k
PHPerが ISUCONでやるべき事
uzulla
1
1.8k
Other Decks in Technology
See All in Technology
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
220
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
370
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2k
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
290
トークン最適化のためのユーザーストーリー分析 / User Story Analysis for Token Optimization
oomatomo
0
160
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
140
打造你的 AI 工作流:Agent Skill + MCP 實戰工作坊
appleboy
0
460
ゼロをイチにする仕事が終わったあと
smasato
0
250
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
270
product engineering with qa
nealle
0
140
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
180
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
170
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
370
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Building an army of robots
kneath
306
46k
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
Rails Girls Zürich Keynote
gr2m
96
14k
How to build a perfect <img>
jonoalderson
1
5.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
More Context, Better Code. 既存 OAS等 LLM 与 事 、
⽣成 ⾏ 話 ̶ at: ̶ 【リンケージ x セレス】⽣成AI利⽤の現実 ~開発者は本当にAIと向き合えているのか~ ̶ date: ̶ 2024/9/14 ̶ author: ̶ uzulla (from Linkage)
⾃⼰紹介 ̶ id: uzulla (うずら) ̶ Linkageには業務委託でJoinしているフ リーのウェブ系ソフトウェアエンジニア (他の⾊々な現場にもおります) ̶
主戦場はバックエンド系ですが、 必要なら何でもやります系です。 ̶ ⾃称で、得意なものはレガシーコードで す (約30年選⼿なので、俺がレガシーだ!) ̶ ⼀番書く⾔語はPHPですが、TypeScript やGoやPython等も必要に応じて書きます
DISCLAIMER ̶ 本トークはLLMベースのAIについて扱いますが、 あらゆる場⾯で推奨するものではありません ̶ 多くのLLMによるコード⽣成サービスは、さまざまな課題を抱えています ̶ コードをクラウドに送信するにもかかわらず、 難解・不透明なポリシー、プラン等などによる変動条件や、 予期せぬ設定を誘発するオプトアウト⽅式の多さ
̶ LLMが⽤いる学習データの透明性不⾜による 予期せぬライセンス違反の可能性 ̶ 本トークでは扱いませんが、現場において判断してください
導⼊
(LLM )AI活⽤ !? ̶ 挙⼿で教えてもらえるとうれしいです! ̶ ChatGPT、Claude、Copilot、Gemini等のチャット ̶ GH Copilot,
Jetbrains AI, Cody, Codium等のAddon等 ̶ CursorやGitHub WorkspacesやインテグなどのAIネイティブエディタ等 ̶ CIなどに組み込んだ⾃動コードレビューアクションなど ̶ OpenAI Api等をコールする⾃作のスクリプトなど ̶ 私は⼤体使ってみている
初期 ⽤AI環境 触 失望 ̶ 2021年に鳴り物⼊りした(GitHub) Copilot 「コードはAIが書く時代!!!エンジニア失業!!!」 ̶ 初期のCopilotはエディタ内でAIが補完のみ
̶ 開いているタブだけを参照する ̶ 体感で「微妙」という感じ否めない ̶ 「有料になっちゃったしなあ…」 ̶ しかし昨今は進化をしております! ̶ 競合を参考にして(?)進化 ̶ インラインエディット対応、コンテキスト対応 ̶ Web UIでの動作対応 ̶ 中⾝もGPT4oになったり、⾼速化したり
쏑쏬 ̶ 全部ライブコーディングしたかったが、時間がきびしいのでね!
OAS定義 DTO定義 ⽣成 ̶ OAS定義ファイルからDTO定義を⽣成するデモ ̶ OASを⽣成して、DTOを⽣成して、C(RUD)を⽣成して、テストを⽣成す る ̶ コンテキストとして、ファイルを与えていく
OAS ⽤意 ̶ プロンプトサンプル ̶ ଂॻཧ༻ͷCRUDͷOASΛYamlܗࣜͰੜ͍ͯͩ͘͠͞ɻ ΤϯςΟςΟͱ ͯ͠ɺBook ΤϯςΟςΟ͕͋Γ·͢ɻ
̶ 本当はもっと⻑くかいてもよいが、プロンプトエンジニアリングの説明は 今回しないので省略
None
ੜ͞ΕͨYaml͔Βൈਮ components: ུ Book: type: object properties: id: type: integer
title: type: string author: type: string publishYear: type: integer genre: type: string createdAt: type: string format: date-time
DTO ⽣成 ̶ chat ウインドウをひらき、attach fileをする ̶ attach file(AIが参考とするファイルを添付)をするのが重要
̶ 何⾔語で、バージョンは何で、くらいは指定した⽅がよい
None
̶ 完璧ではない…が、これは指⽰をちゃんと書いていくとよい ̶ strict_typeつけてね、とか。 ̶ Readonlyつけて、とか。 ̶ プロンプトの秘伝たれをつくると便利です(⾳声⼊⼒というテクもある) ̶ 「⾯倒臭い!」「全部⾃分で書くのとどっちが⾯倒かな???」
̶ ⼀回ソースコード完成形ができれば、「このファイルを真似してね」とい えば真似してくれるので、そういう指定もできる
DDL 、 ⽣成
None
None
Mockは嫌いだなあ… ̶ ⾯倒なのでSqliteになっているのはご愛敬
None
実⾏ ( phpunit ) $ vendor/bin/phpunit --bootstrap vendor/autoload.php ./BookRepositoryTest.php PHPUnit
11.4.1 by Sebastian Bergmann and contributors. Runtime: PHP 8.3.9 . 1 / 1 (100%) Time: 00:00.006, Memory: 6.00 MB OK (1 test, 6 assertions) ウゴイタアアアア
中間 ̶ 必要なファイルをアタッチすることで、AIが⽂脈(コンテキスト)を理解し て、ちゃんと動くコードを⽣成できる ̶ 全部を⾃然⾔語で⼊⼒するのは無駄がすごい(⼈間でもそうでしょ) ̶ 「ここをこうなおして」「これを参考にして」と、AIに語りかける ̶
(これを⾏わないと、なんかそれっぽい嘘コードがでてきて、勝⼿に⼈間が 失望することに)
楽
最近 ⼀ ⼀ 指定 (?) ̶ @workspace を指定するとよい ̶ (AIが⾃動的に選ぶが、万能ではない…けど、指定するより楽!)
既存 修正 ̶ DateTimeじゃなくて、DateTimeImmutableがいいよね
None
… ̶ なんて⾯倒くさい! Inlineをつかいましょう ̶ 全選択したり、修正したい箇所だけ選択してから Copilot > start in
editor を選ぶ
None
None
̶ 修正提案がでるので、これをAcceptしたりする ̶ 追加の修正指⽰もおこなうことができます ̶ (が、思い通りでない場合は、質問⽂⾃体かえたほうが早い事も) ̶ このインライン修正の機能は、 多分、初出はCursor(別のAIネイティブエディタ)で、 これがすごくよかったもので、パク…オマージュされて
実装されたんじゃないか (ほかのツールも倣っている) ̶ Cursorはすごくいいぞ()
Inline chat 修正 ̶ ゼロから⽣成でなく、インラインで局所的な修正が可能 ̶ 範囲指定したコードを対話的に修正・⽣成するデモ ̶ ちょいちょい⾯倒な修正も⼀発でできる ̶
たとえば…Array()記法を[]に修正させる ̶ (こんなの、他⼈にやらせたいですよね?それできます!)
None
VSCode+Copilot 開発 ̶ …をやろうとおもったんですが、⻑くなるのでYoutubeにしておきました。 興味のある⼈は後でご覧ください。 ̶ https://www.youtube.com/watch?v=51OR5pRRu8I
None
쎕썿쎘 ̶ AIは賢いが、コンテキストがあれば、望む結果が得られやすい ̶ 「バグを直して!」みたいなのは難しい、 「このファイルで、このテストが通るように直して!」等がよい ̶ 「テンプレ」をつくって、これを真似て作って、というとよい ̶ (そのためには⾃分の知識は重要、選ぶのはあなた)
̶ inline機能で⼤分サクサクと作業ができるようになって便利 ̶ GitHub Copilot以外もツールはある ̶ ⽇進⽉歩で改善されるので、年間で契約しない⽅がよい(と思う) ̶ 私は普段Cody+PhpStormをつかっている ̶ (Copilotは「質問がプログラミングに制限されている」ので不便な事 も)