mocchaso note

サーバーエンジニアが何か色々呟いているところ。

Notionのデータベースによるメモ管理方法を学んだ話

前回のメモアプリの話の続きになります。

VSCodeでフォルダ管理していた作業メモ・Tipsメモを、
Joplinに一通り移植し終えて、Notionに移行しようとしている状態です。
この時に、「Notionのメモやデータベースは、こんな風に管理すると良いよ」
といった学びを得たので、これもアウトプットしてみます。

今回得た学びを基に、Notionへの移行も、
少しずつでもやっていければと思っています。



フォルダ形式とタグ形式について

どう違うの?

フォルダ形式は、1つのページを作って、ページを追加していくというやり方。
3点目の動画では、「ディレクトリ型情報管理」と表現されていました。
フォルダ形式において、 複数のカテゴリに属するようなメモは、
どのフォルダにいれたら良いかを判断しづらくなってしまいます。
(例えば、「開発」「思考」等、パッと思いつきのメモは、
1つのカテゴリのみに絞ることが難しい)

一方で、フォルダ形式でもメリットはあります。
「複数人で管理していても、情報の統制が取れやすい」
という点です。

タグ形式は、「開発」等のようなタグを作っておいて、
メモ1個にタグを適宜追加していく管理の仕方です。

Joplinに移植し始めた当初もフォルダ形式で管理していましたが、
Notionに移行し始める前に、Joplinのメモに関しても、
タグ形式で管理するように変更していました。
タグベースでメモを確認できるようになり、
この時点でもかなり情報を辿りやすくなったと感じました。

使い分け方

「自分だけが見る情報の場合」と、「自分以外も見る情報の場合」で、
Notionの管理方法を完全に分けてしまうのが良いそうです。

自分だけが見る情報に関しては、
書き方やどこに書くかを考えずに、
検索性を重視したいという観点から、タグ形式の方がオススメ。
技術メモや、パッと思いついたことを気軽に書くような
思考メモ等が、例として挙げられます。
(「思い付き」や「突発的なもの」など、情報の粒度が粗いものが多発する)

逆に、自分以外も見る情報に関しては、
一定のルールを設けることが重要であるため、
フォルダ形式の方がオススメとなります。
こちらは、会議の議事録や、
ドキュメント・マニュアル等が、例として挙げられます。

表にまとめると、↓こんな感じです。

形式 情報の入力 検索性
自分だけが見る情報 技術メモや、パッと思いついたことを気軽に書く、思考メモ等 タグ形式 書き方やどこに書くかを考えずに、情報の入力までの時間を最短にしたい 自分だけが最短で探しやすい状態で良いので、最短で情報に辿り着きたい
自分以外も見る情報 会議の議事録や、ドキュメント・マニュアル等 フォルダ形式 書き方やどこに書くかを一定のルールを作る必要がある できるだけ見る人全員が探しやすい状態を作る

Notionのデータベース活用術

主に1点目の参考サイト(動画)の内容になります。
この動画によると、以下の点がカギになってくるようです。

  • メモのデータベースは1つだけで運用する。
  • メモの種類ごとに、タグを作ると良い。
  • Notionのデータベースは、フィルターを使える。
    特定のタグだけを表示する、などの条件を付けると良い。
    → どのタグのフィルターでもメモが表示されて、見つけやすくなる。
  • メモの種類ごとのフィルター結果を、サイドバーに登録するのがオススメ。
    • 手順
      • フィルターしたタブを右クリック
      • 「ビューのリンクをコピー」
      • 新規ページへ貼り付け
      • 「データベースのリンクドビューを作成する」
    • フィルター結果だけが表示されるが、
      裏側は1つのデータベースで繋がっているのがポイント。

タグの種類としては、以下のようなタグが動画内では登場していました。
また、3点目の参考サイト(動画)によると、親タグ・子タグの関連付けは、
データベースの三点リーダから、「サブアイテムをオン」で行えるそうです。

  • 「Inbox」:とりあえずメモを書きたい時、見返す必要の無いもの等、雑なメモを取る時のためのタグ。
  • 「Idea」:色々なアイデアをまとめて入れている。
  • 「Knowledge」:定期的に見返すだろう、と思ったメモはこちらへ。
  • 「Project」:長期的なメモはこちらへ。長い間考えるべきことはここに入れている。

ここまでのやり方だと、
「タグの種類が増えてきた時に管理しづらい」
という課題が残っています。
次のセクションで、その課題に対する
アプローチについて触れていきます。

タグの管理方法

主に2点目の参考サイト(動画)の内容になります。
タグの種類が増えても、管理コストが嵩まないような運用事例が、
この動画では紹介されていました。

