VSCode を Notion のような個人用ナレッジベースとして使う

個人用 wiki として Notion はとても便利に使えます。会社でも使いたい！と思うのですがクラウドだったり有料だったりで私の会社では使えませんでした。そこで VSCode の拡張機能を駆使し Notion の使い心地に近づける工夫を行いました。
本記事では VSCode を個人用ナレッジベースとして活用する方法についてまとめます。

:::note warn
注意
VSCode を会社等で使用する場合は所属先のポリシーをご確認下さい。VSCode の拡張機能には悪意のあるコードが含まれている可能性もあります。https://atmarkit.itmedia.co.jp/ait/articles/2306/05/news028.html
:::

# 目指す機能

[1. WYSIWYG(見たまま編集)の使い心地を目指す](#WYSIWYG(見たまま編集)の使い心地を目指す)
[2. 新規ページ作成](#新規ページ作成)
[3. パンくずリスト](#パンくずリスト)
[4. バックリンク](#バックリンク)
[5. タグ](#タグ)
[6. 画像貼り付け](#画像貼り付け)
[7. デイリーノート](#デイリーノート)
[8. フローチャート](#フローチャート)
[9. カンバン](#10.カンバン)


# 事前準備

### 拡張機能のインストール

VSCode に以下の拡張機能をインストールします

* [Foam](https://marketplace.visualstudio.com/items?itemName=foam.foam-vscode)
* [Paste Image](https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image)
* [Project Manager](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)
* [Markdown Preview Mermaid](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid)
* [Portable Knaban](https://marketplace.visualstudio.com/items?itemName=harehare.portable-kanban)

### Home となるノートを作成

- 適当な場所にフォルダを作成します
- 作成したフォルダ内にファイル Home.md を作成します

``` Home.md
# Home

## h2

### h3

* a
* b
* c
```

### プロジェクトとして保存
* 作成したフォルダを VSCode で開きます
* 拡張機能 Project Manager で Save Project します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/70f3ae52-42a0-98a2-c881-46f9850aae71.png)

# 1.WYSIWYG(見たまま編集)の使い心地を目指す

* **プレビューだけ表示する**
プレビューに集中出来るように、隣のタブに markdown のオリジナルテキストは表示しないようにします
* **プレビューから編集にスムーズに移行したい**
プレビューから文字列をクリックしたらすぐに編集できるようにします

### Markdown プレビュー専用ウィンドウを開く

1. VSCode 右上の Open Preview ボタン ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/1a83c1e9-11c3-ca49-c60b-b8d47e09751f.png) もしくはショートカット Ctrl + Shift + V でMarkdown プレビューを開きます
1. 開いたプレビューを別ウィンドウで開きます
1. プレビュー右上の **Lock Group** アイコン ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/21f22728-74d6-6a34-163e-c270188d8242.png) をクリック
➡️ VSCodeでファイルを選択した時に、プレビューウィンドウ側でエディタタブが開くことはなくなります

このプレビューウィンドウをメインで使用します。ここから Markdown の「ファイル作成」,「編集」,「検索」,「移動」を行えるようにします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/3073ddb2-b3e2-9a5c-da42-7bdcdd438708.png)


### プレビューから編集

* 編集したい箇所をダブルクリックします
* するとVSCodeのエディタが、編集したい箇所にカーソルがある状態でアクティブになります
* エディタ側で編集し、完了したら再びプレビューに戻ります

![Edit.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/62189b22-9877-e445-3463-b0453f8ef344.gif)


# 2.新規ページ作成

Foam の wikilink の機能を使います

* テキストに以下のような wikilink を作成します
``` markdown:wikilink-sample.md
[[ページ名]]
```
* 作成した wikilink を <code>Ctrl + クリック</code> します
* すると新規ファイルが作成されます



![wikilink.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/520c7500-65bd-da25-5bb6-6ba802856e93.gif)

### 新規ファイルが作成されるフォルダ階層
この新規ファイルはデフォルトではプロジェクトのルートディレクトリに作成されますが、Foam の設定で New Note Path を currentDir に変更すると、リンク元と同じフォルダに作成されるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/7cc992d5-a3da-c88b-39cf-5bedecb1c616.png)


### ファイルの名前変更、フォルダ移動

さらにこの wikilink は、ファイル名が変更されたり、ファイルがフォルダ移動した場合も自動で修正されます。
:warning: ただし、リネーム、ファイル移動は VSCode上から行う必要があります。


### プレビューからのファイル移動

プレビューウィンドウから <code>ctrl + p</code> でファイル名検索、移動が出来ます。
もちろんエディタウィンドウに移動すれば VSCode のファイル検索機能も使えます。
また後述する以下の機能でも、検索、移動が出来ます。
* [3. パンくずリスト](#パンくずリスト)
* [4. バックリンク](#バックリンク)
* [5. タグ](#タグ)

# 3.パンくずリスト

* 手動になりますが、ファイルの先頭行に wikilink をパンくずリストのように入れておくとプレビューウィンドウでの移動が楽になります。
* このリンクはエディタウィンドウ側からもリンクとして機能します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/45b56ba2-8923-6be3-073f-6f33524c75ad.png)


# 4.バックリンク

* Foam から wikilink を作成すると左メニューの ALL LINKS にバックリンクが表示されます
* 実際にリンクとして機能し、対象ファイルへ移動する事が出来ます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/96f635d1-8dcf-1cc1-b716-e9d4a350a9a1.png)


# 5.タグ

さらに Foam ではタグも使用可能です。
* タグは下記の書式で記入できます
* タグを / で区切る事によりタグを階層化させる事もできます

``` markdown:tag-sample.md
#タグ名
```

* タグは左メニューの TAG EXPLORER に表示されます
* リンクとして機能しているので、ファイルへの移動が可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/f7718871-494c-65d9-6341-dbaaa16c5d05.png)


# 6.画像貼り付け

* 拡張機能 [Paste Image](https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image) を使います
* Paste Image を使うことで Markdown から画像へのパスを絶対パスで持つことが出来るようになり、Markdown ファイルの移動が楽になります

Past Image の拡張機能設定で以下のように設定します

```json:setting.json
"pasteImage.basePath": "${projectRoot}"
"pasteImage.path": "${projectRoot}/static/img"
"pasteImage.prefix": "/"
```

* コピーした画像を <code>Ctrl + Alt + V</code> で Markdown エディタに貼り付ける事が出来ます
* この設定だと、画像の保存場所はつねに <code>project ルートフォルダ/static/imag</code> になります

 
  
# 7.デイリーノート

Foam の機能でデイリーノートも作れるようになります

* <code>Ctrl + P</code> から <code>>Foam: Open Daily Note</code> を実行します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/c30108c4-d081-1e34-5c78-61c83390642a.png)

* 次に開く選択肢から今日以外の日付も選択可能です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/e7293391-20a1-3406-b02d-3f03d23b5dd3.png)

* デイリーノートが作成されるフォルダ、ファイル名、先頭行の表示は Foam の設定から変更可能です

https://foambubble.github.io/foam/user/features/daily-notes.html


* :warning: Foam の設定の Open Daily Note: On Startup にチェックを入れると、VSCode が起動する度に本日のデイリーノートが自動作成され便利ですが、別のプロジェクトを開いた際もそこにデイリーが作成されてしまいます。これを使う場合は Foam の拡張機能を該当のプロジェクトでのみ有効にすると良いかと思います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39286/2fef16f2-f0fa-fe4c-f776-bfa235b556c4.png)

* 個人の感想ですが、この wiki とデイリーノートのプロジェクトは２つに分けた方が便利かなと思います。デイリーノートはその日の情報を記録するのに頻繁にアクセスするので、その度にプレビューがデイリー表示になると不便です


markdown 文章以外にも VSCode の拡張機能を使うことで様々フォーマットでの記録ができるようになります


# 8.フローチャート

Markdown Preview Mermaid Support を使えばフローチャートの記載、閲覧ができます



https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid



# 9.カンバン

Portable Kanban 


https://marketplace.visualstudio.com/items?itemName=harehare.portable-kanban



# まとめ

Foam の機能が素晴らしいです。これのおかげで VSCode を Nortion や Obsidian のようなナレッジベースに用いる事が出来ます。
Foam は OSS で現在も開発が続いているので、今後追加される機能にも期待できます。


https://github.com/foambubble/foam