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
More Context, Better Code. 既存コードやOAS等をコンテキストとして...
Search
uzulla
October 16, 2024
Technology
240
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
600
PHPer's Guide to Daemon Crafting Taming and Summoning
uzulla
2
2.9k
似たもの同士のPerlとPHP
uzulla
1
320
あなたのアプリ、ログはでてますか?あるいはログをだしてますか? (Funabashi.dev用 軽量版)
uzulla
3
340
セッションのトークセッション / Traps for PHP session features in growing web apps
uzulla
2
240
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
5
3.4k
例外を投げるのをやめてみないか? あるいは受け入れてみないか? - 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
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.5k
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
470
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
740
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
240
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.5k
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
190
LLMに渡さなかった仕事
nanaism
0
170
Spring BootからQuarkusへの移行
tatsuya1bm
2
120
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
2.2k
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
160
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
15k
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
First, design no harm
axbom
PRO
2
1.3k
Thoughts on Productivity
jonyablonski
76
5.4k
The SEO Collaboration Effect
kristinabergwall1
1
560
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
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は「質問がプログラミングに制限されている」ので不便な事 も)