開発というともっぱら個人開発をしており、そこで生成AIを使っていますが、最近の自分自身の使い方やツール選び、ワークフローと言うと大袈裟な感じがしますがそういう進め方について、メモしておこうと思います。2025年11月~2026年2月くらい時点のはなしです。
メモなのでたいへんに長くなりました。こちらは Gemini どんによる簡単なまとめです。生成AIを「~どん」と呼ぶのも最近のようすです (読みにくくなるので文中では呼び捨て)。
この記事は、個人開発における生成AI(主にClaude CodeやGemini)の活用手法について、2025年11月から2026年2月時点の状況を記録したものです。コーディング、テスト、設計、レビューなど多岐にわたるタスクをAIに依頼する際の「コンテキストの構築方法」や、作業内容に応じた「委託と伴走の使い分け」について、実際のプロジェクトの事例を交えて解説しています。
また文末に書いたまとめを、ここにも載せておきます。
生成AIにやってもらうこと
- コーディング・実装
- 仕様を実装、テストしてもらう
- UI修正、見た目の調整
- Issueへの対応とPull Requestの作成
- 曳光弾開発をお任せ。AWS Amplify、CDK、外部サービスへの接続など一気に
- テスト・環境構築
- テスト駆動開発をする
- ユニットテストを書く、書けるようにリファクタリングする
- ユースケースシナリオを元に Playwright でE2Eテストを書く
- E2Eテスト用の実行環境を作る。LocalStack、Dockerコンテナなど
- 設計・要件定義
- 設計の選択肢を作ってもらう。モジュール構成、サービス選定、テーブル設計など
- 選択肢を比較評価するための観点出しと、評価のサポート
- アーキテクチャを検討し、ADR (Architecture Decision Record) に書き残してもらう
- ユースケースシナリオのバリエーションの追加
- セキュリティ上確認すべき項目の整理
- レビュー・ドキュメント作成
- Pull Requestや実装したコードのレビュー
- 人間の「仕様の理解」や「相談した内容の認識」のレビュー
- 仕様変更や設計追加に伴うドキュメントの更新・同期
- 長くなったチャットの議論を残す (Issue、ADR、仕様書など)
- スキルやサブエージェント作成
- 相談相手、頼れる先輩
- 仕様の判断や、見落とし・落とし穴の検証
- 既存コードの説明や、サンプルコードを作る
- 一般的な知識の把握や、よくわからない技術の解説
- 相談途中で論点を整理する。まだわからないこと、判断ポイントなど
- 作業の進め方の相談相手と、TODOリストの作成
生成AIの参加スタイル:
- 自分 (人間) ができる、完成形を100%想像できること → 一発でやってもらう
- 情報や検討が必要、わからない点があること → 選択肢を作ってもらう
- それ以外 (何がわからないかわからない、など) → 伴走してもらって相談する
さらに NotebookLM によるまとめも作ってみました。一般向けに共有していますが、NotebookLM 自体にログインしないと見られないようです。
文中で例として示しているのは以下の、私の個人プロジェクトのコードや作業の様子です。
なお記事本文には生成AIの書いたテキストは利用していません。箇条書きのまとめは生成AIに書いてもらったものを手直ししました。NotebookLM によるまとめは生成AIによるものです。
Claude Code中心
コードを書くことや、それだけでなく設計の相談やレビューは Claude Code が中心です。普通のチャットは Gemini も常用していて、一般的な議論や知識の把握にはこちらを使うことも多いです。
自分のルール設定
AGENTS.md に自分とのコミュニケーションで大事なことと、開発中も常に意識してほしいこと (シンプル重視など) をごく短く書いています。CLAUDE.md には AGENTS.md を見る指示だけ書いて、AGENTS.md に自分のルールを書いていますが、これはほかの CLI も試していた関係で、Claude だけだったら不要でしょう。Copilot も見てくれると思います。
CLAUDE.md: # Guideline for Claude Code You must read @AGENTS.md first before reply anything.
AGENTS.md: # Chat with user - Use Japanese language even if the user provides English input. - Refer to the user as やっとむ. - Reply in a clean, unambiguous, friendly but not too-casual, to-the-point and yet kind manner. Use 常態 not 敬体. - Ask a lot of questions to understand user's intent correctly. Do not guess. ...

