【技術書出版】「Streamlit入門~Pythonで学ぶデータ可視化＆アプリ開発ガイド~」の概要

# 前置き
こんにちは。データエンジニアの山口歩夢です！
この記事は、GENDA Advent Calendar 2024 4日目の記事です。

https://qiita.com/advent-calendar/2024/genda

GENDAアドベントカレンダーでは、プロダクトや組織開発に関わるメンバーを中心に多様なテーマの記事を投稿しています。ぜひ、購読登録をしていただき12月25日までお楽しみください。


# 本題
先日、技術書典17にてStreamlitの技術書を頒布しました。
その技術書が商業本として、インプレスさんの「技術の泉シリーズ」として発売が決まりました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/58da2e4f-135a-1374-4ced-3fd6435be539.png" width="50%">


Amazonや楽天など、色々なところから購入が可能です👇

https://www.amazon.co.jp/gp/product/4295603511/ref=as_li_tf_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4295603511&linkCode=as2&tag=impressrd-1-22







# 謝辞
今回、こちらの技術書の作成にあたって、
皆さんにレビューをしていただきました。
誠にありがとうございます:bow: 


* 小宮山さん([@kommy_jp](https://x.com/kommy_jp?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor))
* 檜山さん([@toru_data](https://x.com/toru_data))
* 本橋さん([@mmotohas](https://x.com/mmotohas))

# Streamlitとは
StreamlitはPythonのフレームワークです。
Streamlitを使うことで非常にシンプルなコードで、
高度でインタラクティブなアプリケーションを開発することができます。
データ分析やデータ可視化アプリ、機械学習モデルのデモアプリなどの開発に非常に有用です。


[Streamlit Playground](https://streamlit.io/playground)を使用することで、以下のように環境構築不要でブラウザ上でStreamlitを試すことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/8f3541fb-777c-398a-d769-25c704a18432.png)

上記の画像では、Playgroundに以下のコードを貼り付けています。
このように、非常に短いコードでインタラクティブなアプリケーションを作ることができます。
これがStreamlitの魅力です。

他にもインフラの知識が無くてもアプリケーションをデプロイできる、Streamlit in Snowflakeといった便利な機能もあります。
```py
import streamlit as st
import pandas as pd
import numpy as np

# サンプルデータ
np.random.seed(42)
data = pd.DataFrame({
    '日付': pd.date_range('2024-01-01', periods=100),
    '売上': np.random.randint(50, 150, size=100)  # 50～150のランダムな値
})

# タイトルの表示
st.title("Streamlitとは")

# スライダーでインデックス範囲を選択
start, end = st.slider("表示する範囲を選択", 0, 99, (0, 99))

# 選択範囲のデータを取得
filtered_data = data.iloc[start:end+1]

# 売上データをプロット
st.line_chart(filtered_data['売上'])
```

# 目次

以下が目次となっております。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/b25d6b07-b870-2b81-4047-83f3798a2290.png)


Streamlitを使用する上で役立つ基本的な内容やStreamlitの仕組み、ユースケースを交えた実践的な内容を紹介しました。
そして、Streamlitでデータカタログを作成した話や、SnowflakeのLLMを活用してChatBotを開発する方法にも触れました。





## 第１章 Streamlitとは
こちらの章では、Streamlitとはどういうものなのかを解説しました。
Streamlitの特徴やStreamlitを使用するメリット、基本的な仕組みなどについて書いてあります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/6773b86f-2e5a-e36f-d445-ac14c42ec422.png"  width=49%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/11fcc272-eb6f-cb44-04b4-86af45abd995.png" width="49%">




## 第２章 基本的な機能
こちらの章では、Streamlitの基本的な機能について解説しました。
Streamlitの始め方の手順やアプリケーションの外観などの基本設定の方法、Streamlitでのアプリケーション開発に役立つ基本的な知識を解説しました。

Streamlitでのアプリケーション開発の効率アップに繋がるような知識をまとめてあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/45c84060-593a-2571-7bb8-d387602a510f.png)











## 第３章 基本的な関数

こちらの章では、Streamlitに用意されている代表的な関数について解説しました。
これらの関数を活用することで、簡単且つ少ないコードでアプリケーション開発ができます。関数の使い方や関数に設定できるオプションについても、一つひとつ丁寧に解説しました。
関数毎に、簡単なアプリケーションのサンプルコードも添えました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/37aa5e86-21db-8d2c-ef02-9443bd243481.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/323c2e3d-f4da-3ecf-5aac-7d60790150d3.png)







## 第４章 実践的なアプリケーション開発

こちらの章では、実践的なアプリケーション開発について解説しました。

まず、Snowflakeの無料アカウントの作成の方法や、
Streamlitを使って、Snowflakeのテーブルからデータを抽出・更新する方法。Streamlit in Snowflakeにアプリケーションをデプロイする方法などを紹介しました。
Snowflakeには、Streamlit in Snowflakeという機能があり、インフラの知識が無くても簡単にStreamlitのアプリケーションをデプロイすることができます。

上記に加え、実際の業務に役立ちそうなユースケースから、さまざまなアプリケーションの作り方を紹介しました。一つひとつサンプルコードの解説も行っております。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/18c350fc-e52d-8a5e-a4f0-1778143403bf.png" width="49%">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/9ded76af-06bc-1436-6e27-383ee7ca0903.png" width="49%">









## 第５章 StreamlitとSnowflakeでのデータカタログの作成

こちらの章では、Streamlitでデータカタログを作成した話について解説しています。
Streamlitでデータカタログを作成するメリットやコードの解説、Streamlit in Snowflakeにアプリケーションをデプロイする方法や注意すべきポイントなども書いてあります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/0733a8df-5ef1-0895-f29a-21d38eb9c190.png" width="49%">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/c6ed247a-f63c-37d3-ff0a-21d0a92013c8.png" width="49%">







## 第６章 StreamlitでChatBotを開発する

こちらの章では、StreamlitでChatBotを開発する方法を解説しました。
SnowflakeにはSnowflake CortexというLLM活用のための関数が用意されています。Snowflake CortexをStreamlitから実行して、簡単なChatBotの作成を行う方法を紹介しました。Snowflake Cortexの関数についても一つひとつ丁寧に解説しました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/515f14d2-9673-3160-0254-7f099f4c86d9.png" width="49%">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/9428abbd-32b4-edc3-2390-1449b6ba1c32.png" width="49%">


# まとめ
以上が「Streamlit入門~Pythonで学ぶデータ可視化＆アプリ開発ガイド~」の内容です！
Streamlit Advent Calendar 2024のシリーズ1では、有志でStreamlitについて無料で学習できるコンテンツを作成しています。
是非こちらからもStreamlitについて、興味を持っていただけると嬉しいです！

https://qiita.com/advent-calendar/2024/streamlit