--- title: "Base64エンコードとは|仕組み・使い道・デコード方法をわかりやすく解説" description: "Base64エンコードの仕組みと使い道を解説します。メール添付・Data URI・JWTトークンでの活用例、エンコードとデコードの方法、URL-safeとの違いもまとめました。" date: 2026-05-30 tags: [Base64, エンコード, Web制作, セキュリティ] related_tools: [base64] draft: false --- Base64(ベースろくじゅうし)は、バイナリデータをテキスト形式に変換するエンコード方式です。画像・ファイル・バイナリデータを、テキストしか扱えない場所で安全に送受信するために使われます。 ## Base64とは コンピュータのデータはすべて0と1のバイナリです。メール・JSON・URLなどテキストベースのプロトコルは、バイナリデータをそのまま扱えないことがあります。 Base64は、あらゆるバイナリデータを `A–Z`・`a–z`・`0–9`・`+`・`/` の64文字と、パディング用の `=` だけで表現します。どんなデータでもこの文字セットに変換することで、テキスト環境で安全に扱えるようになります。 ``` 元データ: Hello Base64: SGVsbG8= ``` ## 主な使い道 ### メール添付ファイル MIME形式のメールでは、添付ファイルをBase64でエンコードしてテキストとして送信します。メールプロトコルが元々テキスト専用だったことが理由です。現在も内部的にBase64が使われています。 ### Data URI(CSSやHTMLに画像を埋め込む) 小さな画像をHTMLやCSSに直接埋め込む際に使います。HTTPリクエストを削減できます。 ```html ``` ```css .icon { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz..."); } ``` ### JWT(JSON Web Token) 認証で使われるJWTはヘッダー・ペイロード・署名の3パーツをBase64URL(URL-safe版)でエンコードして `.` でつないだ形式です。 ``` eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0In0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ``` ### APIレスポンスのバイナリデータ JSONはバイナリを直接格納できないため、画像や証明書をAPIで返す際にBase64でエンコードする設計がよく使われます。 ### Basic認証 HTTPのBasic認証では、ユーザー名とパスワードを `:` でつないでBase64エンコードして送信します。 ``` Authorization: Basic dXNlcjpwYXNzd29yZA== ``` **注意**: Base64は暗号化ではありません。デコードすれば元の値が取り出せます。Basic認証は必ずHTTPS通信上で使ってください。 ## エンコードの仕組み Base64は3バイト(24ビット)を6ビットずつ4文字に変換します。 ``` 元データ: M a n バイナリ: 01001101 01100001 01101110 6bit分割: 010011 010110 000101 101110 変換後: T W F u 結果: TWFu ``` 3バイトが4文字になるため、データサイズは元の**約33%増**になります。 ## Base64とBase64URLの違い 標準のBase64は `+` と `/` を使いますが、URLに含めると `%2B`・`%2F` とエンコードされてしまいます。**Base64URL**はこれを `-` と `_` に置き換えた URL-safe なバリアントです。JWTやOAuthではBase64URLが使われます。 | 種類 | 文字セット | 用途 | |---|---|---| | Base64 | `A–Z a–z 0–9 + /` | メール・ファイル | | Base64URL | `A–Z a–z 0–9 - _` | JWT・URL・クッキー | [Base64エンコード・デコードツール](/base64/)では、テキストのBase64エンコード・デコードとファイルのData URI変換をブラウザ内で処理できます。URL-safeモードの切り替えも対応しています。