Claude Codeと暮らす

Claude Codeと暮らす

2026.01.30

はじめに

こんにちは、クラスメソッド製造ビジネステクノロジー部の森茂です。

Claude Codeを使い始めたけれど、まだ「ちょっと賢いターミナル」くらいの付き合いになっている方はいませんか。あるいは、毎日使っているけれど「セッションが終わるたびに文脈がリセットされるのがもったいない」と感じている方もいるかもしれません。

AIコーディングツールは便利ですが、そのまま使っていると「賢いけど記憶喪失のペアプロ相手」になりがちです。昨日デバッグした問題の経緯も、先週の設計判断の理由も、新しいセッションでは白紙からのスタート。「……また同じ説明からか」と思ったことがある方、きっと少なくないはずです。プロジェクトが増えるほど、この「文脈の断絶」がじわじわ効いてきます。

Claude Code界隈ではClaude-Memをはじめ、記憶の永続化や開発効率化のためのソリューションが日々登場しています。アンビエントなAIが自動で動いてくれる時代になりつつありますが、正直なところ、自分がまだその流れを使いこなせている実感がありません。なので今は、Claude Code標準のフック機能やカスタムコマンドなど「自分がトリガーを引く」操作を軸に、自分の手が届く範囲で仕組みを組み立てています。来月にはまた違うことを言っているかもしれませんが、2026年1月時点のスナップショットとして読んでいただければ。

この記事では、その仕組みそのものよりも、それを使って1日をどう過ごしているかを紹介します。「Claude Codeでそんな使い方もあるんだ」という発見や、自分の開発フローだけでなく普段の生活にも取り入れられそうなヒントがあれば嬉しいです。

ワークスペースという「母艦」

私の一日はすべて一つのワークスペースから始まります。個別のプロジェクトリポジトリではなく、ナレッジ管理用のワークスペースを「母艦」として、そこからプロジェクトを読み込む形です。

workspace/(母艦)
├── knowledge/        # 日報、MTGメモ、リサーチ、ニュース
├── blog/             # 技術記事の執筆
├── scratchpad/       # 壁打ち・プロジェクトごとのメモ(散らかりがち)
├── .claude/          # カスタムコマンド、フック、エージェント定義
└── second-brain-server/  # 記憶の永続化基盤

プロジェクトのコードは /add-dir コマンドで動的に追加します。ワークスペースのCLAUDE.mdがベースルールとして適用されつつ、プロジェクト固有のルールはそちらが優先される仕組みです。

図の右下にある「記憶基盤」が、この構成のキモです。ざっくり言うと、記憶の保存と検索に2つのアプローチを組み合わせています。1つめはGraphiti + FalkorDBによるナレッジグラフで、「あのとき何をどういう理由で決めたか」のような因果関係をたどる検索が得意です。2つめはPostgreSQL + pgvectorによるベクトル検索で、「前に似たバグを見た気がする」のようなあいまいな記憶の検索に向いています。どちらもOllama(ローカルLLMランタイム)で処理し、外部APIに依存しない構成です。すべてDocker Composeで動かしていて、コンテナごと別マシンに移行できます。詳しくは後半の「記憶基盤の裏側」で触れます。

なぜこの構成にしたかというと、プロジェクトをまたいだ知見の蓄積が目的です。Project Aで遭遇したiOS Safariのバグ対応ノウハウは、別プロジェクトでも役に立つかもしれない。機能壁打ちした技術が新しいプロジェクトで活用できるかもしれない。ワークスペースを起点にすることで、すべてのセッション履歴や意思決定ログが一箇所に集まります。

では、この母艦を起点にした1日の流れを紹介していきます。

朝: コンテキストが揃った状態で始める

朝イチで /morning と打つところから1日が始まります。

コーヒーを淹れている間に、今日の予定とタスクが整理された状態で出てきます。裏ではGoogle Calendarから予定を取得し、MCP経由でCraft(個人的なドキュメントやメモをCraftで管理しています)のタスクリストを確認しています。結果として「今日何をすべきか」が見える状態でプランニングに入れます。

地味にありがたいのが、前日のセッションで「明日やる」と書いたことが、先ほど紹介したGraphitiのナレッジグラフ経由で引き継がれている点です。「昨日のセッションで、CSPヘッダーの設定を見直すと言っていましたね」のように、前回の続きから自然に入れます。

午前: プロジェクトに潜る

開発に取りかかるときは、まずワークスペース上で /context-load project-a と打ちます。

