
2026/02/03 19:58
Eigen:ワークスペースの構築
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Eigen – 2か月の余暇で作られた軽量な Google‑Workspace スタイルのスイート
著者は、メール、ドライブ、ドキュメント(Yjs ベースの共同編集器)、連絡先、およびスタッキー(カンバン)を含む概念実証として Eigen を作成しました。フロントエンドには Vite/React + TypeScript、Bun 上で Elysia ルーティング、TanStack Router & Query、Tailwind CSS、および shadcn/ui が使用されています。
各ユーザーのデータは個別のディレクトリに保存され、その裏側にはユーザーごとの SQLite データベースが構築されています。ファイル自体が内容を保持するため、バックアップはディレクトリをコピーすれば完了します。リアルタイム共同編集は、サーバー上で Yjs ドキュメントをメモリに保持し、WebSocket 経由で同期させ、定期的にディスクへ永続化することで実現しています。
現在の MVP は、予定している機能セットの 5 % 未満しかカバーしていません:エンドツーエンド暗号化、カレンダー、スプレッドシート/プレゼンテーション、チーム/組織サポート、プロトコル互換性(IMAP, CalDAV, WebDAV)、バックアップ/移行ツールが欠如しています。未解決の課題は、ユーザーごとのデータベース手法のスケーリング、セキュリティ向上のため Linux システムユーザーへのマッピング、プラグイン/API アーキテクチャ、および WordPress/Mastodon に似た連合型展開モデルです。
今後のステップとしては、ユーザーフィードバックを収集し範囲を洗練させること、コミュニティレビュー用にコードをオープンソース化すること、セルフホスト版とパブリック SaaS オプションの検討が挙げられます。プロジェクトは https://eigen.is にホストされており、ソースコードはオープンソースライセンス下で公開されています。貢献者やスポンサーは reinder@eigen.is まで連絡してください。
このバージョンはすべての主要ポイントを保持し、根拠のない推測を排除し、曖昧な表現を避けつつ明確で簡潔な概要を提示しています。
本文
昨年の春、私は疑問を抱き始めました。
「自分で Google Workspace を作るとしたらどれほど大変なのだろう?」
米国における状況と大型テック企業が持つ力を考えると、ヨーロッパ風の代替サービスは必要だと感じたのです。
もちろん、自前でワークスペースを構築するのは不可能に思えますが、実際に試してみなければ分かりません。
驚くべきことに、Mark の少し手助けもあり、2 か月間の余暇開発だけで動作確認版を完成させました。メール・ドライブ・ドキュメント・連絡先・カンバンボードが揃い、リアルタイム協働も実装されています。ぜひ eigen.is で試してみてください。
「Eigen」はオランダ語/ドイツ語で「自分の」という意味で、全体像をよく表しています。
アプリ一覧
| アプリ | 機能 |
|---|---|
| **eigen | mail** |
| **eigen | drive** |
| **eigen | docs** |
| **eigen | contacts** |
| **eigen | stickies** |
すべて最小限ですが、実際に小さなエコシステムを感じられるほど機能します。
背後で起きていること
迅速にプロトタイプを作るために、NPM パッケージとオープンソースライブラリを活用する道を選びました。これは私が普段避けている手法です。ほかのプロジェクトでは自前でコードを書き、既存のものを再発明することが多いからです。公開した数パッケージも完全に依存関係無しです。
スタックは標準的でモダン(少なくともそれを知っている人の話による)です:
- Bun:サーバランタイム
- Elysia:サーバルーティング
- Vite & React + TypeScript:フロントエンド
- TanStack Router & TanStack Query:ルーティングとデータ取得
- Tailwind CSS と shadcn/ui:UI
実際に思わぬ構成が完成した点
最初はシンプルなアプローチを取りました。各ユーザーごとにディレクトリを作り、SQLite(ユーザー単位)でメタデータや構造化データを管理し、実際の内容はファイルとして保存します。共有データベースもなく、複雑な中央システムも不要です。
これが最も簡単に動くと思ったため選択しました。
この設計には次のようなメリットがあります:
- データ分離 – ユーザーごとのデータは完全に隔離されます。
- バックアップが容易 – ユーザーディレクトリをコピーするだけです。
- スケーラビリティ – 新規ユーザー追加が既存に影響しません。
- カスタムストレージ – それぞれのユーザーが独自のストレージバックエンドを持てる可能性があります。
一方で次のような課題も浮上します:
- 各ユーザーのデータが分離されている中、どうやって文書共有を行うか?
- リアルタイム協働をどのように実装するか?
- ファイルベースデータ全体で検索機能をどう提供するか?
docs と stickies のリアルタイム協働は、サーバ側が Yjs ドキュメントをメモリ上に保持しつつ WebSocket で同期させ、定期的にディスクへ書き込む方式です。全員がドキュメントを閉じるとメモリから消えます。
eigen|drive への複数画像アップロード
eigen|docs の共同編集
今後の展望
2か月間の余暇開発で、思ったより多くが動作しました。これに刺激され、さらに進めていきたいと考えています。本当に機能するか、実用的になるかは未知数ですが、探求したいと思います。
現実チェック
私は MVP のほんの一部しか構築していません―おそらく全体の5%以下です。プロダクションレベルに到達するには何年もの作業が必要です。
欠けている要素
- エンドツーエンド暗号化
- カレンダー機能
- スプレッドシート・プレゼンテーション
- 組織サポート(チーム、共有リソース)
- 標準クライアントとのプロトコル互換性(IMAP, CalDAV, WebDAV)
- バックアップと移行ツール
欠けている機能を実装するだけでなく、次のような根本的な問いに答える必要があります:
- スケーラビリティ – どこまで拡張しても問題ないか?
- シンプルさとセキュリティ – ワークスペースユーザーを Linux システムユーザーと 1:1 にマッピングすることで、より簡素化・安全化できるか?
- 拡張性 – プラグイン/API アーキテクチャをどう設計すれば、第三者が深い統合を書けるようにできるか?
- デプロイモデル – WordPress ライクなモデル:Eigen をセルフホスト(スタートアップが自前で稼働)しつつ、eigen.is は同じソフトウェアを公開する。理想としては異なるサーバー間でも共有・協働できるようにしたい(Mastodon の分散認証のように)。
初期ステップ
- フィードバック収集、スコープ精査、最初に構築すべきものを決定
- コードをオープンソース化し、他者が確認・脆弱性検証・アーキテクチャ検証できるようにする
ご意見とサポートのお願い
皆様からのフィードバックを大変歓迎します。現行構成は最終形ではなく要件でもありません ― 私たちは動くものを目指しています。シンプルで安全なワークスペース、データはすべてユーザーが所有できる環境です。
早期バージョンの試用・貢献・スポンサーをご希望の場合はぜひご連絡ください。
プロジェクトは eigen.is で公開しています。
連絡先:reinder@eigen.is