コーディングのようにノートを取る技術

:::note info 
社内でコラムとして掲載していましたが、意外と学びになったので全体公開することにしました。
:::

## はじめに

何かを学習するとき、ノートを取っているでしょうか？  

小学生の頃や中学生・高校生の時の「ノート」は紙に手書きだったかと思います。

しかし、最近になってからはパソコンを使ってノートを取る、という選択肢が増えました。

その変遷の中で生まれた**パーソナル・ナレッジ・マネジメント(Personal Knowledge Management)** という考え方があります。

その考え方を共有できたらと思います。

## 直感的なデジタルノート術の原罪

### ケース1: ひたすらに手を動かす

学生の頃、黒板に書かれた内容をそのまま必死にノートに写している人がいたのを覚えていますか？  

また、その人は成績が高かったでしょうか？

たいていの場合、成績は乏しい人が多かったと思います。自分もそのタイプでした。

手を動かすだけのノート術の不幸な点は、**「考える」というアクティビティが行われないため、本当の意味で筋肉を動かすだけ**となっていることです。

ノートを取るという行為の本質的な意味は、**自分の外に出したものを見て考え、構造や繋がりを理解する**と考えています。

「ホワイトボードに多くのアイディアが詰まった付箋を張り出し、整理する」というアクティビティを行った経験はありませんか？

似ているものをグループ分けしたり、対立関係にあるものを線引してみたり、意味合いが重複しているものは付箋を重ねたり・・・この行動自体が**考える**ことであり、これが「ノートを取る」というアクティビティの**本質**になります。

「アウトプットしないと身につかない」とよく言われますが、アウトプットする過程で「知識」を「構造化」し、自分の中で「繋がり」を「考える」のでアウトプットは効果的と言われるのだと思います。

技術書の内容をそのまま書き写したかのような技術記事を見かける時がありますが、自分のためにもならない上に、著作権的にもアウトなので、ぜひ自分の言葉で書けるようになっていきましょう。

### ケース2: フロー型のノートを取る

SlackのDMにメモを取ってしまう人を目撃したときがあります。

この形の最大のメリットは**インターフェースがシンプルである**ということです。

ノートを取りたいとき、Notionを開いて、ページタイトルを考えて、どこに置くか考えて、そしてディレクトリ構造を考えて・・・そんな面倒なことをしますか？

それにノートを取りたい時は大抵考えがまとまっていない時なので、余計ノートに対するコストが高くなります。

つまり、**書き出す方法をシンプルにしなければ、人はノートを取らなくなる**という行動原理があるということです。

そしてSlackでメモを取る場合、その点で優れています。インターフェースは1つであり、余計なことを考える必要はありません。考えていることをそのまま書き出すだけです。

ただ、このノート術にも不幸な点があります。

それは、**構造を考える機会を失い**、更に**再び読まれることを想定していない**ということです。

見返すことで記憶が更に強化されていくため、見返す構造にすることが必要不可欠になります。

また、ケース1の時同様、考えたことを構造化出来ていないため、学習効率が下がってしまっていることです。

### ケース3: 名前空間を分けてしまう

よくあるケースとして、**関連分野でディレクトリを切ってしまう**ケースがあります。

たとえば、これはPHPに関係しているからPHPディレクトリ・これはスクラムだから開発手法ディレクトリ・・・といったようにです。

この方法の不幸な点は、**名前空間を分けてしまうことでコラボレーションが失われる**ということです。

何事でも、抽象化することで他に応用できる考え方があります。

たとえば、スクラムの考え方は開発手法という面だけではなく、それこそ地域復興のチーム作りや家庭内での応用もできます。

しかし、名前空間を分けてしまうことで「これは開発手法の概念だから」と開発手法の域から出ないものだと**私たちの脳は勝手に決めつけてしまう**のです。

それに、複数の名前空間に属するノートを取ろうとしたとき、どうノートを取ればよいのでしょうか？

たとえば、ユニットテストとPHPのような場合です。

PHPディレクトリに入れるのか？ユニットテストというディレクトリに入れるのか？はたまた、PHPユニットテストというディレクトリに入れていくのか？

この手法だと次第に肥大化していき、メンテナンスコストが膨れ上がり、**結果的にノートは混沌とした**ゴミ箱になってしまいます。

「ゴミ屋敷から無くしたスプラトゥーン3のゲームカードを探して」と言われたらどう感じるでしょうか？

**私なら確実に「やだ」と言います。**

## よいデジタルノート

### 特徴

ここで目指すべき姿、目指したい姿として**よいデジタルノート**の定義をします。

