PCとスマホでメモを共有したくていろいろ渡り歩いたが、どれも気に食わないので自分で作る事にした。

GooglePlay: てきすとでっき

個人的には究極のメモアプリが出来たんじゃないかと思っている。 以下背景として考えている思想的な事などを。

追記: PC版も作った github: electron-textdeck

追記: ローカルのファイルを指定してsyncする方が良さそう

GoogleDriveのファイルを直接指定すると、以前は割と長いことそのurlが使えたのだけれど、2021-09-03現在、数日単位で無効になるように変更されたっぽい。

SO: Persisted SAF URI from Google Drive changes after a few days, content is unreachable

という事でローカルのファイルを指定して、Google DriveとはAutosync for Google Drive等の別アプリでsyncする方が良さそう。

バックエンドとしては素のテキストファイルを使う

まずエクスポートとかインポートとか面倒だしPCからgrepしたいので、テキストファイルを使う事にした。 これは昔使ってたhowmとかと同じような思想だが、 基本的に1ファイルなのでchangelogメモに近い。

changelogメモについては以下のサイトを参考の事。 思想的にかなり共有する部分が多い事は分かると思う。 横着プログラミング 第1回: Unixのメモ技術

シンクはされて欲しいが変なサービスのアカウントとか作りたくは無い

テキストでいいんだけどシンクはされて欲しい。 でもその為にアカウントを作ったりログインしたりはしたくない。

「てきすとでっき」では、syncはGoogle Driveなどのクラウドストレージを使う。 だがアプリは一切何を使っているかを気にしない。 だからアプリ側にはsyncのボタンも何も無い。

一方でContent Provider経由で保存するので、何もしないでも自動的にsyncされる。 手動でsyncしたりする手間は無い。 通信が終わるまで待つ必要も無い。勝手にいい感じにsyncされてくれる。 アプリを立ち上げてメモを打つ、以上。

副作用としてたまに書いてすぐにもう一回開くと古いメモが出る事があるが、Google Driveでアプリから開くと良くあるヤツなので使っている人はおなじみで、慣れているだろう。

Content Provider経由で任せるのでこのアプリ自体にはネットワークの権限もストレージアクセスの権限も必要無い。Googleアカウントの何かのパミッションを与えたりする必要も無い。 変なサービスのアカウントも作らなくていいしログインも要らない。

タッチに最適化したUI

メモで大切なのはどういうビューを提供するかだと思う。

タッチで使うので必要な操作に最適化されたUIであって欲しい。

メモなんてテキストファイルで良い、とは思っても、汎用のテキストエディタをメモに使うのはスマホ的には良くない。 何故かというと、カーソル移動はスマホのタッチと非常に相性が悪いから。

一番下にスクロールするのが面倒だし、一番最後にカーソルを移動するのも面倒。 過去のメモを見るのにもスクロールはフリックでやりにくくて使いにくい。

「てきすとでっき」はスマホで標準的なListViewを使ったUIとなっていて、 細かい操作を必要とせずにタッチだけで目的のメモに簡単にたどり着ける。

単なるテキストファイルを空行に区切ってセルとして扱う。 このセル単位の操作というのがおおざっぱなタッチでも誤動作無く快適に使える秘訣。

また、新しくメモを追加する時もNewを押して入力して保存を押すだけ。 twitterなどで新しくつぶやくのとほぼ同じ手間で入力出来ると思う。

PCから簡単にメモを共有したい

URLとかちょっとしたメモをPCから共有したい、 という事が結構ある。

この場合、PC側ではgoogle driveのテキストファイルに追記するだけで良い。 普段使ってるエディタでファイル開いてちょこちょこっと書き足してC-sしてそのままスマホをポケットに入れて出かけられる。

専用のサービスやアプリも要らない。 ログインも要らない(Google Driveは設定されているとして)。 それでいてセキュア。

サービスにロックインされない重要性

メモは長生きする。だいたいは一つのサービスを使い続ける期間よりも長く生き残る。

サービスはアップデートが降ってきたらアプリがクラッシュするようになったりIMEが一文字目で確定するようになってしまったり広告がチカチカ点滅してスクロールがすごく遅くなったりサービスが終了してしまったりして、 メモが取れなくなったりする。

メモは長生きするので、やがてはサービスのそういう事情につきあたる事になる。 だから最初からそういうのにあまり依存しない、維持にもそれほどコストがかからずにファイナンスの必要も無い、 原始的な仕組みを組合わあせた物の方が良いんじゃないか。

さらにローカルPCの時代からwebサービスの時代になって、スマホの時代になる、そういった時代の変化を越えてメモは残るけれど、 それらのプラットフォームの変化に応じて最適なサービスは変わったりするので同じ物を使い続けるのは難しい。

だからストレージとしては共通のテキストファイルを使って、ビューをその時代に合わせて用意するのがいいんじゃないか。 テキストファイルならきっと次の時代も生き残る。 次の時代のビューは、また今の時代の最適な物とも違う。 だからその時に新しいビューを作りつつそれまでのメモも活かせるのが大切と思う。

素早く見れて素早く書ける事

メモアプリで一番大切なのは素早く見れて、素早く書ける事だと思う。

画像が貼れたりテキストのサイズが変えられたり箇条書きがサポートされていたりする代わりに起動が遅くなったりスクロールが遅くなっては本末転倒だ。 たまに起動した時に「データベースの最適化を行っています」とか言われてしばらくメモ出来ないとか最低だ。 だいたいそういった形式はサービスにロックインされがちだし。

それよりはプレーンなテキストしか使えない代わりに素早く見れて素早く書ける方がずっと良い。 メモにおいて早さは大切。たったまま一瞬で取れないと困る事はけっこう多い。

ずっと使い続けるものだから、壊れたりしない、信頼性が高くてシンプルな物である必要があるんじゃないか。