3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Bob + Foam で構築する Personal Knowledge Management 環境

3
Last updated at Posted at 2026-07-24

bob.png

Summary

Designer(4).png

  • IBM BobのワークスペースにFoam拡張機能を組み合わせ、MarkdownベースのPKM(個人知識管理)環境を構築した
  • PARA法とMOC(Map of Content)を組み合わせたディレクトリ設計で、「どこに何があるか分からない」問題を構造で解決した
  • IBM BobにAGENT.mdとカスタムSkillを実装することで、「MOCの更新」「Inboxの整理」「週次レビュー」を自然言語で依頼できるようにした

やらないこと

  • PKMツール・AIコーディングエージェント同士の機能比較・優劣の議論
    • 本記事の目的はツール選定の指南ではなく、IBM Bobと統合することで得られる知識管理体験の向上を論じることにある
  • PKMの理論的な深掘り(Zettelkasten・PARA法の詳細な解説)
    • それぞれ独立した書籍・記事が多数存在するため、本記事では実装の根拠として触れるにとどめる
  • Foam拡張機能の基本的な使い方のチュートリアル
    • 公式ドキュメントに詳しいため割愛し、本記事は「どう設計したか」「何が変わったか」に集中する

本記事における課題

「メモはしてるのに使われない」問題

日々の業務の中で、何らかのメモツールを使っているはずである。技術調査の記録でも、会議の議事録でも、読んだ記事の要約でも。しかし多くの場合、書いた直後は活用できても、数週間後には「確かどこかに書いたはずだが見つからない」状態になる。

見つからないだけならまだよく、最悪の場合は「書いたこと自体を忘れる」。結果として同じ調査を二度行い、同じ結論に至るという、見えないコストが積み重なる。

これはメモの量の問題ではなく、構造の問題である。情報が孤立し、互いに繋がっておらず、どこに何があるかを俯瞰する地図もない。検索すれば見つかるかもしれないが、そもそも「何を検索すればよいか」を覚えていないことも多い。

ツール変遷の疲労(これは個人的な課題かも…)

PKMツールは年々増えており、乗り換えのたびにデータ移行と習慣のリセットが発生する。「ツール選びに時間を使いすぎて肝心のメモが進まない」という本末転倒な状態に陥りやすい。

IBM Bobの中でPKMも完結させたい

すでに日常的にIBM Bobを使って作業しているならば、PKMの操作もBobに依頼できると理想的である。「このメモをちゃんとしたノートにして」「今週の振り返りをして」という自然言語の指示でPKMが動くのであれば、別のツールに文脈を切り替える必要はない。そうした統合を目指して、本記事の環境を設計した。

やったこと

ディレクトリ設計:PARA法をベースに番号で整列させる

方針として、PARA法(Tiago Forte提唱)とMOC(Map of Content)の概念を採用した。

フォルダー PARA対応 役割
00-inbox/ 未整理メモの一時置き場(後で分類する)
01-journal/ Daily Notes。毎日の記録・Inbox・KPT
02-projects/ Projects 期限のある具体的な作業
03-areas/ Areas 継続的に管理するテーマ・領域
04-resources/ Resources 記事・書籍・外部情報の要約
05-archive/ Archive 完了・不要になったノートの保管庫

先頭に番号を振るのは、ファイラーのアルファベット順ソートで意図した並び順を保つためである。00 から始まることで「まずInboxを見る」という運用の優先順位も自然に体に入る。

MOCとは何か

MOCはWebサイトでいうサイトマップに相当する概念で、各フォルダーに _index.md として配置する。ここには配下のノートへのWikilinkを一覧形式で並べる。

| [[azure-batch-storage-comparison]] | Azure Batch の Files vs Blob 比較 | 2026-07-22 |

単なるファイル一覧との違いは、Foamのグラフビューでノードとして可視化される点にある。孤立したノートを見つけ、リンクを追加することで知識が網目状に繋がっていく。

グラフビューで知識の繋がりを俯瞰する

Foamにはノート同士のリンク関係をグラフとして描画するビューが内蔵されている(Cmd+Shift+P → "Foam: Show Graph")。Wikilinkが増えるにつれ、下図のようにノードが放射状に広がり、知識の構造が一目で分かるようになる。

スクリーンショット 2026-07-24 17.35.16.png

グラフ上で孤立しているノード(どこからもリンクされていないもの)は、PKMの文脈から切り離されたメモである。週次レビューでこれを見つけ、適切な _index.md にリンクを追加していくことが、知識を「蓄積」から「活用」に変える鍵となる。

ファイル命名規則:日付はファイル名に入れない