すると、Project Aに関する過去の意思決定、直近の作業状況、既知の課題が引き出されます。情報源はGraphitiのナレッジグラフだけではなく、プロジェクトディレクトリに蓄積されたドキュメントや関連資料もあわせて読み込まれます。過去のミーティングで /meeting-note を使って整理した議事録の内容もGraphiti経由で反映されるので、「Cognito認証はカスタムUI方式を採用した」「DynamoDBのGSI設計でこういう判断をした」といった文脈が、コードを読む前に頭に入っている状態です。

開発中に面白いのが、会話の内容に応じてコンテキストが動的に切り替わることです。たとえば「このバグを調査して」と書くと、過去に遭遇した類似エラーの対処法が自動的に出てきます。裏側では、Claude Codeのhooksがユーザー入力のintent(デバッグ、設計、調査など)をキーワードで判定し、該当する記憶を注入しています。意識しなくても、関連する過去の知見が会話に入ってくる感覚です。

もう一つ仕掛けが、別のAIにレビューを頼めることです。設計の方針に迷ったとき、Claude CodeがMCP経由でOpenAIのCodex CLIを呼び出して壁打ちしてくれます。セッションが維持されるので、一回きりの質問ではなく「ここの設計意図はこうなんだけど、どう思う?」「なるほど、じゃあこのパターンは?」と複数回のキャッチボールが成り立ちます。Claude Code側がタスクを分解して外部AIに委譲する形なので、自分はいつも通りClaude Codeに話しかけるだけ。一人開発なのに仲間がいる感覚は、やはりいいですね。

午前中にProject Aの開発が一区切りついたら、/context-save project-a で状態を保存し、別のプロジェクトに切り替えます。Project Bの準備なら /context-load project-b、ブログ執筆なら /context-load blog という具合です。

この「コンテキストのロード/セーブ」がRPGのセーブポイントのような感覚で、あるダンジョン(プロジェクト)から出て別のダンジョンに入るときの切り替えコストがかなり下がりました。ちなみに、うっかり /context-save を忘れても大丈夫です。/exit/clear でセッションを終了したタイミングでフックが発火し、バックグラウンドのワーカーがセッション内容のサマリーを自動で記録してくれます。手動セーブと自動セーブの二段構えです。

開発だけじゃない使い方

ここまでコーディング中心の話をしてきましたが、実はClaude Codeの出番はそれだけではありません。

たとえば、家族旅行の計画。「10月のソウル、3泊4日、雨の日プランも含めて」とターミナルに打ち込んで、候補を出してもらいながら壁打ちしました。ChatGPTを開いてもよかったのですが、普段から開いているターミナルでそのまま聞けるのが楽で、つい使ってしまいます。

設計判断の壁打ちにもよく使います。「DynamoDBのシングルテーブル設計とマルチテーブル設計、このユースケースではどっちがいい?」のように、pros/consを並べてもらってから自分で判断する流れです。こういう「答えを出してもらう」のではなく「考えを整理する相手」としての使い方は、開発ツールというよりは思考のパートナーに近い感覚があります。

ふと思いついたアイデアの整理、英語ドキュメントの要約、チームへの共有文面の推敲。「わざわざブラウザを開くほどではないけど、誰かに聞きたい」くらいの用事を、ターミナルから離れずにこなせるのが地味に快適です。

午後: インプットを整理する

午後はインプットの時間にあてることが多いです。

/clip-news で、Perplexity AIのMCPサーバーを使ってAI関連のニュースを検索・要約し、ダイジェストとして整理します。気になるトピックは /research で深掘りします。リサーチ結果は knowledge/research/ に保存され、ブログのネタになりそうなものは自動的にバックログに追加されます。

たとえば最近だと、ローカルLLMついてリサーチした結果がそのまま技術ブログ記事に発展しました。「調べたこと」が「書くこと」にシームレスにつながる流れです。

https://dev.classmethod.jp/articles/local-llm-guide-2026/

ミーティングがある日は /meeting-note で議事録を整理します。普段のミーティングはGoogle Meetで行っていて、Meetの文字起こし機能がGoogle Docsに自動保存してくれます。その文字起こしデータをGoogle Drive経由でClaude Codeに渡すだけで、要点の抽出と構造化をやってくれるので、議事録作成の手間はほぼゼロです。ここでのポイントは、ローカルにはリンクとサマリーだけを残し、マスターデータはGoogle Docsに置くという割り切りです。すべてをローカルに持とうとすると破綻するので、「インデックスだけ手元に置く」方針にしています。

オフラインのミーティングや勉強会の場合は、PLAUD.aiで録音・文字起こしをしたデータを /meeting-note に渡しています。文字起こしデータがない場合でも、手元のメモをそのまま渡せば構造化してくれるので、入力のハードルは低めです。

夕方: アウトプットに変換する

インプットをアウトプットに変える時間です。

