Base64とは何か?エンコードの仕組みと使いどころを徹底解説

なぜメール・WebはBase64を使うのか。バイナリをテキストで扱う意義から実装例まで丁寧に解説。

Base64とは何か?

Base64は、バイナリデータを64種類のASCII文字で表現するエンコード方式です。

なぜBase64が必要か

テキストプロトコル(メール・XMLなど)は、バイナリデータを直接扱えません。そこで、バイナリを安全なテキスト形式に変換するためにBase64が使われます。

仕組み

入力バイト列を6ビットずつ区切り、それぞれを64文字(A-Z, a-z, 0-9, +, /)の対応テーブルで文字に変換します。

元テキスト: "Man"
バイナリ:   01001101 01100001 01101110
6ビット区切: 010011 010110 000101 101110
Base64:     T      W      F      u

使いどころ

  • メール添付ファイル: MIMEエンコード
  • Data URI: <img src="data:image/png;base64,...">
  • JSON/REST API: バイナリをJSON内で扱う場合
  • 認証情報: Basic認証ヘッダー(Authorization: Basic ...

JavaScriptでの使い方

// エンコード
const encoded = btoa('Hello, World!');
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

// デコード
const decoded = atob('SGVsbG8sIFdvcmxkIQ==');
console.log(decoded); // "Hello, World!"

// 日本語(UTF-8)の場合はTextEncoderが必要
function encodeUTF8Base64(str) {
  const bytes = new TextEncoder().encode(str);
  const binary = String.fromCharCode(...bytes);
  return btoa(binary);
}

注意点

  • Base64は暗号化ではありません。簡単にデコードできます
  • データサイズが約33%増加します
  • URLで使う場合は +-, /_ に置換するURL-safe Base64を使います