WebConverterの仕組み
すべての変換はブラウザ内で実行されます。ファイルがアップロードされることは一切ありません。ファイルを変換する際に何が起こるかを詳しく説明します。
簡単な説明
WebConverterにファイルをドロップすると、ディスクからブラウザメモリに読み込まれ、WebAssemblyとして実行されるコンパイル済みC++コードで処理され、新しいファイルとしてディスクに保存されます。パイプライン全体がCPU上で実行されます — デバイスから何も出ていきません。
確認方法:ブラウザの開発者ツール → ネットワークタブを開き、ファイルを変換してください。ファイルデータを運ぶ送信リクエストはゼロです。
画像変換
画像変換はEmscriptenでWebAssemblyにコンパイルされたMagnum C++グラフィックスライブラリによって実行されます。Magnumは幅広いフォーマットに対応した実績あるデコーダーとエンコーダーを提供 — ネイティブデスクトップアプリケーションで使用されているのと同じコードです。
変換フロー:
- File APIを使ってファイルが
ArrayBufferに読み込まれる - バッファが4つの並列Web Workerの1つに渡される
- Worker内でWASMモジュールがソースフォーマットをデコードし、ターゲットフォーマットに再エンコード
- 結果がメインスレッドに転送され、ダウンロードとしてトリガーされる
4つのWorkerが並列で動作するため、数十ファイルの一括変換もページをフリーズさせることなく高速に完了します。
対応画像フォーマット
- 入力(14フォーマット): BMP, DDS, GIF, HDR, ICO, JPEG, KTX, KTX2, PGM, PIC, PNG, PPM, PSD, TGA, WebP
- 出力(8フォーマット): PNG, JPEG, BMP, TGA, HDR, EXR, KTX2, WebP
音声変換
音声および動画から音声への変換は、ブラウザ内蔵のAudioContext.decodeAudioData()を使用してソースファイルをデコードし、Web Worker内でターゲットフォーマットにエンコードします。
- MP3とOGGのエンコーディングはwasm-media-encodersを使用 — LAME(MP3)とlibvorbis(OGG)のWebAssemblyビルド
- WAVエンコーディングは純粋なJavaScript — RIFFヘッダーと16ビットPCMインターリーブサンプル
- FLACエンコーディングはブラウザのネイティブ
AudioEncoderAPI(Chrome 107+)を使用、非対応ブラウザにはWAVフォールバック
入力フォーマットにはMP4, M4A, WAV, OGG, FLAC, WebM, MP3が含まれます — ブラウザがネイティブにデコードできるあらゆるコンテナ。
PDF変換
画像からPDFへの変換はpdf-libを使用 — ブラウザ内でPDFドキュメントを作成・操作する純粋なJavaScript PDFライブラリです。各画像はCanvas APIでデコードされ、JPEGに再エンコードされ、PDFにフルページとして埋め込まれます。
OCRが有効な場合、Tesseract.js — 主要なオープンソースOCRエンジン — が各画像のテキストを分析し、PDFに見えない選択可能なレイヤーとして配置します。OCRモデル(約10MB)はオンデマンドでダウンロードされ、ブラウザにキャッシュされます。
なぜクライアントサイド?
プライバシー
ファイルがデバイスから出ることは一切ありません。ハッキングされるサーバーなし、侵害されるデータベースなし、信頼しなければならない「30分後にファイルは削除されます」という約束なし。サーバーベース変換ツールのプライバシーリスクについて詳しく読む。
速度
サーバーベースのツールはファイルのアップロード、キュー待ち、結果のダウンロードが必要です。WebConverterは3つすべてをスキップします。50MBの画像が1秒未満で変換されます。
制限なし
支払うべきサーバーインフラがないため、ファイルサイズ制限なし、1日の変換回数制限なし、「プロにアップグレード」の壁なし。
オフラインで動作
WebConverterはProgressive Web Appとしてインストールできます。インストール後はインターネット接続なしで動作 — 飛行機の中、地方、ネットワーク障害時でもファイルを変換できます。
環境負荷の低減
データ転送なしはネットワークエネルギーなしを意味します。サーバー処理なしはデータセンターの電力なしを意味します。サーバーベース変換ツールの隠れたエネルギーコストについて読む。
オープンソース
WebConverterは無料のオープンソースです。コードの確認、問題の報告、GitLabでの貢献が可能です。