こんにちは。認証グループのいまひろです。
以前、認証グループのストーリーチケットに対するテストフローの更なる改善という記事で、私たちのチームが取り組んでいるJiraのチケット駆動開発と、そのテストフロー改善についてご紹介しました。
現在、社内ではClaude Codeの導入が進んでおり、各チームが開発生産性やプロダクト品質の向上を目指し、それぞれに最適な活用法を模索している段階です。
今回はその一環として、私たち認証グループがClaude Codeを活用してJiraのチケット駆動開発をどのように加速させているか、その具体的な取り組みをご紹介します。
開発の前提:Jira中心の開発プロセス
まず前提として、私たちのチームではJiraのチケット駆動で開発を進めています。
品質を一定に保つため、チケットの完了条件となるテストケースはGherkin記法で記述し、Gitで管理、レビューを必須としています。レビューを経てマージされたテストケースは、Jiraの拡張機能によってチケットに紐付けられ、Jira上でテスト内容の確認や実施結果の管理までを完結させています。
このように、テスト管理も含めてJiraを中心とした開発プロセスを構築しているのが私たちのチームの特徴になります。
Claude Codeをチームに迎える
Claude Codeの導入にあたり私たちが意識したのは、単なるコード生成ツールとしての活用を探るのではなく、これからの開発体験をどうデザインするかという点でした。
私たちのチームは、モブで開発方針の決定や実装を行うことが多い開発スタイルになっています。
そこで、Claude Codeを単なるツールとして利用するのではなく、自律的にタスクをこなす「開発メンバーの一員」としてチームに迎え入れ、主に実装の「ドライバー」役を担ってもらうことにしました。
Claude Codeの役割分担
役割分担として、Claude Codeには開発プロセスの中の下記2つのフェーズを担当してもらうことにしました。
1. Gherkinのテストケース作成フェーズ
私たちのチームでは、Jiraのストーリーチケットに着手する際、まず完了条件を満たしていることを保証するテストとして、Gherkinのテストケースを作成することになっています。
このプロセスをClaude Codeに担ってもらうため、AtlassianのリモートMCPサーバーを利用可能に設定し、以下のワークフローをカスタムコマンドとして定義しました。
/gherkin [チケットID]
というカスタムコマンドを定義- チケット読み込み: Jiraのチケット内容を読み込み、要求仕様を理解する。
- ブランチ作成: 定められた命名規則でブランチを作成する。
- テスト記述: 特定のディレクトリ配下に、所定のフォーマットでGherkinのfeatureファイルを作成し、テストケースを記述する。
- プルリクエスト作成: コミット、プッシュを行い、レビュー依頼のプルリクエストを作成する。
2. 実装フェーズ
実際のチケットの完了条件を満たす実装フェーズについても、Claude Codeがドライバーとして担当します。
テストケース作成時と同様に、以下のワークフローをカスタムコマンドとして定義しました。
/implement [チケットID]
というカスタムコマンドを定義- チケット読み込み: Jiraのチケット内容を読み込み、要求仕様を理解する。
- テストケース読み込み: 先行して作成されたGherkinのテストケースを読み込む。
- ブランチ作成: 定められた命名規則でブランチを作成する。
- 実装: チケットおよびGherkinのテストケースを満たす実装を行う。
- プルリクエスト作成: コミット、プッシュを行い、レビュー依頼のプルリクエストを作成する。
実装フェーズでは、Jiraチケットの内容だけでなく、先行して作成されたGherkinのテストケースもインプットとして参照し、それぞれを満たすコードを生成してもらうのがポイントになります。
また、Claude Codeをそれぞれのリポジトリ内で起動して実行するのではなく、各リポジトリを参照できる上位のディレクトリで実行することで、複数リポジトリに跨る機能実装を可能にしています。
新しい開発フローの全体像
開発フロー自体は従来と変わりませんが、AIと人間の役割分担がより明確になりました。
[人]
Jiraチケット起票[AI]
Gherkinテスト作成とプルリクエストの作成[人]
プルリクエストのレビューとマージ[人]
Jiraチケットへのテストケース取り込み[AI]
Jiraチケットおよびテストを満たす実装とプルリクエストの作成[人]
最終確認テストとデプロイ
Claude Code活用の勘所:チケット記述の重要性
このフローを円滑に回す上で最も重要なことは、Jiraチケットの記述をClaude Codeが正確に理解できるレベルまで詳細化することです。
これまでは開発メンバー間の暗黙の了解で省略されていたコンテキストや背景も、明文化する必要が出てきました。この取り組みを通して、私たちはチケットに必要な情報をより意識的に記述するようになり、結果として開発の解像度が高まりました。
Claude Code導入による3つの効果
1. Jiraチケットの質が向上した
以前は、チケット作成後に状況が変化しても内容が更新されなかったり、メンバーが理解しているため詳細が省略されたチケットが存在したりする、という課題がありました。
Claude Codeはチケットの記述を元に作業を行うため、不正確な情報では正しい成果物を出力できません。Claude Code導入により、チケットを常に現状に即した状態にメンテナンスする文化が根付き、より強固なチケット駆動開発が実現しました。
2. テストカバレッジが向上した
QAの専門家でない開発者がテスト観点を常に意識し、抜け漏れなくテストケースを洗い出すのは容易ではありません。
Claude Codeは、予めインプットとして与えられたテストの観点に基づき、人間が見落としがちなコーナーケースも含めて愚直にテストケースを作成してくれます。時には不要なケースを生成することもありますが、開発者が作成し開発者がレビューするような人間同士でプロセスを回していた時には気づけなかったであろうテストケースも作成してくれ、プロダクトの品質向上に大きく貢献しています。
3. プルリクエストが「伝わるドキュメント」になった
実装後にプルリクエストを作成する際、その説明を十分に記述するのは手間がかかる作業です。そのため、同じチームのメンバーにしか伝わらない、コンテキストが省略された説明になったり、レビュー指摘を実装に反映しても概要の更新を怠ったりすることもしばしばありました。
Claude Codeは、変更箇所を網羅的に説明し、レビューでの修正内容も適切に反映してくれるため、誰が読んでも理解しやすいプルリクエストを自動で作成してくれます。この「ドキュメントとしての質」が人的コストをかけずに向上するだけでも、導入の価値は非常に大きいと感じました。
まとめ
テストケースの作成、実装、そしてプルリクエストの作成といった、エンジニアにとって重要ではあるものの、完璧を期すには多大な時間と労力がかかる作業を、Claude Codeは難なくこなしてくれます。
Claude Codeには、作業を手間と感じたり、気分によりパフォーマンスが低下するといった、良くも悪くも人間らしい部分がないため、それがマイナスの影響を与えるフェーズにおいては、とても有用だと感じました。
私たちエンジニアは、どの部分をAIに任せ、自身はどこに注力すべきか、全体最適の視点で常に考え続ける必要があります。
AIの進化は目覚ましく日々状況は変わっていきますが、現状としては、既存の開発フローにおける役割分担を明確にし、Claude Codeがより自律的にプロセスを回せる状態を目指すことで、さらなる開発生産性とプロダクト品質の向上を実現していきたいと考えています。