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
Streamlitの入門書を執筆した話
Search
Ayumu Yamaguchi
December 20, 2024
Business
1
42
Streamlitの入門書を執筆した話
Ayumu Yamaguchi
December 20, 2024
Tweet
Share
More Decks by Ayumu Yamaguchi
See All by Ayumu Yamaguchi
Streamlitで開発した自作データカタログの導入
ayumu_yamaguchi
4
640
Streamlitのデータカタログが社内にもたらした変化
ayumu_yamaguchi
1
1.3k
StreamlitとTerraformでデータカタログを作った話
ayumu_yamaguchi
1
1.9k
Streamlitを使ってデータカタログを作ってみた
ayumu_yamaguchi
1
440
Other Decks in Business
See All in Business
アークエルテクノロジーズ株式会社 会社説明資料
aakel
0
130
産業用自家消費型太陽光300kW+産業用蓄電池500kWh 投資対効果(ROI)・投資回収期間シミュレーション結果(エネがえるBiz診断レポートサンプル)
satoru_higuchi
PRO
0
190
職員給与等実態調査のDX
tokyo_metropolitan_gov_digital_hr
0
280
【エンジニア職】中途採用向け会社説明資料(テックファーム株式会社)
techfirm
0
4.2k
KRAF Impact Report 2024(日本語版)
kraf
0
210
決算審査意見書自動作成ツール 改良プロジェクト
tokyo_metropolitan_gov_digital_hr
0
290
Creating Creators in the age of Generative AI - In SIGGRAPH ASIA 2024
o_ob
0
120
Sales Marker Culture book
salesmarker
PRO
6
24k
_HP掲載用_株式会社CloudSoft会社説明資料.pdf
csmatsushita
0
1.3k
なぜ施策優先度を意思決定しなければならないのか? 経験から得た要因と対策
mkitahara01985
2
200
行動なしに良い仮説思考はできない
tumada
PRO
4
730
ダイナミックプラス株式会社 CompanyDeck20241201
plus0601
0
210
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
GitHub's CSS Performance
jonrohan
1030
460k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Designing for humans not robots
tammielis
250
25k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Side Projects
sachag
452
42k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Transcript
Streamlitの入門書を作成した話 2024.12.20 山口歩夢
自己紹介
自己紹介 【所属】 株式会社GENDA データエンジニア 【経歴】 営業職 :4年 データエンジニア:3年 【発信】 著書 :Streamlit入門
Pythonで学ぶデータ可視化 &アプリ開発入門 ブログ :https://qiita.com/Ayumu-y X(旧Twitter) :https://x.com/Yamaguchi_aaaaa Snowflake Squad:https://www.snowflake.com/en/snowflake-squad/ 【趣味】 音楽 筋トレ 山口歩夢
Streamlitとの出会い • Streamlitのもくもく会 (毎週土曜日の 9時~)に誘ってもらったのがきっかけ • 「30 Days of Streamlit」を使いながら学習
• 少ないコードで簡単にインタラクティブなアプリケーションを開発できることに驚いた • 元々営業職でプログラミングの勉強に苦労したことがあり、 Streamlitの便利さに感銘を受けた
作ったアプリケーション • データカタログ • ダッシュボード • 社内業務の DXアプリ 便利な関数が多く用意されていて、 Pythonを使って非常に簡単にアプリケーションを開発できるのが
Streamlitの魅力!
入門書執筆の経緯と目的
Streamlitの入門書を作ろうと思った理由 • 実際に使ってみて感動した ◦ 非常に短いコードで高度なアプリケーションが開発できる • 日本語の情報が他の技術と比べて少なかった • Streamlitについて体系的に学べる日本語版の書籍が無かった
Streamlitの入門書を作ろうと思った理由 • 実際に使ってみて感動した ◦ 非常に短いコードで高度なアプリケーションが開発できる • 日本語の情報が他の技術と比べて少なかった • Streamlitについて体系的に学べる日本語版の書籍が無かった 技術書典というものがあるらしいので同人誌を頒布してみよう!
技術書典とは • 年二回開催される IT技術などの同人誌を頒布するイベント ◦ オンラインのみの参加もオンライン +オフラインで参加することが可能 • たくさんのエンジニアが自分の好きな技術の同人誌を頒布
一作目を執筆してみた • Streamlitの概要 • Streamlitの基本的な使い方 ◦ Streamlitの始め方 ◦ Session State扱い方
◦ キャッシュの扱い方 • 基本的な関数 ◦ 自分がよく使うものをピックアップして紹介 • Streamlitの実践的な内容 ◦ StreamlitからSnowflakeを操作する方法 ◦ Streamlit in Snowflakeの使い方 • StreamlitとSnowflakeでデータカタログを作成した話 Streamlit データ可視化入門 (約100p)
一作目を頒布した結果
一作目を頒布した結果 • 非常に好評だった ◦ 多くの人に購入いただけた ◦ ポジティブな感想が多かった • Streamlitの知識がたくさん身についた
• 出版社の方から商業本出版に興味がないかとお声がけいただいた
ご好評いただいたので、もっと良いものを書いて商業本出版しよう!
二作目を執筆した 半年以上かけて一作目より更に詳しく書き、技術書典でも頒布 一作目からページ数を 3倍に大増量! • Streamlitとは • 基本的な機能 • 基本的な関数
◦ 多くの関数や関数毎のオプションを網羅的に解説 • 実践的なアプリケーション開発 ◦ ユースケース毎にアプリケーションや サンプルコードを紹介 • StreamlitとSnowflakeでデータカタログを作成した話 • StreamlitとSnowflake CortexでChatBotを開発 Streamlit入門 Pythonで学ぶデータ可視化 &アプリ開発ガイド (約300p)
この二作目が商業本として出 版されました!
どのようにして技術書を書いたのか
書籍作成ツールを使用した • 「Re:View Starter」や「Re:View」という 技術同人誌を書くためのツールを使用した • どちらも使ってみた感想としては Re:View Starterの方がおすすめ ◦
Re:View Starterは初期設定を GUIで行える ◦ サンプルコードなどを自動的に折り返してくれる Re:View Starter初期設定画面
英語のドキュメントを読んで Streamlitを頑張って理解した • ドキュメントを読み込んで、一つ一つ理解していった ◦ 英語の文章を翻訳したり、 翻訳しづらいところは英語のまま ◦ Snowflakeのクイックスタートを使って、 ChatBotの作成手順や仕組みを調査
• 関数の動きを一つ一つ試した ◦ 関数毎に簡単なアプリを作り、 関数のパラメータ一つ一つの挙動を確認 • streamlit-extrasやthird party componentsを読み漁り、 読者に有益なものをピックアップ
咀嚼した知識を解説 • テキストエディタで Streamlitについて理解した内容を書いた • 業務などで発生したユースケースやデータカタログの作成方法についてもまとめた
編集作業 • コードや文章の改行を一つ一つ対応 ◦ 商業本には Re:Viewを使用する必要があった • 画像やコードブロックに注釈を入れたり、 文章中に図表番号などを入れていく •
フッターをつける ◦ 引用先の URLなどを添付 ◦ これも改行処理を行う必要があった
こちらを半年以上コツコツ続けました
最終確認(レビュー) そして、最後に皆さんにレビューをしていただきました! ありがとうございます! • 株式会社インプレス 山城敬さん • 本橋峰明さん (@mmotohas) •
檜山徹さん (@toru_data) • 小宮山紘平さん (@kommy_jp)
Streamlit入門の内容
目次 第1章 Streamlitとは 第2章 基本的な機能 第3章 用意されている便利な関数 第4章 基本的なアプリケーション開発 第5章
データカタログの作成 第6章 StreamlitでChatBotを開発する
第1章 Streamlitとは 概要などの基本的な知識を解説 • StreamlitやSnowflakeの概要 • Streamlit in Snowflakeについて •
Pythonスクリプト実行の仕組み
第2章 基本的な機能 アプリ開発をする上での 基本的な知識を紹介 • Streamlitの始め方の手順 • アプリケーションの 外観などの基本設定 •
マルチページ機能の実装 • Session Stateの扱い方 • キャッシュの扱い方
第3章 用意されている便利な関数 様々な種類の関数を紹介 • テキスト表示 • レイアウト変更 • データ可視化 •
データフレームの表示や カラムの詳細設定 • インタラクティブな ウィジェットの作成
第4章 実践的なアプリケーション開発 様々なアプリの作り方を解説 • Snowflakeのデータを Streamlitで可視化 • マスタデータをメンテナンス • ドリルダウン機能
• GUIでカテゴリ選択 • クリップボードにデータをコピー • 位置情報を使った地図 • PyGWalkerでのデータ探索
第5章 Streamlit in Snowflakeでのデータカタログの作成 データカタログの解説や作り方を解説 • データカタログとは • Streamlitでデータカタログを作成した経緯 •
Streamlit in Snowflakeにデプロイ • データカタログの操作方法
第6章 StreamlitでChatBotを開発する StreamlitとSnowflake Cortexで ChatBotアプリを開発する方法を解説 • Snowflake Cortexの概要 • Snowflake
Cortexの関数の解説 • ChatBotアプリ開発のための Streamlit関数 • ChatBotの開発手順
まとめ・今後の展望
まとめ 結論、執筆して良かったです! • 執筆して多くのことを学べた ◦ 関数や関数のパラメータ一つ一つの使い方 ◦ cacheやsession_stateなどの理解が曖昧だった機能の扱い方 • 喜んでくださる人が居た
◦ 同人誌を書いた時に、物理本を欲してくださる人がいて嬉しかった ◦ ポジティブなフィードバックを貰えて嬉しかった
今後の展望 • Streamlitで面白いアプリは引き続き開発したい ◦ LLMを使ったアプリの開発をやりたい • Streamlit以外に他に触れる必要のある技術が出てきたら、また書籍を書きたい ◦ 知識の定着に役立った ◦
他の人の学習にも役立てるので嬉しい • 営業職時代勉強に苦労したので、プログラミング学習初心者の人たちにも役立てたら嬉しい
感謝の言葉 読んでくださった方々、 レビューをしていただいた皆様、本当にありがとうございます。