ChatGTP プログラミング学習

PythonプロジェクトをGitで効率管理!GitHub Actionsで自動化までの流れを徹底解説

記事内に商品プロモーションを含む場合があります

プログラミングを効率的に進めるために、コード管理は欠かせません。その中でもGitは、複数のバージョンを管理し、チーム開発や個人プロジェクトでも非常に役立つツールです。本記事では、PythonプロジェクトをGitで管理する方法を、初心者向けに分かりやすく解説します。Gitを使ってコードを整理し、安心してプロジェクトを進められるようになるための基本的な操作やワークフローを一緒に学びましょう!

GitとGitHubって何?

Gitは、ソフトウェア開発で使われるバージョン管理システムです。コードの変更履歴を追跡し、異なるバージョンを管理することで、開発の過程で過去の状態に戻ったり、複数の開発者が同時に作業することができます。

一方、GitHubはそのGitを利用して、コードをオンラインでホストできるプラットフォームです。GitHubを使うと、リモートで他の人と一緒に開発を進めたり、プロジェクトを公開して他の開発者と共有することができます。Gitはローカルで作業を

ステップ1: リモートリポジトリの設定と操作

まずはGitHubにリモートリポジトリを作成し、それをローカル環境と連携させるところからスタートします。

GitHubでリポジトリを作成
GitHubにログインし、画面右上の「+」アイコンをクリックし、「New repository」を選択します。
リポジトリ名を入力し、「Create repository」をクリック。
このリポジトリがリモートリポジトリになります。

ローカルリポジトリを作成
ローカルにプロジェクトのディレクトリを作成し、その中でGitを初期化します。bash

ブランチの名前の変更

リモートリポジトリと接続

GitHubで作成したリポジトリのURLをコピーし、ローカルリポジトリに接続します

最初のコミットとプッシュ

まず、ファイルを作成し、それをコミットします

コミットした内容をリモートリポジトリにプッシュします。

Pythonファイルの作成

エラーが出る時は?

イベント拡張を無効にする:
セッション内で一時的に履歴拡張をオフにすることができます。以下のコマンドで無効にできます。

.gitignoreファイルの作成

不要なファイルをリポジトリに含めないための.gitignoreも非常に重要です。指定する内容をきちんと定義しましょう。

ファイルをステージング
main.py をGitの追跡対象にするために、次のコマンドを実行します

コミットします

ステップ2: Pythonプロジェクトのバージョン管理手法

ファイル変更の管理とコミット

  • コードの変更: Pythonファイルに変更を加えたら、変更をGitで管理するためにステージングしてコミットします。 例えば、main.pyに以下のようにコードを追加してみます。

ブランチを使って新機能を追加する

  • 新しい機能や実験的なコードを作成する際は、ブランチを作成して開発を進めるのが良い方法です。例えば、new-featureブランチを作成して作業します。

ここでコードを変更し、コミットを続けます。作業が完了したら、メインブランチにマージします。