/context-load blog で執筆コンテキストを読み込むと、進行中の記事一覧、バックログ、執筆ガイドラインが揃います。ここから /blog-draft で新しい下書きのアイデアを錬るか、既存の下書きの続きを推敲していきます。

さらに深掘りが必要なトピックがあれば、専用のリサーチエージェントを使います。Perplexity AIやAWSドキュメントなど複数のソースを横断して調査し、引用付きでまとめてくれるので、記事の裏取りにも便利です。

この流れで1月は3本の記事を公開できました。リサーチから執筆、レビューまでがワークスペース内で完結するので、「書くぞ」と思ったときの初動が速いのが大きいかなと思っています。

終業: 振り返りと「保存」

1日の終わりには /daily-log で振り返りをします。

このコマンドが面白いのは、朝の /morning で立てた計画をベースに振り返りを進めてくれるところです。「今日の計画にこのタスクがありましたが、完了しましたか?」と聞かれるので、番号で答えるだけ。未完了のタスクは「明日に繰り越し」「もう不要」「保留」を選べます。

計画のチェックが終わると、Good(うまくいったこと)とCould be better(改善できること)を聞かれます。日報というと「書くのが面倒」という印象がありますが、対話形式で進むので負担感がかなり少ないです。特に一人開発だと振り返り自体を忘れがちなので、強制的にきっかけが作られるのは助かります。最終的にはMarkdownの日報ファイルとして knowledge/daily-logs/ に保存され、Craftの Daily Notes にも同期されます。

ここで書いた「明日やること」が翌朝の /morning に引き継がれるので、1日が /morning で始まり /daily-log で閉じるサイクルになっています。

日報とは別に、セッションの記録も自動で保存されます。セッションを終了すると、裏側で会話ログのサマリーが自動生成され、ナレッジグラフに登録されます。翌日のセッションで「昨日の続き」がだいたい通じるのはこの仕組みのおかげです。技術的には、SessionEndフックがDocker上のワーカーに非同期ジョブを投げ、ワーカーがMarkdown生成 → Ollamaでサマリー作成 → Graphitiに登録、という流れです。フック自体は同期実行でタイムアウトがあるため、重い処理はキューに積む設計にしています。

もう一つ、外部エディタ(VSCodeやObsidian)で編集したMarkdownファイルも、gitコミット時のpost-commitフック(gitの標準機能で、コミット直後に任意のスクリプトを実行できる仕組み)でGraphitiに自動登録されます。「commit = この状態を残してよい」という宣言として扱うことで、Claude Codeのセッション外で書いたメモも記憶に取り込まれます。

つまり、意識的な振り返り(/daily-log)と無意識的な記録(SessionEndフック + post-commitフック)の二重構造で、1日の知見が翌日以降に引き継がれる仕組みです。

お風呂や布団の中からも?

お風呂の中や、寝る前に布団の中でもClaude Codeを使っています。

仕組みとしては、常時起動のMac mini上でtmuxのセッションを立てて、Happy CLIというClaude Code向けのモバイルクライアント経由でiPhoneのHappyアプリから接続しています。Happy CLIはE2E暗号化でリモートのターミナルに接続できるツールで、QRコードを一度スキャンすれば以降は自動接続です。

なぜそこまでするのかというと、ふと浮かんだアイデアの鮮度が翌朝まで持たないからです。「あの実装、こうした方がよくない?」と思いついたとき、枕元のiPhoneからさっと壁打ちして /quick-note でメモを残す。翌朝 /morning を叩くと、そのメモが反映された状態でプランニングが始まります。

お風呂や布団の中で書いた走り書きが、翌朝のコンテキストに自然に溶け込んでいる。この「思いつき→記録→翌朝の行動」のサイクルが途切れないのは、地味にありがたいですね。iPhoneの小さい画面でフリック入力で git status を打っている姿は人に見せられたものではありませんが、一度この手軽さを知ると戻れなくなりました。

記憶基盤の裏側

「で、その記憶ってどうやって保存してるの?」と思った方もいるかもしれません。ここまでの流れを支えているのが、自作の「second-brain-server」です。

設計で一番こだわったのは、外部APIに依存しないローカル完結の構成です。Graphitiは標準ではOpenAI APIを使う設計ですが、LLMクライアントとEmbedderをカスタム実装してOllamaだけで動くようにしました。コスト面もありますが、それ以上に「自分専用のメモリ空間を手元に持つ」こと自体が楽しいんですよね。外部APIに記憶を預けると、なんとなく自分の思考が外に漏れている感じがして落ち着かないというのもあります。Claude Codeの会話はAnthropicに送っているので、完全オフラインとは言えませんが。