最初にやりがちなミスが、すべてのファイルに日付プレフィックスを付けることである(例:20260722_Azure調査.md)。

これは次の問題を引き起こす:

  1. 最新版がどれか不明になる — 同じトピックのメモが増えたとき、20260722_20260811_ のどちらが正しいか一目で分からない
  2. Wikilinkが壊れる — ファイル名に日付が含まれると、[[azure-batch-storage-comparison]] という形で参照しにくい
  3. 検索性が下がる — 日本語+日付の組み合わせが増えると、補完候補が混雑する

採用した命名規則は以下の通りである。

フォルダー 形式
01-journal/ YYYY-MM-DD.md 2026-07-24.md
02-projects/ kebab-case.md azure-batch-migration.md
03-areas/ kebab-case.md azure-batch-storage-comparison.md
04-resources/ kebab-case.md foam-getting-started.md

作成日は frontmatter の created フィールドで管理する。ファイル名は「何のノートか」を表す名前だけで十分である。

---
type: area
tags: area, azure, azure-batch, storage
created: 2026-07-22
area: azure
---

Foamテンプレートの整備

Foamの .foam/templates/ に5種類のテンプレートを用意した。

テンプレート名 用途 作成方法
daily-note Daily Notes(Foam標準) Cmd+Shift+I
new-note デフォルト汎用(Inboxキャプチャ用) Cmd+N
project-note プロジェクト管理 テンプレート選択
area-note エリアの知識ノート テンプレート選択
resource-note 外部資料の要約 テンプレート選択

例えば Daily Note のテンプレートは「今日のゴール(最大3つ)」「Inbox」「作業ログ」「KPT振り返り」「明日へ」というセクション構成にした。

## 🎯 今日のゴール
- [ ] 
- [ ] 
- [ ] 

## 📥 Inbox
> アイデア・気になったこと・後で調べること。とにかくここに書く。

## 🔧 作業ログ
| 時刻 | 内容 |
|------|------|

## 💬 振り返り(KPT)
**Keep**(続けること)
**Problem**(問題・改善点)
**Try**(次に試すこと)

## ➡️ 明日へ

KPTを毎日埋めることを目標にする必要はない。KeepとTryだけでも十分であり、記入の強制ではなく振り返りのトリガーとして置くのが目的である。「今日は何もなかった」と感じた日でも、「明日へ」セクションに翌朝読み返したいひと言を残しておくだけで、翌朝の立ち上がりが変わる。

テンプレートのfrontmatterには FOAM_DATE_* 変数を使う。エディタ標準の日付変数と違い、相対日付(/tomorrow など)を使っても正しい日付が入るという特性があり、Daily Noteには必ずこちらを使う必要がある。

Foamが対応しない部分をシェルスクリプトで補う

Foamはエディタ上でのリンク補完・グラフ表示・テンプレートには強いが、ワークスペース全体の俯瞰や定型的な管理操作には対応していない。以下の用途でシェルスクリプト scripts/pkm を実装した。

scripts/pkm stats          — ノート数・Wikilink数・最近更新ノートの統計
scripts/pkm orphans        — どこからもリンクされていない孤立ノートを検出
scripts/pkm inbox          — 00-inbox の未整理状況を確認
scripts/pkm review         — 上記をまとめた週次レビュー用コマンド
scripts/pkm done <file>    — プロジェクトを完了してアーカイブ
scripts/pkm archive <file> — ノートを 05-archive/ に移動

週次レビューの実行例を示す。

📊 ワークスペース統計
  総ノート数:     18
  Daily Notes:         7
  Projects:            2
  Areas:               5
  Wikilinkの総数:  34

🕐 最近更新されたノート(Top 5)
  2026-07-24 17:09  01-journal/2026-07-24.md
  2026-07-23 13:14  03-areas/azure/azure-batch-storage-comparison.md
  ...

📥 Inbox の状態
✔  Inbox はきれいです!

🔍 孤立ノート(1件)
  - 03-areas/azure/new-note.md

「孤立ノート」とは、どの _index.md からもリンクされていないノートのことである。こうしたノートはグラフビューでも浮島になっており、知識の網から切り離されている。pkm orphans がそれを洗い出し、どこにリンクを追加すべきかを明示する。

IBM BobをPKMの司令塔にする

AGENT.md — ワークスペースへの常時コンテキスト

AGENT.md をワークスペースルートに置くと、Bobがそのワークスペースを開くたびに自動で読み込む。これを利用して、PKMのルール(命名規則・frontmatter・MOC更新の義務)をBobに常時認識させる。

