📑

ツクリンクにおける開発支援AIのカスタム紹介

に公開

こんにちは、ツクリンクでソフトウェアエンジニアをしているてつです。

ソフトウェア開発へのClaude、CursorなどのAI開発支援ツールの導入はスタンダードになってきていますが、ツクリンクでもAI開発支援ツールを活用しています。使用していくうちにプロジェクト固有のカスタムを加えることで開発の効率や品質に変化があったので、今回はそちらを紹介させていただきます。

ツクリンク固有で加えているカスタム設定

AI開発支援ツールを効果的に使用するため、プロジェクト固有の設定を整備しています。これがないとAI agentが思い思いのコードをフリーダムに書いてしまいます。

ツクリンクはバックエンド側とフロントエンド側のリポジトリが存在しますが、今回はフロントエンド側のリポジトリで採用しているClaude, Cursor向けのカスタム設定を一部紹介します。

Claude Rules(プロジェクトルール)

採用した設計パターンの明記

プロジェクトで採用している設計パターンを明示的にルール化しています。例えば

  • TDD(テスト駆動開発): Red-Green-Refactor-Commitサイクルを徹底
  • Container/Presentationalパターン: Reactコンポーネントの責務分離手法について
  • Progressive Enhancement: CSSについてのポリシーを定義
  • オッカムの剃刀: シンプルさを優先する設計思想(こちらは効果あるかまだわかっていないです)

これらのルールを.claude/rules/配下に配置することで、AIがプロジェクトの設計思想を理解し、より一貫性のあるコードを生成できるようになります。こちらはプロジェクト特有のものはないので再利用できるナレッジにもなるかと思いました。

可読性のためのプロジェクトルール

コードの可読性を高めるためのルールも設定しています。

  • 命名規則の統一
  • コメントの書き方
  • ディレクトリ構造のガイドライン
  • テストの構造とネストのルール

これにより、AIが生成するコードがプロジェクトの既存コードと整合性を保つようになります。

Custom Commands(カスタムコマンド)

よく使う作業の流れをコマンド化することで、プロンプトを毎回書く手間が省くことができ、開発メンバーの間での品質の差を削減することができます。特に、繰り返し行う作業をコマンド化すると、時間の節約になります。

/tsuk:code - コード実装コマンド

TDDを前提としたコード実装を実施するコマンドです。

  • テスト計画からの自動テスト生成
  • Red-Green-Refactor-Commitサイクルの実行
  • 随時品質チェックを実施(リント、型チェック、テスト)
  • 信頼度スコアリングによる実装判断

ただ、こちらは簡単な指示であればコマンド使わずプロンプト直接入力が早い場合がありました。

/tsuk:commit - コミットメッセージ自動生成

Conventional Commits形式に準拠したコミットメッセージを対話的に生成します。

  • 変更内容の自動分析
  • 適切なtype(feat, fix, refactorなど)の推奨
  • チケット番号の確認 ※ ツクリンクではJIRAを使っているのでそのための情報です。
  • 変更の背景や詳細説明の追加

これにより、コミットメッセージの品質が向上し、プロジェクトの履歴がより理解しやすくなります。が、こちらも簡単なコミットは手動で入力したほうが早い場合が結構あるので使う頻度は比較的すくないかもしれません。

/tsuk:test - テスト実行と結果整理

テスト実行と結果分析を提供します。

  • 並列テスト実行(ユニット、統合、E2E)
  • カバレッジの分析
  • 失敗テストの根本原因分析
  • 品質スコアの算出

毎回実行するというより、気づいたときに実施してテストの品質を評価するための参考の一つに使っています。

Reference(参考資料)

設計思想や原則を参照できるドキュメントを配置しています。

  • オッカムの剃刀: シンプルさを優先する原則の詳細
  • SOLID原則: オブジェクト指向設計の原則
  • TDD実践ガイド: テスト駆動開発の具体的な進め方

これらのドキュメントをAIが参照することで、より適切な判断ができるようになればいいのに。

これらは配置しても変わらないかなと思いましたが、リファクタの指示を入力した場合により根拠をもってリファクタしてくれた、気がします。

Cursorとの設定同期

チームメンバーにはClaudeとCursorの両方のユーザーがいるため、設定の同期が重要です。

Cursorでは、Claudeの設定を直接使用できる機能があるため、.claude/配下の設定ファイルを共有することで、どちらのツールを使っても同じルールが適用されるようになっています。

しかし残念ながらカスタムコマンドは直接使用する方法は見つけられていません。。。

いずれにしても、チーム全体で統一した開発品質がある程度担保されるようになり、新規参画メンバーでもスムースに開発に入ることができています。

AI活用を通しての所感

開発にAI活用するようになってから結構経ちますが、ポジティブな感想がたくさんある一方で懸念も感じています。

コーディングよりもリーディングスキルが求められる

AIがコードを生成してくれるようになってから、コードを書く能力よりも、コードを読んで理解する能力の方が重要になったと強く感じています。

AIはプロジェクト全体の文脈を完全に理解できない場合があったり、ドキュメントやプロンプトの不備でチケットの背景に付いての情報が足りない場合があるので、プロジェクトの事情も踏まえてAIが生成したコードの正当性を評価できるだけの知見は必要です。

ドキュメントの重要性が大幅に増加

AI活用により、ドキュメントの重要性が従来以上に高まったと感じています。
従来は、ドキュメントは管理されていることが保証される必要があり、これまで関わってきたプロジェクトの多くはドキュメントの更新漏れなどが積み重なり、信頼性が失われ参照されないことがありました。
しかし、AIによる更新漏れのチェックが実現できることでドキュメントの管理のしやすさが上がり信頼性が高まったと感じています。
また、従来はドキュメントをあとで人間が見やすいようにディレクトリ構造で整理することが必要でした。しかし、AI活用前提であればAIに探したい情報を検索してもらえるのであまり気を使わないでも影響は少ないと思います。(もちろん最低限の責務分離はメンテのために必要)
そのため、完璧なディレクトリ構造を作るよりも、構造は雑でもよいので情報がこまめに蓄積されることの方が重要だと感じています。

情報の新鮮さの担保が必要

AIが参照するドキュメントが古い情報だと、AIが生成するコードも古いアプローチになってしまいます。
そのため、ドキュメントの更新を必須項目として自動レビューに組み込むことが重要です。ツクリンクでは、GitHub上での自動レビューで、そのPullRequest(以下、PR)の更新でドキュメントの内容に矛盾が生じていないかをチェックし、齟齬があれば修正することを必須項目としています。
これにより、コードの変更に伴ってドキュメントも必ず更新されるようになり、AIが参照する情報の新鮮さが保たれます。ドキュメントの更新を忘れがちなので、自動化できると助かります。

さいごに

ちょっと前まではプロンプトを工夫するくらいしかカスタムのポイントがなかったのに、油断するとカスタムできるポイントが出てきて、AI活用方法の進歩に追いつくのが大変ですね。
でもコーディングだけでなく調査や情報の整理にも活用できるので、「勉強大変だな〜」よりも「便利だな〜」が今のところ強いです。まだ今のところは。

今回はツクリンクで活用している方法を紹介しましたが、ひきつづきAI活用方法のキャッチアップは続けて、AIに振り回される人間にならないように一緒に頑張りましょう。
すこしでもみなさんのお役に立てる情報を提供できれば幸いでございます。
さいごまで読んでいただきありがとうございました。

Discussion