良いノートは以下のような特徴を持つと考えています。

- 検索性に優れている
- DRYである
- 高凝集である
- 可読性が高く、見返され、簡潔
- 必要以上に空間を分けられていない
- 構造を組み立てられる
- インターフェースがシンプルである
- 密結合である

このような特徴を持つデジタルノートは持続可能性が高くなります。

第2の脳として、知的生産活動を促進してくれることに間違いはないでしょう。

### 検索性に優れている

全文検索が出来るという強力な点では、絶対にアナログでは勝てません。自分が求めているものを最小限の労力・最小限の時間で見つけ出すことができるノートこそが、適切に整理されていて保守性が高いノートと言えるでしょう。

### DRYである・高凝集である

同じ内容のメモがあちこちに散見してしまった場合、どの情報が正しいのか？や他に理解を得たときにどこに追加すればよいのか？という迷いを生じさせてしまいます。

常にDRYで一枚のノートが簡潔な状態（高凝集）になるようにノートを作っていきましょう。

### 可読性が高く、見返され、簡潔

後から見返したときにハイコンテクストすぎて全然意味がわからないノートを取った経験はありませんか？

自分以外の誰が後から見ても理解できるようにノートは構築するべきです。100日後の自分は別人かもしれません。

それに、長々と書かれたノートは自分自身であっても読み返すかわかりません。

何かを検索したときに解説記事を最初から最後まで丁寧に読むときがありますか？高頻度で読み飛ばしてしまっているのではないでしょうか？

**おそらく、この記事も読み飛ばされていることでしょう。**

### 必要以上に空間を分けられていない

具象的な事柄から抽象的な発想を得るためには、「これは○○である」といった先入観を出来る限りなくす必要があります。

この特徴を抑えるためには、過度なディレクトリ構造化を避けます。

加えて、細かく切られたディレクトリ構造はメンテナンス性を著しく低下させます。

### 構造を組み立てられる

ホワイトボードで数ある付箋を動かして考えていくように、デジタルノート上でもできるようにします。そのためには1つ1つのノートが簡潔にまとめられている・自立している必要があります。

### インターフェースがシンプルである

入力コストが高いものに対して、人は長く使い続けませんし、定着もしません。

ノートを取る時には「ノートを取りたい内容」以外を意識させず、ノートを読み返したいときは「読み返したい内容」以外を意識させず、ノートを構造化したいときは「ノートを構造化したい」以外を意識させないように構築することがベストです。

### 密結合である

記憶は多くのものと紐付けられ、引き出すフックが多ければ多いほど定着します。詳しくは後述しているので、そちらを参照してください。

## 原理

具体的な方法（How）の前に、基となる考え方の説明をします。

### Zettelkasten

https://gigazine.net/news/20200604-zettelkasten-note/

Zettelkasten（ツェッテルカステン）の考え方をもとにデジタルノートを構築していくことが主になります。

Zettelkastenとは、要するに小さな単位でメモをとり、その小さなメモ同士を繋げていく手法です。

人間の脳は記憶するときに様々なものと紐付けることで記憶が促進されます。

たとえば、「ドラえもん」と聞いて何を連想するでしょうか？

「猫型ロボット」「どこでもドア」「のび太」「ジャイアン」「青色」など意識せずに同時に思い浮かんできたのではないでしょうか？

これが **「リンク」させて記憶する**メリットです。引き出すときのフックを多くすることで定着力を高めます。

### Linking Your Thinking

https://goryugo.com/20201210/obsidian-lyt/

Linking Your Thinkingという考え方もよいデジタルノートを構築していく上で必要不可欠の考え方となります。

LYTとは、要するに「ノートに思考の構造を反映させる」手法です。

Zettelkastenと組み合わせて使われ、簡潔に書かれた小さなメモ同士を**自分の頭の中で意味ある構造付け**し、一枚のノートを作り上げます。（このノートはMap of Contentsと呼ばれます）

このMOCは**自分自身で考えたその結果を小さなメモに構造化した**メモとなります。

ちょうど今手元にSCRUM MASTER THE BOOKがあるので、この本の目次を例にしてみます。

1. スクラムマスターの役割と責務
2. 心理状態モデル
3. スクラムマスター道
4. メタスキルとコンピタンス
5. チームを構築する
6. 変化を実装する
7. スクラムマスターの道具箱

これが目次（Table Of Contents）です。この目次は**本の著者自身が考えた結果、構造化した**ものとなります。

これを自分なりのMOCにまとめていくとすると・・・

