|
1 | | -# プロダクト名 |
2 | | -<!-- プロダクト名に変更してください --> |
| 1 | +# Directファイル便 |
3 | 2 |
|
4 | | - |
5 | | -<!-- プロダクト名・イメージ画像を差し変えてください --> |
| 3 | +<p align="center"> |
| 4 | + <a href="https://direct.yaken.org/"> |
| 5 | + <img src="./docs/hero.png" height="245"> |
| 6 | + </a> |
| 7 | +</p> |
6 | 8 |
|
7 | 9 |
|
8 | 10 | ## チーム名 |
9 | | -チーム○ XXXX |
10 | | -<!-- チームIDとチーム名を入力してください --> |
11 | | - |
| 11 | +チーム21 Yaken' |
12 | 12 |
|
13 | 13 | ## 背景・課題・解決されること |
| 14 | +私達が本当に欲しかったものは、安い・速い・旨いファイル共有方法でした。 |
| 15 | + |
| 16 | +- **安い**: できる限り安価で(できれば無料で)運営でき、広告なども表示しなくてよい |
| 17 | +- **速い**: できる限り速くファイルを送信できる |
| 18 | +- **旨い**: 便利で相手が誰でも使いやすい |
| 19 | + |
| 20 | +既存のサービスには、それぞれ強みがあるものの、以下のような不満がありました。 |
| 21 | + |
| 22 | +### ギガファイル便 |
| 23 | +- 一度サーバーにファイルをアップロードする必要がある |
| 24 | +- ゆえに、機密ファイルを「第三者のサーバーに保存する」リスクがある |
| 25 | +- アップロードの時間とダウンロードの時間が両方かかってしまう |
14 | 26 |
|
15 | | -<!-- テーマ「関西をいい感じに」に対して、考案するプロダクトがどういった(Why)背景から思いついたのか、どのよう(What)な課題があり、どのよう(How)に解決するのかを入力してください --> |
| 27 | +### AirDrop |
| 28 | +- サーバーを経由せず安全に使えるが、Apple端末間でしか使用できない |
| 29 | +- 類似技術でも、アプリをインストールしないと使えない |
| 30 | +- 共有したい相手が近くにいないと使えない |
16 | 31 |
|
17 | 32 |
|
18 | 33 | ## プロダクト説明 |
19 | 34 |
|
20 | | -<!-- 開発したプロダクトの説明を入力してください --> |
| 35 | +Directファイル便は、ブラウザだけで利用できるP2P型ファイル転送サービスです。 |
| 36 | +データをサーバーに保存せず、ユーザー同士が直接通信することで、安全かつ高速にファイルを送受信できます。 |
| 37 | + |
| 38 | +アプリのインストールやアカウント登録は不要。 |
| 39 | +QRコードを読み取るか、コードを入力するだけで即座に接続し、ダウンロードが開始されます。 |
| 40 | + |
| 41 | +### 高い機密性 |
| 42 | +ファイルデータはサーバーにアップロードされません。 |
| 43 | +サーバーは接続の仲介のみを行い、実際のデータは送信者から受信者へ直接転送されます。 |
| 44 | +また、ファイルの送信経路はDTLSによってエンドツーエンドで暗号化されるため安心です。 |
| 45 | + |
| 46 | +### 高速性 |
| 47 | +従来のファイル転送サービスは、一度ファイルをサーバーにアップロードしてから受信者がダウンロードするという方式でした。 |
| 48 | + |
| 49 | +Directファイル便はユーザー間で直接ファイルをやりとりするため、送信者側のアップロード完了を待たずにダウンロードを開始できます。 |
21 | 50 |
|
| 51 | +### 互換性 |
| 52 | +Directファイル便はブラウザ上で動作するため、追加のアプリをインストールせずに使えます。 |
| 53 | +また、Windows / macOS / Linux / iOS / Androidなど幅広い端末で使用できます。 |
22 | 54 |
|
23 | 55 | ## 操作説明・デモ動画 |
24 | 56 | [デモ動画はこちら](https://www.youtube.com/watch?v=fbzGp0XJGq8) |
|
29 | 61 |
|
30 | 62 | <!-- 開発したプロダクトの中で、特に注力して作成した箇所・ポイントについて入力してください --> |
31 | 63 | ### アイデア面 |
| 64 | +最大のこだわりは、データをサーバーに残さない設計です。 |
| 65 | + |
| 66 | +多くのファイル共有サービスは利便性を優先する一方で、 |
| 67 | +「一度サーバーに保存される」という構造的リスクがあります。 |
| 68 | +また、サービス提供者にとってもサーバーの維持費用がかさんでしまうという問題点があります。 |
| 69 | + |
| 70 | +Directファイル便は、サーバーは接続の仲介のみを行い、実際のファイルは常に端末同士が直接やりとりします。 |
| 71 | + |
| 72 | +これは、単なる技術選択ではなく、「安心して送れる」ことを最優先にしたプロダクト思想です。 |
| 73 | + |
| 74 | +また、Directファイル便の開発にあたって、便利さよりも「迷わない」ことを重視しました。余分な機能を減らし、ファイルを送信するために必要な機能のみに絞りこむことで、真の使いやすさを目指しました。 |
| 75 | + |
| 76 | +- アカウントの登録不要 |
| 77 | +- アプリのインストール不要 |
| 78 | +- QRコードを読みとるだけで接続 |
32 | 79 |
|
33 | 80 | ### デザイン面 |
| 81 | +デザイン面では、「シンプルさ」と「愛着のわくユーザー体験」の両立にこだわりました。デザイン言語を作成し、コンポーネント化を進めることで操作の流れを感じやすくしました。また、マウスの動きに連動する視線追従やクリック時のリアクションといった遊び心のあるキャラクター演出を実装することで、生命感と親しみやすさを生み出しました。 |
34 | 82 |
|
35 | 83 | ### その他 |
| 84 | +#### セキュリティ |
| 85 | +ファイルの共有に使用する6桁のコードは、暗号学的に安全な関数を使用して生成し、生存期間を短く保つことで安全に運用しています。 |
36 | 86 |
|
37 | | -## 使用技術 |
| 87 | +また、ファイルが送信される経路はDTLSで暗号化することで、相手が受信するまで一度も平文にならない(エンドツーエンド)ようにしています。 |
38 | 88 |
|
39 | | -<!-- 使用技術を入力してください --> |
| 89 | +#### 接続性 |
| 90 | +ファイルは、内部でWebRTCを使って送信しています。 |
| 91 | +WebRTCの伝送方式にはSTUNとTURNの2種類があります。 |
| 92 | +STUNは端末同士を直接接続する方法です。通常の場合はこちらを使用します。 |
| 93 | +しかし、学内LANや職場など、セキュリティの都合からこの方法が使用できない場合はTURNと呼ばれる仲介サーバーを介して接続します。 |
40 | 94 |
|
| 95 | +一般に、STUNはTURNよりも高速です。そこで、STUNとTRUNのどちらを使用すべきかを判断し、どのような環境でも接続できるように実装しました。 |
41 | 96 |
|
42 | | -<!-- |
43 | | -markdownの記法はこちらを参照してください! |
44 | | -https://docs.github.com/ja/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax |
45 | | ---> |
| 97 | +もちろん、TURNサーバーを通過中も暗号化は保たれます。 |
| 98 | + |
| 99 | +## 使用技術 |
| 100 | +- Cloudflare Workers |
| 101 | +- Cloudflare Workers KV |
| 102 | +- Cloudflare Workers DurableObject |
| 103 | +- Cloudflare RealtimeKit |
| 104 | +- Hono |
| 105 | +- pnpm |
0 commit comments