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
未知のプログラミング言語にChatGPTと共に挑む
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yudppp
July 20, 2023
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
未知のプログラミング言語にChatGPTと共に挑む
DROBE Engineer Night #4 LLM in PracticeのLT資料です
yudppp
July 20, 2023
More Decks by yudppp
See All by yudppp
開発者にもコーディングエージェントにも働きやすい環境を整える
yudppp
1
98
型安全なDrag and Dropの設計を考える
yudppp
5
1k
SaaSフロントエンド開発の現場で求められる技術 / Technologies for SaaS Frontend Development in the Field
yudppp
2
290
2019年 HRBrainの技術的挑戦 / hrbain technology challenge 2019
yudppp
3
1.5k
Web開発を支えるマイグレーションツールについて / sqldef introduction for psql users
yudppp
2
3.7k
ISUCON向けのツールを作った話 / isutools
yudppp
1
350
Row Level Securityはマルチテナントの銀の弾丸になりうるのか / Row Level Security is silver bullet for multitenancy?
yudppp
23
34k
Webサービス開発に必要な統計学入門 / study of statistics for web developers
yudppp
1
370
メジャーな Live Reloaderの違いをちゃんと調べて見た / Compare major live reloader of Go
yudppp
1
2k
Other Decks in Technology
See All in Technology
システム思考で問題に対処する
yussak
0
210
ガバメントクラウドでのランサムウェア対策
techniczna
2
1k
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
450
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
250
モダンフロントエンド 開発研修
recruitengineers
PRO
4
570
MIRU 2026 チュートリアル
keisuke198619
0
870
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
420
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
190
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
480
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
550
サイバー捜査員研修(後半)
nomizone
1
810
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
A Modern Web Designer's Workflow
chriscoyier
698
190k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
RailsConf 2023
tenderlove
30
1.5k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
850
Between Models and Reality
mayunak
4
390
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
BBQ
matthewcrist
89
10k
Un-Boring Meetings
codingconduct
0
380
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Leo the Paperboy
mayatellez
8
2.1k
Transcript
未知のプログラミング⾔語に ChatGPTと共に挑む DROBE Engineer Night #4 LLM in Practice
⼤学では経営⼯学を学んでいました。 コードは今も昔もたくさん書いています。 HRBrainではプロダクトチームのテック リードとプラットフォームチームを兼務を しながら、いろんなことをやっています。 好きな⾔葉は冪等性。 嫌いなモノは浮動⼩数点の誤差。 yudppp
Abstract 未知の⾔語(Lua)をスポットで使いたかったので、 体系的な学習をせずにChatGPTを利⽤し、開発を⾏なった話をします。
Contents • HRBrainについて • 私がやりたかったこと • 私とLuaの関係 • 私とChatGPTとの共闘 •
まとめ
HRBrainについて
HRBrainについて HRBrainは、タレントマネジメント、組織診断サーベイ、⼈事評価、360度評価、 労務管理、社内向けチャットボットの6サービスからなる、⼈事業務の効率化か ら⼈材データの⼀元管理‧活⽤までワンストップで実現するクラウドサービス HRBrainを開発運営しています。
HRBrainのドメイン設計
私がやりたかったこと
ブランチデプロイ環境について PRごとに検証できる環境のこと。会社によってはPull Request環境と呼ばれたり しているもの
ブランチデプロイ環境について HRBrainの PlatformチームではPRごとに専⽤の環境を簡単に⽴ち上げる仕組みを プロダクトチーム向けに提供しています。 ⼀つのサービスだけではなく、複数のサービスを同時に動かす必要があり、複雑 な仕組みで実現しています。 元々Kubernetes(GKE)上で動いていた仕組みからCloudRunに移⾏しています。 https://times.hrbrain.co.jp/entry/kubernetes-branch-deploy
CloudRunのリビジョンタグについて リビジョンタグを使⽤すると、リビジョン(Versionに近いもの)に名前を付けるこ とができ、その名前を使って特定のリビジョンにアクセスが可能になります。 URL: https://service-a.run.app TAG: https://tag---service-a.run.app PRごとにリビジョンを作成することがで、PRごとに固有のURLでアクセスするこ とが可能になります。 https://cloud.google.com/run/docs/rollouts-rollbacks-traffic-migration?hl=ja#tags
下記のURLでアクセスできるようにしたい
下記ができるProxyを作る
簡単なProxyといったらNginx server { listen 8080; server_name ~^((?<pr>[a-z_0-9-]+)---(?<tenant>[a-z_0-9-]+))\.service-a\.hrbrain\.jp; location / {
set $url https://$pr---service-a.run.app; resolver 8.8.8.8 valid=10s; proxy_pass $url; proxy_set_header X-Forwarded-Host $host; } } server { listen 8080; server_name ~^(?<tenant>[a-z_0-9-]+))\.service-a\.hrbrain\.jp; location / { resolver 8.8.8.8 valid=10s; proxy_pass https://service-a.run.app; proxy_redirect off; proxy_set_header X-Forwarded-Host $host; } }
簡単なProxyといったらNginx server { listen 8080; server_name ~^((?<pr>[a-z_0-9-]+)---(?<tenant>[a-z_0-9-]+))\.service-a\.hrbrain\.jp; location / {
set $url https://$pr---service-a.run.app; resolver 8.8.8.8 valid=10s; proxy_pass $url; proxy_set_header X-Forwarded-Host $host; } } server { listen 8080; server_name ~^(?<tenant>[a-z_0-9-]+))\.service-a\.hrbrain\.jp; location / { resolver 8.8.8.8 valid=10s; proxy_pass https://service-a.run.app; proxy_redirect off; proxy_set_header X-Forwarded-Host $host; } } これがサービスの数分必要
nginx.conf 20⾏×20サービス(現在時点)→400⾏ サービスの追加⾃体はプラットフォームチームではなく、プロダクトチームに やってもらいたいと思っている。 400⾏ほぼコピペのコードがあるのはしんどい。 またプラットフォームチーム的には共通で設定変えたいとかありそう。その時40 箇所に1⾏ずつ⾜したPR出すのか for⽂を使いたい。
nginx.conf server { listen 8080; server_name ~^((?<pr>[a-z_0-9-]+)---(?<tenant>[a-z_0-9-]+))\.service-a\.hrbrain\.jp; location / {
set $url https://$pr---service-a.run.app; resolver 8.8.8.8 valid=10s; proxy_pass $url; proxy_set_header X-Forwarded-Host $host; } } server { listen 8080; server_name ~^(?<tenant>[a-z_0-9-]+))\.service-a\.hrbrain\.jp; location / { resolver 8.8.8.8 valid=10s; proxy_pass https://service-a.run.app; proxy_redirect off; proxy_set_header X-Forwarded-Host $host; } }
ChatGPTとのやりとり
OpenRestyとLuaついて OpenRestyは、NGINXベースのウェブプラットフォームで、Lua⾔語を使⽤して ⾼性能なウェブアプリケーションを作成するためのツールです。OpenRestyは、 サーバーサイドのWeb開発で柔軟性とスケーラビリティを提供します。Luaは、 優れたスピード、最⼩のメモリフットプリント、そしてCとの簡単なインター フェースを提供することで知られています。これにより、LuaはOpenRestyの内部 でのスクリプト作成に適しています。 これら⼆つの組み合わせにより、データリッチなウェブアプリケーションを効率 的に開発することができます。
私とLuaの関係
関係性① 前職でも今回のようなAPI Gateway⽤途でLuaを利⽤していた。 ただメインで上司が書いていたので、⼀部のコードを改変した程度(もしかしたら ないかもしれない)で⽂法は忘れてしまっている。
関係性② 4年に1回の頻度でRedisでAtomicな処理をするために利⽤する。 ただ書いても数⾏なので⽂法を気にしたことはない
私とChatGPTとの共闘
None
None
None
None
None
None
None
None
None
最後にちゃんと動くか確認 エラーが出て動かなかった
None
今度こそ動くか確認 無事動いた
最終結果 400⾏が54⾏になり13.5%に圧縮できました。 54⾏のうち20⾏はMapの定義でロジックらしいロジックは10⾏程度
まとめ
まとめ Luaについて詳しく知らないまま、動くものを作ることが可能になった。 OpenRestyではNginxでは⼿の届きにくいところをカバーできるのでちょっと使 う分には良かった。 どうChatGPTにニュアンスを伝えるかが重要だった。 またデバッグ⾃体は現状だと⾃分⾃⾝で⾏う必要があった。
追伸
追伸 結局map directiveやif directiveを駆使すれば、別にLuaいらなかったのでは?