```markdown
# スクラムマスターが絶対持っていなきゃいけないもの・考え方
- スクラムマスターの役割と責務
- メタスキルとコンピタンス
- 心理状態モデル

# スクラムマスターを発展させる
- スクラムマスター道

# チームを幸せにする方法
- チームを構築する
- 心理状態モデル
- スクラムマスターの道具箱
```

上のように**自分自身で章の内容を「意味ある」分類付けし、整理したノート**がMOCになります。

この構造を考える中で、抽象化をしたり、内容を見返したり、自分の中で要約を考えるプロセスが発生するため、結果より理解が深まります。

さらに、100日後に自分が見返した時にも「ああ、このときは自分はこう考えていたんだな」と知ることができ、「今はこっちの概念は違う概念だと思う」となったとき、**最新の自分の熟成された理解をノートに反映すること**ができます。

これが考え方の原理となります。

## どう構築していくか？

### Obsidian

時代は便利なもので、この考え方に特化したソフトウェアが**無料**で使用できてしまいます。そう、Obisidanです。

https://obsidian.md/

公式ページのプロモーション画像を見ても、LYTを使用して構築されています。

Obsidianはノートとノート同士のリンク（結合）が可視化する機能があったり、Markdownで快適に書くことができたり、Vim操作が使用できたり、デジタルノート活動を更に快適にするような拡張機能も公開されています。

これがObsidianを使う理由です。

ScrapboxもZetelkastenの概念を用いたツールで良いのですが、Obsidianの書き心地と比べてしまうと見劣りしてしまいます。

### 環境構築

実はこの内容だけで本1冊が書けてしまうくらいボリュームがあります。

今回は以下の書籍に説明をお願いしています。

https://www.amazon.co.jp/dp/B0B4K499F4

自分のObsidian環境もこの本をもとにして構築されています。

また、どのようにディレクトリを作っていけばいいか？どの単位でノートを作っていけばいいのか？という点でも解説されています。ぜひ参考にしてください。

### ざっくりとした自分の使い方

以下は自分のObisidanノートの構築になります。（あまり上手には使えてませんが・・・）
  
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239325/8950ab17-1029-6651-2e6b-f98243e6965c.png)

### 使い方

ノートを取る際に、まずIndexに書きます。そう、ココがSlackのチャット欄です。

インターフェースを1つに絞ることで、ノートを取りたいときに迷わせないようにしています。

```

Inboxでノートを取る▶ Inboxに取ったノートをリファクタリング▶ 01_Inboxに入れる▶ 他のノートとリンク付けする

```

上記のように運用しています。

### HOME MOC

HOME MOCはMOCを集めたMOCです。原理的にはこのHOME MOCから**すべてのMOCにアクセスできます。**

ノートはすべて何かと紐付けている、その状態を維持しています。

### Vocabulary

語彙はすべてここにフラットに保存してあります。

DDDで言う**エンティティ**になります。ここで簡潔に高凝集にしておくことでDRYを防ぎ、情報へのアクセス性を高めています。

### Books

読書ノートを保存している場所になります。本1冊ごとに1ディレクトリを切っていて、**自分の言葉で**メモを取るように心がけています。

## おわりに

読んでいて気づいたかもしれませんが、ノート術は限りなく**コーディング**に似ています。

求められているものが基本的に同じなのです。

つまり、ノート術を極めていく上で、コーディング技術も高まっていきます。

- このノートの責務は何なのか？
- ノート高凝集にするにはどうすればいいのか？
- どの単位でディレクトリを切っていけばメンテナンスコストは減るのか？
- 後から見返した時、どのように書かれていれば見やすい（読みやすい）のか？

密結合な部分は真似してはいけないですが、概念的な部分では似通っていて、応用ができます。

そして、この発想こそが、過度にディレクトリ構造にしないからこそ生まれる「抽象的な」発想につながるのです。

ノート術を学ぶことは、今後の学習活動・知的生産活動に対しての大きなメリットとなります。

**少ない学習コストで大きなリターンを得る事ができるため、コストパフォーマンスが高いです。**

ぜひこの記事を機会にPersonal Knowledge Managementの世界へ足を踏み入れてはいかがでしょうか？

## こちらも参考に

アトミック・シンキングという書籍です。

LYTの概念を丁寧に解説してくれています。

https://www.amazon.co.jp/dp/B0B8XBRW93


Obsidianを使いこなしている方のブログになります。

ブログ自体もObsidianを使用しているため、構築の際の参考になると思います。

https://minerva.mamansoft.net/Home

PADAoneさんもこの記事より詳細に解説してくれている記事を出しています。

https://zenn.dev/estra/articles/ohzflow-zenn-hugo-obsidian