## Bobへの指示(重要)
- ノートを新規作成するときは必ず対応する _index.md のMOC一覧にリンクを追加する
- ファイル名は必ず kebab-case(日付なし)を使う
- 00-inbox/ のメモを正式ノートに変換するときは、整理先をユーザーに確認する

これにより「新しいノートを作って」と依頼するだけで、Bobが自動的にfrontmatterを付与し、MOCにリンクを追加するようになる。PKMのルールを覚えているのは人間ではなくBobであり、運用の摩擦が大幅に下がる。

カスタムSkill — 自然言語でPKM操作を依頼する

Bobのスキルは .bob/skills/<skill-name>/SKILL.md に配置するMarkdownファイルで、description フィールドがトリガー文として機能する。「MOCを更新して」という発言にBobが自動反応するようになる。

実装した3つのスキルとそのトリガー:

スキル トリガー例 処理の流れ
pkm-moc-update 「MOCを更新して」「一覧を同期して」 フォルダーをスキャン → _index.md に不足エントリを追加
pkm-inbox-process 「Inboxを整理して」「このメモを正式ノートにして」 Inboxスキャン → 整理先をヒアリング → frontmatter付きノートを作成 → MOC更新 → Inbox削除
pkm-weekly-review 「週次レビューをして」「今週の振り返り」 scripts/pkm review 実行 → 統計表示 → Inbox処理・孤立ノート対処を対話的に実施

スキルの設計でポイントになるのが、AIに任せる部分と確定的な処理に任せる部分の分担である。ファイルスキャン・frontmatterのパース・MOCとの差分検出はシェルスクリプトが行い、Bobはその出力を読んで判断と編集だけを担う。AIに「ファイルを全部読んでリストを作れ」と頼むのは不安定だが、「このスクリプト出力のMISSING行にリンクを追加せよ」という指示は安定する。

運用サイクル

実際の日次・週次運用は以下のサイクルで回している。

毎朝(5分)

Cmd+Shift+I でその日のDaily Noteを開く。最初の5分で「今日のゴール」を3つ書き、昨日の「明日へ」セクションを読む。この2ステップだけで、昨日の文脈を今日に引き継ぐことができる。書いたゴールは、夜に見返すためのものでもある。

日中(都度)

何かを思いついたら、開いているDaily NoteのInboxセクションにすぐ書く。「後でちゃんと書こう」と思った瞬間に内容の半分は失われる。まとまった調査結果や読んだ記事の要約は、後から 03-areas/04-resources/ に正式なノートとして切り出す。

毎晩(5分)

KPTの「Keep」と「Try」を一行ずつ書き、「明日へ」に翌朝のスタートポイントを残す。日記でも報告書でもなく、明日の自分へのブリーフィングとして書くと続きやすい。

毎週(15分)

./scripts/pkm review を実行するか、Bobに「週次レビューをして」と依頼する。孤立ノートにリンクを追加し、完了したプロジェクトをアーカイブし、Inboxを空にする。これを習慣にすることで、ワークスペースが「書いたら終わり」ではなく「後から活きてくる」状態に保たれる。

ちょっと宣伝

この記事自体もIBM Bobに下書きしてもらいました!

生成AIによる開発プロセスの効率化に関心がある場合は、IBMのAIエージェント製品コミュニティであるBobサロンのような場もおすすめです!実際にBobを活用されているユーザー様の声にも触れてみてください!

私がBobを試した記事もご参考になれば幸いです。

まとめ・所感

IBM Bob + Foam という組み合わせは、AI IDEを離れずにPKMを運用できる点に強みがある。専用のPKMツールに比べてプラグインエコシステムは限られるが、シェルスクリプトとBob Skillの組み合わせで十分に補完できる。

今回の実装を通じて気づいたことがある。PKMで一番大切なのはツールの機能ではなく、「いつ何をするか」というルーティンの設計である。 どんなに高機能なツールでも、毎日開かなければ機能しない。Daily Noteを起点にした5分・5分・15分のサイクルは、習慣として定着しやすいラインを意識して設計した。

また、AI IDEにPKMのルールを覚えさせる(AGENT.md)という発想は、コードベースにアーキテクチャの制約を持たせることと本質的に同じである。「ノートを作るたびにMOCを更新してほしい」という要求を毎回言葉で伝えるのは非効率であり、AGENT.mdに書いておけば一度で済む。これはPKMに限らず、AIエージェントを使うあらゆるワークスペースに応用できる考え方である。

まだ運用を始めたばかりなので、数ヶ月後にKPTが実際に溜まってきたときの使い心地や、ノートが増えてからのグラフビューの有用性については改めて報告したい。

参考リンク

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?