こんにちは、JS2IIUです。Dash応用編の記事も残り数回となりました。今回もよろしくお願いします。
はじめに
これまでの記事で、Dashアプリケーションの作成や高度な機能を紹介してきましたが、実際のプロジェクトでは、完成したアプリケーションをローカル環境で動かすだけでなく、クラウドにデプロイして外部からアクセス可能にする必要があります。本記事では、HerokuやAWS、GCPなどの主要なクラウドプラットフォームへのデプロイ方法に加え、GitHub ActionsやJenkinsを使用したCI/CDの自動化について解説します。
Herokuへのデプロイ
まず、Herokuは簡単に使えるPaaS(Platform as a Service)で、Dashアプリを素早くデプロイするのに適しています。Herokuの詳細についてはこちらをご覧ください。

手順1: Heroku CLIのインストール
Herokuにアプリケーションをデプロイするためには、まずHeroku CLIをインストールします。以下のコマンドでインストールできます。
$ brew tap heroku/brew && brew install heroku
インストール後、以下のコマンドでHerokuにログインします。
$ heroku login
Heroku CLIの詳細はこちら
手順2: 必要ファイルの準備
Herokuでアプリをデプロイするためには、Procfileというファイルが必要です。このファイルには、アプリケーションのエントリーポイントを指定します。Dashアプリケーションの場合、Procfileは以下のようになります。
web: gunicorn app:server
requirements.txtも必要で、アプリが依存しているPythonパッケージを指定します。
dash==2.11.0
gunicorn==20.1.0
手順3: GitHubとの連携とデプロイ
アプリケーションのリポジトリがGitHubにある場合、以下のコマンドを実行してHerokuアプリを作成します。
$ heroku create
$ git push heroku main
成功すれば、HerokuのURLでアプリケーションにアクセス可能です。
Herokuでのデプロイに関する公式ガイドはこちら
AWSにデプロイする方法
AWS Elastic Beanstalkを使ってDashアプリケーションをデプロイする手順を紹介します。Elastic Beanstalkは、インフラの管理をAWSが行い、簡単にアプリケーションをクラウドに展開できるサービスです。Elastic Beanstalkの詳細はこちら。
手順1: Elastic Beanstalk CLIのインストール
Elastic Beanstalk CLIをインストールし、環境をセットアップします。
$ pip install awsebcli
$ eb init
手順2: アプリケーションのデプロイ
以下のコマンドでElastic Beanstalkにアプリをデプロイできます。
$ eb create
$ eb deploy
これにより、アプリがAWS上で動作するようになります。SSL証明書を設定したい場合は、AWS Certificate Managerを利用してSSLを設定し、HTTPSでアクセスできるようにします。
AWS Elastic Beanstalkの公式ガイドはこちら
GitHub ActionsでCI/CDパイプラインを自動化
アプリケーションのデプロイを効率的に行うためには、コードの変更を自動でデプロイするCI/CDパイプラインを設定すると便利です。GitHub Actionsは、GitHubリポジトリに統合されているCI/CDツールで、簡単にパイプラインを構築できます。GitHub Actionsの詳細はこちら。

手順1: GitHub Actionsワークフローの作成
以下は、Herokuに自動でデプロイするためのGitHub Actionsの設定ファイル例です。このファイルは.github/workflows/deploy.ymlに保存します。
name: Deploy to Heroku
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy to Heroku
run: |
git push heroku main
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
この設定により、mainブランチに変更がプッシュされるたびに、自動でHerokuにデプロイされます。
GitHub Actionsの公式ガイドはこちら
手順2: GitHub Secretsの設定
Heroku APIキーをGitHub Secretsに設定します。GitHubリポジトリのSettings > SecretsでHEROKU_API_KEYを追加してください。
Jenkinsを使ったCI/CD自動化
Jenkinsは、オンプレミスでのCI/CDパイプラインの構築に適したツールです。以下の手順でJenkinsを設定し、Dashアプリケーションのデプロイを自動化します。Jenkinsの詳細はこちら
手順1: Jenkinsのインストール
Jenkinsをローカル環境やサーバーにインストールし、必要なプラグイン(GitHub、Herokuなど)をインストールします。
$ sudo apt-get update
$ sudo apt-get install jenkins
Jenkinsのインストールガイドはこちら
手順2: Jenkinsジョブの設定
新規ジョブを作成し、GitHubリポジトリを指定します。その後、ビルドステップに以下のコマンドを追加し、Herokuに自動デプロイします。
#!/bin/bash
git pull origin main
git push heroku main
これにより、Jenkinsが定期的にリポジトリを監視し、変更があれば自動でデプロイされます。
まとめ
本記事では、Dashアプリをクラウドにデプロイし、自動化するための主要な手法を紹介しました。HerokuやAWSなどのクラウドプラットフォームへのデプロイ方法から、GitHub ActionsやJenkinsを使ったCI/CDの自動化まで、プロジェクトを運用する上での重要な技術を学びました。次回の記事では、ライブデータダッシュボードの構築に焦点を当て、リアルタイムでデータが更新されるインタラクティブなアプリケーションを作成する方法を紹介します。
次回のテーマは「ライブデータダッシュボードの構築」です。リアルタイムでデータを表示するダッシュボードに興味がある方は、ぜひお楽しみに!
Dash関連記事まとめ
DashはJavaScriptライブラリであるReactの上に構築されたPythonフレームワークであるが、DashはRでも動作し、最近ではJuliaもサポートしている。
Wikipedia – Plotly/Dash から引用、翻訳
- 【Python】Dash入門編 | アマチュア無線局JS2IIU
- Dash応用編:第1回 高度なレイアウトのカスタマイズ | アマチュア無線局JS2IIU
- Dash応用編:第2回 状態管理とコールバックの最適化 | アマチュア無線局JS2IIU
- Dash応用編:第3回 データの動的更新とストリーミング | アマチュア無線局JS2IIU
- Dash応用編:第4回 データのフィルタリングと検索機能 | アマチュア無線局JS2IIU
- Dash応用編:第5回 Dashでのユーザー認証とセッション管理 | アマチュア無線局JS2IIU
- Dash応用編:第6回 パフォーマンス最適化とスケーリング | アマチュア無線局JS2IIU
- Dash応用編:第7回 拡張可能なカスタムコンポーネントの作成 | アマチュア無線局JS2IIU
- Dash応用編:第8回 機械学習モデルとの連携 | アマチュア無線局JS2IIU
- Dash応用編:第9回 デプロイと自動化 | アマチュア無線局JS2IIU
- Dash応用編: 第10回 ライブデータダッシュボードの構築 | アマチュア無線局JS2IIU


コメント