HN公開:オフラインファースト・暗号化ノートアプリ Unforget
(unforget.computing-den.com)- Unforgetは、まずローカルでノートを書き、暗号化された同期で続きを書けるミニマルなノートアプリで、プライバシーとデバイス間の使いやすさを両立している
- Progressive Web App方式のため、ブラウザ・デスクトップ・モバイルで利用でき、Electron.jsなしで動作する
- Markdownでの作成、JSON形式のワンクリックエクスポート、公開API、セルフホスティングとクラウドの選択肢を提供する
- 無料登録で完全に暗号化されたクラウドバックアップと同期を利用でき、メールアドレスや電話番号は不要
- Google Keep、Apple Notes、Standard Notesからのインポートに対応しているが、インストール可否と方法はブラウザによって異なる
オフラインファーストのノートとデータ制御
- Unforgetはミニマルなオフラインファーストのノート作成アプリで、エンドツーエンド暗号化された同期を提供する
-
アプリの形態と利用環境
- Progressive Web Appとして、ブラウザ、デスクトップ、モバイルで利用できる
- Electron.jsなしで動作し、任意のワンクリックインストールに対応する
- プライバシーファースト設計を掲げ、MITライセンスのオープンソースとして提供されている
-
作成・移行・エクスポート
- Markdownでの作成に対応する
- Google Keep、Apple Notes、Standard Notesからインポートできる
- ノートデータをJSON形式でワンクリックエクスポートできる
-
同期と拡張
- 無料登録により、ノートを完全に暗号化された状態でクラウドにバックアップし、複数デバイスで同期できる
- 登録にはメールアドレスや電話番号は不要
- セルフホスティングとクラウドの両方の選択肢を提供する
- 公開APIを通じて独自クライアントを作成できる
ブラウザ別のインストール方法
- Unforgetはブラウザから直接利用でき、インストール方法は環境ごとに異なる
-
インストール対応
- Chrome: URLバーのインストールアイコンを使用
- Edge: URLバーのインストールアイコンを使用
- Android Browser: メニュー → Add to Home Screen
- Safari Desktop: Share → Add to Dock
- Safari iOS: Share → Add to Home Screen
- Firefox Android: URLバーのインストールアイコンを使用
-
インストール制限
- Firefox Desktopではインストールできない
1件のコメント
Hacker Newsのコメント
オフラインファーストのPWAを作った経験がどんなものか気になる
Webを配布手段としてだけ使い、ブラウザを実行環境として使う発想は魅力的だが、ローカルストレージまわりの細かな厄介さが気になる
データが
~/.app/app.datのようなファイルとして見えるわけではないので、「見えないと忘れてしまう」感じがあるし、ブラウザ更新で突然消える可能性や、Webの基本モデルでスキーマのバージョン管理を扱う複雑さも引っかかる新しいコンピューターへ移す際のデータ移植性も問題で、GitHubアカウントさえあればサーバーなしで配布できる点は魅力的だが、データ面はまだ不安定に見える
SQLiteのようなものがない点はひとまず置いておくとしても、SQLiteをWebAssemblyの塊としてまとめる方式にはどうにも乗り気になれない
ただし、複数キーでストアにインデックスを作るときに各キーを昇順/降順で指定できないといった面倒な制限がある
PWAをホーム画面に追加してインストールしているなら、ブラウザが更新などを理由にIndexedDBを消してはいけないし、実際ブラウザ各社もそれを守っているように見える
PWA開発の経験は全体として賛否が分かれ、アプリの種類に大きく左右される。暗号化されたクラウドバックアップと同期が可能なメモアプリならPWAが最善かもしれないが、ファイルシステムアクセスのようにプラットフォームとより深く統合する必要があるならPWAは避けたい
もう一つの問題はiOS Safariで、バックグラウンド同期やオフラインのプッシュ通知などPWA機能が多く欠けており、今後も対応される可能性は低そうに見える
特定のアプリでPWAを検討しているのか気になる
普段でも腹立たしい挙動だが、サーバー側のバックアップがなければ単なる苛立ちでは済まない
この注意点が
localStorageにも当てはまるのかははっきりしないが、経験上 IndexedDB には当てはまり、Electronアプリでもそう見えたかなりうまく動くが、欠点はユーザーがアプリを使うたびにファイルやディレクトリを再選択しなければならず、ファイルピッカーを「既知のディレクトリ」以外の特定ディレクトリから開始させる方法がないことだ
~/.app/app.datのようなファイルとして置く方式が可能になっている参考: https://developer.chrome.com/docs/capabilities/web-apis/file...
better-sqlite3[0] を使い、データベースをprivate/unforget.db[1] というファイルに保存しているように見えるSQLiteの経験がないので、そのファイルが
localStorageと同じくらい揮発的なのかは分からない[0] https://www.npmjs.com/package/better-sqlite3
[1] https://github.com/computing-den/unforget/blob/master/src/se...
良さそうに見える。一つ提案すると、メモ作成の流れをもっと明確に見せるとよさそう
タイトル付きのMarkdown文書がフォルダー/階層構造で整理される方式なのか、タイトルなしまたは任意の「カード」がタグで整理される方式なのか、あるいは追記し続ける長いMarkdown文書なのかがまだはっきりしない
それぞれ主流のメモシステムに似たワークフローなので、どの流れを設計し最適化したのか理解したい
Google Keepユーザーから始まったという手がかりは役立つが、Homebrewのテキストファイル、Simplenote、Obsidianなどを使ってきたし、EvernoteやOneNoteの概念もある程度分かるので、使い方を示す道しるべがもう少しあるとよいと思う
手短に答えると、たいていは数行やToDoチェックボックス程度のごく小さなメモを保ち、アイデア一つにつきメモ一つを置く。ただし、あるアイデアが数日にわたって膨らめば、そのメモもずっと大きくなり得るし、メモサイズの制限はない
標準的なMarkdownのように
#でメモのタイトルを指定でき、1行目の後に空行を入れると1行目が自動的にタイトルになるタグという概念は別にないが、
#someTagと書いてそのまま#someTagを検索できる。検索機能は全メモに対する単純な部分文字列検索で、ステミングのような高度な機能はないPriavcy→Privacy旅行中にGoogle Keepへメモしようとして、ときどきオフラインでは使えないと気づいた記憶がある
どのブラウザを使っているのか気になる
GitHub falvored→GitHub flavoredメモが重くなってきたときに、https://simplemde.com/ のようなものを統合する予定があるのか気になる
表などを含むメモであれば、Markdown 構文を常に意識するより、よりシンプルな WYSIWYG エディタのほうを好む
これも一度試してみるつもり
すばらしい仕事で、今後さらに発展してほしい
Joplinを思い出したが、このアプリをどんな方向に持っていきたいのか気になる
たとえばワークフローが十分に速いと感じられなかった。アプリを開いて、せいぜい一度タップしたらすぐ入力を始められるべきだし、メニューに移動したり別のボタンを押したりせずに複数の ToDo 項目を入力できるべきだ。デスクトップでは、いずれにせよ全面的にキーボード中心であるべきだ
つまり UI が邪魔にならないことを求めていて、多くのメモアプリはこの点を見落としていると思う
方向性としては、他のアプリからもっと簡単に移行できるようにしたい。すでに Google Keep のインポートはあるが、もっと増やす必要がある
公開 API があるので、Emacs、VS Code、Vim のクライアントや統合も出てくるといい
それ以外では、現時点で自分のニーズはほぼすべて満たしている
より良い 構造化された知識ベースをいつも探していて、普段は Electron アプリやデスクトップ JavaScript を避けているが、最も多くの実験はそちらから出てくるように思う
JavaScript アプリであれば、Mermaid ダイアグラム対応を検討したことがあるのか気になる。重くはあるが、最近 Joplin をメモ用に使っている理由は、Mermaid 構文が単なる Markdown と比べて状況を一変させてくれたからだ
https://mermaid.js.org/
最近の Android メモアプリにも同じようなもどかしさを感じていたが、かなり優れたアプリを見つけたので紹介したい
Zettel Notes[1] というアプリで、完全オフラインで、複数の同期オプションに対応しており、メモはディレクトリに保存されるシンプルな Markdown ファイルだ
[1] https://play.google.com/store/apps/details?id=org.eu.thedoc....
セルフホスト可能で、モバイルとデスクトップの両方で見栄えのよいメモアプリをいつも探している
いつか Docker コンテナを配布する予定があるのか気になる
すばらしい。ネイティブアプリについてもっと教えてもらえるか気になる
Apple Notes のように ネイティブで、軽くて速いものを探している
古い iPhone で長く直接使ってきたが、軽くて速い
インストールするには Safari で「共有」→「ホーム画面に追加」に進めばよい
同期には何を使っているのか気になる
いくつかの CRDT ソリューションを調べたが、何を使うべきか確信が持てず、
package.jsonでは特定の CRDT や同期ライブラリも見つけられなかった自前で同期しているなら、競合はどう処理しているのか気になる
if (a.modification_time > b.modification_time) ...これがすべてだ。他の機能と同じく、もともとは CRDT を実装しようとしていたが、実際には惜しくないと気づいた
同じメモを複数ユーザーが編集する共同編集エディタではないので、CRDT はそれほど有用ではない
個人向けメモアプリで CRDT が必要になるのは、複数のデバイスがすべてオフラインの状態で同じメモを同時に編集するときくらいだと思う