FlaskアプリをCI/CDパイプラインに組み込む方法をやさしく解説!初心者でも自動デプロイができる
生徒
「Flaskアプリを自動でサーバーにアップロード(デプロイ)する方法ってありますか?」
先生
「はい。CI/CD(シーアイ・シーディー)という仕組みを使えば、Flaskアプリを自動でテスト・デプロイできます。」
生徒
「えっ、CI/CDって何ですか?難しそう…」
先生
「大丈夫。料理のレシピや家事の流れと同じで、自動でやってくれる流れを作るだけなんです。一緒にゆっくり見ていきましょう。」
1. CI/CDとは何か?
CI/CDは、アプリを作るときに自動でテストやアップロードを行う「流れ(パイプライン)」のことです。
CIは「Continuous Integration(継続的インテグレーション)」の略で、コードにミスがないか自動でチェックする仕組みです。
CDは「Continuous Deployment(継続的デプロイ)」または「Delivery(デリバリー)」の略で、アプリを自動でサーバーに公開します。
つまり、ボタン一つでアプリの更新や公開ができるようになるのです。
2. どんなときにCI/CDが便利?
たとえば、Flaskアプリを何度も修正してサーバーに手動でアップロードするのは面倒です。
でも、CI/CDを使えば、GitHubにコードをアップするだけで自動的にテストして、問題がなければサーバーに反映してくれます。
家事ロボットのように、面倒な作業を代わりにやってくれる仕組みだと思えばわかりやすいです。
3. 使う道具:GitHubとGitHub Actions
GitHub(ギットハブ)は、作ったコードを保存・共有するためのWebサービスです。
GitHub Actions(ギットハブアクションズ)は、GitHubの中で自動作業を行うロボットのようなものです。
「誰かがコードをアップロードしたら自動でテストしてね」と命令することができます。
4. Flaskアプリを準備しよう
まず、Flask(フラスク)というPythonの軽量Webアプリのフレームワークを使ってアプリを作ります。
以下のようなコードがFlaskの基本的な形です。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "こんにちは、世界!"
このファイルをapp.pyという名前で保存しておきましょう。
5. requirements.txtを作ろう
Pythonで使うライブラリを記録したファイルです。サーバーで必要なライブラリを自動でインストールしてくれます。
Flask==2.3.3
これもアプリのフォルダに保存しておきます。
6. GitHubにアプリをアップロードしよう
GitHubにアカウントを作って、リポジトリ(アプリのフォルダ)を作成し、先ほどのapp.pyとrequirements.txtをアップロードします。
これで準備は完了です。
7. GitHub ActionsでCI/CDの設定ファイルを作成
次に、GitHub Actionsで使う設定ファイルを作ります。これは「この順番で作業してね」と命令をまとめたものです。
ファイル名は.github/workflows/python-app.ymlです。
name: Flask CI/CD
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Pythonをセットアップ
uses: actions/setup-python@v4
with:
python-version: 3.10
- name: 依存ライブラリをインストール
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Flaskアプリの起動テスト
run: |
python app.py &
sleep 5
この設定により、アプリのコードをGitHubにアップしたときに、自動でFlaskアプリが起動できるか確認してくれます。
8. 本番サーバーへの自動デプロイとは?
デプロイとは、「完成したアプリを公開する」ことです。CI/CDではこの作業も自動化できます。
たとえば、GitHubからVPS(サーバー)にSSH接続して、Flaskアプリをアップロードするように設定します。
そのためには、秘密鍵や公開鍵を設定し、セキュリティに注意しながら、GitHubのSecrets機能を使って安全に情報を渡します。
9. 自動化する流れを整理しよう
CI/CDの流れを簡単にまとめると、次のようになります。
- ① コードを書いてGitHubにアップ
- ② GitHub Actionsが自動でFlaskをテスト
- ③ 問題なければ自動でサーバーにアップロード
この仕組みがあることで、作業のミスを減らし、安心してアプリを更新できます。
10. 初心者がつまずきやすいポイント
CI/CDでは、最初にGitHubの設定やサーバーの接続設定で迷うことが多いです。
ですが、最初はpushされたらアプリを起動して確認するだけの簡単なCIから始めるのがおすすめです。
ステップを一つずつ確かめながら、自分のペースで進めていきましょう。
まとめ
Flaskアプリケーションを自動的にテストし、安定したサーバーへ継続的に配信するためには、CI/CDという連携した仕組みを正しく理解して活用することがとても大切です。特にFlaskのように軽量で扱いやすいフレームワークを使う場合、コードの更新が多くなるため、そのたびに手動でアップロードする作業は時間も手間もかかり、作業ミスが起こる原因になります。そこでGitHub Actionsを利用して、プッシュした瞬間に自動でテストが走り、問題がなければサーバーへ反映される流れを構築しておくと、作業の効率が飛躍的に向上します。さらに、FlaskのルーティングやPythonパッケージ管理、GitHubのリポジトリ設定など、アプリ開発に必要な基本知識を学びながら、自動化の技術を実践的に身につけられる点も大きな魅力です。
また、CI(継続的インテグレーション)ではコードの品質を高めるために自動テストが重要であり、CD(継続的デプロイ)では安定した環境に継続的にアプリを反映できる点が魅力です。特にFlaskアプリを構築する際には、app.pyの基本的な構造、requirements.txtのライブラリ管理、そしてGitHub ActionsのYAMLファイルの書き方を理解しておくと、さまざまなアプリに応用できます。さらに、公開鍵と秘密鍵の設定や、GitHub Secretsを使った安全な接続管理など、デプロイに欠かせないセキュリティの基本も同時に学べます。
実際のプロジェクトで役立つのは、次のような自動化されたパイプラインです。「コードを書いてpushする」「GitHubが自動でFlaskアプリをテストする」「問題なければサーバーにアップロードする」という流れが一度構築できれば、作業は極めてスムーズになり、初心者でも本格的な開発手法に触れることができます。
さらに、初心者が最初につまずきやすいポイントとして、GitHubのディレクトリ構造やYAMLファイルの書き方がありますが、一気に複雑な設定を覚える必要はありません。まずは単純なCIのテスト自動化から始め、徐々にサーバー接続やデプロイ自動化に進めていくと理解が深まりやすいです。
下記のようなサンプルコードを応用しながら、自動化の仕組みを一つずつ体験することで、より実践的な知識が身につくでしょう。
サンプルプログラム:Flaskの基本ルーティング
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/status")
def status():
return jsonify({"message": "デプロイ成功", "status": "ok"})
サンプル:GitHub Actions簡易CI設定
name: Simple Flask CI
on:
push:
branches: [ main ]
jobs:
simple-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Pythonセットアップ
uses: actions/setup-python@v4
with:
python-version: 3.10
- name: 依存関係インストール
run: pip install -r requirements.txt
- name: Flask起動テスト
run: |
python app.py &
sleep 3
このように、FlaskアプリとGitHub Actionsを組み合わせることで、初心者でも直感的に理解しやすい自動化環境を構築できます。実際のWebアプリ開発では、より複雑なテスト設定やデプロイワークフローを組み込むこともありますが、この流れを身につけておくことで、どんなプロジェクトにも応用できる力を伸ばせます。作業の効率化だけでなく、品質維持、トラブルの早期発見、チーム開発のスムーズな進行など、多くのメリットを得られるため、Flaskを学ぶ段階でCI/CDを習得しておくことは非常に価値があります。
生徒:「今日学んだCI/CDの流れ、最初は難しそうに感じたけど、実際に手順を見たらかなり理解しやすかったです。」
先生:「そうでしょう。Flaskアプリは構成がシンプルだから、自動化の流れも直感的に覚えやすいですよ。」
生徒:「特にGitHub Actionsの設定が便利ですね。pushしただけでテストまでやってくれるなんて、びっくりしました。」
先生:「その驚きが大事です。自動化の仕組みは開発の効率を大きく変えますし、品質維持にも役立ちます。」
生徒:「これでFlaskアプリをもっと安心して更新できますね。次は本番サーバーへの自動デプロイに挑戦してみたいです!」
先生:「もちろん。一歩ずつ進めば必ず身につきますよ。今日の内容をしっかり復習して、次のステップも一緒に頑張りましょう。」