AGENTS.md に自分とのコミュニケーションで大事なことと、開発中も常に意識してほしいこと (シンプル重視など) をごく短く書いています
プロジェクトの情報は README.md に書いています。プロダクトの内容、利用するコマンド、前提条件などです。人間に見てもらうつもりで書いていますが、生成AIも参照してくれるようです。
スキルとサブエージェント
Claude Code にはスキルという機能があって、独立したひとまとめの知識を別途ロードできるように書いておけます。現在はそんなに活用しておらず、テスト駆動開発 (TDD) のスキル、git コミットコメントのスキル、ADRの書き方のスキルを使っています。スキル自体は生成AIに手伝って書いてもらいましたが、生成AIが書いたスキルはあまり有用ではないという研究もあるようです。また数日前にAnthropic公式のスキル作成スキルが更新されたという話も見かけました。
またプロジェクト独自のビルドチェーンやコマンドの使い方も、スキルに書いています。
サブエージェントはスキルに似ていますが、スキルは知識としてロードされるのに対し、サブエージェントは新しいエージェントを起動して作業を委譲する仕組みです。仕事に必要な知識とコンテキストだけを使うので、全体のトークン消費をおさえられるそうです。こちらもあまり使っておらず、コードレビューのサブエージェントを作って使っています。
一般的な知識でも、プロジェクト固有の知識でも、人間と共有すると役立つようなことは生成AIと共有しても役立つと思うので、スキルなどで明示しています。またこれはリポジトリで管理します。複数のプロジェクト、複数のプロジェクトで重複して管理することになるのが気になりますが、今はうまいやり方がわかっていません。適宜コピーしています。
スキルなどはプロジェクト横断 (ホームディレクトリ) とプロジェクト固有 (プロジェクトのディレクトリ) に置けるので、共通のものはホームに置いてもいいようです。
一般的な知識でも、プロジェクト固有の知識でも、人間と共有すると役立つようなことは生成AIと共有しても役立つと思うので、スキルなどで明示しています
またプロジェクト独自のビルドチェーンやコマンドの使い方も、スキルに書いています。
すべてはコンテキスト
生成AIに作業を依頼するときには、依頼するときに渡す情報=コンテキストがたいへん重要です。プロンプトもコンテキストの一部ですが、読んでほしいファイルやドキュメント、参照してほしい情報も重要なコンテキストです。またチャット上でのこれまでのやり取り全体もコンテキストです。
ひとつのまとまった作業を依頼するとき、その作業に関連する情報をチャットのやり取りで渡したり、相談しながら詳細を決めたりして、作業に有用なコンテキストを積み上げます。話が長くなるときは、いったんそこまでの話をドキュメントとしてファイルに書き出してもらい、必要に応じて人間が手直しして、それをあらためてコンテキストに含めるということもします。既存のAPIを使うときは、そのAPIの仕様や使い方の説明ドキュメントなどを的確に渡すことも意識します。
ひとつのまとまった作業を依頼するとき、その作業に関連する情報をチャットのやり取りで渡したり、相談しながら詳細を決めたりして、作業に有用なコンテキストを積み上げます。
Claude Code には plan mode があります。コードやドキュメントの修正のような、既存の内容をいったん把握するのが大事なときは、plan mode に切り替えて必要な情報を収集して作業専用のコンテキストを作ってくれます。また、テスト駆動開発のスキルでは docs/plan.md に詳細な手順 (テストリスト) を書いてから進めるように指示してあり、このスキルで仕事を進めてもらうと同じように的確なコンテキストを作ってくれます。plan mode の内容は直接編集できないので、 人間もさわれるファイルに書いてもらう方が便利かもしれません。
GitHub 上の Copilot と Claude Code
GitHub には Copilot がいろいろと組み込まれているので、適時使っています。 今のところは PR に対して Copilot にレビューしてもらうというのがもっぱらです。 特にプロンプトを書かずにレビューしてもらっているので、精度はほどほどですが、あからさまな問題を見つけてくれることがあるので、採用しています。 実装も頼めますが、なんとなく Claude Code のほうを信頼しています。
また GitHub リポジトリに Claude Code を呼んで設計や実装、レビューもしてもらえます。デフォルトだとすべての Pull Requests に Claude Code のレビューが走り、なによりトークン消費が激しいので、明示してコメントで呼び出したときだけ実行するように修正しています。

