コンパクトなバイナリ JSON に CBOR エンコードを使う
CBOR(Concise Binary Object Representation、RFC 8949)は JSON ライクなデータ向けのバイナリシリアライズ形式で、JSON より小さく高速です。
- 1
CBOR は、JSON 類似のデータ(オブジェクト、配列、文字列、数値、真偽値、null)をバイナリでエンコードします。JSON より小さく(引用符なし、区切り文字なし、コンパクトな整数エンコード)、パースも高速です(テキストスキャンが不要)。また、JSON にない型(バイト文字列、日付、多倍長整数)もサポートします。
- 2 Base64 エンコーダー →
データを CBOR(バイナリ)にエンコードした後、結果を base64 にエンコードして、テキスト専用チャネル(HTTP、JSON フィールド、ログ)経由で転送します。受信側は base64 をバイトにデコードし、次に CBOR を元のデータ構造にデコードします。
- 3 Base64 デコーダー →
base64 をデコードして CBOR バイトを復元し、次に CBOR を元のデータにデコードします。この 2 段階のプロセス(base64 → CBOR → データ)は、CBOR がテキストベースのプロトコルを通らなければならない場合によく使われます。
- 4
CBOR を使う場面:ペイロードサイズが重要な場合(IoT、モバイル)、パース速度が極めて重要な場合、base64 の膨張なしにバイナリデータ(バイト配列)が必要な場合。Web API では、依然として JSON が既定です。CBOR にはコンテンツネゴシエーション(Accept: application/cbor)が必要です。内部サービスやリソース制約のある環境で使ってください。
よくある質問
- CBOR と MessagePack の違いは?
- どちらもバイナリ JSON フォーマットです。CBOR は IETF 標準(RFC 8949)で、より豊かな型システム(タグ、単純値)を持ちます。MessagePack は高速ですが、拡張性は低いです。標準準拠と拡張性なら CBOR を、生の速度なら MessagePack を選んでください。
- CBOR は JSON より小さいですか?
- 同じデータで通常 20〜50% 小さくなります(内容によります)。文字列と大きな整数が最も恩恵を受けます。小さな整数や真偽値が多いデータでは、CBOR のコンパクトな整数エンコードにより、削減効果が大きくなります。
このタスクを解決するワークフロー
Ascii85 から Base64 へ変換
Ascii85 をデコードし、より広い互換性のために Base64 として再エンコードする。 パイプライン
Base2048 から Base64 へ変換
Base2048(絵文字)をデコードし、標準転送のために Base64 として再エンコードする。 パイプライン
Base32 から Base64 へ変換
Base32 エンコード文字列を生バイトにデコードし、よりコンパクトな表現のために Base64 として再エンコードする。 パイプライン
Base58 から Base64 へ変換
Base58 をデコードし、標準互換性のために Base64 として再エンコードする。 パイプライン
Base64 エンコード後デコードのラウンドトリップ検証
テキストを Base64 にエンコードし、デコードしてラウンドトリップが元のデータを保持することを検証する。 パイプライン
Base64 から Base85 へ変換
Base64 をデコードし、コンパクトな表現のために Base85 として再エンコードする。 パイプライン
Base64 から Hex へ変換
Base64 文字列を生バイトにデコードし、検査や相互運用のために Hex として再エンコードする。 パイプライン
Blowfish 暗号化後に Base64 エンコード
Blowfish で暗号化し、テキストセーフな転送のために Base64 エンコードする。 パイプライン
Basic Auth 認証情報ペアのデコード
HTTP Basic Authorization ヘッダーの Base64 部分を username:password にデコードする。 パイプライン
DES 暗号化後に Base64 エンコード
DES で暗号化し、レガシー互換性のために Base64 エンコードする。 パイプライン
URL 転送用の JSON ペイロードのエンコード
JSON ドキュメントを URL パラメータ用に準備する: 整形、Base64 エンコード、パーセントエンコード — ネストされたパラメータデコードチェーンの正確な逆順。 パイプライン
AES 暗号化後に Base64 エンコード
平文を AES で暗号化し、テキストセーフな転送のために暗号文を Base64 としてエンコードする。 パイプライン
コンテンツのハッシュと Base64 エンコード
入力のハッシュを計算し、コンパクトな転送のためにハッシュダイジェストを Base64 としてエンコードする。 パイプライン
Hex から Base64 へ変換
Hex 文字列を生バイトにデコードし、コンパクトな転送のために Base64 として再エンコードする。 パイプライン
HMAC 署名後に Base64 エンコード
HMAC 署名を生成し、API 認証ヘッダーのために Base64 エンコードする。 パイプライン
Morse エンコードと Base64 転送
テキストを Morse 符号としてエンコードし、デジタル転送のために Base64 エンコードする。 パイプライン
JWT ペイロードのデコードとフォーマット
JWT トークンを解析し、ペイロードを抽出し、検査のために JSON をフォーマットする。 パイプライン
RC4 暗号化後に Base64 エンコード
RC4 で暗号化し、転送のために Base64 エンコードする。 パイプライン
RIPEMD-160 ハッシュ後に Base64 エンコード
RIPEMD-160 ハッシュを計算し、転送のために Base64 エンコードする。 パイプライン
テキストシャッフルと Base64 エンコード
テキスト文字をシャッフルし、その後結果を Base64 エンコードする。 パイプライン
Unicode エスケープと Base64 エンコード
テキストを Unicode エスケープし、ASCII セーフな転送のために Base64 エンコードする。 パイプライン
URL エンコード後 Base64 二重エンコード
URL エンコードし、API ペイロードの二重エンコードのために Base64 エンコードする。 パイプライン
ネストされた URL パラメータのデコード(Base64 JSON)
URL エンコード Base64 JSON を運ぶ URL パラメータを可読なフォーマット済み JSON に展開する。 パイプライン
UUencode 後 Base64 エンコード
テキストを UUencode し、その後結果を Base64 エンコードして二重エンコードする。 パイプライン
UUID 生成と Base64 エンコード
UUID を生成し、コンパクトな保存のために Base64 エンコードする。 パイプライン