3 ポイント 投稿者 GN⁺ 2024-06-13 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-06-13
Hacker Newsのコメント
  • オフラインファーストのPWAを作った経験がどんなものか気になる
    Webを配布手段としてだけ使い、ブラウザを実行環境として使う発想は魅力的だが、ローカルストレージまわりの細かな厄介さが気になる
    データが ~/.app/app.dat のようなファイルとして見えるわけではないので、「見えないと忘れてしまう」感じがあるし、ブラウザ更新で突然消える可能性や、Webの基本モデルでスキーマのバージョン管理を扱う複雑さも引っかかる
    新しいコンピューターへ移す際のデータ移植性も問題で、GitHubアカウントさえあればサーバーなしで配布できる点は魅力的だが、データ面はまだ不安定に見える
    SQLiteのようなものがない点はひとまず置いておくとしても、SQLiteをWebAssemblyの塊としてまとめる方式にはどうにも乗り気になれない

    • Webスタックには確かに細かな厄介さが多いが、IndexedDBはかなり安定して動いてきた
      ただし、複数キーでストアにインデックスを作るときに各キーを昇順/降順で指定できないといった面倒な制限がある
      PWAをホーム画面に追加してインストールしているなら、ブラウザが更新などを理由にIndexedDBを消してはいけないし、実際ブラウザ各社もそれを守っているように見える
      PWA開発の経験は全体として賛否が分かれ、アプリの種類に大きく左右される。暗号化されたクラウドバックアップと同期が可能なメモアプリならPWAが最善かもしれないが、ファイルシステムアクセスのようにプラットフォームとより深く統合する必要があるならPWAは避けたい
      もう一つの問題はiOS Safariで、バックグラウンド同期やオフラインのプッシュ通知などPWA機能が多く欠けており、今後も対応される可能性は低そうに見える
      特定のアプリでPWAを検討しているのか気になる
    • ブラウザでアプリを作る人は、ディスク容量が不足したときに多くのブラウザがWebサイトのストレージの一部を捨てることがある点に非常に注意すべきだ
      普段でも腹立たしい挙動だが、サーバー側のバックアップがなければ単なる苛立ちでは済まない
      この注意点が localStorage にも当てはまるのかははっきりしないが、経験上 IndexedDB には当てはまり、Electronアプリでもそう見えた
    • 最も安全なオフラインストレージは、ブラウザのファイルシステム(https://developer.mozilla.org/en-US/docs/Web/API/File_System...)を使ってデータをブラウザの管理外に置く方式だと思う
      かなりうまく動くが、欠点はユーザーがアプリを使うたびにファイルやディレクトリを再選択しなければならず、ファイルピッカーを「既知のディレクトリ」以外の特定ディレクトリから開始させる方法がないことだ
    • Chromium系ブラウザでは、今ではデータを ~/.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 を検索できる。検索機能は全メモに対する単純な部分文字列検索で、ステミングのような高度な機能はない
    1. 自前で運用できるメモアプリの選択肢は、多ければ多いほどよいと思う
    2. デモページの誤字: PriavcyPrivacy
    3. あるブラウザで “Your browser does not support service workers. Please use another browser.” というエラーが出る理由が気になる。回避できるのか、それともサービスワーカーの利用がこのアプリの差別化に不可欠なのか知りたい
    • サービスワーカーがなければ、もうオフラインでは動作しなくなり、それが中核機能の一つだ
      旅行中にGoogle Keepへメモしようとして、ときどきオフラインでは使えないと気づいた記憶がある
      どのブラウザを使っているのか気になる
    • もう一つ小さな誤字: GitHub falvoredGitHub flavored
  • メモが重くなってきたときに、https://simplemde.com/ のようなものを統合する予定があるのか気になる
    表などを含むメモであれば、Markdown 構文を常に意識するより、よりシンプルな WYSIWYG エディタのほうを好む

    • WYSIWYG エディタは入れたいが、初期テストではすべてのプラットフォームでうまく動くものを見つけられなかった
      これも一度試してみるつもり
  • すばらしい仕事で、今後さらに発展してほしい
    Joplinを思い出したが、このアプリをどんな方向に持っていきたいのか気になる

    • Joplin も使ってみてかなり気に入っているが、Electron アプリである点以外にもいくつか問題があった
      たとえばワークフローが十分に速いと感じられなかった。アプリを開いて、せいぜい一度タップしたらすぐ入力を始められるべきだし、メニューに移動したり別のボタンを押したりせずに複数の 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....

    • Zettel Notes はおすすめできる。SourceHut との Git 統合は少し厄介だったが、一度設定してしまえばすばらしく、自分が使う Org の機能もほとんど対応している
  • セルフホスト可能で、モバイルとデスクトップの両方で見栄えのよいメモアプリをいつも探している
    いつか Docker コンテナを配布する予定があるのか気になる

    • デプロイがもっと簡単になるなら、Docker コンテナを出すのもよいと思う
  • すばらしい。ネイティブアプリについてもっと教えてもらえるか気になる
    Apple Notes のように ネイティブで、軽くて速いものを探している

    • ネイティブアプリではなく プログレッシブ Web アプリ (PWA)
      古い iPhone で長く直接使ってきたが、軽くて速い
      インストールするには Safari で「共有」→「ホーム画面に追加」に進めばよい
  • 同期には何を使っているのか気になる
    いくつかの CRDT ソリューションを調べたが、何を使うべきか確信が持てず、package.json では特定の CRDT や同期ライブラリも見つけられなかった
    自前で同期しているなら、競合はどう処理しているのか気になる

    • CRDT ではなく、もっとずっとシンプルな方法を選んだ
      if (a.modification_time > b.modification_time) ...
      これがすべてだ。他の機能と同じく、もともとは CRDT を実装しようとしていたが、実際には惜しくないと気づいた
      同じメモを複数ユーザーが編集する共同編集エディタではないので、CRDT はそれほど有用ではない
      個人向けメモアプリで CRDT が必要になるのは、複数のデバイスがすべてオフラインの状態で同じメモを同時に編集するときくらいだと思う