💡

【実践編】Claude Codeのmemory機能:チーム開発で活用する5つの事例

に公開

はじめに

こんにちは、
株式会社dotConfにて、AIエンジニアをしている森です!

本記事は、Claude Codeのmemory機能に関する2部構成の記事の実践編です。

実践編では、実際の開発現場でmemory機能をどのように活用できるか、5つの具体的な事例とベストプラクティスを紹介します。

実践的な活用例 💻

例1:コーディング規約の統一

課題:
チーム開発で、メンバーごとにコードスタイルがバラバラになってしまう

解決策:
CLAUDE.md または .claude/CLAUDE.md にチーム共通のコーディング規約を記載

ファイル名: CLAUDE.md

# コーディング規約

## 命名規則

- 変数名・関数名:snake_case(例:user_name, item_list, calculate_total)
- 定数:UPPER_SNAKE_CASE(例:MAX_COUNT, API_URL, DATABASE_HOST)
- クラス名:PascalCase(例:UserController, DataService, ProductModel)
- ファイル名:snake_case(例:user_service.py, data_processor.py)

## インポート順序(PEP 8準拠)

1. 標準ライブラリ(os, sys, datetime など)
2. サードパーティライブラリ(pandas, numpy, streamlit など)
3. ローカルモジュール(自作のモジュール)
4. 各グループ間は空行で区切る

## コメント規則

