やる気がストロングZERO

やる気のストロングスタイル

俺専用の最強メモアプリを作ってる(メモった内容を後から探すのムズい問題の解消)

メモって難しい。
メモる事自体は難しくない。
メモった内容をあとから参照するのが難しい。

どこに書いたか忘れる問題

最近メモった内容であれば問題ない。
どこにメモったか覚えているのですぐ見つかる。

でも「1年前に着手していた作業の関連資料を置おいてある共有ディレクトリのパス」をどこにメモったかなんて覚えてない。

evernoteを使っていての不満

僕は今までの多くの期間をevernoteを使ってメモってきたが、最近は使用に制限がかかってきて微妙(有料版にすればいいのだが)
Notionに移行しようかと思ったが、なんか失われているデータがあり既存メモが上手く移せなかった。
プラットフォームに依存していると苦労せず複数端末から同じデータを共有できるのは良いんだけど、こういった問題で積み重ねてきたメモ資産が失われてしまう可能性があるのが微妙だと感じた。

evernoteには検索機能が付いているので簡単に目的の情報を見つけられるかと言えばそうでもなかった。
いつもいい感じの検索ワードが思いつかず、検索をかけても候補が大量にヒットしてしまい目的の情報を探せないことが頻繁だった。

例えば、
「1年前に着手していた作業の関連資料を置いていた共有ディレクトリのパス」を探したい。
どういうワードで検索すればいいのか思いつかない。パパっと走り書きメモしている程度だろうから、気の利いたラベルを付けている事も期待できない。
覚えているのは「1年前くらいにやってた作業のメモに書いているかも」くらいの情報しかない。

じゃあその当時のメモを探しに行くが、create日を見ればいいのか、update日を見ればいいのか?
update日は更新されると変わってしまうので、create日で見るしか無い。
その辺りのメモを見ると、関連しそうなメモが複数ある事がわかる。
「~~の問題の検討」
「~~についての打ち合わせ」
「~~のテスト内容」
「~~のスケジュール」
などなど。

メモを書く時にルールを設けてなかったので、都度都度新規メモが作成されている感じ。
目的の情報を探すにはこれらメモを一つ一つ開いて探していくしか無い。

さらには、そのメモはevernote外の可能性もある。
メモったのは社内ドキュメントかもしれないし、github issueかもしれないし、slackのtimesかもしれない。

こういう時いつも心が折れるのは「そもそもメモってないのかもしれない」という事。
探すコストが高いほど「メモ内を探すよりも、勘で共有ディレクトリ内を探し回ったほうが早いのではないか?」みたいな考えが頭をよぎってメモを探す作業にブレーキがかかる。

探せないならメモる意味もない気までしてくる。

これではイカンと、メモのベストプラクティスを探し始めた。

ChangeLogメモを参考に全て1ファイルでメモっていく事にトライした

「探せないメモ」はメモの意味がないと思ったので「探せるようにメモを取ろう」と考えた。

上記の反省から「ここを探して無ければ無い!」という状態を作るため、基本的にはあちこちにメモるのをやめた。
あちこちにメモる必要がある場合も自分のメモからリンク等で辿れるようにした。

横着プログラミング 第1回: Unixのメモ技術
この記事を読み「ChangeLogメモ」というものを知り実践してみた。

メモをローカルのtextファイルに書いていく。ファイルは分けず、1ファイルにどんどん追記していく。
日付を切り、その日やったことや検討したこと、覚えておくことを全部そこに書いていった。

ただこれも自分には合わなかった。
もしかしたらunixのtext操作を使いこなせる人には問題ないのかもしれないが自分には制御しきれなかった。

「探している情報はこのファイル内にある(この1ファイルしか無いから)」というのは良かったが、とにかく全てがそこにある為関係ない情報が邪魔になる。

インデントで区切っているのでvimの機能で畳み込みを駆使してみたが、インデントルールはメモのフォーマットの自由さを制限するし、必ずしも守られているわけでもない為あまり上手くいかなかった。

かつ、日毎に脈略なく書いているので、目的の作業に関連するメモ全体を収集するのも難しかった。

自分はどういうものを求めているのかを考えた

自分がメモ内からなにか情報を探すとき、どういう方法であれば見つけられるのかを考えた。

まず「その情報がいつぐらいに行っていた作業に関連するのか」はわかる。
だから、その当時の時期に書かれた作業メモが探せるようになっていてほしい。

そして、その作業に対するメモは1つであってほしい。
いくつもあると「どのメモ内にあるか」探すのが大変だし、どのメモとどのメモが同じ作業に関連するメモなのか判断するのが煩わしい。

更にいうと、雑多な思考まとめ用のメモと、清書メモを分けたい。
決定事項をメモる場所と、それに至るまでの検討案など、思考の流れを雑多にメモったものが欲しい。

イメージ的にはこんな感じ。

#それぞれのメモには「雑メモ」と「清書」が存在する。  
2020-01-03 に行った作業
    Bに関する作業メモ

2020-01-02 に行った作業
    Aに関する作業メモ => どれを開いても同じ「Aに関する作業メモ」の内容が開く

2020-01-01 に行った作業
    Aに関する作業メモ => どれを開いても同じ「Aに関する作業メモ」の内容が開く
    Bに関する作業メモ
    Cに関する作業メモ

2019-05-23 に行った作業
    Aに関する作業メモ => どれを開いても同じ「Aに関する作業メモ」の内容が開く
    Zに関する作業メモ

探す時は以下のような流れになる。

  • 確か2020年の1月頃に「Aに関する作業」をやってたので(これは覚えている)その辺りの日付を確認すると「Aに関する作業メモ」が見当たる。
  • 数日に渡って作業しているが、どれを開いても同じメモが開くので、その中から探す。無ければメモってない。

これはやろうと思えばevernoteでも出来る。ノートとリンクを上手く使えばいい。
ただし、その操作作業がめんどくさくこの辺りの操作に最適化されたUIがほしかった。

自分で作った

github.com

ターミナルで動作するアプリとしてgoで作った。(こういう物はcuiというのか?guiというのか?)
ターミナルアプリにしたのはメモるのにvimを使いたかったことや、簡易に実装したかったから。

上記githubのReadmeを見ればどういう物かイメージはわかると思う。

構築上のこだわりポイント

データは生textで保存している。(~/rshinmemo/以下)
たとえrshinmemoを使うのをやめてもデータはただのtextなのでどうとでもできる。

構成はクリーンアーキテクチャを参考にしていて、viewとドメインとデータIOを分離してある。
だから、これをもとにwebUI版とか、データホストをDBにするとかもできる。気が向いたらlocalでホストするwebUIアプリの機能も追加するのも面白いかも。

とりあえず自分でも使い始めているがまだまだ機能が足りない。バグもある。
コツコツ時間を使って作り上げていこうと思う。

追加した機能などはtwitterで発信しようと思うのでもし興味ある人はフォローしておいてくれるといいかも。

twitter.com