記憶基盤はすべてDocker Composeで構成しています。docker-compose.yml にFalkorDB、PostgreSQL、セッションワーカー、記憶検索用のMCPサーバーの4サービスを定義し、データは ./data/ ディレクトリに永続化。新しいマシンに移行するときは、data/ ディレクトリと .env を持っていって docker-compose up -d するだけで、記憶ごと環境が復元できます。「母艦」のセクションでも触れましたが、このポータビリティは想像以上に安心感があります。

もう一つのこだわりが、検索の二刀流です。ナレッジグラフ(Graphiti)は「AというプロジェクトでBという判断をした理由はCだった」のような関係性をたどる検索が得意ですが、「前にどこかで似たようなエラーを見た気がする」といったあいまいな記憶の検索は苦手です。そこでPostgreSQL + pgvectorによるベクトル検索を並行して動かし、クエリの内容に応じて自動でルーティングする仕組みにしました。意思決定の経緯を聞けばグラフ検索が、セマンティックな類似検索ならベクトル検索が走ります。両方の結果をマージして返すハイブリッドモードもあります。

プロジェクトごとの記憶の分離にも気を配りました。Graphitiのgroup_id機能を使って、Project Aの意思決定ログとブログの執筆履歴が混ざらないようにしつつ、横断検索もできるようにしています。

プロジェクト固有の記憶は project-a のように分離しつつ、日報やミーティングメモは area-knowledge に、技術的な決定事項は area-tech にまとめています。検索時に複数のgroup_idを指定すれば横断的に探すこともできるので、「別プロジェクトで似たような判断をしたことがあったはず」という検索にも対応できます。

この仕組みは半年ほど前から運用していて、日々の開発の中で機能追加や改善を繰り返しています。最初はシンプルなメモ保存から始まり、ナレッジグラフの導入、ローカルLLM統合、フックによる動的コンテキスト注入と段階的に育ててきました。ちなみに、最初からこの二刀流設計だったわけではありません。最初はGraphitiだけで運用していたのですが、「前に似たエラーを見た気がする」という検索で全然関係ない結果が返ってきて、「関係性」と「類似性」は別々に扱うべきだと気づいて後からpgvectorを追加しました。

もしこれから似たものを作るなら、まずはGraphitiの公式ドキュメントに従って標準構成で動かしてみて、そこから徐々にローカル化していくのが現実的かなと思います。OpenAI APIの代わりにOllamaを使う部分が最初のカスタマイズポイントになります。

Claude Codeとの「付き合い方」

ここまで書いてきて思うのは、これはツールの使い方というより「付き合い方」の話だということです。

Claude Codeは優秀ですが、そのままでは「その場限りの相談相手」です。CLAUDE.mdでルールを定義し、フックで記憶の永続化を仕込み、カスタムコマンドで日常のワークフローを型にする。そうすることで、はじめて「文脈を共有した開発パートナー」になる感覚があります。

もちろん、まだ課題もあります。ローカルLLMのサマリー精度はクラウドAPIに及びませんし、Graphitiの検索精度も完璧ではありません。「昨日話したあのこと、覚えてる?」と聞いて全然関係ないプロジェクトの話を持ってきたりすることもあります。

ただ、「記憶がゼロ」と「記憶が不完全」の間には大きな差があると感じています。不完全でも文脈があるだけで、セッション冒頭の「説明タイム」がぐっと減るのは確かです。

まとめ

この記事では、Claude Codeを軸にした1日の流れを紹介しました。

振り返ると、やっていることは「AIツールに記憶と習慣を与える」ということに尽きます。「コンテキストが全て」という感じですね。CLAUDE.mdでルールを、フックで記憶を、カスタムコマンドで習慣を。この3つが揃うと、セッションをまたいでも開発の文脈が途切れない環境が作れます。

そして使い続けるうちに、その用途はコーディングだけに留まらなくなりました。設計の壁打ち、旅行の計画、寝る前のアイデアメモ。ターミナルに常駐する「思考の相棒」として、開発ツールの枠を少しはみ出した存在になっています。

大掛かりな仕組みに見えるかもしれませんが、全部を一度に作る必要はありません。わたしも最初の一歩はCLAUDE.mdにルールを書くところからでした。

もし「自分も試してみたい」と思った方は、こんな順番がお勧めです。まずCLAUDE.mdを書いて、プロジェクト固有のルールを定義してみる。次にシンプルなカスタムコマンドを1つ作る(たとえば /today で今日のタスクを表示する、くらいで十分です)。そこからフックを使った自動化に手を出して、記憶基盤の構築は最後。段階的に育てていく楽しさも含めて、なかなか面白い体験ですよ。

この記事をシェアする

FacebookHatena blogX

関連記事