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
手順
- foam-templateを自分のアカウントにフォークします。
- foam-templateのリポジトリのページにアクセスします。
- 「Use this template」ボタンをクリックします。
- リポジトリ名等を入力して、「Create repository from template」ボタンをクリックします。
- リポジトリをクローンしてローカルにダウンロードします。
- リンクを取得します。
- ローカルの適当なところにクローンします。今回はTortoiseGitを使いました。
- リンクを取得します。
- VS Codeを起動して、リポジトリをフォルダとして開きます。
- 推奨される拡張機能をインストールします。
インストールされる拡張機能
上記手順で環境構築すると、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
- FoamのTipsのリンクが記載されています。
- 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にアクセスすると、以下のように表示されます。