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を使います