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とPythonを用いた 高速なデータ可視化プロトタイピング
Search
ingtk
July 11, 2023
Technology
1
87
ChatGPTとPythonを用いた 高速なデータ可視化プロトタイピング
ingtk
July 11, 2023
Tweet
Share
More Decks by ingtk
See All by ingtk
APIゲートウェイと認証認可サービスを導入した / Implement API Gateway and Auth Service
ingtk
0
590
Other Decks in Technology
See All in Technology
How to Lead? Testimonial of a Lead Android Engineer
oleur
1
110
IPUT App Dev. Co. -Overview 2024/4
iputapp
0
120
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
150
Handling focus in 2024
tahia910
0
220
JAWS-UG Bedrock Claude Night
yamahiro
3
700
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
3
3.2k
本当のAWS基礎
toru_kubota
1
620
20分で完全に理解するGrafanaダッシュボード
hamadakoji
5
890
Cypress or Playwright?
rainerhahnekamp
0
170
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
350
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
280
実例で紹介するRAG導入時の知見と精度向上の勘所
yamahiro
5
1.6k
Featured
See All Featured
Building Applications with DynamoDB
mza
88
5.6k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
Bash Introduction
62gerente
605
210k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
What's new in Ruby 2.0
geeforr
337
31k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
Happy Clients
brianwarren
92
6.4k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.2k
Building Effective Engineering Teams - LeadDev
addyosmani
32
1.9k
Docker and Python
trallard
35
2.7k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Faster Mobile Websites
deanohume
300
30k
Transcript
ChatGPTとPythonを用いた 高速なデータ可視化プロトタイピング
自己紹介 稲垣 隆徳 Twitter: @ingtk8 Github: ingtk データ可視化サービスチームのテックリード バックエンドエンジニア歴:12年ほど。最近ではデータ基盤、フロントエンドもやります。
今日話すこと • バックエンドエンジニアのプロトタイピングへの関わり方 ◦ なぜプロトタイピングをやるのか ◦ プロトタイピングの課題 • データ可視化アプリケーションを爆速で作る
なぜプロトタイピングをやるか: アイデアの可視化 1. システムの初期モデルをつくる(草案とも言える製品の概念を具体化する) 2. 設計の問題を明らかにする。UIの特定の要素が直感的でない、期待通りに動作し ない場合、これらの問題はプロトタイピングの段階で発見され、修正することができ る。 3. 開発チームがクライアントの要件をより深く理解する。具体的なプロダクトを通して、
クライアントや関係者とコミュニケーションをとる機会を得る。
なぜプロトタイピングをやるか: 製品開発リスクの低減 • 技術的リスクの低減: 技術的な課題や障壁を早期に発見し、開発の遅延や市場投 入の遅れを防ぐ • スケジュールおよび予算リスクの低減: 必要な時間やリソースをより正確に見積も り、スケジュールの遅れや予算超過を防ぐ
プロトタイピングの課題 • 適切な粒度の把握 ◦ 具体的すぎると、細部に捉われ進行速度が遅くなる ◦ 抽象的すぎると、重要な詳細を見落とし実装が現実的でなくなる ◦ 目的と範囲、リソース、期限等を考慮し、プロトタイピングのゴールを適切な粒度に定める •
時間とリソース ◦ プロトタイピングは時間とリソースを必要とする ◦ プロトタイピングのゴールを明確化と、最短で達成するためのツール選定が重要。 ◦ 短期的には課題となるが、長期的にはプロトタイピングにおける恩恵の方が大きい。
プロトタイピングの実践例(テーマ) • 弊社で開催された LLM アイデアソン(Chat GPT を既存のプロダクトに応用する )
プロトタイピングの実践例(デモ) • 170 行くらいのコード(プロンプトが 50 行) • 開発に使った時間は4時間ほど
ポイント • Why ◦ 実際に今携わっているプロダクトに活かせるものを作る(製品開発リスクの低減) ◦ 実現可能性を示すことで、アイデアソンで優位性を築く(アイデアの具体化) • 課題 ◦
期間が 1 週間しかなかったため、最短で実現可能性を示さないといけない(時間とリソース)
ゴールの明確化 検証したいこと • ChatGPT が、入力に応じた適切な SQL を生成することができるかどうか ◦ 適切なプロンプトを考える •
指示の入力〜可視化までを表現することで参加者に実現可能性をわかりやすく示 したい ◦ 可視化・集計の手段は本質ではないので、なるべくコストをかけずに表現したい
技術選定 • 可視化・集計の手段は本質ではないので、なるべくコストをかけずに表現したい • 集計・可視化をローコストでやるなら、Python は有力 ◦ データサイエンス関連の豊富なライブラリ ◦ pandas
/ matplotlib / seaborn / Streamlit ...
Streamlitとは • Python を用いた高速な Web アプリケーション作成を可能にするライブラリ ◦ データサイエンス関連ライブラリとの親和性の高さ • 直感的な
API で、GUI やデータ可視化が非常に簡単に実現できる • ホットリローディング
プロトタイピングのスコープ 1. ユーザからの入力を受け付けることができる(UI) 2. 適切なプロンプト作成することができる(バックエンド) 3. ChatAPIからSQLを取得することができる(バックエンド) 4. SQLの実行結果を可視化することができる(UI)
テキストエリアを配置する
テキストエリアの配置 こんな感じで表示される
プロンプト作成 • 入力「部署ごとの人数だして」→ 当然出してくれない • 要求や与えることができる情報をなるべく正確に伝える ◦ 使用しているデータベース、テーブル定義 ◦ 項目の対応表
◦ 固有項目定義 ◦ 期待するアウトプット
データベース情報とテーブル定義を伝える
項目の対応表を伝える CREATE文は列名が英語なので、日本語との対応表を渡してあげる
個別項目定義を伝える この定義を教えることによって、「部署ごとのリーダー数だして」とか、テナントごとに定義 がことなる項目を含む指示をChatGPTが理解してくれる
期待するアウトプットを伝える ユーザの指示を含める。また、SQLで記述することを伝える。 SQL以外の情報はすべて〜の部分が重要でこの一文がないと、出力したSQLの解説を しはじめる
dataframeをテーブルとして表示 これだけ
dataframeを表示
グラフを表示 seaborn(データフレームを可視化するライブラリ)を使ってグラフを描画する。 dataframeにSQL実行結果の値が入っていれば、これだけ。
グラフを表示 簡単✌
まとめ • プロトタイピングは製品開発リスクの低減、アイデア具現化の重要な手段。 • 適切なゴールの設定と、ツール選定による時間とリソースを節約し、最短で目的を 達成することができる
サンプルコード • https://github.com/ingtk/autosql
ご清聴ありがとうございました