Slide 1

Slide 1 text

Streamlitの入門書を作成した話 2024.12.20 山口歩夢

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

自己紹介 【所属】 株式会社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/ 【趣味】 音楽 筋トレ 山口歩夢

Slide 4

Slide 4 text

Streamlitとの出会い ● Streamlitのもくもく会 (毎週土曜日の 9時~)に誘ってもらったのがきっかけ ● 「30 Days of Streamlit」を使いながら学習 ● 少ないコードで簡単にインタラクティブなアプリケーションを開発できることに驚いた ● 元々営業職でプログラミングの勉強に苦労したことがあり、 Streamlitの便利さに感銘を受けた

Slide 5

Slide 5 text

作ったアプリケーション ● データカタログ ● ダッシュボード ● 社内業務の DXアプリ 便利な関数が多く用意されていて、 Pythonを使って非常に簡単にアプリケーションを開発できるのが Streamlitの魅力!

Slide 6

Slide 6 text

入門書執筆の経緯と目的

Slide 7

Slide 7 text

Streamlitの入門書を作ろうと思った理由 ● 実際に使ってみて感動した ○ 非常に短いコードで高度なアプリケーションが開発できる ● 日本語の情報が他の技術と比べて少なかった ● Streamlitについて体系的に学べる日本語版の書籍が無かった

Slide 8

Slide 8 text

Streamlitの入門書を作ろうと思った理由 ● 実際に使ってみて感動した ○ 非常に短いコードで高度なアプリケーションが開発できる ● 日本語の情報が他の技術と比べて少なかった ● Streamlitについて体系的に学べる日本語版の書籍が無かった 技術書典というものがあるらしいので同人誌を頒布してみよう!

Slide 9

Slide 9 text

技術書典とは ● 年二回開催される IT技術などの同人誌を頒布するイベント ○ オンラインのみの参加もオンライン +オフラインで参加することが可能 ● たくさんのエンジニアが自分の好きな技術の同人誌を頒布

Slide 10

Slide 10 text

一作目を執筆してみた ● Streamlitの概要 ● Streamlitの基本的な使い方 ○ Streamlitの始め方 ○ Session State扱い方 ○ キャッシュの扱い方 ● 基本的な関数 ○ 自分がよく使うものをピックアップして紹介 ● Streamlitの実践的な内容 ○ StreamlitからSnowflakeを操作する方法 ○ Streamlit in Snowflakeの使い方 ● StreamlitとSnowflakeでデータカタログを作成した話 Streamlit データ可視化入門 (約100p)

Slide 11

Slide 11 text

一作目を頒布した結果

Slide 12

Slide 12 text

一作目を頒布した結果 ● 非常に好評だった ○ 多くの人に購入いただけた ○ ポジティブな感想が多かった   ● Streamlitの知識がたくさん身についた ● 出版社の方から商業本出版に興味がないかとお声がけいただいた

Slide 13

Slide 13 text

ご好評いただいたので、もっと良いものを書いて商業本出版しよう!

Slide 14

Slide 14 text

二作目を執筆した 半年以上かけて一作目より更に詳しく書き、技術書典でも頒布 一作目からページ数を 3倍に大増量! ● Streamlitとは ● 基本的な機能 ● 基本的な関数 ○ 多くの関数や関数毎のオプションを網羅的に解説 ● 実践的なアプリケーション開発 ○ ユースケース毎にアプリケーションや サンプルコードを紹介 ● StreamlitとSnowflakeでデータカタログを作成した話 ● StreamlitとSnowflake CortexでChatBotを開発 Streamlit入門 Pythonで学ぶデータ可視化 &アプリ開発ガイド (約300p)

Slide 15

Slide 15 text

この二作目が商業本として出 版されました!

Slide 16

Slide 16 text

どのようにして技術書を書いたのか

Slide 17

Slide 17 text

書籍作成ツールを使用した ● 「Re:View Starter」や「Re:View」という 技術同人誌を書くためのツールを使用した ● どちらも使ってみた感想としては Re:View Starterの方がおすすめ ○ Re:View Starterは初期設定を GUIで行える ○ サンプルコードなどを自動的に折り返してくれる Re:View Starter初期設定画面

Slide 18

Slide 18 text

