
2026/02/19 20:54
**Show HN:Mini‑Diarium ― 暗号化されたローカル・クロスプラットフォームジャーナリングアプリ**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Mini Diarium は、Tauri 2、SolidJS、および Rust で構築されたプライバシー優先のローカル専用ジャーナリングアプリです。インターネットに接続せず、データをオフデバイスで保存しません。
すべての日記エントリは AES‑256‑GCM を使用して暗号化され、ランダムなマスターキーが各認証方法によってラップされています:
• パスワード – Argon2 KDF(メモリハードハッシュ)。
• X25519 プライベート・キー ファイル – ECIES(ECDH + HKDF‑SHA256 + AES‑GCM);64文字の16進数ファイルは SQLite データベースに入ることはありません。.keyアプリはデバイスごとに複数のキー スロット、リッチテキストエディタ、カレンダー ナビゲーション、およびアンロック時に自動バックアップ(ローテーション付き)をサポートします。インポート/エクスポート機能は Mini Diary JSON、Day One JSON/TXT、jrnl JSON への対応と JSON/Markdown 出力が可能で、テーマも付属しています。
キーボードショートカット(Ctrl / ⌘ 組み合わせ)はナビゲーション、設定、統計情報、インポート/エクスポート、および日付ジャンプを網羅しますが、現在の既知の問題セクションでいくつかは動作していません。
クロスプラットフォームリリースは Windows(.msi / .exe)、macOS(.dmg)および Linux(.AppImage または .deb)用に提供されます。インストール時の注意点として SmartScreen、Gatekeeper、およびチェックサム検証があります。ビルド成果物は
に配置されます。ソースからビルドするには Rust 1.75+、Bun 1.x、および Tauri v2 の依存関係が必要です。src-tauri/target/release/bundle/このプロジェクトはオープンソースで、貢献ガイドライン、リリースノート、および SECURITY.md ファイルが明確に記載されています。パスワード スロットとすべてのキー ファイルを紛失した場合には回復経路がなく、コンテンツは不可逆的に失われます。このアーキテクチャは、他の生産性ツールが完全にローカルでプライバシー中心設計を採用するインスピレーションになる可能性があります。
本文
Mini Diarium
Webサイト: https://mini-diarium.com
暗号化されたローカル・クロスプラットフォームジャーナリングアプリです。Mini Diariumは、すべてのエントリをAES‑256‑GCMで暗号化し、インターネットに接続せず、データがマシンから離れないように設計されています。Tauri 2、SolidJS、およびRustで構築されました。
背景
Mini DiariumはSamuel Meuli の Mini Diary を精神的に継承したものです。元のツールはシンプルでプライベート、ジャーナルアプリとして理想的でしたが、数年メンテナンスされていないため依存関係が古くなっていました。フォークとモダナイズは非現実的だったので、Tauri 2、SolidJS、Rustでゼロから再構築し、同じコア哲学(暗号化、ローカルのみ、最小限)を保ちつつ、より軽量で高速、強力な暗号化と個人的タッチを追加しました。
主な機能
- キー・ファイル認証 – パスワードの代わりまたは併用でX25519プライベートキー・ファイル(.key)からジャーナルを開錠。複数登録可能で、設定画面から管理できます。
- AES‑256‑GCM暗号化 – すべてのエントリはランダムなマスタキーで暗号化。各認証方法はそのコピーを保持し、追加・削除はO(1)で再暗号化不要。
- リッチテキストエディタ
- カレンダーによるナビゲーション
- インポート:Mini Diary JSON、Day One JSON/TXT、jrnl JSON(マージ競合解決付き)
- エクスポート:JSONとMarkdown形式
- テーマ設定
- 自動バックアップ:ロック解除時にローテーション
- 統計情報
- 設定項目:週の最初の日、将来エントリ表示切替、タイトル可視性、スペルチェック、パスワード変更、認証方法管理
- クロスプラットフォーム対応:Windows, macOS, Linux
- ネットワークアクセスゼロ:テレメトリー・解析・アップデート確認なし
アーキテクチャ
ロック解除モデル
Mini Diariumは「マスタキーをラップ」方式を採用。
- ランダムマスタキーでAES‑256‑GCMによりすべてのエントリを暗号化。
- 認証方法がマスタキーをラップ。
- ロック解除時にメモリへアンラップし、セッション中のみ保持。
解除フロー
| 方法 | ステップ |
|---|---|
| パスワード | Argon2鍵導出 → AES‑GCMでマスタキーをアンラップ |
| キー・ファイル | X25519ペア → ECDH → HKDF → AES‑GCMでマスタキーをアンラップ |
マスタキーは平文として保存されることはありません。
システムコンテキスト
すべてローカル実行。
- UI は
を通じて Rust バックエンドと通信。tauri::invoke() - バックエンドはローカル SQLite へ読み書き。
- HTTP クライアント・バックグラウンド同期・テレメトリーなし。
レイヤード構造
Mini Diarium はレイヤー構成(詳細省略)を採用しています。
エントリの保存
- コンテンツはマスタキーで暗号化。
- 暗号化データを
テーブルへ格納。entries
インストール
プラットフォーム別に最新リリースをダウンロードしてください:
| プラットフォーム | フォーマット |
|---|---|
| Windows | または (NSISインストーラー、管理者権限不要) |
| macOS | |
| Linux | または |
インストール時の注意
- Windows – Windows SmartScreen が警告を表示する場合があります。「詳細情報」をクリックし「実行」を選択。Mini Diarium はオープンソースで、ビルドはソースから再現可能です。
- macOS – Gatekeeper が最初の起動時に「破損しているため開けません」とブロックする場合があります。アプリを Applications にドラッグした後、ターミナルで次を実行:
その後通常通り起動(1 回限り)。xattr -cr "/Applications/Mini Diarium.app" - Linux – コード署名不要。インストール前に SHA256 チェックサムを
と照合してください:checksums-linux.txtsha256sum Mini-Diarium-*.AppImage # checksums‑linux.txt と比較
クイックスタート
- Mini Diarium を起動。
- パスワードを作成(忘れた場合は回復不可)。
- 最初のエントリを書き込み、タイプするたびに自動保存されます。
で日付切替、またはカレンダーの日付クリックで移動。Ctrl+← / Ctrl+→- 作業終了時にジャーナルをロック。
キー・ファイル認証
Mini Diarium は X25519 プライベートキー・ファイル(
.key)で開錠できます。パスワードの代わり、または併用して利用可能です。
キー・ファイルを使う理由
| シナリオ | 効果 |
|---|---|
| 物理的第二要素 | を USB ドライブに保存し、ドライブ接続時のみ開錠。アプリ、電話、OTP コード不要。 |
| パスワードマネージャ統合 | を安全な添付ファイルとして保管し、パスフレーズを覚えずに開錠。 |
| 複数機器 | 各機器ごとにキー・ファイルを登録。個別に無効化でき、他の認証方法やエントリは影響なし。 |
| 共有アカウント(複数鍵) | ラベル付きで複数キーを登録し、1 つだけ削除しても他は安全。 |
動作原理
各認証方法は、すべてのジャーナルエントリを暗号化するランダムマスタキーの暗号コピーを保持します。キー・ファイルの場合、X25519 ECIES を用いてラップします。
- マスタキー(256ビット)はジャーナル作成時に一度生成され、その後変更はありません。
- 設定で X25519 ペアを生成し、プライベートキーを
ファイル(64 文字 hex)として保存。公開鍵のみデータベースに保持します。.key - 公開鍵がマスタキーをラップ:一時的な DH キー交換で一次秘密を得て、HKDF‑SHA256 によりラッピングキーを導出し、AES‑256‑GCM でマスタキーを暗号化。
- 生成されたバイナリは
テーブルにパスワードスロットと共に保存されます。auth_slots
開錠時には Mini Diarium が
.key ファイルを読み取り、逆に ECDH を実行してマスタキーをアンラップ。パスワードは不要です。プライベートキーはデータベースに入らず、公開鍵だけでは解読できません。不正または改ざんされたファイルは AES‑GCM の認証で拒否されます。
キー・ファイルの設定
- Preferences → Authentication Methods を開く。
- 「Generate Key File」をクリック。
ファイルを USB ドライブ、パスワードマネージャの安全なメモ、暗号化フォルダなど自分だけがアクセスできる場所に保存。.key- 現在のパスワードで登録を承認。
- スロットにラベル(例:「USB ドライブ」や「ノートPC」)を付ける。
以降、ログイン画面でキー・ファイルモードに切替えて
.key ファイルを選択すれば開錠できます。削除したい場合は Preferences → Authentication Methods から該当スロットを消去(最後の認証方法は必ず残します)。
キー・ファイルはバックアップしてください。 SSH プライベートキーと同様に再生成できません。パスワードスロットとすべてのキー・ファイルが失われた場合、回復手段はありません。
キーボードショートカット
| アクション | ショートカット |
|---|---|
| 前日へ移動 | |
| 次日へ移動 | |
| 本日へ移動 | |
| 日付指定 | |
| 前月へ | |
| 次月へ | |
| 設定 | |
| 統計 | |
| インポート | |
| エクスポート | |
macOS では
Cmd を使用。
ソースからビルド
必要条件:Rust 1.75+, Bun 1.x, Tauri v2 のシステム依存パッケージ。
git clone https://github.com/fjrevoredo/mini-diarium.git cd mini-diarium bun install bun run tauri build
ビルド成果物は
src-tauri/target/release/bundle/ に生成されます。
技術スタック
- Tauri 2 – デスクトップアプリフレームワーク(Rust バックエンド、Web フロントエンド)
- SolidJS – リアクティブ UI フレームワーク
- Rust – バックエンドロジック・暗号化・データベース
,x25519-dalek
,hkdf
– キー・ファイル認証用 X25519 ECIESsha2- SQLite – ローカル暗号化済みデータベース
- TipTap – リッチテキストエディタ
- UnoCSS – ユーティリティファースト CSS
- Kobalte – アクセシブル UI プリミティブ
既知の問題
- 多くのキーボードショートカットが動作していません(issue はリポジトリで追跡中)。
コントリビューション
CONTRIBUTING.md を参照し、セットアップ手順・開発フロー・規約を確認してください。
リリース
メンテナー向け:
docs/RELEASING.md にステップバイステップのリリース手順があります。
セキュリティ
SECURITY.md でセキュリティモデルと脆弱性報告方法を説明しています。
クレジット
Francisco J. Revoredo が愛情込めて制作(Claude Code の少しの助けもあり)。