大まかな運用方法の事例

ざっくりと、以下のように運用しているとのことでした。
タグ形式は既にちょっとかじっていたものの、
データベースを必要最小限に留めるやり方は斬新でなるほどと思いました。

  • 使用用途:TODO管理、仕事の作業ログ、学んだこと、書いたコードのこと等
    → 全部何でも記録するような使い方
  • Evernoteのタグの考え方を、Notionで再現している。
  • サイドバーが非常にシンプル。
    • データベース1「CABINET」:全てのメモを入れる場所。
    • データベース2「Tag」:メモに紐づく「タグ」をつくる場所。
  • Notionの良さとして、階層を作れる・管理のしやすさがあるが、
    その逆を行くイメージ。

メモをタグで管理するメリット

これらのメリットに関しては、前述の内容と概ね共通していますね。

  • 1つのメモに対して、複数の「タグ」をつけられる。
    → メモの置き場に迷うことが無くなる。
  • CABINETに入れる時は、タグをいっぱいつけるイメージ。
    • 1個のことが多いが、広い考え方をしたものとかであれば、
      沢山つけることもあるとのこと。
  • Notionは、フィルタリングやソートが非常に優秀。
    → ページの階層が無い分、目的のページに行くまでが早い。迷うことが少ない。

ページとタグを別々で管理する理由

  • タグ専用のデータベースを作ると、管理がしやすくなる。
  • タグをそのまま使うと、順番を変えたり、管理・修正が難しい・・。
  • より管理のしやすいマルチセレクトになる。

具体的なタグの作り方

  • まずは、人生すべてのカテゴリーをタグとして書き出してみる。
    • 大まかなタグに分けてみる。 開発、仕事、考え事、勉強など。
  • メモのカテゴリーを考えるのが最初は少し難しいかも?
  • タグで管理することでページの場所を変更したり名前を修正するのが簡単。

よく使うメモ、タスク管理について

  • 日常のタスクは1ページに全て書いている。
    データベースをちょっと使っているが、ベースはほとんどテキスト。
  • 記録として残すために、タスクのメモは毎日複製する。
  • タスクの優先度を見える場所に置いておくと分かりやすい。

どんなタイミングでメモを作る?

大枠で分類して、気軽にメモを作る。
タグを管理しやすいデータベース構成になっているので、
そこから適宜、タグを調整していくでも良い、という考えのようです。

「タグとかは一旦そこまで拘らなくて良い。
後から調整するでも良いので、とりあえずメモを書いていこう」
という思考であれば、アウトプットするハードルも下げられそうだと思いました。

  • タスク管理のページやパッと思いついたタイミングで気軽にメモを作る。
  • 考えることは全てNotionに書いて整理・・!仕事もプライベートも。
  • メモを一か所で管理すると、すぐ書き始めることができる。
  • いかに早くメモを書き始めるかが一番意識していること・・!

参考サイト(というか動画)

メモアプリについて色々調査・検討した時の話

今回は、メモアプリについて色々調査・検討した時の話です。

だいぶ前にTwitterで垂れ流していた内容ですが、
せっかく色々調べたので、再整理してアウトプットしてみようと思います。



ざっくりまとめ

  • メモアプリの種類を色々調べて、一旦、Evernoteをちょっと試してみる。
    • Evernoteも有力候補に入りそうだと感じる。
  • Joplinの存在を同時期に知って、Joplinについても調べてみて、同じく試してみる。
  • Joplinを暫く使い続けた結果、ネックに感じる部分がJoplinでもいくつか出てきたため、
    結局Notionに移行してみることに。
    • VSCode側でしか書いていなかった分のメモも、つい最近ようやくJoplinに移植完了。
    • (Joplinに移植し始めた当初もフォルダ形式で管理していたが、ついでに、タグ形式で管理するように変更)
    • 3年強分書き溜めてきたメモも、ある程度慣れたJoplin内でまとめて確認できるようになった状態。
    • (Notionに慣れるところから、また地道にやっていければなと)

詳しい話

メモアプリを色々見てみようと思った経緯

メモアプリについて調べ始める前までのメモ環境は、↓こんな感じでした。

  • VSCodeで、「Tips_YYYYMMDD」のような命名規則に沿って、txtファイルに記述。
  • それらのtxtファイルをディレクトリ構造で管理。
  • 暫く経った後に、Markdown形式に書式を変更。

VSCodeの検索機能で、フォルダ内をまとめて文字列検索できるような環境にしていましたが、
「技術の分野ベースで検索しづらい・・」と感じるようになり、
メモアプリについて調べてみようと思い立ちました。

