Streamlit応用編 第6回: デプロイと共有

Streamlit
この記事は約7分で読めます。

こんにちは、JS2IIUです。6日目まできました。折り返し地点を過ぎました。このまま11日間走りたいと思います。ようやくより実践的な内容に入っていきます。

はじめに

第6回目の今回は、Streamlitアプリケーションをデプロイし、他の人と共有する方法について解説します。デプロイの手順は、アプリを作成した後に最も重要なステップであり、実際にユーザーに利用してもらうために必要不可欠です。本記事では、Streamlit Cloudを使った簡単なデプロイ方法から、HerokuやAWS、GCPなどのプラットフォームへのデプロイ、さらには独自ドメインを使用して公開する方法までを紹介します。

Streamlit Cloudへのデプロイ

Streamlit Cloudは、Streamlitアプリを素早くデプロイし、共有するための公式サービスです。GitHubリポジトリと連携して、アプリの公開と管理を簡単に行えます。

ステップ1: GitHubにアプリをアップロード

まず、作成したStreamlitアプリをGitHubリポジトリにアップロードします。以下は、基本的な手順です。

  1. GitHubで新しいリポジトリを作成します。
  2. ローカル環境からリポジトリにアプリのコードをプッシュします。
   git init
   git add .
   git commit -m "Initial commit"
   git branch -M main
   git remote add origin <リポジトリのURL>
   git push -u origin main

ステップ2: Streamlit Cloudでデプロイ

  1. Streamlit Cloudにアクセスし、GitHubアカウントでログインします。Googleアカウントで登録することも可能です。後から接続するGitHubアカウントを設定します。詳細な登録手順はこちらから。
  2. 「New app」ボタンをクリックし、デプロイしたいリポジトリを選択します。
  3. デプロイしたいブランチとアプリのPythonファイルを指定し、「Deploy!」をクリックします。

これで、アプリがデプロイされ、公開URLが生成されます。このURLを共有することで、他のユーザーとアプリを共有できます。JS2IIUのGitHubリポジトリはこちらです。

GitHub - JS2IIU-MH/StreamlitSamples: Sample code using Streamlit
Sample code using Streamlit. Contribute to JS2IIU-MH/StreamlitSamples development by creating an account on GitHub.
Streamlit Community Cloud • Streamlit
Deploy, manage, and share your Streamlit apps — all for free.

スクリーンショットで順を追ってみてみます。右上のCreate appをクリックします。

アプリをデプロイするにはGitHubに接続する必要があります、という警告です。すでにGitHubにリポジトリを作成し、Streamlitのソースコードを置いてある状態なので、Connect to GitHubをクリックします。

GitHubのアカウントとの接続に関する各種の入力を終えると次の画面になります。すでにGitHubにソースコードがあるので、左側Yup, I have an appを選びます。

次の画面でどのリポジトリのどのファイルに接続するのかを設定します。Repositoryを指定すると、リポジトリ内のファイルを簡単に選べるようになります。全ての項目を入力して、Deployをクリックします。

Advanced settingを選ぶと、Pythonのバージョンなどの細かい設定が可能です。

少し時間がかかります。

デプロイが完了するとこのような画面になります。設定したURLで接続できるようになりました。

https://appsamples-hyww2hfw73vub7phptfhkd.streamlit.app

ローカルホスト以外へのデプロイ

Streamlit Cloud以外にも、HerokuやAWS、GCPなどのプラットフォームにアプリをデプロイする方法があります。これにより、より柔軟な環境設定やスケーラビリティを実現できます。

Herokuへのデプロイ

Herokuは、PaaS(Platform as a Service)として非常に使いやすいプラットフォームです。以下はHerokuへのデプロイ手順です。

  1. Heroku CLIをインストールし、ログインします。
   heroku login
  1. Procfileを作成し、以下のように記述します。
   web: streamlit run app.py --server.port=$PORT
  1. requirements.txtを作成し、必要なパッケージを記述します。
   pip freeze > requirements.txt
  1. GitHubリポジトリとHerokuアプリを連携し、デプロイします。
   heroku create
   git push heroku main