- 関数には必ずdocstringを記載(Google形式またはNumPy形式)
- 複雑なロジックには日本語でコメントを追加
- TODOコメントには担当者名と期限を記載(例:# TODO(名前): 説明 [2025-12-31])

## エラーハンドリング

- 必ずtry-exceptでエラーをキャッチ
- 例外は具体的な型を指定(Exception は避ける)
- エラーメッセージは日本語でユーザーフレンドリーに
- ロギングにはloggingモジュールを使用

効果:

  • Claude Codeが常に規約に沿ったコードを生成
  • 新メンバーでも一貫性のあるコードが書ける
  • コードレビュー時の指摘事項が減少

例2:プロジェクト固有のルール

課題:
プロジェクト特有の用語やビジネスロジックを毎回説明する手間が必要

解決策:
CLAUDE.md または .claude/CLAUDE.md にプロジェクトのドメイン知識を記載

ファイル名: CLAUDE.md

# プロジェクト概要

Streamlitを使用した社内向けデータ分析ダッシュボードです。

## ドメイン用語

- KPI:重要業績評価指標(Key Performance Indicator)
- DAU:デイリーアクティブユーザー数
- CVR:コンバージョン率(Conversion Rate)
- チャーン率:解約率・離脱率

## ビジネスルール

### データ更新
- データは毎日午前6時に自動更新
- リアルタイムデータは15分ごとに更新
- 過去データは3年間保持

### 権限管理
- 一般ユーザー:閲覧のみ
- アナリスト:データのエクスポート可能
- 管理者:全権限

## データ処理方針

- データはpandasで処理
- 大規模データ(100万行以上)はchunkで分割処理
- グラフはplotlyで作成(インタラクティブ性重視)
- キャッシュは@st.cache_dataを使用

効果:

  • プロジェクト特有の用語を理解した上で回答
  • ビジネスロジックに沿ったコード提案
  • 新機能追加時の整合性が向上

例3:開発環境の設定

課題:
開発環境のセットアップやよく使うコマンドを覚えきれない

解決策:
開発環境の情報とよく使うコマンドを記載

ファイル名: CLAUDE.md

# 開発環境

## 環境変数

以下の環境変数を .env ファイルに設定する必要があります:

- DATABASE_URL:PostgreSQLの接続文字列
- API_KEY:外部API認証キー
- AWS_ACCESS_KEY_ID:AWS認証情報
- AWS_SECRET_ACCESS_KEY:AWS認証情報

## よく使うコマンド

開発サーバー起動:
streamlit run app.py

特定のポートで起動:
streamlit run app.py --server.port 8502

テスト実行:
pytest tests/                    # 全テスト実行
pytest tests/test_utils.py       # 特定ファイルのみ
pytest -v                        # 詳細表示

コード品質チェック:
black .                          # コードフォーマット
flake8 .                         # Lintチェック
mypy .                           # 型チェック

依存関係管理:
pip install -r requirements.txt  # パッケージインストール
pip freeze > requirements.txt    # 現在の環境を保存

## トラブルシューティング

ポート番号が使用中の場合(macOS/Linux):
lsof -ti:8501 | xargs kill -9

キャッシュクリア:
streamlit cache clear

仮想環境の再作成:
deactivate
rm -rf venv
python -m venv venv
source venv/bin/activate  # Windowsは venv\Scripts\activate
pip install -r requirements.txt

効果:

  • 環境構築時の手順をAIが把握
  • よく使うコマンドをすぐに提案
  • トラブル発生時の解決策を即座に提示

例4:個人の開発スタイル設定

課題:
自分の好みのコードスタイルやツールをAIに理解してほしい

解決策:
ユーザーメモリ(~/.claude/CLAUDE.md)に個人設定を記載

ファイル名: ~/.claude/CLAUDE.md

# 個人的な開発スタイル

## 好みのコードスタイル

- 関数型プログラミングを優先(map、filter、comprehensionを活用)
- 早期リターン(guard clause)を活用
- 複雑な条件式よりif文で明示的に記述
- コメントは簡潔に、コードで意図を説明
- マジックナンバーは定数化(名前付き定数を使用)

## よく使うライブラリ

- データ処理:pandas(DataFrameを積極的に使用)
- 数値計算:numpy
- データ可視化:plotly(matplotlibではなく)
- Web UI:streamlit
- テスト:pytest
- 型チェック:mypy

## 開発ツール

- エディタ:VS Code with Python extension
- ターミナル:iTerm2 + zsh
- パッケージマネージャー:pip with venv(poetryではなく)
- Git GUIツール:使用しない(CLI派)
- コードフォーマット:black + flake8

## コミット習慣

- コミットメッセージは日本語
- Conventional Commitsは使わない
- コミット単位は小さく、頻繁に
- ブランチ名は feature/機能名 の形式

効果:

  • 自分の好みに合ったコード提案
  • よく使うライブラリを優先的に提案
  • 個人のワークフローに最適化

例5:インポート構文による効率化

課題:
プロジェクトの情報が複数ファイルに分散していて、CLAUDE.mdが肥大化してしまう

解決策:
インポート構文を使用して、既存ファイルを参照する

プロジェクトメモリ(CLAUDE.md):

ファイル名: CLAUDE.md

# プロジェクトメモリ

プロジェクトの概要については @README.md を参照してください。
依存パッケージについては @requirements.txt を参照してください。

# チーム共通ルール
- コーディング規約 @docs/coding-style.md
- Git運用ルール @docs/git-workflow.md
- データ処理ガイドライン @docs/data-processing.md

# 個人設定のインポート
@~/.claude/my-preferences.md

個人設定ファイル(~/.claude/my-preferences.md):

ファイル名: ~/.claude/my-preferences.md

# 個人的な開発設定

## よく使うテストデータ
- テストユーザー: test_user@example.com
- テストデータパス: data/test/sample_data.csv
- サンドボックスURL: http://localhost:8501

## ローカル環境の設定
- データベース: localhost:5432
- データ保存先: /Users/username/data/
- ログ出力先: logs/app.log

効果:

  • CLAUDE.mdがシンプルで管理しやすくなる
  • READMEやrequirements.txtなど既存ファイルを活用
  • チーム共有の情報と個人設定を分離
  • 複数のgit worktreeで同じ個人設定を使える

memory機能のベストプラクティス 📚

1. 階層的に管理する

memory機能は、4つの階層を適切に使い分けることが重要です。

エンタープライズポリシー(/Library/Application Support/ClaudeCode/CLAUDE.md など)
└─ 組織全体のセキュリティポリシー
└─ 会社のコーディング標準
└─ コンプライアンス要件

プロジェクトメモリ(CLAUDE.md または .claude/CLAUDE.md)
└─ プロジェクト固有のアーキテクチャ
└─ チーム共通のコーディング規約
└─ プロジェクトのワークフロー
└─ インポート構文で個人設定を参照(@~/.claude/my-settings.md)

ユーザーメモリ(~/.claude/CLAUDE.md)
└─ 個人的な開発スタイル
└─ よく使うツールやライブラリ
└─ 普遍的なコーディング規約

個人のプロジェクト固有設定(~/.claude/project-name-settings.md)
└─ 個人のサンドボックスURL
└─ 推奨テストデータ
└─ チームに共有しない個人設定
└─ プロジェクトメモリからインポートして使用

2. インポート構文を活用する

既存ファイルを参照することで、CLAUDE.mdをシンプルに保ちましょう。

🚫 悪い例:

# CLAUDE.md に requirements.txt の内容をコピペ
利用可能なパッケージ:
- pandas==2.1.0
- numpy==1.26.0
- streamlit==1.30.0
...(長い内容)

🔹 良い例:

# CLAUDE.md
依存パッケージは @requirements.txt を参照してください。
プロジェクト概要は @README.md を参照してください。

# 個人設定
@~/.claude/my-project-settings.md

3. 具体的に記載する

曖昧な表現ではなく、具体的な例を含めて記載することで、Claude Codeがより正確に理解できます。

🚫 悪い例:

変数名はわかりやすく付ける

🔹 良い例:

## 変数命名規則

- boolean型:`is`, `has`, `can`で始める
  - 例:`is_loading`, `has_error`, `can_edit`
- 配列:複数形にする
  - 例:`users`, `items`, `orders`
- 関数:動詞で始める
  - 例:`fetch_data`, `update_user`, `validate_form`

4. 定期的に更新する

プロジェクトの進化に合わせて、CLAUDE.mdも定期的に更新することが大切です。

# 更新履歴

## 2025-10-21
- 新しいコーディング規約を追加
- 非推奨のライブラリを削除

## 2025-10-15
- ドメイン用語を追加
- API設計方針を更新

5. チームで共有する

プロジェクトメモリは、Gitで管理してチームで共有しましょう。

# プロジェクトメモリはコミット
git add CLAUDE.md
# または
git add .claude/CLAUDE.md
git commit -m "Add Claude Code project memory settings"

6. セキュリティに注意

機密情報は記載せず、環境変数や外部ファイルを参照する形にすることが大切です。

🚫 悪い例:

APIキー:sk-1234567890abcdef
データベースパスワード:password123

🔹 良い例:

## 環境変数

以下の環境変数を設定してください:
- `API_KEY`:外部APIの認証キー
- `DB_PASSWORD`:データベースの接続パスワード

これらは .env ファイルに記載し、Gitには含めないこと。

よくある質問 ❓

Q1: memory機能は無料プランでも使える?

A: はい、memory機能はClaude Codeの基本機能として、すべてのプランで利用できます。

Q2: CLAUDE.mdのファイルサイズに制限はある?

A: 特に明示的な制限はありませんが、あまり大きすぎると処理に時間がかかる可能性があります。必要な情報を簡潔にまとめることをおすすめします(目安:5,000文字以内)。

Q3: memory機能は他のメンバーと共有できる?

A: プロジェクトメモリ(CLAUDE.md または .claude/CLAUDE.md)はGitで管理できるため、チームメンバーと共有可能です。ユーザーメモリとローカルメモリは個人環境のため共有されません。

Q4: memory機能が反映されない場合は?

A: 以下を確認してください:

  • ファイル名が正しいか(CLAUDE.md
  • ファイルの配置場所が正しいか
  • マークダウン形式で記載されているか
  • Claude Codeを再起動してみる

Q5: memory機能を一時的に無効にできる?

A: CLAUDE.mdファイルをリネーム(例:CLAUDE.md.bak)することで一時的に無効化できます。

Q6: エンタープライズポリシーを設定するには管理者権限が必要?

A: はい、エンタープライズポリシーはシステム全体の設定のため、管理者権限(sudo)が必要です。一般的にはIT部門が設定します。

Q7: 複数のメモリファイルで同じ設定が競合した場合は?

A: 階層の上位(エンタープライズポリシー)が優先されます。ただし、基本的にはマージされて使用されるため、競合しないように設計することが推奨されます。

Q8: インポートしたファイルがさらに別のファイルをインポートできる?

A: はい、最大5階層まで再帰的にインポートできます。ただし、循環参照には注意が必要です。

Q9: /init コマンドで生成されたCLAUDE.mdは編集できる?

A: はい、自動生成された後は通常のファイルとして編集できます。プロジェクトに合わせてカスタマイズしましょう。

Q10: モノレポでディレクトリごとにCLAUDE.mdを配置できる?

A: はい、各ディレクトリにCLAUDE.mdを配置できます。Claude Codeはカレントディレクトリから上位ディレクトリまで再帰的に検索し、すべてのCLAUDE.mdを読み込みます。

まとめ

本記事(実践編)では、Claude Codeのmemory機能の実践的な活用例とベストプラクティスを解説しました。

重要なポイント 📌:

  • コーディング規約を統一してチーム開発を効率化
  • プロジェクト固有のドメイン知識を共有
  • 開発環境設定を記載してセットアップを簡単に
  • 個人設定でAIを自分好みにカスタマイズ
  • インポート構文で設定をシンプルに管理

memory機能を活用することで、Claude Codeが皆さんの開発スタイルや組織のルールを理解し、より的確なコード提案やサポートを提供してくれるようになります。

まずは /init コマンドでプロジェクトメモリを自動生成し、本記事で紹介した事例を参考にカスタマイズしていくことをおすすめします。

参考リソース 📚

最後に

最後まで読んでくださり、ありがとうございました!
本記事では、Claude Codeのmemory機能の実践的な活用方法を詳しく解説しました。
memory機能を活用すれば、AIが皆さんの開発パートナーとしてさらに頼もしい存在になります。

ぜひ基礎編と合わせて、memory機能をフル活用してください!

生成AI、データ分析、深層学習を体系的に学び、プロの指導のもとで実践的なAIスキルを習得したい方、
キャリアの幅を広げたい方や副業を目指す方は、ぜひこちらからお問い合わせください。
https://b2c.aipass.tech
https://page.line.me/564fgnmw?oat_content=url&openQrModal=true

dotConf, Inc

Discussion