記事
クライアントサイド処理とは何か?
ほとんどのファイルツールは、ドキュメントをリモートコンピューターに送り、重い処理をさせて結果を返してもらう方式で動きます。クライアントサイド処理はそれを逆転させます。あなた自身のブラウザが処理を行い、ファイルはデバイスの外に出ません。
ツールの2つの動作方式:自分のマシンか、相手のマシンか
サーバーサイド処理でファイルをアップロードするのは、クリーニングに服を預けるようなものです。手渡すと、リモートマシンが処理して、後で結果を受け取ります。クライアントサイド処理は自宅で洗濯するようなものです。ツールはブラウザのタブの中で動き、ファイルをメモリから読み取り、処理し、出力を渡します。ファイルがネットワーク接続に触れることは一切ありません。ウェブサイトは処理コードを1回届けるだけでよく、その後はすべてあなたの側で動きます。
WebAssemblyがブラウザにもたらしたもの
長年、ブラウザはJavaScriptしか実行できませんでした。インターフェースには十分ですが、動画の再エンコードや大きな画像への圧縮適用などのタスクには遅すぎました。WebAssembly(通常WASMと略されます)がそれを変えました。ブラウザがネイティブに近い速度で実行できるコンパクトなバイナリ形式で、CやC++で書かれたコードをWASMにコンパイルしてプラグインなしでブラウザのタブ内で動かせます。デスクトップソフトウェアを動かしているのと同じコーデックや圧縮ライブラリが、直接ページ内で動作します。JavaScriptとWebAssemblyは協調して動きます。JavaScriptがインターフェースとオーケストレーションを担当し、WASMが重い計算を処理します。
処理中に実際に起きていること
クライアントサイドツールにファイルをドロップすると、ページはまだ読み込んでいなければ小さな処理エンジン(多くの場合WASMモジュール)を読み込み、JavaScriptを通してファイルを渡します。実際の処理は通常「Web Worker」と呼ばれるバックグラウンドスレッドで実行されるため、作業中もブラウザのインターフェースが応答し続けます。処理中にいつでもブラウザのネットワークタブを開いても、ファイルを含むリクエストは表示されません。出力はメモリ内で組み立てられ、ダウンロードとして提供されます。
知っておくべき正直なトレードオフ
大きなWASMエンジンに依存するツールを初めて使うとき、ブラウザはそのエンジンをダウンロードしてキャッシュします。2回目以降はダウンロードをスキップして完全にオフラインで動きます。処理があなたのデバイスで実行されるため、非常に大きなファイルはCPUと利用可能メモリの性能次第となり、一部の重い作業はデータセンターの方が速く終わることもあります。その代わりに得られるものは本物です。ファイルは一切送信されず、低速な接続でのアップロード待ちがなく、最初の読み込みが済めばインターネットなしでもツールが動き続けます。
この記事で紹介するツール
よくある質問
クライアントサイド処理は自動的にデータがプライベートになりますか?
クライアントサイドとは、設計上ファイルがサーバーに送られないことを意味し、それがプライバシーを可能にします。自分で確認するには、ファイルを処理しながらブラウザの開発者ツールのネットワークタブを開いてください。ファイルのデータを含む送信リクエストがないはずです。それでも、ラベルを信じるのではなく、ツールが本当にこのように動作しているか確かめることは賢明です。
ツールの初回使用時に時間がかかることがあるのはなぜですか?
ブラウザは初回使用時に処理エンジン(WASMモジュール)をダウンロードする必要があります。サイズや接続速度によっては数秒かかることがあります。その後、エンジンはローカルにキャッシュされるため、以降のセッションはすぐに始まり、オフラインでもツールが動作します。