Issue や Pull Request のコメントで @claude を呼び出すと、作業を依頼できます。Issue の場合は、作業が終わったあとで「Create PR」をクリックして対応する Pull Request を作成します。

なんでも生成AIを使うが、委託と伴走を使い分ける
さて、ある意味本題の、生成AIになにをしてもらうかの話です。基本的にはなんでもやってもらう、というか参加してもらいますが、参加のスタイルがいろいろあります。自分でもあまり整理できていないのですが、いくつかのルールという形で意識していることがあります。
まず簡単なのが、小規模な作業で、自分で作業したらほぼ悩まずに終わる、最初から完成系のイメージがだいたいわかっている場合です。ロジックのバリエーション追加、項目の変更、見た目の調整など。つまり、自分でできる、自分にとって簡単な作業。これは一発のプロンプトで指示をして、完成したら軽く確認する。典型的な委託作業です。特に渡すコンテキストを調整する必要もありません。テストも書いてもらうので、テストコードを見れば結果は大体把握できます。
こうした一発の作業は、どんどん Issue に書いていってつぎつぎに並列で進めてもらいます。並列しすぎるとマージで手間取ることはあるので、そこはほどほどに。10分とかで終わるので、そんなに同時並列することもないと思っています。ところで複数の PR のマージもまとめて依頼できそうな気がしますが、自分で結果確認するタイミングが入るので、いまのところ全部任せにはしていません。してみてもいい気はします。
自分でできる、自分にとって簡単な作業。これは一発のプロンプトで指示をして、完成したら軽く確認する。典型的な委託作業です。
正解を求めない その1・選択肢を作ってもらう
自分で作業するとしたら、あるていど考えたり調べたり、試行錯誤したりする仕事があります。だいたい見当はついているけれど、わからないところもある。こうすればできるかもしれないし、あっちのほうがいいかもしれない。そうした仕事を生成AIにそのまま依頼すると、なにがしかの判断が裏で行われることになります。その判断は正しいかもしれないが、間違っているかもしれない。また正しいとしても、人間のほうが正しいかどうか判断できないかもしれません。
そんなときには生成AIに選択肢を作ってもらいます。こうして単に仕事を進めるだけでなく、人間が仕事の進行についていけるようにします。生成AIの成果をどれだけ人間が把握しておく必要があるかは、よくわかりません。私は自分がわかっておきたいと思ったときには選択肢を作ってもらい、自分で比較評価し、比較評価自体も生成AIと相談したり観点を補ってもらったりしつつ、自分の判断として方針を決めます。選択肢を見ていると、もっと良いアイデアが出てくることもよくあります。このへんの話は2025年の講演スライドにまとめたので、そちらも参考にしてください。
自分で作業するとしたら、あるていど考えたり調べたり、試行錯誤したりする仕事があります。そんなときには生成AIに選択肢を作ってもらいます。明示的に「いくつか選択肢を出してください」と頼みます。
選択肢がほしくなるのは、主に仕様あるいはやりたいことが決まっていて、その実現方法が固まっていない場合です。いわゆる「設計」をこれからするぞ、というときですね。ロジックやアルゴリズムについての選択肢もあれば、モジュール構成の選択肢、採用するサービス選定の選択肢、テーブル設計の選択肢など様々です。
選択肢を作るのに git worktree が便利
選択肢を作るには、普通にプロンプトで明示的に「いくつか選択肢を出してください」と頼みます。ただしこれはアイデアとか、設計の概要・方針とか、短いコード部分などに限られます。
まとまった量のコードについて、複数の選択肢を実装して見比べるのには git worktree を使います。git worktree は別々のディレクトリに別々のブランチをチェックアウトする機能です。これを使うと、並行して複数の実装をそれぞれのブランチで進めて、結果を見比べられるようになります。画面を見るとイメージが分かると思います。 git worktreeを使ったときの簡単なイメージの動画を作りました。後半の1:26から見てみてください。
Claude Code などの CLI で git worktree を使うのは一般的なので、検索すればやり方はすぐ見つかります。私は branches/wt1 などのディレクトリを、必要に応じて作ったり終わったら消したりしています。作ったときには pnpm install や .env ファイルの配置などが必要になるので、頻繁にやるならなにかサポートが欲しいところです。世の中にすでにありそう。docker compose も各 worktree 内で独立して動かせるので便利です。VSCode も git worktree に対応しているそうです。
選択肢を作ってもらうのは、アイデア出しを生成AIに委託し、すこし伴走してもらったうえで、自分の判断を元に残りを委託するという参加スタイルになります。
私は自分がわかっておきたいと思ったときには選択肢を作ってもらい、自分で比較評価し、比較評価自体も生成AIと相談したり観点を補ってもらったりしつつ、自分の判断として方針を決めます。選択肢を見ていると、もっと良いアイデアが出てくることもよくあります。
正解を求めない その2・相談しながら
選択肢を作ってもらうのも難しいときがあります。そもそもなにをしたらいいんだっけ、実現方法がさっぱり思いつかない、頭の中がいろいろもやもやしている、そんなときです。こんなときは生成AIにべったり伴走してもらい、チャットで相談しながら進めます。頭の中で整理すればできるんだけど、面倒くさい、おっくうだ…というエネルギー切れのときも、相談ならぼちぼち進める感じがします。
相談する項目は様々です。仕様の判断、見落としや落とし穴の検証、設計の方針、どのサービスやAPIを使ってどう実現するか、コードを説明してもらって理解する、コード例を出してもらう、テスト内容を考える。単に良くわからないことを教えてもらうのもいいですね。一般的な知識、情報も相談できますが、ドキュメントやコードを踏まえた質問もできます (これはコンテキストを整えることを意識するとよい。このドキュメントを見て、このコードを読んでから答えて、など)。
相談を始めるときは、チャットのセッションを初期化してコンテキストを空にしましょう。Claude Code なら /new コマンドでリセットできます (ちなみに以前のセッションには /resume で戻れるので、一時的に相談するのも大丈夫)。最初のひとことで最初に相談したいテーマを提示すると、あとで /resume するとき見分けやすいので便利ですし、そのほうが反応も的確になる気がします (LLMはプロンプトの最初と最後が重視されると言いますが、ここでも関係あるのかな? あんまりない気はしています)。セッションをリセットするとトークン消費も減らせるので、その点でも意識するといいですね。
そもそもなにをしたらいいんだっけ、実現方法がさっぱり思いつかない、頭の中がいろいろもやもやしている、そんなときです。こんなときは生成AIにべったり伴走してもらい、チャットで相談しながら進めます。
相談のしかた
相談するときはオープンクエスチョンを意識します。相談しているのは、自分でもよくわからないからなので、よくわかっていない自分が主導・誘導しないよう、生成AIにいろいろな情報、観点、見方をしてほしいわけです。
- クローズドクエスチョン: YES/NOで答えられる質問 「〇〇でいいですか?」「問題ありますか?」「他にありますか」
- オープンクエスチョン: 回答が無数にありえる質問 「〇〇はどうですか?」「気になる点を教えて」「他のアイデアを出してください」
自分が理解した内容を文章で説明して、それをレビューしてもらうのも有効です。生成AIに教わった内容を理解できているか、相談してきた内容について認識が合っているか、見落としや考え違いがないかなどが確認できます。生成AIにまとめてもらって終わりだと、あとで勘違いに気づくことがよくあります。
あるていど相談が進んだところで、論点をリストアップすることがあります。相談前にはよくわかっていなかったことが、徐々にわかってきます。わかってきたところで、わかったところ・まだわからないところ、判断が必要だとわかったポイント、新たな疑問点などを、途中で一覧にします。これがすべて解決したら相談は終わり、作業を進められるという判断ポイントが作れます。なんとなくわかった、納得したという感覚でなく、なにが解決したからOKなんだと明示できます。こういう話をしたときは、だいたい結論を Issue に書き残してもらうことが多いです。
相談はチャットだけで完結せず、コードやドキュメントなどを更新しながらできます。コードを少し書いてもらった上で質問するとか、話した内容をドキュメントに反映してもらいつつ関係する情報を整理してもらうとか、TODOリストを書き出してもらうとか。TDDのピンポン (人間と生成AIが交互にコードとテストを書くこと) もこの進め方の一種かもしれません。
ドキュメントの更新は忘れがち
細かい点でも仕様が変わった場合や、設計に追加変更があったときは、ドキュメントも更新する必要があります。生成AIのおかげでコードとドキュメントの同期はたいへん楽になりました。ですが生成AIのほうも調子に乗って開発していると、ドキュメントを忘れることがよくあります。人間が忘れないように意識して、ときどき確認したり、明示的に指示しています。このへんは AGENTS.md やスキルなどでワークフローをしっかり定義してあげると、意識しなくてよくなるかもしれません。まだ試したことはありません。
生成AIのほうも調子に乗って開発していると、ドキュメントを忘れることがよくあります。人間が忘れないように意識して、ときどき確認したり、明示的に指示しています。
テストはガードレールであり案内標識である
生成AIを使わなくても、現代のソフトウェア開発でテスト自動化は欠かせません。生成AIを利用するときには、自動テストの存在がさらに価値が増しています。生成AIがコードの振る舞いを意図せず変えてまうことがありますが、自動テストがあれば振る舞いの変化にすぐ気がつけます。またそもそも生成AIが正しいコードを書いているか、人間がコードを見て確認するよりも、どう動作するかを確認する方が確実ですし、時間もかかりません。プロダクトコードをすべてレビューして問題がないか探すのであれば、自動テストを書いて、そのテストの挙動を確認しましょう。多少のミスがあっても事故につながるのを防ぐ、ガードレールの役割です。
私が生成AIにテスト駆動開発を指示するようになったのは意外と最近で、2025年まではあんまりテストを書かずに進めてしまうことが多かったです。反省としては、ちゃんとTDDするときは伴走する必要があるという気がしていて、委託するときはテストは手を抜いていました。2026年からは委託するときも基本的にTDDで進めるよう AGENTS.md に記述し、そのためのスキルも設定しました。人間と生成AIがピンポンするTDDも有意義ですが、生成AI単独で進めるときもTDDが有効だと理解したのは比較的最近、というわけでした。
生成AIを利用するときには、自動テストの存在がさらに価値が増しています。生成AIがコードの振る舞いを意図せず変えてまうことがありますが、自動テストがあれば振る舞いの変化にすぐ気がつけます。
TDDのスキルの中に、ユニットテストでは外部依存を用いず、モックもできるだけ避けて、ロジックだけを抜き出してテストできるように設計する指示を入れています。これは私の志向が強く出ていますが、ユニットテストでのコードカバレッジはあまり高くせず、アプリとしての仕様を直接表現できるテストを重視しています。
.claude/skills/test-driven-development/SKILL.md (抜粋):
# Tests - Write unit tests for TDD. - Avoid using mocks as much as possible. - Readability is more important in test code so avoid dependencies and over reuse and make every single test cases easy to understand just by themselves. - Order test files and test cases so that the organized tests represents the structure of the specification. - Make sure that unit tests does not use actual external resources like DynamoDB and also does not use mocks. The very interface with external resources should not be tested in unit tests. When we want to test logic we wrote, refactor them out into a separate method/function/class/module and then write unit test for them.
E2E テストは Playwright
アプリとしての動作を担保するテストは Playwright のテストを書いてもらっています。まずは仕様をまずユースケース記述やシナリオとして書いておいて、それを自動化してもらいます。ユースケースシナリオのバリエーションは生成AIに増やしてもらってもいいですね。部分的には、機能単体を確認する E2E テストもありますが、あまり増えすぎないよう気をつけています。
E2E テストは実行環境を作って維持するのが手間ですが、ここは生成AIに全面的に頼りました。もろもろのAWSサービスを LocalStack で構築し、フロントエンドもテスト実行もそれぞれコンテナにして、docker compose run でテストを実行するようにしています (説明なしでコードをシェアしても、生成AIに聞けばすぐ解説してもらえるので、シェアも気軽にできていいですね)。テスト結果はホストディレクトリをマウントしてそこに出力しています。
仕様をまずユースケース記述やシナリオとして書いておいて、それを自動化してもらいます。機能単体を確認する E2E テストもありますが、あまり増えすぎないよう気をつけています。
E2E テストを BDD や ATDD のテストと位置づけて、先にテストを書くやり方も可能だとは思いますが、実践はしていません。自分で仕様を考えて自分で作る個人開発だと、あまりメリットを感じません。生成AI向けには、ユースケースシナリオが目標としてのテストの位置づけになるように感じています。
ドキュメント上で進め方の方針を共有
plan mode を使えば、まず進め方の方針をまとめて、確認もできます。ただしいったん作業が始まると介入しにくくなります。TDDをするときには、生成AIと人間が双方でさわれるところに進め方を書いてもらっています。スキルで明示して、 docs/plan.md の中にTODOリストを書いた上で進めるよう指示しています。
docs/plan.md (抜粋): # TODOリスト NOTICE: TODOリストはフラットな箇条書きで、着手順に上から並べること。新しい項目もフラットに、実施順になるよう途中に挿入する。セクションを分けたり階層化するのは禁止。 - [x] README.md作成 - [x] docs/spec.md作成 ... - [x] EthicsMap: N2ノードにポイントを割り振れる (上限は親N1のポイント) - [x] EthicsMap: ポイントを増やすとPのポイントが減り、減らすと戻る - [x] EthicsMap: Pのポイントが0のとき他のノードのポイントを増やせない - [x] EthicsMap: 子ノードのポイントを超える親の減少はできない ... - [ ] ollamaClient モジュールを実装する (src/services/ollamaClient.js: 接続確認・ テキスト生成) - [ ] F09 OllamaStatus コンポーネントを実装する (接続インジケーター) - [ ] F08 EthicsCodeView コンポーネントを実装する (倫理綱領テキスト表示・ローディ ング) - [ ] F08 ポイント変更時のリアルタイム生成を App.vue に組み込む (debounce付き)
実際のところはすべての開発作業をここに書きながら進めているわけではないようです。人間が忘れる場合もあり、Claude Code も忘れていたりしますが、細かい作業は GitHub Issue に残っているのでわりと関係ないです。大きな作業を計画するときには、確実にここで計画、方針を検討するようにしています。人間が見直したり、部分的に伴走に切り替えたり委託に戻したりもやりやすいです。
TODOリストはTDDのテストリストの位置づけと同じで、自分がどこに到達しようとしているのか、そのためどうやって進むのか、案内標識や目印やリマインダーとなります。同時に、自分が設計をどのように理解しているのかのバロメーターともなり、理解が中途半端なまま進もうとしたときの黄色信号の役にも立ちます。自分でテストリストを書けなかったり、テストリストの項目が理解できなかったりしたら、立ち止まる合図です。生成AIに委託しているなら、一時的にでも伴走で進めるタイミングです。
自分がどこに到達しようとしているのか、そのためどうやって進むのか、案内標識や目印やリマインダーとなります。同時に、自分が設計をどのように理解しているのかのバロメーターともなり、理解が中途半端なまま進もうとしたときの黄色信号の役にも立ちます。
Claude Code の plan mode ではファイルを更新できず、ドキュメントも書けないので、docs/plan.md にTODOリストを書くときは編集可能なモードでやってもらいます。
CLIがいちばん快適
Claude Code だけでなく、作業はWSLのシェル (Windowsターミナル) で、tmuxでウインドウやペインを分割しています。 基本構成は、Claude Code を左ペインに、右ペインは普通のシェル作業や一時的に vim を開くところ、なにか実行するときは右上に小さく開いておくかたちで、最近は安定しています。
エディタが必要なときはvimを使います (長年のvimmerですが、特に使いこなしてはいません)。 以前はIDEをメインで使っていましたし、今でも使いますが、そもそもエディタを使う場面がずいぶん減ってしまいました。 複数のファイルをエディタで眺めるときは別ウインドウで開きます。