事前調査

この辺りの話です。

メモアプリの種類を色々調べる

Evernote, Notion, Craft, UpNote, Bear, OneNote, Google Keep, Scrapbox, Ulysses, Obsidian, Drafts, GoodNotes, Roam Research, …

とにかく色々ありました。
「1個に絞るの難しいし、特徴に応じて使い分けるのも良いかも?」
と、この時点では考えていました。

Boost Note(Boostnote)についても調べてみた

Boostnote→Boost Noteになった時に、独自のクラウドストレージになったようです。
しかし、無料版は14日間のトライアルだけでした。
2022年5月に無料プランが廃止されていたようです・・。

事前調査も踏まえた上での、個人的な要件・考え

  • 最低限Markdownがあればまあ良い
  • バイス間で共有できる
  • 検索機能を重視したい
  • 入れ子構造でフォルダ管理できると良い
  • ※+無料でもある程度色々できる

→ Evernoteが丸そう?という印象でした。

この時点では、以下のように考えていました。

  • Notionは、Evernote内のメモを綺麗にまとめたい時とかに使い分けられそう。
  • Evernote→Notionで移行する際に、画像やPDFをインポートできないらしいのは辛いけど、開発に関するメモぐらいであれば、まあ何とかなる気はする。
  • 動作重くなって支障が出たりしたら、Notionに切り替えてみるか・・?

ちょっとまだ決め切れておらず、一旦はEvernoteを試してみることに。

まずはEvernoteをちょっと触ってみた

この辺りの話です。

Evernoteをちょこっと触ってみた結果、
Evernoteも有力候補に入ってきそうだと考えていました。

EvernoteとNotionを比較する

この辺りの話です。

【Notion vs Evernote 結局どっち?】どちらがいいのか迷っている方向けに
こちらの記事を見ながら、以下のように考えていました。

  • 技術メモぐらい緩めなものであれば、やっぱりEvernoteぐらい手軽に記録できる方が良さそう?
    (タグを活用すれば、深い階層構造も一応実現できるし)
  • Notionは、もっと丁寧にまとめたい時とかで使い分けるのもありな気がしてきた。

Joplinの存在・特徴を知る

メモアプリの調査過程をTwitterで垂れ流していたところに、
Joplinというメモアプリの存在・特徴を教えていただきました。

特徴

  • 基本データはローカルに保存される
  • 利用の際にユーザー登録はいらない
  • 『Joplin Cloud』は必要な場合サインアップすればよい(有料)
  • 検索機能はある
  • ノートの書式はMarkdownである
  • バイス間の同期はDropboxなど一般的なクラウドサービスを利用することで実現可能
  • なお、同期先としてFile system(ローカルドライブ)も指定できる
  • ノートブックを階層にできる
  • プロファイル機能があり、用途別に専用のメモ環境を用意できる

容量や接続端末数の制限を気にする必要が無かったりと、
Evernoteよりも自由度高そう。
(Evernoteの代替アプリとして開発されたもののようなので、
それはそうかもしれないけど)

Evernote→Joplinで移植する場合の印象等

この辺りの話です。

Joplinについても色々調べてみて、
Evernote→Joplinの移植もわりとやりやすそう
という印象も受けたため、Joplinもひとまず試してみることとしました。

  • EvernoteのWeb版だと、エクスポート機能が無い。デスクトップ版では利用可能。
    • デスクトップ版でないとエクスポートできないのは、やはりちょっと不便。
      (Web版を使えば良いだけではあるけど)
  • タグ等も含めてまとめてエクスポートできるから、Evernote→Joplinの移植はわりとやりやすそう。

Joplinを適当に色々触ってみて、気づいた点

  • 同期させるDropboxのアカウントは、Joplinのプロファイル毎に分けた方が良い。
    • 複数のプロファイルで同じアカウントを指定・同期すると、ノート等を意図せず消してしまう場合がある。
      • イメージ
        プロファイルDefaultでノートAを作成
        → 同期でリモートにアップ
        → プロファイルhogeを新たに作成し、Default側と同じDropboxのアカウントを指定
        → hoge側で同期し、ノートAを取得
        → hoge側でノートAを削除&同期
        → Default側で再び同期
        → Default側に元々あったノートAが消える
    • チュートリアルのノートも残しておきたい場合は、最初から、Defaultとは別のノートブックを作っておく。
  • Joplinのデータファイルを直接確認したいときは、~/.config/joplin-desktop/database.sqliteの中身を見れば良いっぽい。
  • エクスポート:ノートブックの階層構造も、同じ階層構造のフォルダとして出力してくれる。
  • 現状、モバイル版だとプロファイル機能は無さそう。
  • 同期先が設定済みであれば、同期間隔の設定を「無効」にしていても、Joplin再起動(終了→起動)時には、自動で同期処理が走る。
    • プロファイルの切り替え時も同様。

