OSSのパーソナルナレッジベース「Foam」を使ってみる

個人向けのナレッジ管理ツールを探していたところ、よさそうなものを見つけたので紹介します。

Foamとは

Visual Studio CodeとGitHubを利用した、オープンソースのパーソナルナレッジベース。
Roam Researchに影響を受けて開発されたツールで、Zettelkastenメソッド等に代表される情報カードを用いた知識整理のようなナレッジ管理を実現できます。

Foamの特徴

Foamは以下のような特徴があります。
他のナレッジマネジメントシステムと違うところは、Foam自体はVS Codeの拡張機能であり、作成されたメモはGitリポジトリの管理対象となるファイル(単なるテキストファイル)であるというところだと思います。

  • Foam自体はVS Codeの拡張機能のひとつ
    • Formの機能はいくつかのVS Code拡張機能によって実現されている
  • エディタ部分にVS Codeを使用するため、拡張機能を導入することによりFoamが提供する機能以外の様々な機能を使うことができる
  • Gitによるバージョン管理が可能
  • GitHub以外のGitリポジトリホスティングサービスでも使用可能
  • GitHub PagesでWebページとして公開できる
  • Markdown形式で記述する
  • 現時点での最新バージョンはv0.7.2
    • 公式ドキュメントにもある通り、開発中の機能がいくつかある

インストール手順

前提

  • GitHubアカウントがあること
  • VS Codeがローカルマシンにインストールされていること
  • Gitがローカルマシンにインストールされていること
    • 必要に応じてTortoiseGit等も入れておく

環境

この記事を作成した段階でのバージョンは以下の通りです。

  • Visual Studio Code: 1.52.0
  • Foam: 0.7.2

手順

  1. foam-templateを自分のアカウントにフォークします。
    1. foam-templateのリポジトリのページにアクセスします。
    2. 「Use this template」ボタンをクリックします。
    3. リポジトリ名等を入力して、「Create repository from template」ボタンをクリックします。
  2. リポジトリをクローンしてローカルにダウンロードします。
    1. リンクを取得します。
    2. ローカルの適当なところにクローンします。今回はTortoiseGitを使いました。
  3. VS Codeを起動して、リポジトリをフォルダとして開きます。
  4. 推奨される拡張機能をインストールします。

インストールされる拡張機能

上記手順で環境構築すると、VS Codeに下記の拡張機能がインストールされます。

  • Foam for VSCode: 0.7.2
  • Prettier: 5.8.0
  • GitLens: 11.0.6
  • Markdown All in One: 3.4.0
  • Markdown Notes: 0.0.21
  • Markdown Links: 0.8.0
  • Gray Matter: 1.6.0

リポジトリに含まれるドキュメント

フォークしたリポジトリにはいくつかのドキュメント(Foamではバブルと呼ぶ)が含まれています。

  • readme.md
    • インストール方法等が記載されています。
  • inbox.md
    • あとで分類するためのとりあえずのメモを残しておく場所。
  • foam-tips.md
  • todo.md
    • ToDoリスト。
    • 書き方はMarkdown All in Oneプラグインに準ずる。

Foamの使い方

よく使うであろう機能をまとめました。
ここに記載されていない機能も多数ありますので、詳しくは公式ドキュメントを参照してください。

ページをリンクする

文中で[[page-name]]のように拡張子抜きでファイル名を記述します。
ファイル名はlower-dash-caseで作成する必要があります。
ファイル名の入力にはオートコンプリートを使用できます。

ページを移動する

リンクの上にカーソルを置き、Ctrl + クリックまたはF12を押します。
存在しないページの場合はファイルが新規作成されます。

ページを作成する

既にあるページのリンクから作成する場合

新しい[[page-name]]を入力し、Ctrl + クリックまたはF12を押します。(「ページを移動する」と同じ。)

コマンドパレットから作成する場合

Ctrl + Shift + PでVS Codeのコマンドパレットを開き、Markdown Notes: New Noteを実行してTitle Case Name形式でタイトルを入力します。(title-case-name.mdというファイル名で作成されます。)
日本語入力も可能です。その場合、ファイル名は入力した日本語.mdとなります。
日本語入力については過去バージョンでバグがあったようですが、こちらのissueで対応済みです。

フォーマット

使用可能な文法は、基本的にはMarkdownと[[wiki-links]](mediawiki形式)です。
最初のトップレベルの見出し(# Heading)がメモのタイトルとして使用されます。
タイトルが無ければファイル名が代わりに使われます。

デイリーノート(今日の日付のノート)を作成する

コマンドパレットからFoam: Open Daily Noteを実行します。
またはキーボードショートカットとしてAlt + dを押すことでも作成できます。
今日の日付のノートが既に存在する場合は、そのノートを開きます。
デフォルトでは、ワークスペースのルートにファイル名yyyy-mm-dd.md、タイトルyyyy-mm-ddで作成されます。(設定ファイルでカスタマイズ可能)

グラフを可視化する

Foamデフォルトの機能を実行する

コマンドパレットからFoam: Show graphを実行します。
しかし、現行バージョンではバグなのかタブには何も表示されませんでした。
こちらのissueでも言及されています。次バージョン(v0.7.3)で対応するようです。
2020/12/27追記
v0.7.6ではFoamでも表示されるようになりました。

拡張機能Markdown Linksの機能

コマンドパレットからMarkdown Links: Show Graphを実行します。 こちらは現行バージョンでも表示されました。

バックリンク

Wikiリンク([[]])を使用すると、現在表示しているメモとリンクしている(バックリンク)メモを見つけることができます。
バックリンクのビューを表示するには、コマンドパレットからExplorer: Focus on Backlinksを実行します。

コミット

Foamワークスペースのデフォルトでは、VS Codeからコミットすると自動でリモートリポジトリに同期されます。

GitHub Pagesで公開する

foam-templateはデフォルトでGitHub Pagesによる公開に対応しています。
Foamに限らず、GitHub Pagesを利用するにはpublicリポジトリにする必要があります。
GitHubのリポジトリのページから、Settings -> Options -> GitHub Pages で下記の通り設定します。

  • Branch: master
  • / (root)

公開URLにアクセスすると、以下のように表示されます。