正確で高速なシェル操作
シェルとCLIがいちばん反応が良く、若干非力ないまのノートPCでも快適に動きます。VSCodeやIntelliJ IDEAも使うことがありますが、開発環境がWSLだったりDockerだったりで重くなってあまり気持ちよくないです (これは環境への投資の話でもある。新PCをセットアップ中なので、今後変わるかもしれない)。
npm (pnpm) や uv、またAWS CLIなどのコマンドを繰り返し正確に実行できるのもCLIの大きなメリットです。良く使うコマンドはシェルのエイリアスや git alias を設定し、またほとんどのコマンドはシェルのヒストリから実行します。またプロジェクト独自のコマンドは、pnpm run に仕込んでいましたが見通しが悪く把握できなくなってきたので、Python Invoke に移行しようとしています。

Claude Code の操作
英語キーボードで日本語IMEのキーバインドをカスタマイズしていますが、日英の切り替えがどうも煩雑に感じるため、Claude Code への指示は主に英語でしています。ややこしくて上手に書けないときは日本語で。英語で入力する方がトークン消費も少ないんじゃないかな。たぶん。
利用プランと利用量
Claude CodeのプランはProなので、まとまった作業をしているとすぐ使い切ってしまい、数時間待つことになります。業務でフルタイム開発しているなら困りますが、自分の場合・現状の範囲ではひと区切りつけられるので、まあいっかという感じです。ときどきはチャージしてある金額で追加の作業をしますが、何十ドルも一気に溶かすようなことはしていません。
Googleにも課金しているので、普通のチャットはGeminiを使っています。アーキテクチャやインフラ、設計の一般論についてはGeminiで基本を把握することも多いです。Gemini CLI も以前に試したのですが、なんとなく使っていません (理由を忘れた)。
ゼロから始めるとき
新しいソフトウェアをゼロから書き始めるということは、今まではあまりなかったと思うのですが、生成AIがある意味いちばん生きるところでもあるので、一気に増えてきている気がします。私がゼロからスタートするときは、こんな流れになっているようです。
- やりたいことを書き出す
- ユーザー視点から、やりたいことを書き出す。文章でも箇条書きでもいい
- ユースケース記述やシナリオを書く (docs/spec.md)
- 画面の構成やデザインに注文があるなら書く。文章でも、手描きでも、Figmaでもいい
- 利用者視点から、技術要件やアーキテクチャ要求があるときには、書き出す
- 例: AWSを使う、静的Webアプリ、将来〇〇もサポートしたい、など
- ここでは生成AIチャットで壁打ちしたり、アイデアを出してもらったり、全体をレビューしてもらったりします
- アーキテクチャを検討する
- やりたいことを実現するのに必要な技術要素、スタック、利用サービスを整理する
- この時点では確定せず、候補や選択肢を複数出してキープしておく
- アーキテクチャ要求の単位でADRを書く。たいていは TBD や porposal の状態になる (docs/adr/ADR*.md)
- ここでは生成AIにもりもり考えて、書いてもらいます。選択肢を出してもらい、さらに選択肢の評価観点も出してもらい、そのうえで選択肢を評価してもらいます。チャットで壁打ちする部分もあるし、まるっと任せる部分もあります
- 曳光弾開発をする
- やりたいことから主要な要素を選び、さらにアーキテクチャの主要な要素をすべて利用する組み合わせを選ぶ。そのうえで生成AIに実装してもらう
- ややこしく聞こえますが、要はやりたいことの技術的な実現性を確認します
- ユーザーに見せるものではないので、機能的にも見た目的にも最小限で
- セキュリティ上確認すべき項目も、ここで整理する
- 自分が知らないことを確認する部分なので、生成AIに大いに委託します。できあがったものを人間が理解するためチャットなどで質問したり整理してもらったりします。実現性を確認すべきポイントについても、丁寧に相談しながら網羅します。動くのがゴールではなく、人間が理解して納得するのがゴールです
- やりたいことから主要な要素を選び、さらにアーキテクチャの主要な要素をすべて利用する組み合わせを選ぶ。そのうえで生成AIに実装してもらう
- ユーザーに見せられる最小限の機能を作る
- ユーザーフィードバックを得られる最初のリリースを作る
- どんなユーザーにどうフィードバックをもらうかで、「最小限」の量は大きく変わります
- 仲間内でアイデアを確認するレベルなら数時間~数日、ユーザー候補に実用してもらうなら数週間になることも
- どの機能を最初にリリースすべきかは、生成AIと相談できます
- ここまで来ると、進め方としては普通に機能を作り足していくだけ
- この段階では自動テストを必ず作成する
- 生成AIにコードを書いてもらい、テストを書いてもらい、ドキュメントを更新してもらい、レビューしてもらい、Issue と PR を書いてもらいます。上で説明した、小さいから委託する /選択肢を作ってもらう / 相談しながら伴走する のモードを切り替えながら進めます
- ユーザーフィードバックを得られる最初のリリースを作る
やりたいことの書き出しとアーキテクチャの検討まで進めたときの例がこちらです。
また、こちらはやりたいことをしっかり目に書いた例。
このときは、やりたいこと (プログラマーの倫理モデルを考案する) を決めるために Gemini と1週間ほど相談しました。それが決まったところからは、ユーザーに見せられるところまで、5時間くらいで進めました。