Joplinを更に暫く使い続けて、気になる点が出てきた

この辺りの話です。

機能自体は、全体的にシンプルで扱いやすいですが、
↓この辺りが気になってきてしまいました。

  • 文字列検索の精度が微妙
  • モバイル版だと、プロファイルを切り替えられないのが地味に不便
  • クラウドストレージ経由で同期させる仕組みが、やっぱり合わないかもと思ってきた
    • 特定のデバイス内で色々更新した場合、他のデバイスで同期するのにどうしても時間がかかる(そんなに長いわけではないけど)
    • もしクラウドストレージ側の容量上限(Dropbox無料版なので2GB)に達した場合のことも、いずれ考える必要がある

個人的に欲しい機能/要件について、改めて整理する

  • 動作が速い
  • 最低限Markdownで書ける
  • ある程度の精度で文字列検索できる
  • 複数台のデバイス間で共有できる&アカウント作成ありでも良いので、楽に同期させたい
  • 容量無制限
  • 入れ子の階層構造でメモを管理可能
  • メモにタグ付け可能

「そうなると、やっぱりNotionか…?」となりましたw

動作については人によって感想が結構違うみたいです。
(マシンスペックやノートの規模によって変わる?)
検索精度もそんな特段良いわけではなさそう。

とはいえ、先輩も結構おすすめしてたし、
とりあえず試してみるのはありかもしれない、と感じていました。

Notionの動作速度・検索周りについて周りに聴いた話

※2023/03/27時点。

  • 「検索は遅くないが、Evernoteの方が検索画面が見やすくて使いやすかった」
    • Notionでは、検索結果一覧でページをクリックするとそのまま移動してしまう
    • (Ctrl押しながらクリックすれば別窓で開けはする)
  • 「Notionでもそこまで困ってない」

結果

Joplinでネックに感じる部分が出てきたため、
結局Notionに移行してみようと考えています。

VSCode側でしか書いていなかった分のメモも、つい最近ようやくJoplinに移植し終えることができました。
(Joplinに移植し始めた当初もフォルダ形式で管理していましたが、
ついでに、タグ形式で管理するように変更しました)

3年強分書き溜めてきたメモも、ある程度慣れたJoplin内で
まとめて確認できるようになったので、
次はNotionでも見れるようにしていければと思っています。
Joplin使用時に気になった点が解消されたら良いなと考えています。
Notionに慣れるところから、また地道にやっていくつもりでおります。

2021年の目標・やりたいことを言語化

2021年にどんなことをやっていきたいのか、ざっと考えていた内容を改めて言語化してみます。
+2020年の振り返りも超ザックリと行おうと思います。
(2021年が始まって1か月経ち、改めて気を引き締める意味も込めて)

2020年の振り返り

夏頃から在宅勤務に切り替わって、オフィスには殆ど行かなくなり、滅多に人に会わなくなりました。
会社でも後輩が出来て嬉しく思っていても、画面越しでしか会ったことが無いという事態に。(ちょっと寂しい)

在宅勤務の雰囲気そのものには、思ったより早めに慣れることができました。
+在宅勤務に切り替わる少し前に、自宅に作業スペースを作っていたおかげで、ある程度整った設備の下で在宅勤務をスタートできたのは良かったです。

仕事の場面においては、認識の間違いが起きないようなコミュニケーションをとるのが難しく感じました。これは今でも感じています。
基本はチャットベースでやり取り(必要に応じてZoomも使用)するため、チャットの文章の構成を今まで以上に気にするようになった気がします。
この辺りは仕事以外の場面でも役立ちそうなので、文章の構成は引き続き心がけていきたいところです。
(ただ、慌ただしい時に文章を作ると構成がおかしくなりがち。そんな時こそ送る前に推敲しなければと)

私生活に関しては、これまでに増して張り合いが無くなってしまいました。
旅行・帰省を断念せざるを得なくなったのはキツかったです。もう暫く辛抱...!
また、業務外の自己研鑽の時間が足りなかったと反省。仕事でエネルギーを使い果たしたのもあるが、休みの日の時間の使い方は要改善...。
時間帯ごとに何をするか、区切りをつけてみようと思います。家にいる時間が飛躍的に増えているので、その時間をうまく活用しなければ。
(趣味の時間も大切にしつつ、メリハリをつける!)

