ゼロから書かれたものは本当に「ゼロから」
MEA ToolsにあるほぼすべてのPDF系ツール——PDF結合、PDF分割、PDF→Word変換、PDFフォーム入力、暗号化や透かしまで——の核となっているpdf-libフォルダを例に挙げます。このフォルダには合計1万行以上、約37個のJavaScriptファイルが含まれており、そのすべてがゼロから書かれています——生のPDFオブジェクトをパースする処理、トークナイザー、コンテンツストリームのインタープリター、xref構造の再構築、ページを画像としてレンダリングするラスタライザーまで。
つまり、MEA Toolsが1つのPDFファイルを「読む」とき、それは誰かのライブラリをそのまま呼び出しているのではありません——PDF仕様に従ってバイト単位でファイル構造を実際に解析するコードが、このツールの要件に合わせて専用に書かれています。他のフォルダでも同様です。画像圧縮のロジック、色変換、QRコード生成、ハッシュ関数まで——すべて自前のコードであり、import一つで済むnpmパッケージを貼り付けたものではありません。
なぜわざわざ自分で書くのか?
これは単なる技術的なこだわりではなく、いくつかの具体的な理由があります。
- ファイルサイズが小さくなる。汎用ライブラリは通常、多くのユースケースに対応できるよう汎用的に作られています——その結果、関係のないコードも一緒に持ち込まれます。自分の要件だけに特化して書かれたコードははるかに軽量にでき、これはすべてがリソースの豊富なサーバーではなくユーザーのブラウザ上で動くため重要です。
- 動作の完全なコントロール。特定の種類のPDFで奇妙なバグが見つかった場合、他人のライブラリのメンテナーがパッチをリリースするのを待つ必要はありません——すべて自前のコードなので、直接調べて自分で修正できます。
- メンテナンスが止まる依存関係がない。多くの人気オープンソースライブラリは、メンテナーが他のことに忙しくなった途端に更新が止まります。ツールの基盤をそこに依存して構築していると、そのリスクも一緒に背負うことになります。
- ユーザーのデータに何が起きているかを正確に把握できる。パースの各行が自前で書かれているため、中で何をしているか正確に分からない第三者の「ブラックボックス」がユーザーのファイルを処理することがありません。
ただし、すべてが自前というわけではない——それも意図的
この記事を宣伝だけでなく正直なものにするために:MEA Toolsの一部には実際にサードパーティのライブラリやモデルを使っている箇所があり、それは意識的な決断であって見落としではありません。
- 写真の背景除去は、オープンソースのAIモデル(U2Net)をONNX Runtime経由で実行しています——コミュニティによるAI推論エンジンであり、自前のコードではありません。ニューラルネットワークの推論ランタイム全体を一から書き直すのは、数十あるツールの中の1つにしては明らかに現実的な規模を超えています。AIモデルファイル自体はサードパーティのCDNではなくMEAのサーバーでホストされていますが、それを動かすエンジン自体はONNX Runtimeのままです。
- 画像解像度拡大(アップスケーラー)も同じ理由でReal-ESRGANというAIモデルを、同じくONNX Runtime経由で使っています。
- 画像/スキャンからのテキスト抽出(OCR)を行う2つのツールは、すでに成熟し広く信頼されているオープンソースのOCRエンジンTesseract.jsを使っています。OCRエンジンをゼロから書き直すのは、1つのドキュメント変換ツールの範囲をはるかに超えた、それ自体が独立した研究プロジェクトです。
興味深い部分はコード自体の中にあります。他に意図的に手書きでゼロから書かれなかった唯一の部分は、PDF暗号化用のAES関数です——これはブラウザ標準搭載のWeb Crypto APIを利用しており、自前のAES実装ではありません。その理由はコードのコメントにはっきり書かれています。AESは本当の意味でのセキュリティ(PDFの内容を他者から守る)のために使われており、ブラウザ標準搭載のAES実装はすでに厳格な監査を受けており、タイミング攻撃にも耐性があります——これはセキュリティ監査の保証なしに手動で書き直すには非常にリスクが高い部分です。
比較として、同じツール内のMD5やRC4のハッシュ関数は実際に手動でゼロから書かれています——そこではMD5/RC4は古いPDFデータ形式の要件のために使われているのであって(データの機密性を守る目的ではない)、センシティブなセキュリティ目的ではないためです。
意味があるなら自前で書き、セキュリティに関わるなら実証済みのものを使う
MEA Toolsの哲学は「どんなリスクを冒してもすべて自前で」ではなく——完全にコントロールする意味がある部分は自前で書き、実際のデータセキュリティに関わる部分は監査済みの実装に委ねる、というものです。
すべてのツールを見る →これはユーザーであるあなたにとってなぜ重要なのか?
裏側の技術的な詳細に過ぎないように聞こえるかもしれません。しかし影響は直接感じられます。自分の要件専用に書かれたツールは、実行時の負荷が軽く、読み込みが速く、動作がより予測可能になる傾向があります——実際には使われない汎用コードの重さを背負っていないためです。そして、PDF暗号化のようにデータセキュリティにとって本当に重要な部分では、すべてを一貫性のためだけに手動で書くよりも、実証済みの実装を使う選択の方がむしろ安全です。
まだ発展途上
もう一つ認識しておくべき重要な点があります。「ゼロから書く」というアプローチは、既製のライブラリをインストールするだけの場合に比べ、新機能の実装により時間がかかるということです。例えばPDF関連だけを見ても、この自前のpdf-libはPDFファイルに対してできることのうちまだ一部しかカバーしていません——PDFフォーマットの世界は広く、MEA Toolsはまだこの地点で止まってはいません。MEA Tools全体として現在も開発・拡張が続けられているため、今ある機能の範囲は最終版ではなく、今後も時間とともに増えていきます。