※Claude Codeを使用して記事を作成しています。
シリーズ:Claude Codeを使ったAndroidアプリ開発 失敗談
- #1〜3:指示まわりの失敗3選
- #4:前の会話の文脈が消えて同じ失敗を繰り返した話 ← 今回
はじめに
Claude Codeは非常に優秀なツールですが、ひとつ大きな制約があります。
それは「会話をまたいで記憶を保持しない」ということです。
この仕様を理解していなかったために、何度も同じ問題が繰り返されました。
やらかしたこと
メモアプリの開発を数日かけて進めていました。
ある日、新しいターミナルセッションでClaude Codeを起動して続きをお願いしました。
昨日の続きで、メモ作成画面に画像添付機能を追加してください。
Claude Codeは「メモ作成画面」を新しく作り始めました。昨日すでに作った画面を、また一から。
さらに、以前「このプロジェクトではHiltを使っている」と伝えていたのに、依存性注入なしのコードが生成されました。
「Room使うと決めたよね」と思っていたのに、SharedPreferencesで実装されていました。
すべての取り決めがリセットされていたのです。
なぜこうなるのか
Claude Codeはセッションをまたいで記憶を保持しません。
新しいターミナルを開いたり、時間が経ってセッションが切れたりすると、前回の会話内容はすべて消えます。
「昨日決めた設計方針」「このプロジェクトで使っているライブラリ」「修正済みの仕様」、これらはすべて毎回伝え直す必要があります。
どう直したか
CLAUDE.mdファイルを作ることで解決しました。
プロジェクトのルートディレクトリに CLAUDE.md というファイルを置くと、Claude Codeは毎回自動的にそのファイルを読み込みます。
# プロジェクト概要
メモアプリ(MemoApp)の開発
## 技術スタック
- 言語:Kotlin
- UI:Jetpack Compose
- アーキテクチャ:Clean Architecture(MVVM)
- DI:Hilt
- DB:Room
- クラウド:Firebase Auth / Firestore / Storage
- 画像読み込み:Coil
## 画面構成
- SplashScreen:ログイン状態確認
- LoginScreen:メール認証・Googleログイン
- MemoListScreen:メモ一覧(実装済み)
- MemoEditScreen:メモ作成・編集(実装済み)
- SettingsScreen:未実装
## コーディングルール
- コメントは日本語で書く
- エラーメッセージも日本語で表示する
- ハードコードされた文字列は strings.xml に定義する
## 現在の進捗
- ログイン機能:完了
- メモCRUD:完了
- 画像添付:未実装 ← 次に対応予定
- Push通知:未実装
このファイルを作ってから、毎回「このプロジェクトは〇〇です」と説明し直す手間がなくなりました。
CLAUDE.mdに書くべき内容
| カテゴリ | 書くべき内容 |
|---|---|
| プロジェクト概要 | アプリ名・目的・対象ユーザー |
| 技術スタック | 使用言語・ライブラリ・アーキテクチャ |
| 画面構成 | 全画面の一覧と実装状況 |
| コーディングルール | 命名規則・コメントの言語・禁止事項 |
| 進捗状況 | 完了済み・対応中・未対応の整理 |
| 決定事項 | 「このプロジェクトでは〇〇を使う」という取り決め |
追加の工夫:会話の冒頭に状況を添える
CLAUDE.mdでプロジェクト全体を管理しつつ、会話の冒頭に今日の作業範囲を添えるとさらに精度が上がりました。
今日は画像添付機能を実装します。
CLAUDE.mdに記載の通り、Coilで画像読み込みを行い、Firebase Storageに保存する設計です。
まずメモ編集画面に「画像を追加」ボタンを置くところから始めてください。
まとめ
Claude Codeの「セッションをまたいで記憶しない」という制約は変えられません。
でも、CLAUDE.mdを活用することで毎回ゼロから説明し直す手間を大幅に削れます。
開発が始まったらすぐにCLAUDE.mdを作ることをおすすめします。
あとから作ろうとすると、整理が大変です。
次回:【Claude Code 失敗談 #5】生成されたライブラリのバージョンが古くてビルドエラー祭りになった話