2021年の目標

振り返りの内容を踏まえて、2021年は、有効な時間の使い方をしてよりレベルアップする年にします。
現状の習慣を変えるところが増えてきますが、少しずつでも改善していって、メリハリの付け方の良いバランスをとっていければと思います。

勉強する

  • 仕事に役立つ物以外にも、気になる・やってみたい技術が出てきたら勉強する
  • AIの分野は特に勉強していく
  • 簡単な内容でも構わないのでアウトプットも残していきたい

本を読む習慣をつける

  • 気になる本があったら、積極的に読んでいく
  • 上記と同様、簡単な内容でも構わないのでアウトプットも残していきたい(どんな本だったか・感想等)

健康的な身体を取り戻す

  • 体を柔らかくする:前屈で指先が地面に届くようになるぐらいには柔らかくしたい
  • 筋トレで体重を60kg台に戻す(暴飲暴食による体重増加はNG)

言語処理100本ノック 2020「39. Zipfの法則」

Zipfの法則とは...?

ja.wikipedia.org

平たく言うと、「出現頻度が多ければ、全体での割合が大きい」ということらしい。
言語処理100本ノック-39(pandas使用):Zipfの法則 - Qiita

言語処理100本ノック 2020「36. 頻度上位10語」

※棒グラフの描き方
matplotlib で棒グラフを描く – Python でデータサイエンス

Matplotlibで日本語を表示

設定していないと、↓のように出力されて、豆腐化文字化けする。

/home/mocchaso/anaconda3/envs/develop/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py:211: RuntimeWarning: Glyph 12398 missing from current font.
  font.set_text(s, 0.0, flags=flags)

Matplotlibではデフォルトで日本語に対応していないため、別途設定が必要。

日本語フォントの設定方法

qiita.com

plt.legend()(凡例)に対してもフォントを適用できる。
Matplotlibで簡単に日本語を表示する方法(Windows) | ガンマソフト株式会社

※その他参考サイト
1分で簡単!Matplotlibの日本語対応を徹底解説! - AI-interのPython3入門
matplotlibで日本語を描画 on Ubuntu - Qiita

言語処理100本ノック 2020「30. 形態素解析結果の読み込み」

空文字に対してsplitを適用するとどうなる?

  • 配列に空文字列が1つ入る。
>>> "".split(",")
['']
  • ※分割パターンを指定しないと、何故か空のリストになる。
>>> "".split()
[]
  • ※分割パターンが空文字だとエラーに。
>>> "abc".split("")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: empty separator

0xcc.net

list.clear()の注意点

辞書のvalueにリストを持たせ、list.clear()をすると、辞書内全てのvalueのリストが抹消されてハマりました。

原因

辞書に登録する前のリストの変数(list = [XX, XX, ...])と、辞書に登録した箇所のリストで、オブジェクトのIDが共有されているため。
前者の変数にclear()を適用すると、後者の辞書内のリストにも削除処理がかかってしまうようです。

対策

list.clear()ではなく、空のリストの再代入を行うことで、回避できます。

it-for-pharma.com

WSLにMeCab + NEologdをインストール / Anaconda3上のPythonで使えるように

約2年越しに、↓の回避策です。
MeCabの新語辞書NEologdをインストールできない... - mocchaso note

Windowsでも、WSL (Ubuntu)を使えば、MeCab + NEologdまでインストールできます。
qiita.com

ModuleNotFoundError が出る

$ pip install mecab-python3==0.996.5で解決しました。

原因

Pythonの実行環境であるAnacondaに、mecab-python3がインストールされていないこと(pip3ではWSL上に直接インストールされる) 。

※pip, pip3がインストールされているパスの確認

$ which pip
<home directory>/anaconda3/envs/<env_name>/bin/pip

$ which pip3
/usr/bin/pip3

何故バージョン指定?

2020/07/07時点で最新版の1.0.0をインストールしたら、m = MeCab.Tagger('-Ochasen')RunTimeErrorが発生し、これを解消できなかったため。
GitHubリポジトリでもIssueが挙がっているのですが、1個前のバージョンを明示的に指定・インストールすることで一旦回避。

Pythonコード上でMeCabを使う

新語辞書NEologdを使いたい場合は、そのパスを指定する。

  • MeCabの設定ファイルのパスを確認
$ which mecab-config
/usr/bin/mecab-config
  • MeCabの辞書のパスを確認
$ /usr/bin/mecab-config --dicdir
/usr/lib/x86_64-linux-gnu/mecab/dic
  • 確認したパスから、NEologdの辞書のパスも確認
    /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd