チーム21 Yaken'
私達が本当に欲しかったものは、安い・速い・旨いファイル共有方法でした。
- 安い: できる限り安価で(できれば無料で)運営でき、広告なども表示しなくてよい
- 速い: できる限り速くファイルを送信できる
- 旨い: 便利で相手が誰でも使いやすい
既存のサービスには、それぞれ強みがあるものの、以下のような不満がありました。
- 一度サーバーにファイルをアップロードする必要がある
- ゆえに、機密ファイルを「第三者のサーバーに保存する」リスクがある
- アップロードの時間とダウンロードの時間が両方かかってしまう
- サーバーを経由せず安全に使えるが、Apple端末間でしか使用できない
- 類似技術でも、アプリをインストールしないと使えない
- 共有したい相手が近くにいないと使えない
Directファイル便は、ブラウザだけで利用できるP2P型ファイル転送サービスです。 データをサーバーに保存せず、ユーザー同士が直接通信することで、安全かつ高速にファイルを送受信できます。
アプリのインストールやアカウント登録は不要。 QRコードを読み取るか、コードを入力するだけで即座に接続し、ダウンロードが開始されます。
ファイルデータはサーバーにアップロードされません。 サーバーは接続の仲介のみを行い、実際のデータは送信者から受信者へ直接転送されます。 また、ファイルの送信経路はDTLSによってエンドツーエンドで暗号化されるため安心です。
従来のファイル転送サービスは、一度ファイルをサーバーにアップロードしてから受信者がダウンロードするという方式でした。
Directファイル便はユーザー間で直接ファイルをやりとりするため、送信者側のアップロード完了を待たずにダウンロードを開始できます。
Directファイル便はブラウザ上で動作するため、追加のアプリをインストールせずに使えます。 また、Windows / macOS / Linux / iOS / Androidなど幅広い端末で使用できます。
最大のこだわりは、データをサーバーに残さない設計です。
多くのファイル共有サービスは利便性を優先する一方で、 「一度サーバーに保存される」という構造的リスクがあります。 また、サービス提供者にとってもサーバーの維持費用がかさんでしまうという問題点があります。
Directファイル便は、サーバーは接続の仲介のみを行い、実際のファイルは常に端末同士が直接やりとりします。
これは、単なる技術選択ではなく、「安心して送れる」ことを最優先にしたプロダクト思想です。
また、Directファイル便の開発にあたって、便利さよりも「迷わない」ことを重視しました。余分な機能を減らし、ファイルを送信するために必要な機能のみに絞りこむことで、真の使いやすさを目指しました。
- アカウントの登録不要
- アプリのインストール不要
- QRコードを読みとるだけで接続
デザイン面では、「シンプルさ」と「愛着のわくユーザー体験」の両立にこだわりました。デザイン言語を作成し、コンポーネント化を進めることで操作の流れを感じやすくしました。また、マウスの動きに連動する視線追従やクリック時のリアクションといった遊び心のあるキャラクター演出を実装することで、生命感と親しみやすさを生み出しました。
ファイルの共有に使用する6桁のコードは、暗号学的に安全な関数を使用して生成し、生存期間を短く保つことで安全に運用しています。
また、ファイルが送信される経路はDTLSで暗号化することで、相手が受信するまで一度も平文にならない(エンドツーエンド)ようにしています。
ファイルは、内部でWebRTCを使って送信しています。 WebRTCの伝送方式にはSTUNとTURNの2種類があります。 STUNは端末同士を直接接続する方法です。通常の場合はこちらを使用します。 しかし、学内LANや職場など、セキュリティの都合からこの方法が使用できない場合はTURNと呼ばれる仲介サーバーを介して接続します。
一般に、STUNはTURNよりも高速です。そこで、STUNとTRUNのどちらを使用すべきかを判断し、どのような環境でも接続できるように実装しました。
もちろん、TURNサーバーを通過中も暗号化は保たれます。
- Cloudflare Workers
- Cloudflare Workers KV
- Cloudflare Workers DurableObject
- Cloudflare RealtimeKit
- Hono
- pnpm