ワンポイント(リモートリポジトリの同期 (fetch と pull の違い)

git fetch: リモートリポジトリの変更をローカルにダウンロードしますが、ワークスペースには影響を与えません。これにより、他の開発者がどのような変更を加えたかを確認できます。

git pull: リモートリポジトリの変更をローカルに取り込み、ワークスペースに自動的にマージします。これにより、最新の変更をローカルで反映させることができます。

ステップ3: Gitの高度な操作とGitHub Actionsの導入

プロジェクト管理を次のレベルに引き上げたいと考えていますか?Gitの基本操作を習得した後は、さらに効率的に開発を進めるための高度な機能を活用することが重要です。ブランチの操作やリベース、マージなどの高度なGit操作を学びながら、GitHub Actionsを使って自動化プロセスを導入する方法を解説します。これにより、開発フローが一層スムーズになり、より高品質なコード管理が実現します。

タグを使ってバージョン管理

  • 特定のリリースやバージョンにラベルを付けることで、プロジェクトの重要な状態を記録できます。例えば、リリースバージョンとしてv1.0.0をタグ付けします。

ステップ4:GitHub Actionsを使用したCI/CDの自動化

GitHub Actionsを使用することで、コードのテスト、ビルド、デプロイを自動化できます。これにより、プロジェクトの継続的インテグレーション(CI)を実現し、コードの品質を維持することが可能です。

1. GitHub リポジトリに .github/workflows フォルダを作成する

GitHubで操作を行います

GitHub 上のリポジトリに移動し、リポジトリのルートディレクトリで「Create new file」をクリックします。

ファイル名の欄に次のように入力してフォルダを作成します

ファイル名にフォルダを含めるめて、ファイル名の入力欄に、フォルダ名/ファイル名のように入力します(例: new-folder/example.txt)。

workflows/ フォルダの中に新しいファイルを作成し、ファイル名を python-app.yml として作成します。

2. YAML ファイルにワークフローを定義

次に、作成した python-app.yml ファイルに以下の内容をコピー&ペーストします。これは、Python プロジェクトで GitHub Actions を使って自動テストを実行するためのワークフローの定義です。

  • これをリポジトリに追加し、プッシュすることで、コードがプッシュされるたびに自動でテストが実行されます。

3. 依存関係ファイル (requirements.txt) の作成

この作業は、GitHubではなくローカル環境で行います。

requirements.txt ファイルの作成

Pythonパッケージのインストール確認: まず、プロジェクトで使用しているパッケージを確認します。例えば、pytest を使ってテストを実行する場合、pytest をインストールしていない場合は、以下のコマンドでインストールします。

requirements.txt の作成: プロジェクトのルートディレクトリで requirements.txt ファイルを作成します。既にインストールされているパッケージを自動的にリストアップするには、以下のコマンドを実行します。

このコマンドは、現在のPython環境でインストールされているすべてのパッケージとそのバージョンを requirements.txt に書き込みます。

手動でパッケージを追加

特定のパッケージ(例: pytest)だけを requirements.txt にリストアップしたい場合は、テキストエディタを使って手動でファイルを作成することもできます。例えば、requirements.txt に以下を記述します。

GitHubにプッシュする

ローカルリポジトリにコミット: 作成した requirements.txt ファイルをGitHubにプッシュするために、まずローカルリポジトリに追加してコミットします。

以下のコマンドで requirements.txt をGitに追加します。

変更をコミット

次に、コミットメッセージを付けてファイルをコミットします。

GitHubにプッシュ

最後に、リモートリポジトリ(GitHub)に変更をプッシュします。

これで requirements.txt がGitHubにプッシュされます

GitHubで確認

GitHubのリポジトリページに移動し、requirements.txt がリポジトリ内に追加されたことを確認してください。

これで、他の開発者が requirements.txt を使って、簡単にプロジェクトの依存関係をインストールすることができるようになります。

テストファイル (test_sample.py) の作成

ローカルプロジェクトフォルダでファイルを作成

プロジェクトのディレクトリに移動し、test_sample.pyファイルを作成します。例えば、以下のようにtouchコマンドを使うか、エディタで新規ファイルを作成します。

テストコードを記述
test_sample.pyファイルに以下の簡単なテストコードを書き込みます。このテストでは、assert文を使用して1 + 12であることを確認しています。

コミットしてプッシュ

すべての設定が終わったら、GitHubにプッシュします。これにより、GitHub Actions が自動でトリガーされ、ワークフローが実行されます。

もしエラーが出たとき

あなたがリモートに変更をプッシュしようとした際に、リモートのmainブランチにすでに新しい変更が含まれていて、ローカルのmainブランチがそれらの変更を取得していないことが原因です。

解決方法

リモートの変更を取得: リモートリポジトリにある最新の変更をローカルリポジトリに反映する必要があります。それには git pull コマンドを使います。このコマンドは、リモートリポジトリの最新の変更をローカルリポジトリに取り込むものです。

リモートリポジトリの変更がローカルにマージされます。もしコンフリクトが発生した場合は、手動で解消する必要があります。

変更を解決して再度プッシュ: git pull が成功した後、リモートの変更がローカルにマージされます。コンフリクトがなければ、そのまま再度プッシュを行います。

ステップ5:GitHub Actions の確認

GitHubリポジトリの「Actions」タブを確認

  • リポジトリのページで「Actions」タブをクリックします。
  • 設定したワークフロー(例: "Python application")が表示され、そのステータスが「✔️Success」または「緑色のチェックマーク」で表示されているのが理想的な状態です。

ワークフローログの確認

  • ワークフロー名をクリックすると、実行ログを見ることができます。正常に実行されている場合、以下のようなステップが含まれ、各ステップが成功していることがログで確認できます。
    • Set up job: ジョブの設定が成功したか。
    • Checkout code: リポジトリのコードを正常に取得できたか。
    • Set up Python: Pythonの設定が成功したか。
    • Install dependencies: requirements.txtに記載された依存関係が正常にインストールされたか。
    • Run tests: pytestを使ったテストが実行され、すべてのテストが成功したか。

正常な状態では、ログの終わりに pytest の結果が表示され、すべてのテストがパスした場合は次のように表示されます:

成功したワークフローのインジケーター

  • GitHub上で「Actions」タブや「コミット履歴」の横に、緑色のチェックマークがついているか確認します。これは、そのコミットに関連したテストがすべて成功したことを示しています。

もし何かエラーが発生した場合

赤い「❌」アイコンが表示され、ワークフローが失敗したことを示します。ログを詳しく確認し、どのステップで失敗したかを特定します。

エラーが発生した場合、ログにその原因が詳細に記載されています。依存関係のインストールに失敗したり、テストコード自体にエラーがあることが考えられます。

まとめ

本記事では、PythonプロジェクトをGitで管理する基本的な手順から、リモートリポジトリとの連携、GitHub Actionsを使った自動テストの設定方法までを解説しました。Gitを活用することで、コードのバージョン管理がしやすくなり、特に複数人での開発やプロジェクトの成長に伴うコード管理がスムーズに行えるようになります。さらに、GitHub Actionsを導入することで、自動化されたテストやデプロイが可能になり、開発の効率化を図ることができます。

初めてのGit操作では不安もあるかもしれませんが、この記事を参考に、段階を追って実践していくことで、スムーズにGitやGitHubを使いこなせるようになるでしょう。ぜひ今回の内容を活かして、効率的なプロジェクト管理を始めてみてください!

もしわからないことがあれば、このブログやXに質問等を投げていただければと思います。また、コミュニティもやっっているのでそちらから質問を投げていただいても大丈夫ですよ!!

Xのアカウントはこちら

ダダのアカウント

Discordコミュニティ

ハピッツカフェ

プログラミングを視覚的に理解したい方やプログラミングで絵を書いてみたい方はUdemyで講座も作っているのでこちらも参考にしてみてください

Udemy講座

Processing Python講座

ChatGPTでPythonの学習を始めてみたい方は以下の記事を参考にしてみてください

ChatGPTはプログラミングの学習はできても、人のつながりまでは作ってくれません。
プログラミングの学習だけではなく、人との繋がりを作ってくれるスクールもオススメです。
気になる方は無料相談からでも体験してみてください!!

テックアカデミー無料メンター相談

-ChatGTP, プログラミング学習
-, , , , , ,