これで、Heroku上にStreamlitアプリがデプロイされ、公開URLが生成されます。

AWSへのデプロイ

AWSを使ってStreamlitアプリをデプロイする場合、Elastic BeanstalkやEC2を利用する方法があります。ここではElastic Beanstalkを使ったデプロイ手順を簡単に紹介します。

  1. AWS CLIをインストールし、設定を行います。
   aws configure
  1. requirements.txtProcfileを作成します。
  2. eb initコマンドを使ってElastic Beanstalkの設定を行います。
   eb init -p python-3.8 streamlit-app --region us-west-2
  1. 環境を作成し、アプリをデプロイします。
   eb create streamlit-env
   eb deploy

Elastic Beanstalkがアプリケーションの管理を行い、AWS上にデプロイされます。

カスタムドメインの設定

デプロイしたアプリに独自ドメインを設定することで、ブランドに合ったURLを使用できます。ここでは、Streamlit Cloudでのカスタムドメイン設定を紹介します。

ドメインの購入とDNS設定

まず、ドメインプロバイダ(GoDaddy、Namecheapなど)で独自ドメインを購入します。次に、DNS設定でCNAMEレコードを追加し、Streamlit Cloudが提供するURLにマッピングします。

Streamlit Cloudでのドメイン設定

  1. Streamlit Cloudのアプリ設定ページに移動します。
  2. 「Settings」セクションで「Custom domain」を選択し、独自ドメインを入力します。
  3. ドメインプロバイダ側で設定したCNAMEが正しく反映されていれば、カスタムドメインがアプリに適用されます。

まとめ

第6回目では、Streamlitアプリケーションをデプロイして共有する方法を学びました。Streamlit Cloudを使った簡単なデプロイ方法から、HerokuやAWSなどのプラットフォームでのデプロイ、さらにはカスタムドメインの設定方法について解説しました。これにより、作成したアプリケーションを広く公開し、ユーザーに届けることができます。

次回は、Streamlitアプリに認証機能を追加し、セキュリティを強化する方法について解説します。認証機能の実装やAPIキーの管理について学びますので、お楽しみに!

最後まで読んでいただきありがとうございました。73

補足:Streamlit応用編 記事リスト

Streamlit応用編 第1回: キャッシュ機能の活用
https://js2iiu.com/2024/08/28/streamlit-01-cache/

Streamlit応用編 第2回: インタラクティブなウィジェットの応用
https://js2iiu.com/2024/08/29/streamlit-02-widget/

Streamlit応用編 第3回: データのアップロードとダウンロード
https://js2iiu.com/2024/08/29/streamlit-03-download/

Streamlit応用編 第4回: レイアウトのカスタマイズ
https://js2iiu.com/2024/08/30/streamlit-04-layout/

Streamlit応用編 第5回: テーマのカスタマイズ
https://js2iiu.com/2024/08/31/streamlit-05-theme-custom/

Streamlit応用編 第6回: デプロイと共有
https://js2iiu.com/2024/09/01/streamlit-06-deploy/

Streamlit応用編 第7回: 認証とセキュリティ
https://js2iiu.com/2024/09/02/streamlit-07-security/

Streamlit応用編 第8回: データベースとの連携
https://js2iiu.com/2024/09/02/streamlit-08-database/

Streamlit応用編 第9回: 複雑なデータビジュアライゼーション
https://js2iiu.com/2024/09/05/streamlit-09-visualization/

Streamlit応用編 第10回: マルチページアプリの作成
https://js2iiu.com/2024/09/06/streamlit-10-multipage/

Streamlit応用編 第11回: StreamlitでAPIを作成する方法
https://js2iiu.com/2024/09/07/streamlit-11-api/

コメント

タイトルとURLをコピーしました