⚙️

エンジニアは名前にこだわろう!GitHub Actionsのジョブ名・ワークフロー名も大事です

こんにちは!皆さんはGitHub Actionsを使っていますか?ワークフローやジョブの名前はしっかり考慮して付けられているでしょうか。

今回は、ジョブ名の付け方をちょっと見直してみたら思わぬところで助かった話をシェアします。些細な話ですが、意外と見落としがちなポイントかもしれません。

きっかけは自動マージの設定でした

フィッツプラスでは、依存関係の管理に Renovate を導入しています。ライブラリのアップデートにはなるべく追従する方針で、tflintなど一部のツールについてはCIが通れば自動マージするように設定しています。

この自動マージの仕組みをより効率化するため、GitHubのブランチプロテクション設定を見直すことにしました。Terraformでrequired_status_checksを設定するために、各リポジトリの設定内容を確認していたときのことです。


※GitHub上での表示

run…だと。

この時のワークフローファイル(一部抜粋)は以下のようになっていました。

tflint.yml
name: tflint
on: [pull_request]

jobs:
  run:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        directory: ['./', 'teams-for-all-repositories']

tflintという名前をつけていたつもりが、スクリーンショットに示した通り、runといった何をしているのかわからない名前でステータスチェックが表示されていました。

何が困ったのか

そもそもリンターで引っかかることはほとんどなく、実際に引っかかった場合もリンクをクリックすれば内容を確認できるので、実務上大きな問題になることはありませんでした。しかし、当然ですが複数のリポジトリにまたがって設定を管理していくとなると、どのジョブがどんな処理をしているのか分からなくなってしまいます。

特に以下のような場面で困ります:

  • 同じ名前のジョブが異なるワークフローにある
  • ワークフロー名とジョブ名の組み合わせが曖昧
  • ブランチプロテクション設定時にどれを必須にすべきか判断に迷う

通常の開発フローでは気にならないのですが、設定を自動化する際に急に問題として浮上したわけです。

解決策:具体的で分かりやすい名前に

そこで、ジョブ名をより具体的で分かりやすいものに変更しました。

tflint.yml
name: tflint
on: [pull_request]
jobs:
  run:
    name: tflint    # ← 名前をつけた
    runs-on: ubuntu-latest
    timeout-minutes: 5

このように変更することで、以下の改善が得られました。

  • GitHub上でのステータス表示が「tflint」「actionlint」のように具体的になった
  • ブランチプロテクション設定時に迷わなくなった
  • 他の開発者が見てもすぐに何をするジョブか理解できるようになった

意外な副次効果

組織全体でこの命名規則を適用してみると、統一感のあるCI環境が構築できました。新しいプロジェクトでも迷わずに適切な名前を付けられますし、プロジェクト間での知見共有もスムーズになります。

特に、複数人で開発している環境では、一目でジョブの役割が分かるようになりましたし、AIコードエージェントのために用意するルール定義も簡潔になり、他のプロジェクトへの展開が容易になります。

まとめ

変数名やファンクション名にこだわるのと同じように、ワークフローやジョブの名前も大切です。普段は気にならない部分ですが、自動化や設定管理を進める際に思わぬ効果を発揮します。

こうした変更も、最近ではDevinなどを使えば効率的に統一もできるので、対応も進めやすくなっているので、やらない手はないですね。

些細な改善ですが、チーム全体の開発体験向上につながる良い例だったと思います。皆さんも一度、GitHub Actionsの名前付けを見直してみてはいかがでしょうか。

ARMテックブログ

Discussion