このサイトは何か
abox.toolsは、ひとつにつきひとつの仕事だけをする小さな道具の集まりです。写真の寸法を変える、動画を切り詰める、PDFを2つつなげる、QRコードの中に実際に何が入っているのかを読む、といった具合です。現在56個あり、それぞれの仕事を説明したガイド集も並んでいます。
各ツールは、それを実行するブラウザーと端末のハードウェアでファイルを処理します。多くはブラウザー標準のコーデックを使い、HEICデコーダーや領収書OCRなどはローカルのJavaScriptやWebAssemblyエンジンを同梱します。処理のためにファイルをアップロードしません。サイトが配信するのは静的ページとコードです。意図した共有や任意のオンライン機能には、それぞれ以下に説明する境界があります。
それがこのサイトの中身です。このページの残りは、なぜそう作る値打ちがあるのか、そして誰が作っているのかについて書いています。
誰が作っているのか
カナダのオンタリオ州で、ひとりで作業している人間です。会社ではありません。チームも、出資者も、親会社もなく、どこかに買われる予定もありません。連絡は[email protected]宛てで、コードを書いた本人に届きます。その宛先が何に向いていて何に向いていないかは、お問い合わせのページに書いてあります。
このサイトは意図して個人名を出さずに公開しています。個人ブランドではなく小さなプロジェクトですし、ここで信用されるべきものはページの下に置かれた名前ではなく、誰でも読めるコードと、開発者ツールを開けば誰でも30秒ほどで確かめられるページの実際のふるまいだからです。この2つは検証できます。名前は検証できません。
なぜこの作りなのか
多くのオンライン変換サービスはファイルをアップロードし、サーバーで処理して結果を返します。一方、ローカルで動くものもあります。確認すべき違いは、処理がどこで行われ、ファイルがブラウザーを離れる必要があるかです。
サーバー処理は提供者へファイルのコピーを渡します。パスポート、医療画像、署名した契約、位置情報付き写真では、確認すべき判断です。公開方針、セキュリティ文書、監査、観察できる動作は証拠になります。ただしウェブページだけで、アップロード後の内部コピー、バックアップ、アクセスをすべて見られるわけではありません。方針は提供者の扱いを説明するもので、切断中にローカル操作を完了するのと同じ制約ではありません。
ブラウザは、その約束を不要にできるところまで良くなりました。JPEGもPNGもWebPも読み書きでき、動画のコンテナを解いてデコードでき、ファイルのハッシュを求め、QRコードを読み、PDFを書くこともできます。処理が手元の端末で済むなら、「このファイルを取っておかれるのではないか」は誰かの意図についての問いではなくなり、コードが物理的に何をできるのかという問いになります。そちらはご自身で答えを出せます。
主張はそれだけで、それをきちんと展開したガイドもあります。ウェブサイトにファイルをアップロードしても安全かをご覧ください。
信じるのではなく確かめる
四つの確認は、それぞれ異なる証拠を得るものです。組み合わせて、実際に使う機能を確認してください。
- ローカル処理のために接続を切る。読み込みが終わり、オフライン表示が準備完了になってから、端末内のファイルを処理します。完了すれば、その操作が切断中にローカルで行われた証拠になります。再接続後に何が送られるかまでは証明しません。
- 通信リクエストを調べる。転送サイズだけでなく、URL、リクエスト本文、WebSocketメッセージを確認します。ローカル処理はファイルを送りません。ページ資源、外部サービスのスクリプト、任意の照会、意図した共有は別の通信で、各ページに説明があります。
- Content-Security-Policyを読む。許可される資源と接続先を制限しますが、送信内容を検査したり、許可済みの相手への送信を防いだり、WebRTCの相手間通信を説明したりはしません。ソースと実際の動作も照合してください。
- ソースとビルド結果を読む。リポジトリにはテンプレート、モジュール、共有部品、同梱エンジンがあります。ビルドはページを生成し、サイト自身のコードを縮小します。各ツールに最初に読むファイルを示しています。自分でビルドし、公開結果と比較できます。
通信機能には明確な目的があります。画像から動画では画像URLを取得できます。領収書・請求書抽出ではFrankfurterへ通貨ペアと日付を照会し、選んだメールや共有アプリへ報告を渡せます。テキストとファイルの共有とリモートカメラはブラウザー間で内容を送ります。紹介サーバーが扱うのは発見と接続のメタデータで、共有ファイルや映像ではありません。これらの機能には接続が必要です。各ページとプライバシーページで、各参加者が見る情報を説明します。
道具の作り方と確かめ方
道具は、書くときに使ったファイルで動いた時点ではなく、現実のファイルで動くようになった時点で公開します。実際には、扱いにくい入力を相手にブラウザで手を動かして試す、ということです。切りたいところにキーフレームのない動画、コンテナの書き方が少しずれている端末のHEIC、フォントが一部だけ埋め込まれたPDFといったものです。人の手元に本当にあるのはそういうファイルですし、不具合を書いた本人が書いたテストが見つけられないのもそういうファイルです。
自動テストはジェネレーターとブラウザーモジュールを対象とし、CIで実行します。失敗すると公開を止めます。MP4リーダーなど共通の解析・書き出し処理は共有モジュールに置き、ビルドした各ツールへコピーします。重複コードの検査により、独立したコピーが食い違うのを防ぎます。
ガイドも同じ物差しで書いています。掲載しているスクリーンショットは描いたりそれらしく作ったりしたものではなく、組み上がったサイトからスクリプトが撮ったものです。ですからガイドの中の絵は、今日そのページが実際にどう見えるかを写しています。
費用はどこから出ているか
広告と、道具を役に立つと感じてくださった方からの寄付です。収益の仕組みはそれだけで、何が含まれ何が含まれないかははっきり書いておく値打ちがあります。
購入するものはありません。アカウント、有料プラン、料金を払って消す透かし、支払いで解放する機能はありません。対応形式、ブラウザーのメモリー、意図した制限はあります。各ツールで説明します。
ファイルは収益の材料ではありません。広告と閲覧集計にはGoogleのサービスを使います。任意のフィードバックはツール名、固定の肯定・否定回答、固定の理由を送り、ファイル、名前、サイズ、内容は送りません。ソースはこれらのサービスへファイルデータを渡しません。ただし許可された接続先も通信先なので、セキュリティポリシーだけで送信内容は保証できません。プライバシーページに収集とブロックの説明があります。これらのスクリプトをブロックしてもローカル処理は動きます。
道具は広告のために書いていません。ここにある道具のうち、検索語に値段がついたからという理由で生まれたものはひとつもありませんし、表示回数を稼ぐためにわざと遅くしたり、手間を増やしたり、ページを分けたりしたものもありません。次に何を作るかはROADMAP.mdで公開のまま議論しています。案ごとに一段落ずつ、いかにもありそうな提案をいくつか断った理由も含めて書いています。
言語について
英語、簡体字中国語、ドイツ語、スペイン語、ブラジルポルトガル語、フランス語、日本語を維持しています。以前の八言語の翻訳はアーカイブとして読めますが、現在の変更は反映しません。維持するページは翻訳完了後にサイトマップと切替メニューへ載せます。未完成のページも読めますが、完成した翻訳として案内しません。
いただいたお便りには英語でお返事します。この規模のプロジェクトについて言える唯一正直なことです。
このサイトがしないこと
- ファイル処理のためにアカウントやメールアドレスを要求すること。
- 処理のためにサーバーでファイルを受け取ったり保持したりすること。
- 結果に透かしを入れること、機能を有料版のために取っておくこと。
- 必要のない道具にネットワークの段取りを足すこと。
- リポジトリのコードがしていないことを、道具のページで主張すること。
もしこのどれかが起きているのを見つけられたら、それは不具合であると同時に破られた約束です。お知らせいただく値打ちがあります。お問い合わせのページがいちばん早い道です。