🤖

AI を使った開発で実践していること

に公開

個人的なメモとしての役割メイン、数ヶ月後に振り返ってもおもしろそう。
以下、口頭で話した内容をclaudecodeにまとめてもらいました!

普段の AI の使い分けと、開発時のプラクティスについて。

使っている AI サービスと用途

主に使っているのは以下の 3 つ。Claude と ChatGPT は個人で課金、Gemini は会社で利用可能な状態になっている。

サービス 主な用途 契約
Claude コーディング 個人課金
ChatGPT 日常の質問、壁打ち 個人課金
Gemini 予定管理、画像処理 会社

ChatGPT

日常の質問や雑談に使っている。ディープリサーチで調べ物をすることもある。

音声チャットで壁打ちをすることが多い。思考が詰まったときに口頭で話しながら整理するのに向いている。過去の会話を覚えているので、文脈を踏まえた返答が返ってくる。

Gemini

使用頻度は低いが、Google カレンダーとの連携で使う場面がある。

  • 予定が書いてある画像やスクリーンショットを投げてカレンダーに予定を登録してもらう
  • ナノバナナを使いたいときに投げる

Claude

開発は基本的に Claude Code で行っている。

Claude Code の WebView も使っている。出先で環境を立ち上げるほどでもない軽いタスクは Web 側に投げて完結させることがある。

Web サービスの設定方法や操作手順がわからないときは Claude Cowork を使っている。画面を見ながら操作手順を調べてもらったり、そのまま作業を代行させたりしている。

Claude Code の運用

開発環境の基盤

ワークスペースは常に DevContainer で構築している。ローカルのツール管理には mise を使っており、Claude Code を含む各種ツールを mise の管理下に置いている。

mise による最新版の維持

ローカル環境を立ち上げたらまず mise で Claude Code をアップグレードする。自動アップデートが入ることもあるが、手動でも毎回確認している。

公式マーケットプレイスのスキル導入

定期的に Claude Code 公式マーケットプレイスを確認して、新しいスキルやプラグインを導入している。認証不要のものは基本的に全て入れる。公式以外のマーケットプレイスは見ていない。

設定のスコープ

Claude Code の設定はプロジェクトスコープにして .claude ディレクトリに配置している。使用スキル、プラグイン、共通ルールをリポジトリに含めることで、環境間で同期できるようにしている。

docstring への背景情報の記録

コーディング時の共通指示として、背景情報を docstring に詳細に残すようにしている。なぜその実装にしたのか、なぜこの処理が必要なのかをコード内に書き残す。

この指示のように、特定のプロジェクトに限らず横断的に適用したいルールがある。こうした共通ルールの管理は次のテンプレート同期で行っている。

テンプレートによるプロジェクト横断の設定同期

以下のような設定をテンプレートリポジトリで一元管理している。

  • DevContainer の設定
  • mise の設定
  • Claude Code の設定(.claude 配下)
  • 使用スキル・プラグインの定義
  • コーディング時の共通ルール(docstring の書き方など)

このテンプレートに対して、各プロジェクトから双方向に同期できる仕組みを作っている。

運用の流れ:

  1. プロジェクト A で設定を改善する
  2. プロジェクト A からテンプレートにプッシュする
  3. プロジェクト B でテンプレートからプルする → プロジェクト A の改善が反映される
  4. プロジェクト B で別の改善を加える
  5. プロジェクト B からテンプレートにプッシュする
  6. プロジェクト A でテンプレートからプルする → プロジェクト B の改善も反映される

どのプロジェクトで行った改善でもテンプレート経由で他のプロジェクトに伝播するので、設定が常に最新の状態に保たれる。新規プロジェクトを作るときもテンプレートから始めれば、その時点での最新設定が手に入る。

Jujutsu によるバージョン管理

Claude Code で並列に開発するようになってから Jujutsu(jj)を導入した。まだ完全には理解していないが、Git のときよりもコミットを気軽に打てるようになった。どのブランチにいるかをあまり意識せずに作業を進め、必要に応じてリベースやコンフリクト解決の指示を出している。

サブモジュールによるマルチリポジトリ構成

会社のプロジェクトでは、管理用のルートリポジトリを作り、関連リポジトリをサブモジュールとして配置している。ルートで Claude Code を起動すると全リポジトリのコンテキストを参照できる。ルート側にフックを入れて、テスト実行などの制御も行っている。

MCP・CLI によるツール連携

SQL クエリの検証環境

Redash で SQL を書く場面では、AI にクエリを生成させる環境を用意している。

  1. Redash のスキーマ情報をローカルにインポート
  2. ローカルに空の PostgreSQL DB を立てる(スキーマのみ Redash と同一)
  3. 生成したクエリをローカル DB で実行して構文を検証
  4. 通ったら Redash に持っていく

本番 DB には顧客情報が含まれるため、ローカルにはスキーマ情報のみを配置する。クエリの構文エラーを事前に検出できるので、Redash 上での手戻りがなくなる。

Chrome DevTools MCP

DevContainer 内に Playwright と Chrome を入れ、Chrome DevTools MCP で動作確認を行えるようにしている。ホストの Chrome ではなく DevContainer 内で完結させている。

AI が動作確認まで自律的に実行できる環境を作っておくと、修正と検証のイテレーションを自動で回してくれる。

音声入力による指示

AI への指示はほぼ全て音声入力で行っている。タイピングで指示を出すこともあるが、基本は口頭。

理由は、口頭の方が情報量が増えるため。タイピングだと端的な指示になりがちだが、口頭だと「これをやってください。背景としてはこういう事情があって、こういう目的でこの実装にしたい」という形で、背景情報が自然に含まれる。タイピングでは省略しがちな情報が、口頭だとストレスなく伝えられる。

AI に渡すコンテキストの質が上がれば、出力の精度も上がる。音声入力はそのための手段として有効だと考えている。

GitHubで編集を提案

Discussion