プログラミング

【ざっくり解説】CI/CDを導入しよう

プログラミング
この記事は約6分で読めます。

ごきげんよう。最近はUnityでの開発に四苦八苦しているgonzoです😿

今回は開発作業を効率化し、質を高める為のCI/CDの例についてざっくり解説していきます。

CI/CDって何?

CI/CDとは、こんな仕組みのことです。

  • CI(継続的インテグレーション):
    プログラムが正しく動くかを、自動でテストやビルドして確認する仕組み。

  • CD(継続的デリバリー/デプロイメント):
    テストをクリアしたコードを自動でリリースしたり、本番環境に反映する仕組み。

簡単に言えば、「開発で生じる面倒な作業を自動化する」ための方法です。

ソフィアちゃん
ソフィアちゃん
繰り返し発生する作業はなるべく自動化したいですねっ!

GitHub Actionsを使おう

では、今回の主役「GitHub Actions」の紹介です。
GitHub Actionsは、GitHubが提供している「自動化ツール」です。リポジトリに変更が加えられたときに、決められた手順(=ワークフロー)を自動で実行してくれます。

例えば、以下のようなことができます。

  • プルリクエストが来たときにテストを実行する
  • 本番環境にコードをデプロイする
  • コードフォーマットをチェックする

GitHub Actionsはこのようなワークフローを比較的簡単に作成して実行できるようになっています。
しかもある程度は無料で使えます!😍

月間で実行できるワークフローの合計時間には上限があるので注意してください。

今回やること

今回は、GitHub Actionsを使ってC#のコードフォーマット(=プログラムコードの体裁)をチェックする仕組みを作ります。使うツールはdotnet formatです。コードの見た目に問題があると教えてくれる便利なツールです。

gonzo
gonzo
みんなは普段、コードフォーマットには気を遣ってるかニャ?
ソフィアちゃん
ソフィアちゃん
自分以外の人に見せる必要があるコードは常に綺麗な形に保ちましょう♪

リポジトリの準備をしよう

1. GitHubリポジトリを準備する

自分のC#プロジェクトをGitHubに登録しましょう。リポジトリがまだなければ、新規作成してください。

2. .editorconfigを作る

.editorconfigは、コードフォーマットのルールを定義するファイルです。プロジェクトのルートディレクトリ等に以下の内容でファイルを作成しましょう。

これで、C#コードのインデントや改行、usingディレクティブの順序などが統一されます。

gonzo
gonzo
UnityならC#スクリプトファイルがあるディレクトリに配置すると良いニャ

GitHub Actionsを設定する

ワークフローファイルを作る

リポジトリの.github/workflowsディレクトリに移動し、format-check.ymlというファイルを作成します。
以下はC#コードのフォーマットチェックを行うGitHub Actionsのワークフローの例です。

この設定で、プルリクエストが作成されるたびにコードフォーマットがチェックされます。

gonzo
gonzo
CI/CDのワークフローは大抵Linux環境で実行することになるから、その辺の知識も持ち合わせてると理解が捗るニャー
ソフィアちゃん
ソフィアちゃん
GitHub ActionsではDocker等のコンテナ技術も応用できるので、知っていると大いに役立ちますねっ!🐳

実際に動かしてみよう

  1. プロジェクトに変更を加えたら、GitHubでプルリクエストを作成してください。
  2. ワークフローが自動的に動き、フォーマットに問題があればエラーを通知します。
  3. Detailsリンクの先にあるSummaryでエラー箇所を確認します。
  4. 指摘された箇所を修正して再度プッシュしましょう!

以下が実際の流れです。
例えば、下記のようなプログラムコードをProgram.csというファイル名でコミットしたとします。

そして、プルリクエストを作るとワークフローが実行されます。

しばらくすると失敗します。

Summaryを見るとエラー箇所が表形式になっています。

修正後にコミットすると、再度ワークフローが実行されて、成功となります。

以上のように、GitHub Actionsとdotnet formatを組み合わせれば、このようにコードフォーマットのチェックを簡単に自動化できます。これを取り入れることで、開発チーム全体の効率やコードの品質がぐんと上がりますよ。

リポジトリの設定で、ワークフローが全てパスしないとマージができないようにする事も可能です。

他にもCI/CDでできること

CI/CDを使うと、他にも開発の面倒な作業を自動化できます。今回はいくつかの例をサクッとご紹介します。

  • 自動テスト:
    コードが正しく動くか、自動でチェック!ユニットテストや統合テストを使えば、バグを早期に発見できます。

  • 自動ビルド:
    コードを変更したら、実行ファイルやライブラリを自動生成!手作業でのミスも防げます。

  • 本番環境へのデプロイ:
    テストをクリアしたコードを自動で本番環境に反映。これでリリース作業も楽々!

  • コード品質チェック:
    静的解析ツールで、コードの書き方やセキュリティリスクを自動チェック。チームのコードを統一できます。

  • ドキュメント生成:
    コードからAPIドキュメントを自動生成。更新漏れも防げて安心!

gonzo
gonzo
Unityの場合なんかは、metaファイルの上げ忘れ・削除し忘れを検知するワークフローを仕込んでおくと地味に便利だニャー

おわりに

CI/CDは、開発を効率化する魔法のような仕組み。
テストやデプロイを自動化すれば、作業がぐっと楽になります。
特に近年はAIの導入も組み合わさって、コードレビューやデータ分析などの高度な作業も可能になってきています。
また、あらゆる開発支援ツールへの導入も進んできており、使っていて当たり前になってきているほどですので、まだ触ったことが無い方はぜひ試してみてくださいね!

ソフィアちゃん
ソフィアちゃん
面倒な作業はなるべく自動化して、製品のクオリティアップに注力できるようにしましょう♪

おしまい

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