英語のドキュメントを読んで Streamlitを頑張って理解した ● ドキュメントを読み込んで、一つ一つ理解していった ○ 英語の文章を翻訳したり、 翻訳しづらいところは英語のまま ○ Snowflakeのクイックスタートを使って、 ChatBotの作成手順や仕組みを調査 ● 関数の動きを一つ一つ試した ○ 関数毎に簡単なアプリを作り、 関数のパラメータ一つ一つの挙動を確認 ● streamlit-extrasやthird party componentsを読み漁り、 読者に有益なものをピックアップ

Slide 19

Slide 19 text

咀嚼した知識を解説 ● テキストエディタで Streamlitについて理解した内容を書いた ● 業務などで発生したユースケースやデータカタログの作成方法についてもまとめた

Slide 20

Slide 20 text

編集作業 ● コードや文章の改行を一つ一つ対応 ○ 商業本には Re:Viewを使用する必要があった ● 画像やコードブロックに注釈を入れたり、 文章中に図表番号などを入れていく ● フッターをつける ○ 引用先の URLなどを添付 ○ これも改行処理を行う必要があった

Slide 21

Slide 21 text

こちらを半年以上コツコツ続けました

Slide 22

Slide 22 text

最終確認(レビュー) そして、最後に皆さんにレビューをしていただきました! ありがとうございます! ● 株式会社インプレス 山城敬さん ● 本橋峰明さん (@mmotohas) ● 檜山徹さん (@toru_data) ● 小宮山紘平さん (@kommy_jp)

Slide 23

Slide 23 text

Streamlit入門の内容

Slide 24

Slide 24 text

目次 第1章 Streamlitとは 第2章 基本的な機能 第3章 用意されている便利な関数 第4章 基本的なアプリケーション開発 第5章 データカタログの作成 第6章 StreamlitでChatBotを開発する

Slide 25

Slide 25 text

第1章 Streamlitとは 概要などの基本的な知識を解説 ● StreamlitやSnowflakeの概要 ● Streamlit in Snowflakeについて ● Pythonスクリプト実行の仕組み

Slide 26

Slide 26 text

第2章 基本的な機能 アプリ開発をする上での 基本的な知識を紹介 ● Streamlitの始め方の手順 ● アプリケーションの 外観などの基本設定 ● マルチページ機能の実装 ● Session Stateの扱い方 ● キャッシュの扱い方

Slide 27

Slide 27 text

第3章 用意されている便利な関数 様々な種類の関数を紹介 ● テキスト表示 ● レイアウト変更 ● データ可視化 ● データフレームの表示や カラムの詳細設定 ● インタラクティブな ウィジェットの作成

Slide 28

Slide 28 text

第4章 実践的なアプリケーション開発 様々なアプリの作り方を解説 ● Snowflakeのデータを Streamlitで可視化 ● マスタデータをメンテナンス ● ドリルダウン機能 ● GUIでカテゴリ選択 ● クリップボードにデータをコピー ● 位置情報を使った地図 ● PyGWalkerでのデータ探索

Slide 29

Slide 29 text

第5章 Streamlit in Snowflakeでのデータカタログの作成 データカタログの解説や作り方を解説 ● データカタログとは ● Streamlitでデータカタログを作成した経緯 ● Streamlit in Snowflakeにデプロイ ● データカタログの操作方法

Slide 30

Slide 30 text

第6章 StreamlitでChatBotを開発する StreamlitとSnowflake Cortexで ChatBotアプリを開発する方法を解説 ● Snowflake Cortexの概要 ● Snowflake Cortexの関数の解説 ● ChatBotアプリ開発のための Streamlit関数 ● ChatBotの開発手順

Slide 31

Slide 31 text

まとめ・今後の展望

Slide 32

Slide 32 text

まとめ 結論、執筆して良かったです! ● 執筆して多くのことを学べた ○ 関数や関数のパラメータ一つ一つの使い方 ○ cacheやsession_stateなどの理解が曖昧だった機能の扱い方 ● 喜んでくださる人が居た ○ 同人誌を書いた時に、物理本を欲してくださる人がいて嬉しかった ○ ポジティブなフィードバックを貰えて嬉しかった

Slide 33

Slide 33 text

今後の展望 ● Streamlitで面白いアプリは引き続き開発したい ○ LLMを使ったアプリの開発をやりたい ● Streamlit以外に他に触れる必要のある技術が出てきたら、また書籍を書きたい ○ 知識の定着に役立った ○ 他の人の学習にも役立てるので嬉しい ● 営業職時代勉強に苦労したので、プログラミング学習初心者の人たちにも役立てたら嬉しい

Slide 34

Slide 34 text

感謝の言葉 読んでくださった方々、 レビューをしていただいた皆様、本当にありがとうございます。