MacのターミナルコマンドをObsidianに自動保存する方法 - Claude Code hooks活用ガイド
※投稿日時:2026-07-23-THU
IDEのWindSurfが Devinにリブランドされて、なんだかClaudeCodeを使うだけなのに面倒となり、mac のターミナルに戻るとシンプルすぎて、 Warpワープにはじまり、Ghostty ゴースティーを経て、Cumax キューマックス に落ち着いている今日、この頃。
cmux - マルチタスクのために作られたターミナル
https://cmux.com/ja
無料・オープンソースのAIコーディングエージェント向けネイティブ macOS ターミナル エミュレータ
Cumaxは、ターミナルの複数の作業、複数のClaudeCodeをまとめるのにとても重宝しています。
しかし、ターミナルさっきまでやっていたことをメモリしないとすぐに忘れるので、他のことをやりつつ、~MacのターミナルコマンドをObsidianに自動保存する方法~を思いつきました!
🎯 はじめに
『あ、さっき実行したコマンド、なんだっけ?』
ターミナルを使っていると、こんな経験はありませんか?特にITジャーナリストやエンジニアは、複数のプロジェクトを同時進行していて、過去のターミナル操作を後から参照したい場面がよくあります。
本記事では、MacのターミナルコマンドをリアルタイムでObsidianに自動保存する方法を、初心者向けに詳しく解説します。メモリに頼らず、Obsidianのフォルダに永続的にログを残すことで、いつでも過去の作業を参照・継続できるようになります。
この記事でわかること
- ✅ Claude Codeの『Hooks』とは何か
- ✅ ターミナル履歴を自動保存する2つの方法
- ✅ Obsidianフォルダへの自動ログ記録の設定方法
- ✅ 実務で役立つ時間フォーマットの活用法
📋 【用語説明】初心者向けの基礎知識
記事を読む前に、いくつかのIT用語を簡単に説明します。
『ターミナル』とは?
Macのターミナルは、『コンピュータに文字で指示を送る黒い画面』です。マウスでクリックする代わりに、キーボードでコマンド(命令)を入力して、ファイルの操作やプログラム実行を行います。
# こういったコマンドを入力します
ls -la
date +%Y-%m-%d-%H-%M
『Claude Code』とは?
Claude CodeはAnthropicが提供する、AIアシスタント『Claude』がターミナルコマンドを実行・ファイルを編集できる機能です。AIが自動でコマンドを実行してくれるため、開発作業が大幅に効率化されます。
参考:Claude Code Hooksは、Claudeのライフサイクルイベントにカスタムスクリプトを差し込める仕組みです
『Hooks(フック)』とは?
Hooksは、Claude Codeのライフサイクル上の特定のタイミングで自動実行されるシェルコマンドやスクリプトの仕組みです。つまり、『特定の出来事が起きたら、自動的に実行する処理』という意味です。
わかりやすい例:
- 『Pythonファイルを保存したら、自動的にコードをフォーマット』
- 『ターミナルコマンドを実行したら、自動的にObsidianにログを記録』
『PostToolUse』とは?
Hooksの中でも『ツール実行後』に発火するイベント名です。Bashコマンド実行直後に処理を実行できます。
🔧 【方法1】手動保存(シンプル・すぐできる)
最初は手動で保存する方法から始めましょう。これなら設定が簡単です。
セッション終了時に履歴を保存
# ターミナルで実行
history > ~/Documents/Obsidian\ Vault/terminal_doc/$(date +%Y-%m-%d-%H-%M).md
コマンドの意味:
-
history→ これまで実行したコマンド全てを表示 -
>→ その結果をファイルに保存(『リダイレクト』という) -
~/Documents/Obsidian\ Vault/terminal_doc/→ Obsidianフォルダ内の『terminal_doc』という名前のサブフォルダ -
$(date +%Y-%m-%d-%H-%M)→ 『現在の日時(例:2026-07-23-14-37)』をファイル名にする -
.md→ マークダウン形式のテキストファイル
実行結果の例
/Users/paulkanda/Documents/Obsidian Vault/terminal_doc/
├── 2026-07-23-14-36.md ← 14時36分に保存
├── 2026-07-23-14-37.md ← 14時37分に保存
└── 2026-07-23-14-39.md ← 14時39分に保存
メリット:
- 設定が簡単
- 手動なので誤録を防げる
デメリット:
- 毎回、手動で実行する手間がかかる
- コマンド実行を忘れると記録されない
🚀 【方法2】自動保存(おすすめ)- Claude Code Hooks設定
方法1より効率的なのが、Claude CodeのHooksを使った自動保存です。コマンド実行のたびに自動的にObsidianに記録されます。
設定ファイルの場所
~/.claude/settings.json
これは『ホームディレクトリの』『.claude』『フォルダの中の』『settings.json』というファイルです。
設定内容(コピー&ペースト可能)
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "LOGFILE=\"/Users/paulkanda/Documents/Obsidian\\ Vault/terminal_doc/$(date +%Y-%m-%d-%H-%M).md\"; { echo '## Command'; jq -r '.tool_input.command // \"unknown\"'; echo ''; echo '### Output'; jq -r '.tool_response // \"no response\"'; echo ''; echo '---'; echo ''; } >> \"$LOGFILE\"",
"statusMessage": "Saving to Obsidian...",
"timeout": 5
}
]
}
]
}
}
この設定の意味:
-
PostToolUse→ 『ツール実行後に』という意味 -
matcher: "Bash"→ 『Bashコマンド(ターミナルコマンド)に反応する』という意味 -
command→ 『実行するシェルコマンド』 -
statusMessage→ 『Claudeの画面に『Saving to Obsidian...』と表示』 -
timeout: 5→ 『5秒以内に完了しなかったらタイムアウト』
設定ファイルの編集方法
【方法A】Vimエディタで編集(Macユーザー推奨)
# ターミナルで実行
vim ~/.claude/settings.json
Vimの使い方(初心者向け):
-
iキーを押して『挿入モード』に入る - 上記のJSONをコピー&ペースト
-
Escキーを押す -
:wqと入力してEnterを押す(『保存して終了』という意味)
【方法B】テキストエディタで編集(さらに簡単)
# ターミナルで実行
open -a TextEdit ~/.claude/settings.json
テキストエディットが開くので、JSONをコピー&ペーストして、保存します。
再起動の重要性
✅ 設定の反映には Claude Code の再起動が必要です
既にClaude Codeのセッションが開いている場合:
# ターミナルで実行
exit
その後、Claude Codeを再度起動します。
📊 ファイル名フォーマットの詳細説明
2026-07-23-14-37.md
各部分の意味:
| 部分 | フォーマット | 例 | 説明 |
|---|---|---|---|
| 年 | %Y |
2026 | 4桁の年号 |
| 月 | %m |
07 | ゼロパディングされた月(01〜12) |
| 日 | %d |
23 | ゼロパディングされた日(01〜31) |
| 時間 | %H |
14 | 24時間形式の時間(00〜23)。14 = 午後2時 |
| 分 | %M |
37 | 分(00〜59) |
なぜこのフォーマットなのか?
時間で記憶に残る:『あ、さっき14時に実行したコマンド確認したい』と思ったら、ファイル名から直感的に見つけられます。
1分間に複数ファイルはない:通常、1時間に何度もセッションを開くことはないので、『時間と分』で十分に一意性が保証されます。
🔍 【重要】このフォーマットは時間から自動取得されている
実装の過程で、『ファイル名の14-37は本当に時間から取得されているのか?』という確認がありました。答えは『はい』です。
date +%Y-%m-%d-%H-%M
# 実行結果例:2026-07-23-14-37
date コマンドはマシンの現在時刻を返すため、毎回異なるファイル名が生成されます。
📁 Obsidianフォルダの初期設定
Hooksが記録先として使う『terminal_doc』フォルダを事前に作成しておきます。
mkdir -p ~/Documents/Obsidian\ Vault/terminal_doc
コマンドの意味:
-
mkdir→ 『Make Directory』フォルダを作成する -
-p→ 『親ディレクトリも一緒に作成する』という意味 -
Obsidian\ Vault→ スペースを含むフォルダ名は『\』(バックスラッシュ+スペース)でエスケープ
💡 実務活用例
シーン1:複数プロジェクトを並列実行
terminal_doc/
├── 2026-07-23-10-15.md ← 午前10時:プロジェクトA
├── 2026-07-23-11-20.md ← 午前11時:プロジェクトB(切り替え)
├── 2026-07-23-14-30.md ← 午後2時:プロジェクトA(戻ってきた)
└── 2026-07-23-15-45.md ← 午後3時:新規プロジェクトC
後から『プロジェクトAで何をした?』と確認したい時、14-30.mdを見ればすぐわかります。
シーン2:トラブルシューティング
WiFiが遅くなった場合のネットワーク診断コマンドを記録しておくと:
2026-07-23-14-36.md
## Command
networkQuality -v
### Output
WiFi speed: 0.5 Mbps(遅い!)
後から『あの時のネットワーク問題、どうやって直した?』と参照できます。
🎓 【用語】Hooks活用時の重要概念
Hooksには command(シェル実行)、http(HTTP POST)、prompt(モデル推論)、agent(サブエージェント/実験的)の4タイプがあります(2026年4月時点)。
本記事では『command』型を使用しています。これはシェルコマンドを直接実行する最も安定した方式です。
パフォーマンス:『statusMessage』の役割
"statusMessage": "Saving to Obsidian..."
コマンド実行時、Claude Code画面に『Saving to Obsidian...』と表示されます。これにより、ユーザーは『ログが記録されている』ことを視認できます。
🛠️ トラブルシューティング
Q1:ファイルが保存されない
A:以下をチェックしてください:
- フォルダが存在するか確認
ls -la ~/Documents/Obsidian\ Vault/terminal_doc/
- フォルダがない場合は作成
mkdir -p ~/Documents/Obsidian\ Vault/terminal_doc
-
Claude Codeを再起動したか確認
- settings.json を編集後、Claude Codeの再起動が必須です
Q2:ファイル名がおかしい
A:ファイル名の日時が正しいかどうか、Macの時刻設定を確認してください:
date
# Thu Jul 23 14:37:45 JST 2026
日本時間(JST)で表示されていれば正常です。
Q3:ターミナル操作がない時もファイルが増える
A:これは正常です。Claude Codeが任意のコマンドを実行するたびに、Hookが発火するため、結果として複数のセッションログが記録されます。
📚 参考資料
Claude Code Hooksは、Claudeのライフサイクルイベントにカスタムスクリプトを差し込める仕組みです。『ファイルを保存したら自動フォーマット』『タスク完了時にテストを実行』『危険なコマンドをブロック』といった自動化を、settings.jsonへの数行の追記で実現できます
関連記事:
- Claude Code入門 #4: Hooks実践テクニック ― 10のレシピで開発ワークフローを自動化する #ClaudeCode - Qiita
- Claude Code Hooks 使い方完全ガイド【2026年最新】|設定方法と自動化のコツ
- Claude CodeのHooksの使い方メモ(2026年4月) | 電脳産物
✨ まとめ
MacのターミナルコマンドをObsidianに自動保存する方法を、2つのアプローチで紹介しました:
【方法1】手動保存
- 利点:設定不要、すぐ実行可能
- 欠点:毎回コマンド実行が必要
【方法2】自動保存(Claude Code Hooks)
- 利点:完全に自動化、記憶に残るファイル名
- 欠点:初期設定が必要(ただし、1回だけ)
おすすめは【方法2】です。最初の設定に10分かかりますが、その後は『何もしなくても自動的にObsidianにログが溜まっていく』という快感を味わえます。
ITジャーナリストやエンジニアの方は、こうした『ログの自動化』により、PV数が取れるネタ帳として、Obsidianを活用できるようになります。
🎤 おわりに
『メモリに頼らず、システムに記録させる』
これはITの基本原則です。本記事の設定により、あなたのターミナル操作が自動的に『デジタルアーカイブ』化されます。
次回のセッションで『あ、あの時のコマンド何だっけ?』と思った時、Obsidianを開いて時刻で検索すれば、すぐに見つかる。その快感をぜひ体験してください。
Happy Logging! 🚀
※本記事の設定は macOS 環境を想定しています。Windows環境の場合は、フォルダパスをWindows形式に変更してください。
※日付タイムスタンプ:2026-07-23-THU
