「ブラウザで動くツール」と聞くと、ファイルをインターネットへ送って処理しているイメージがあります。
しかし、ブラウザ上のツールでも、選択したファイルを端末内のJavaScriptだけで処理することはできます。
つまり、画面がブラウザかどうかとデータがどこで処理されるかは別の話です。
ブラウザ内でローカル処理する
MDNのFile APIでは、ユーザーがファイル入力やドラッグ&ドロップで選んだファイルを、Webアプリが File オブジェクトとして扱えることが説明されています。
FileReaderを使えば、FileやBlobとして渡された内容をブラウザ側で読み取れます。一般的なファイル選択では、ユーザーが選んだファイルがFileとして渡されます。
この仕組みだけで、
- CSV解析
- 文字コード確認
- 画像変換
- JSON整形
などを実行できます。
サーバー送信が必須というわけではありません。
サーバー処理する
一方、ファイルをサーバーへアップロードし、サーバー側プログラムで処理するWebアプリもあります。
大容量処理、複雑なAIモデル、データベース保存、複数人共有などではサーバー処理が向く場合があります。
この場合、ファイル内容はネットワークを通って外部サーバーへ送られます。
ハイブリッドもある
画面表示や簡単な解析はローカル、必要な処理だけサーバー、というツールもあります。
たとえば、
- CSVはローカル解析
- エラー統計だけサーバー送信
のような設計です。
「ローカル処理対応」と書かれていても、一切通信しないとは限りません。
デスクトップアプリ
デスクトップアプリはPCへインストールして使います。
ブラウザよりファイルシステムへ深くアクセスできたり、OS機能と連携しやすかったりします。
一方、インストールやアップデート管理が必要です。
何を基準に選ぶか
ブラウザローカル
- インストール不要
- ファイルを外部送信したくない
- 単体処理中心
サーバー処理
- 複数人共有
- データ保存
- 高負荷処理
- サーバー側AI
デスクトップ
- OS統合
- 常駐処理
- 大容量ローカル処理
- オフライン運用
と考えると分かりやすくなります。
「ブラウザだから安全」とは限らない
File APIでローカル処理できても、JavaScriptは fetch() などでネットワーク通信もできます。
したがって、
ブラウザで動く
ファイル選択はローカル
だけでは「外部送信なし」の証拠にはなりません。
プライバシーが重要なら、ツールの説明、ソース、Network通信なども確認します。
参考
- MDN: File API
https://developer.mozilla.org/en-US/docs/Web/API/File_API - MDN: FileReader
https://developer.mozilla.org/en-US/docs/Web/API/FileReader - MDN: Fetch API
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
