Claude Codeが最近話題ですね。
以下は私のClaude Codeをより便利に、より品質を上げるために実装した仕組みの記録です(WSL2+Debian想定)。
参考記事
やったこと
- プロンプトの整備
- Context7 MCPの導入(常に最新の公式ドキュメントを参照)
- Claude Codeへの音声通知機能追加
1. プロンプトの設定
~/.claude/CLAUDE.md
に以下のルールセットを記述し、作業方針とコードの品質基準を明示しています。ちなみに参考記事に記載のプロンプトをそのまま使っております。
# Guidelines
This document defines the project's rules, objectives, and progress management methods. Please proceed with the project according to the following content.
## Top-Level Rules
- To maximize efficiency, **if you need to execute multiple independent processes, invoke those tools concurrently, not sequentially**.
- **You must think exclusively in English**. However, you are required to **respond in Japanese**.
- To understand how to use a library, **always use the Contex7 MCP** to retrieve the latest information.
## Programming Rules
- Avoid hard-coding values unless absolutely necessary.
- Do not use `any` or `unknown` types in TypeScript.
- You must not use a TypeScript `class` unless it is absolutely necessary (e.g., extending the `Error` class for custom error handling that requires `instanceof` checks).
この設定で明文化してあるポイントは以下の通りです:
- 独立した処理は並列化して効率化
- 思考は英語、出力は日本語(命名や理解の一貫性を保ちつつ日本語でやり取り)
- ライブラリの利用法は常に最新情報源(Context7 MCP)を参照
- ハードコーディングを避けることで再利用性と可変性を確保
- 型安全性を担保(TypeScriptで曖昧な型を排除)
- 不要な抽象化を避ける(class を原則使わない)
プロジェクトごとにさらに命名規則や行長制限・インデント幅・コメントスタイルなど、コーディング規約を追記すると、より高い品質と一貫性を持った開発ができそうですね!
2. Context7 MCPの導入
前述のプロンプトにやたら記載しているContext7 MCPは、LLM向けに最新かつバージョン固有の公式ドキュメントやコード例を自動的に取り込む仕組みです。これにより、訓練済みの古い知識に頼らず、実際の最新版の情報をコンテキストとしてClaudeに提供できます。内部ではAnthropic標準のModel Context Protocol(MCP)を使って、外部ドキュメントソースと連携しています。これはぜひとも入れたいところ!
導入手順
- Claudeの設定ディレクトリに移動(
~/.claude
など) -
.mcp.json
を作成または編集し、以下を記述:
{
"mcpServers": {
"context7": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@upstash/context7-mcp@latest"
],
"env": {}
}
}
}
これにより、ライブラリやAPIの最新版ドキュメントが自動的に取り込まれ、Claudeが参照可能になります。
3. Claude Codeへの音声通知機能追加
長い処理を実行している間に別作業をしていると、Claude Codeが追加確認を挟んだり、パスワード入力を求めたりして、完了を見落としがちです(集中してるとなおさら・・・)。そこで、処理の前後にフックを入れて音声通知を出すようにしました。
settings.json
の例(追記部分)
{
"hooks": {
"Stop": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "python3 /home/h_hatanaka/.claude/notify_sound.py completion",
"description": "Claude Code回答完了時に音声通知"
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "python3 /home/h_hatanaka/.claude/notify_sound.py confirmation",
"description": "ユーザー入力待ち時に音声アラート"
}
]
}
]
}
}
通知が来たときに確認すればよくなるのでストレスが減ります(ただし全集中してるときはこれでも気づきませんでした(;´∀`))
おわりに
AIを使ったコーディングで気になるところは品質と効率、セキュリティの部分が大きいと思うのですが、工夫一つで情報の正確性と作業の流れを保った状態を続けることができ、開発効率と品質が少しでも上がるのではと期待しています。
ご参考になれば幸いです。
余談:パーソナル設定(プロンプト拡張)
特に開発効率が上がるわけではありませんが、開発モチベが格段に上がるので、私はプロンプトに以下を追記しています(筆者は無類のジョジョ好きです)。遊び心大事ッ!!
あなたは『ジョジョの奇妙な冒険』のディオ・ブランドー風の口調を使うアシスタントです。
修正や改善点を指摘する際は、以下のスタイルを意識してください。
- 明確な問題指摘や「無駄」があるときは、「無駄無駄無駄無駄無駄無駄無駄ァ!!!」と勢いよく始め、その後に理由と具体的な修正案を簡潔に伝える。
- 通常の改善提案やリファクタリングの指摘は「WRYYYYYYY!」と書き出し、その後で意図を説明しつつ改善案を示す。
- 厳しくはあるが、相手を傷つけない建設的な語調で、行動を促す表現に留める。
- 原作の雰囲気を踏まえた比喩や言い回しを入れると良いが、直接の長文な引用ではなく「らしさ」を感じさせる程度にとどめる。
- 回答の最後には「ッ」を付けて締める。
本当はもっと細かく、厳しく話してくれるようにしたかったのですが、あまり余計な事を書くと肝心のコードの質が下がる可能性があるのでこのあたりでとどめています。