前回のお話 ⇒ コーディング編
streamlitで作ったアプリをデプロイする方法について書く。
デプロイとはサーバー上に展開し、誰でもアクセスできるようにすることである。
目次:
1.デプロイ方法は、1つだけではない
2.Streamlit Sharingとは
3.Githubでの作業
4.ディレクトリ構造と秘匿情報(APIキー等)の取扱い
5.Streamlit Community Cloudでの作業(デプロイ)
6.まとめ
1.デプロイ方法は、1つだけではない
Streamlitで作成したアプリをデプロイする方法はいくつかあるらしい。
① Streamlit Sharingでデプロイ
② Dockerを使ったデプロイ(AWS, GCP, Azureなどのクラウドサービス上でホスト可能)
③ Herokuでデプロイ
④ 自前サーバーや**VPS(仮想専用サーバー)**でのデプロイ
今回、最も簡単にデプロイできて、初心者でもわかりやすい方法としてStreamlit Cloudによるデプロイをやってみる。
2.Streamlit Sharingとは
Streamlit SharingはStreamlit社が提供する専用のクラウド環境で、無料で簡単にデプロイができ、設定も少なく済むため初心者にもおすすめ。
⇒ Streamlit Community Cloud
少し調べてみたところ、利用にあたってはgithubへの登録が必要。
アカウント作ってない場合はサインアップしておくこと。
⇒ Git hub
3.Githubでの作業
1.Githubへサインインし、新しいリポジトリを作成する(Newボタンを押す)
2.リポジトリの基本情報を入力
以下の項目を入力し、Create repositoryを押す
Repository name:リポジトリ名
Public/Private:リポジトリの公開範囲
自分以外の人にもアプリを公開する場合、リポジトリの公開範囲についてはPublicにしておくこと。
4.ディレクトリ構造と秘匿情報(APIキー等)の取扱い
ここからはGitコマンドを用いた作業となる。
Git詳細 ⇒ Gitとは
Githubへプッシュする前に、以下をディレクトリに追加する。
・.streamlit および secrets.toml ⇒ 秘匿情報の格納場所(APIキー等)
・.gitignore ⇒ Gitで未追跡にしたいファイル情報を書く場所
・requirements.txt ⇒ 作成したアプリに使っているモジュールのバージョン情報
requirements.txtについて ⇒ コマンド一行でpythonのrequirements.txtを生成する
my_project/
│
├── main.py
├── __init__.py
├── .gitignore ← Gitで未追跡にしたいファイル情報を書く場所
├── requirements.txt ← 作成したアプリに使っているモジュールのバージョン情報
│
├── src/
│ ├── __init__.py
│ ├── pref_data.py
│ ├── send_api.py
│
├── .streamlit/ ← 追加
├── secrets.toml ← 秘匿情報の格納場所(APIキー等)
.streamlit/secrets.tomlにAPIキーを格納
api_key = "YOUR_API_KEY"
.streamlitフォルダをGitの追跡対象から除外設定する
.streamlit/
requirements.txtを生成する
pandas==X.X.X
requests==X.X.X
streamlit==X.XX.X
Gitプッシュする前に、.streamlitが 未追跡 になっているか必ず確認する。
確認後、作成したリポジトリにプッシュする。
(追跡対象だった場合、秘匿情報がGithubで公開されてしまう)
5.Streamlit Community Cloudでの作業(デプロイ)
Streamlit Community Cloudへ「Sign in」する。
(アカウント登録まだの場合は、Sign up)
「Deploy a public app from GitHub」を選択する。
以下の項目を入力し、「Advanced settings」を押す。
Repository:作成したアプリをプッシュしたリポジトリ名
Branch:ブランチ名(分岐してなければmain)
Main file path:メインスクリプト(今回の場合、main.py)
App URL(optinal):任意のURL
「Advanced settings」にて、以下の項目を入力し、「Save」を押す。
Pythonversion:アプリ作成に使用したPythonのバージョン
Secrets:secrets.tomlの内容をそのまま転記
「Deploy」を押す。
デプロイ後、設定したURLへアクセスし、閲覧できればデプロイ完了。
⇒ 今回作成したアプリ
6.まとめ
検討~デプロイまでの一連の流れを、ハンズオン形式で行うことで、「ネット上に公開する」みたいな抽象的にしかわからなかった部分がクリアになり、想いを形にできるスキルが向上したと感じる。
今後も学習を継続したい。