生成AIでなにが高速化するのか
これはとっても感覚的・個人的ではありますが、生成AIを使うと開発がどのくらい短縮できるのか? と思うと4割くらいかな? という気がします。つまり元の60%くらいまで縮む。イメージを図にしてみました。

もちろんコードを書くところ (水色の作業) の時間はかなり短縮します。いっぽう人間が関わるところ、つまり問題がなにかを見つけるところと、問題が解決したか検証するところは、基本的に変わらないです (黄色の作業)。また考える時間も、あるていど短縮するけれどそんなに劇的に「速く考えられるように」はならないなあと感じています (緑色の作業)。
あまり変わらないよね、と感じる部分を短縮しようとするのは乱暴なやり方だと思いますし、実際乱暴なやり方がこれから増えていくんだろうなと悲観してもいます。乱暴というのは、速いけれど質が悪いということです。見落とされる、切り捨てられる要素が多いということでもあります。とりわけ人間に対してしわ寄せされるんでしょうね。悲しい。
生成AIにやってもらうことと、参加スタイルの整理
最後にまとめです。
生成AIにやってもらうこと
- コーディング・実装
- 仕様を実装、テストしてもらう
- UI修正、見た目の調整
- Issueへの対応とPull Requestの作成
- 曳光弾開発をお任せ。AWS Amplify、CDK、外部サービスへの接続など一気に
- テスト・環境構築
- テスト駆動開発をする
- ユニットテストを書く、書けるようにリファクタリングする
- ユースケースシナリオを元に Playwright でE2Eテストを書く
- E2Eテスト用の実行環境を作る。LocalStack、Dockerコンテナなど
- 設計・要件定義
- 設計の選択肢を作ってもらう。モジュール構成、サービス選定、テーブル設計など
- 選択肢を比較評価するための観点出しと、評価のサポート
- アーキテクチャを検討し、ADR (Architecture Decision Record) に書き残してもらう
- ユースケースシナリオのバリエーションの追加
- セキュリティ上確認すべき項目の整理
- レビュー・ドキュメント作成
- Pull Requestや実装したコードのレビュー
- 人間の「仕様の理解」や「相談した内容の認識」のレビュー
- 仕様変更や設計追加に伴うドキュメントの更新・同期
- 長くなったチャットの議論を残す (Issue、ADR、仕様書など)
- スキルやサブエージェント作成
- 相談相手、頼れる先輩
- 仕様の判断や、見落とし・落とし穴の検証
- 既存コードの説明や、サンプルコードを作る
- 一般的な知識の把握や、よくわからない技術の解説
- 相談途中で論点を整理する。まだわからないこと、判断ポイントなど
- 作業の進め方の相談相手と、TODOリストの作成
生成AIの参加スタイル:
- 自分 (人間) ができる、完成形を100%想像できること → 一発でやってもらう
- 情報や検討が必要、わからない点があること → 選択肢を作ってもらう
- それ以外 (何がわからないかわからない、など) → 伴走してもらって相談する
あくまで2026年2月時点 (もう3月になってしまった!) でのメモでした。





















