変換ツール

値を異なる形式に変換するツール群です。処理はすべてブラウザ内で完結するため、データが送信されることはありません。

変換ツールの選び方

UNIXタイムを自分のタイムゾーンとUTCの日時として読むにはタイムスタンプ変換ツールを、2進数・8進数・10進数・16進数を厳密な計算で扱うには基数変換ツールを、識別子をcamelCase、snake_case、kebab-caseなどの間で移すには大文字小文字変換ツールを使います。

長さ、質量、体積、温度、データ量、時間には単位変換ツールを、ファイル自体の形式や寸法を変える必要があるときは画像変換ツールと画像リサイズツールを使います。画像が端末を離れることはありません。デコードと再エンコードはブラウザ内で行われます。

値、表現、単位

このカテゴリーの作業は、たいてい2種類のどちらかです。値はそのままで表現だけが変わるもの(255を0xFFと書く、名前をsnake_caseで書く)か、キロメートルをマイルに、セ氏をカ氏にするように、値そのものを別の単位で言い直すものです。

この違いが重要なのは、前者は常に厳密に元へ戻せるのに対し、後者はたいてい戻せないからです。数値を16進数に変換して戻せば同じ数値になりますが、画像をJPGに変換して戻しても同じ画像にはなりません。

可逆、非可逆、そして近似

基数変換と大文字小文字変換は原理上は可逆ですが、知っておきたい例外が1つあります。略語は小文字にすると語の区切りを失うため、HTTPServerはhttp_serverになり、戻すとHttpServerになります。メートル法とヤード・ポンド法の換算係数のほとんどは近似ではなく定義上の厳密な値なので、その換算に誤差はまったくありません。

本当に情報が失われるのは画像ツールで、非可逆で保存し直すたびに少しずつ捨てられていきます。もう1つは暦の月や年が絡むもので、これらには厳密な長さがないため平均値として報告されます。結果が厳密ではなく丸めた値である場合は、その旨を表示します。

真ん中を信じる前に、端を確かめる

変換が失敗するのは、通常の範囲よりも境界であることのほうがはるかに多いものです。ミリ秒を期待するところへ秒のUNIXタイムスタンプを渡せば1970年になります。64ビットの識別子を通常のJavaScriptの数値で変換すると、およそ900兆を超えたところで精度を失います。元の解像度を超えて拡大した画像には、撮影されていないピクセルが増えます。

ここでのツールは、そうした境界で正直であるように作られています。基数変換は任意精度の演算を行い、タイムスタンプは単位を明示し、ブラウザのcanvasに対して大きすぎるファイルは、真っ白な画像を黙って返すのではなく受け付けません。他人の変換結果を検証するときは、境界のケースから始めてください。