オンライン開発ツール

デバッグ中にとっさに使う小さなツールを集めました。API のレスポンスを展開して中身を見る、2 つの設定を 1 つにまとめる、Base64 の断片をデコードする、ログのタイムスタンプを人が読める時刻に直す。すべてブラウザー内で動作し、貼り付けたものが外に出ることはありません。
JSON オンライン整形

左に JSON を貼ると、右側でリアルタイムに整形し、折りたたみ可能なツリーで表示します。構文チェックとエラー位置の特定、ノードの展開/折りたたみ、圧縮、エスケープ、ノードパスのコピーに対応。すべてローカル処理で送信しません。

JSON をオンラインで結合

複数の JSON オブジェクトや .json ファイルを 1 つに結合します。ディープマージ、シャローマージ、配列の連結と重複除去に対応し、衝突時にどちらを優先するかを選べ、上書きされたフィールドを 1 件ずつ一覧表示します。すべてブラウザー内で処理し、アップロードしません。

Base64 デコード

Base64 とテキスト・画像・任意のファイルを相互変換します。data URI を丸ごと貼り付ければ自動で判別し、デコードした画像はその場でプレビューします。変換はすべてローカルで行い、アップロードしません。

タイムスタンプ変換

Unixタイムスタンプと日時を相互変換します。10桁(秒)と13桁(ミリ秒)を自動判別し、ローカルタイムゾーンとUTCを切り替えられます。現在のタイムスタンプはページ上部にリアルタイム表示されます。

URL オンラインデコード

URL のパーセントエンコーディングと元の文字列を双方向に変換します。UTF-8 と GBK、+ をスペースとして扱う指定に対応し、encodeURIComponent と encodeURI を選べます。URL を丸ごと貼り付ければ、クエリパラメータも分解して 1 つずつデコードします。

これらの開発ツールについて

この種のツールこそアップロードしてはいけない理由

開発中にオンラインツールへ貼り付ける内容は、思っているよりずっと機微です。ユーザーの電話番号を含む API のレスポンス、トークン入りのリクエストヘッダー、本番データベースから書き出した JSON、これからコミットしようとしている設定ファイル。それを内容をサーバーへ送り返すサイトに貼るのは、誰が運用しているかも分からない第三者に本番データを手渡すのと同じで、この種のツールサイトにはプライバシーポリシーすらないことがよくあります。ここでの処理はすべてブラウザー本来の機能だけで完結するので、ページを読み込んだあとにネットワークを切っても動きますし、開発者ツールのネットワークパネルを開けばリクエストが 1 本も出ていないことをご自身で確認できます。

エンコードは暗号化ではありません

このツール群でいちばんよくある誤解です。Base64 も URL のパーセントエンコーディングも可逆エンコードであり、出力を手にした人は鍵もなく、解読もせずにそのまま元へ戻せます。これらが存在する理由は、バイナリーや特殊文字をテキストしか通さないプロトコルに安全に載せるためであって、秘密を守ることとは何の関係もありません。ですからパスワードを Base64 にしてからデータベースに保存しても平文保存と変わりませんし、トークンを URL のクエリーパラメーターに入れてエンコードしても、ゲートウェイのログやブラウザーの履歴にはそのまま残ります。本当に秘密にしたいものに必要なのは暗号化やハッシュで、それは別のツール群の役目です。

JSON のエラーは、示された行にないことがよくあります

パーサーが報告するのは問題を見つけた場所であって、あなたが間違えた場所ではありません。閉じ波かっこが 1 つ足りなければエラーはファイル末尾に出ますし、カンマが 1 つ多ければ次のキーの位置に出ます。ですから行番号を見たら、その行をにらむのではなく上へさかのぼって探してください。よくある原因の上位 3 つは、そもそも JSON 自体の問題ではありません。コードからコピーしたときに付いてきた // コメント、シングルクォート、オブジェクトや配列の最後の項目のあとに残ったカンマ —— この 3 つはいずれも JavaScript では正しく、JSON ではいずれも正しくありません。

タイムスタンプの 2 種類の桁数

ログや API に現れるタイムスタンプには 10 桁と 13 桁があり、前者は秒、後者はミリ秒です。ミリ秒を秒として解釈すると 5 万年後の日付になり、逆にすると 1970 年前後に着地します。ここがいちばんよく踏む落とし穴なので、変換ツールは桁数から単位を自動的に判定し、その判定結果を表示します。先に単位を選ばせることはしません。