何もアップロードされないことを確認する方法
どのファイル変換ツールにも、どこかにプライバシーに関する宣言が書かれています。しかし、それを検証する手段を用意しているところはほとんどありません。このページはその手段を示します。以下の確認はそれぞれ約30秒で済み、いま使っているブラウザ以外に何も必要とせず、私たちが嘘をついていればすぐに露見します。
主張の正確な範囲
このサイトでファイルを変換するとき、そのファイルのバイト列はどこにも送信されません。デコーダーとエンコーダーはWebAssemblyモジュールで、ブラウザが一度ダウンロードしたあとは端末内のプロセッサ上で動作します。このサイトのコードには、ファイルの内容が届くアップロード用エンドポイントが存在しません。そもそも書かれたことがないからです。
これは範囲の狭い主張であり、意図的に狭くしています。対象はファイルです。ページがネットワークリクエストを一切行わないという主張ではありません。サイトが実際に送信するものは、下の「サイトが送信するもの」の節に列挙しています。それを隠すページであれば、最初の主張のほうも信用に値しないからです。
ご自身で確認する:「ネットワーク」タブ
このサイトのいずれかのツールを開きます。何かを変換する前にF12(MacではCmd+Option+I)を押してデベロッパーツールを開き、「ネットワーク」タブを選択します。「ログを保持」の項目があればオンにします。
次にファイルをドロップして変換し、一覧を見てください。初回はその形式用のWebAssemblyモジュール(heic_bg.wasmのようなファイルで、このドメインから配信されます)がダウンロードされるのが見えます。一方、ファイルを逆方向に運ぶ通信は何も表示されません。サイズで並べ替えるか、一覧をFetch/XHRで絞り込んでみてください。アップロードがあれば、ファイルと同じだけのバイト数をペイロードに持つリクエストとして必ず現れます。このパネルから隠す方法はありません。
何も現れないこと、それ自体が要点です。アップロードする変換ツールはここでそれを隠せません。ブラウザは、ページが行うすべてのリクエストを、ページ側が見せたくないものも含めて報告するからです。
より強い確認:ネットワークを切る
「ネットワーク」タブはページが何をしたかを示します。こちらの方法は、ページに何ができるかを示します。いずれかのツールのページを読み込んでから、Wi-Fiを切断するか機内モードをオンにし、ファイルを変換してください。それでも動作します。
正直に書いておくべき注意点が1つあります。ある形式を初めて変換するときは、その形式のWebAssemblyモジュールを取得する必要があります。そのため、オフラインにする前に接続した状態で一度変換しておいてください。そうしないとモジュールがまだキャッシュに入っていません。その後は処理の仕組み全体が端末内で完結し、オフラインのまま動くことは、どんな約束よりも確かな証明になります。
自分で行う必要のない確認
このサイトのすべてのページには、Content Security Policy(CSP、ブラウザが強制する接続先の許可リスト)ヘッダーが付いて配信されます。このページが何かを送信してよい宛先だけを列挙したもので、強制するのは私たちではなくブラウザです。このサイトのポリシーは、同じ「ネットワーク」タブで任意のページのレスポンスヘッダーを開けば読めます。
これが重要なのは、約束ではなく制約だからです。このサイトのJavaScriptが、ポリシーに名前のないサーバーへ写真を送ろうとすれば、ブラウザはそのリクエストを拒否し、違反として記録します。「何もアップロードされない」という主張を、評判で信じるものではなく機械的に検証できるものにしているのが、このポリシーです。
サイトが送信するもの
この点を率直に書くことが、このページの目的です。本番サイトのprivatetoolkit.orgはGoogle Analyticsを読み込み、ページが閲覧されたことと、世界のどのあたりからかというおおよその場所を報告します。Google Signalsと広告のパーソナライズはどちらもオフに設定しています。分かるのはページに訪問者がいたことだけで、ファイルについては何も渡されず、渡すこともできません。変換のコードとアクセス解析のコードは互いに一切触れないからです。
サイトには広告枠もありますが、この文章を書いている時点では完全にオフで、広告スクリプトはまったく読み込まれません。再びオンにする場合は、1つのネットワークからのバナー1枚だけで、「広告」と明示します。
以上がすべてです。アカウントの仕組みはなく、アクセス解析が設定するもの以外に私たちからのCookieはなく、ファイルの保管もありません。ファイルは届かないのですから、保管するものがそもそもないのです。
この設計の代償
「端末内で動く」ことをコストなしのように売り込むのは不誠実でしょう。処理を行うのはお使いのプロセッサなので、長い動画には実際に時間がかかり、非常に大きなファイルにはそれを保持できるだけのメモリが必要です。サーバー群のほうが速いのは確かです。サーバーならできる変換の中には、ブラウザではまったく行えないものもあります。
また、コンテナの変換(再多重化)で変わるのはコンテナであって、コーデックではありません。iPhoneのHEVC動画はMP4になっても、HEVCデコーダーのないパソコンでは依然として再生できません。あとになって役に立たないと分かる「成功」を報告するのではなく、その場合にはそのことをお伝えします。
よくある質問
開発者でなくても、本当に自分で確認できますか?
できます。「ネットワーク」タブでの確認は、パネルを開いて一覧を見るだけです。コードを読むのではなく、何かが表示されているかどうかを見ます。オフラインでの確認はさらに簡単で、Wi-Fiを切ってツールがまだ動くかを見るだけです。
変換後、ファイルは削除されますか?
削除するものがありません。ファイルはサーバーに届かないため、私たちが保持したり削除したりできるコピーはどこにも存在しません。多くの変換ツールはこの質問に保持期間で答えますが、ここでの正直な答えは「その問い自体が生じない」です。
ファイルサイズの上限はありますか?
私たちが設けている上限はありません。実際の限界はお使いの端末のメモリです。変換中、ファイルはそこに保持されるからです。変換に私たちの側で費用はかからないため、課金上の理由でサイズ上限を設けることもありません。
オフラインでも動作しますか?
はい。目的の形式のWebAssemblyモジュールが取得済みであれば動作します。オンラインの状態でその種類のファイルを1つ変換しておけば、その後はネットワークを切ってもツールは動き続けます。
WebAssemblyモジュール自体がファイルをどこかへ送っていないと、どうして分かりますか?
同じContent Security Policyが適用されるからです。モジュールはページの中で動作し、同じ強制された接続先の許可リストに縛られます。ほかの場所へ何かを送ろうとすれば、ブラウザがブロックし、違反として記録します。