カテゴリ: Flask 更新日: 2025/11/24

FlaskアプリをCI/CDパイプラインに組み込む方法をやさしく解説!初心者でも自動デプロイができる

FlaskアプリをCI/CDパイプラインに組み込む方法まとめ
FlaskアプリをCI/CDパイプラインに組み込む方法まとめ

先生と生徒の会話形式で理解しよう

生徒

「Flaskアプリを自動でサーバーにアップロード(デプロイ)する方法ってありますか?」

先生

「はい。CI/CD(シーアイ・シーディー)という仕組みを使えば、Flaskアプリを自動でテスト・デプロイできます。」

生徒

「えっ、CI/CDって何ですか?難しそう…」

先生

「大丈夫。料理のレシピや家事の流れと同じで、自動でやってくれる流れを作るだけなんです。一緒にゆっくり見ていきましょう。」

1. CI/CDとは何か?

1. CI/CDとは何か?
1. CI/CDとは何か?

CI/CDは、アプリを作るときに自動でテストやアップロードを行う「流れ(パイプライン)」のことです。

CIは「Continuous Integration(継続的インテグレーション)」の略で、コードにミスがないか自動でチェックする仕組みです。

CDは「Continuous Deployment(継続的デプロイ)」または「Delivery(デリバリー)」の略で、アプリを自動でサーバーに公開します。

つまり、ボタン一つでアプリの更新や公開ができるようになるのです。

2. どんなときにCI/CDが便利?

2. どんなときにCI/CDが便利?
2. どんなときにCI/CDが便利?

たとえば、Flaskアプリを何度も修正してサーバーに手動でアップロードするのは面倒です。

でも、CI/CDを使えば、GitHubにコードをアップするだけで自動的にテストして、問題がなければサーバーに反映してくれます。

家事ロボットのように、面倒な作業を代わりにやってくれる仕組みだと思えばわかりやすいです。

3. 使う道具:GitHubとGitHub Actions

3. 使う道具:GitHubとGitHub Actions
3. 使う道具:GitHubとGitHub Actions

GitHub(ギットハブ)は、作ったコードを保存・共有するためのWebサービスです。

GitHub Actions(ギットハブアクションズ)は、GitHubの中で自動作業を行うロボットのようなものです。

「誰かがコードをアップロードしたら自動でテストしてね」と命令することができます。

4. Flaskアプリを準備しよう

4. Flaskアプリを準備しよう
4. Flaskアプリを準備しよう

まず、Flask(フラスク)というPythonの軽量Webアプリのフレームワークを使ってアプリを作ります。

以下のようなコードがFlaskの基本的な形です。


from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "こんにちは、世界!"

このファイルをapp.pyという名前で保存しておきましょう。

5. requirements.txtを作ろう

5. requirements.txtを作ろう
5. requirements.txtを作ろう

Pythonで使うライブラリを記録したファイルです。サーバーで必要なライブラリを自動でインストールしてくれます。


Flask==2.3.3

これもアプリのフォルダに保存しておきます。

6. GitHubにアプリをアップロードしよう

6. GitHubにアプリをアップロードしよう
6. GitHubにアプリをアップロードしよう

GitHubにアカウントを作って、リポジトリ(アプリのフォルダ)を作成し、先ほどのapp.pyrequirements.txtをアップロードします。

これで準備は完了です。

7. GitHub ActionsでCI/CDの設定ファイルを作成

7. GitHub ActionsでCI/CDの設定ファイルを作成
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. 本番サーバーへの自動デプロイとは?

8. 本番サーバーへの自動デプロイとは?
8. 本番サーバーへの自動デプロイとは?

デプロイとは、「完成したアプリを公開する」ことです。CI/CDではこの作業も自動化できます。

たとえば、GitHubからVPS(サーバー)にSSH接続して、Flaskアプリをアップロードするように設定します。

そのためには、秘密鍵や公開鍵を設定し、セキュリティに注意しながら、GitHubのSecrets機能を使って安全に情報を渡します。

9. 自動化する流れを整理しよう

9. 自動化する流れを整理しよう
9. 自動化する流れを整理しよう

CI/CDの流れを簡単にまとめると、次のようになります。

  • ① コードを書いてGitHubにアップ
  • ② GitHub Actionsが自動でFlaskをテスト
  • ③ 問題なければ自動でサーバーにアップロード

この仕組みがあることで、作業のミスを減らし、安心してアプリを更新できます。

10. 初心者がつまずきやすいポイント

10. 初心者がつまずきやすいポイント
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アプリをもっと安心して更新できますね。次は本番サーバーへの自動デプロイに挑戦してみたいです!」

先生:「もちろん。一歩ずつ進めば必ず身につきますよ。今日の内容をしっかり復習して、次のステップも一緒に頑張りましょう。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説