🚀 All Your Base64
現代的で効率的なCLIユーティリティで、あらゆる入力ファイルをBase64文字列に変換し、豊富な出力オプションを提供します。TypeScriptで構築され、パフォーマンスと開発者体験を重視しています。

🚀 クイックナビゲーション
🚀 インストール • 🎯 クイックスタート • 🤖 MCPサーバー • 📖 コマンド • 🎨 出力形式 • ⚡ 高度な使用法 • 🔧 トラブルシューティング • 🧪 APIリファレンス
✨ 主な機能
✨ 現代的で高速 - TypeScriptで構築され、パフォーマンスが最適化されています。
🔍 スマートな検出 - file-type と mime-types を用いた業界トップレベルのMIMEタイプ検出機能。
📁 多様な入力 - ファイル、標準入力、文字列がサポートされています。
🎨 複数の出力形式 - 生データ、JSON、JS、TS、CSS、HTML、XML、YAML、Markdownが利用できます。
🔄 双方向対応 - エンコードとデコードの両方をサポートします。
🛡️ 堅牢性 - 包括的なエラーハンドリングとバリデーションが備わっています。
📊 メタデータ - ファイル情報、ハッシュ、処理統計を提供します。
🎯 Data URI - 適切なMIMEタイプを持つData URIを生成します。
🌍 クロスプラットフォーム - macOS、Linux、Windows、Docker、クラウド環境で動作します。
なぜayb64を選ぶべきか?
基本的なBase64ツールは単にファイルを文字列に変換するだけですが、ayb64は完全な現代的なソリューションを提供します。
🎨 8種類の出力形式 - 生データ、JSON、JavaScript、TypeScript、CSS、HTML、XML、YAML、Markdown。
🤖 AI統合 - AIワークフロー用のメモリとジョブ再呼び出し機能を備えた組み込みMCPサーバー。
🔍 スマートな検出 - 業界トップレベルのMIMEタイプ検出機能(100種類以上のファイルタイプをサポート)。
📋 豊富なメタデータ - ファイル情報、ハッシュ、処理統計、タイムスタンプ。
🎯 ウェブ対応 - ウェブ開発ですぐに使えるData URIを生成します。
⚡ パフォーマンス - TypeScriptで構築され、メモリ使用量が最適化され、ベンチマークで高速な速度を誇ります。
🔄 多様な入力 - ファイル、標準入力、文字列が自動検出されます。
🛡️ 本番環境対応 - 包括的なエラーハンドリング、バリデーション、テストが行われています。
📊 開発者体験 - 役立つ出力とサンプルを備えた現代的なCLI。
基本的なファイルからBase64への変換以上の機能が必要な開発者に最適です。
📦 インストール
グローバルインストール(推奨)
npm install -g ayb64
ローカルインストール
npm install ayb64
npxを使用する(インストール不要)
npx ayb64 --help
npx ayb64 --help
🚀 クイックスタート
ayb64 encode myfile.jpg
ayb64 encode myfile.jpg --wrap 76
ayb64 encode image.png --data-uri
ayb64 encode document.pdf -o output.b64 --metadata
ayb64 decode SGVsbG8sIFdvcmxkIQ== -o hello.txt
echo "Hello, World!" | ayb64 encode
ayb64 info myfile.jpg --json
🤖 AIエージェント用のMCPサーバー
All Your Base64には、AIエージェントとコーディングタスクに最適化された強力なModel Context Protocol (MCP)サーバーが含まれています。MCPサーバーは、メモリ、ジョブ再呼び出し、変更検出用のチェックサム、およびAIワークフロー用の特殊なツールを提供します。
MCPサーバーの機能
🧠 スマートメモリ - IDによるジョブ再呼び出し機能を備えたLRUキャッシュ。
🔍 変更検出 - SHA256チェックサムによるファイル変更検出。
🤖 AI最適化 - コーディングと開発ワークフロー用に設計されたツール。
📋 ジョブ履歴 - 以前のエンコード操作を追跡し、再呼び出しできます。
🔗 Data URI - 画像やアセット用のウェブ対応Data URIを生成します。
⚡ パフォーマンス - 軽量で拡張可能で堅牢です。
MCPサーバーのツール
encode - 形式オプションとジョブ追跡機能を備えたファイル/データのエンコード。
decode - 自動検出とファイル出力を備えたBase64のデコード。
recall - 完全なコンテキストを持つIDで以前のジョブを取得します。
jobs - メタデータ付きで最近の操作をリスト表示します。
datauri - ウェブ開発用に最適化されたData URIを生成します。
memory - ジョブキャッシュを管理します(統計、クリア)。
MCPサーバーの使用方法
MCPサーバーを起動する
ayb64 mcp
ayb64-mcp
npm run mcp
npx tsx src/mcp-server.ts
MCPクライアントで設定する
VS Code/Cursor/Cline (mcp.jsonに追加):
{
"mcpServers": {
"ayb64": {
"command": "ayb64",
"args": ["mcp"]
}
}
}
Claude Desktop:
{
"mcpServers": {
"ayb64": {
"command": "ayb64-mcp"
}
}
}
MCPワークフローの例
ウェブで使用するために画像をエンコードする:
Tool: encode
Input: {
"data": "/path/to/logo.png",
"isFile": true,
"format": "js",
"dataUri": true
}
Output: Job ID + JavaScript const with data URI
以前のジョブを再呼び出しする:
Tool: recall
Input: {"jobId": "job_1234567890_abc123"}
Output: Full original result with metadata
CSS用のData URIを生成する:
Tool: datauri
Input: {"input": "/path/to/background.jpg"}
Output: data:image/jpeg;base64,... (ready for CSS)
📖 コマンド
encode / e
入力をBase64形式に変換します。
ayb64 encode [input] [options]
引数:
input - 入力ファイルのパス(標準入力を使用する場合は -)
オプション:
-o, --output <path> - 出力ファイルのパス(デフォルト: 標準出力)
-f, --format <format> - 出力形式: raw, json, js, ts, css, html, xml, yaml, md
-w, --wrap <columns> - 指定した列幅でBase64出力を折り返します。
-d, --data-uri - MIMEタイプ付きのData URIを生成します。
-m, --metadata - 出力にファイルのメタデータを含めます。
--no-mime - MIMEタイプ検出を無効にします。
--quiet - 必須ではない出力を抑制します。
decode / d
Base64入力を元の形式にデコードします。
ayb64 decode [input] [options]
引数:
input - 入力ファイルのパスまたはBase64文字列(標準入力を使用する場合は -)
オプション:
-o, --output <path> - 出力ファイルのパス(デフォルト: 標準出力)
-m, --metadata - 利用可能な場合はメタデータを表示します。
--quiet - 必須ではない出力を抑制します。
info / i
変換せずにファイル情報とメタデータを表示します。
ayb64 info <input> [options]
引数:
オプション:
-j, --json - JSON形式で出力します。
mcp
AIエージェント用のModel Context Protocolサーバーを起動します。
ayb64 mcp
このコマンドは、AIエージェントとコーディングワークフローに最適化されたBase64変換ツールを提供するMCPサーバーを起動します。サーバーには、メモリ、ジョブ再呼び出し、チェックサム、および特殊なツールが含まれています。
オプションなし - MCPサーバーは標準入出力を介して通信するスタンドアロンプロセスとして実行されます。
batch / b
複数のファイルをバッチ処理します(近日公開予定)。
ayb64 batch <pattern> [options]
🎨 出力形式
生データ形式(デフォルト)
ayb64 encode file.txt
JSON形式
ayb64 encode file.txt --format json --metadata
{
"data": "SGVsbG8sIFdvcmxkIQ==",
"size": 22,
"metadata": {
"filename": "file.txt",
"mimeType": "text/plain",
"size": 13,
"hash": "abc123...",
"processingTime": 2
}
}
JavaScript/TypeScriptモジュール
ayb64 encode file.txt --format js --metadata
const base64Data = 'SGVsbG8sIFdvcmxkIQ==';
const metadata = {
filename: 'file.txt',
mimeType: 'text/plain',
size: 13,
};
module.exports = { base64Data, metadata };
Data URI
ayb64 encode image.png --data-uri
HTMLドキュメント
ayb64 encode file.txt --format html --metadata
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Base64 Data</title>
</head>
<body>
<div class="base64-data" data-content="SGVsbG8sIFdvcmxkIQ=="></div>
<div class="metadata">
<h3>File Information</h3>
<p><strong>Filename:</strong> file.txt</p>
<p><strong>MIME Type:</strong> text/plain</p>
<p><strong>Size:</strong> 13 bytes</p>
</div>
</body>
</html>
CSSカスタムプロパティ
ayb64 encode file.txt --format css
.base64-data {
--base64-content: 'SGVsbG8sIFdvcmxkIQ==';
}
.base64-data::before {
content: var(--base64-content);
}
💻 使用例
基本的な使用法
ayb64 encode myfile.jpg
ayb64 encode myfile.jpg --wrap 76
ayb64 encode image.png --data-uri
高度な使用法
行の折り返し
ayb64 encode file.txt --wrap 64
ayb64 encode file.txt --wrap 76
複数ファイルの処理
for file in *.jpg; do
ayb64 encode "$file" -o "${file}.b64"
done
find . -name "*.png" -exec ayb64 encode {} -o {}.b64 \;
パイピングとリダイレクト
curl -s https://example.com/image.jpg | ayb64 encode --data-uri
ayb64 encode file.txt | ayb64 decode -o restored.txt
base64 -d encoded.txt | ayb64 encode --format json
🔧 エラーハンドリング
All Your Base64は、役立つ提案を伴う包括的なエラーハンドリングを提供します。
$ ayb64 encode nonexistent.txt
Error: File not found: nonexistent.txt
Suggestions:
• Check that the file path is correct
• Ensure the file exists
Path: nonexistent.txt
一般的なエラータイプ:
- ファイルが見つからない - ファイルパスとパーミッションを確認してください。
- 無効なBase64 - デコード時に入力形式を確認してください。
- アクセス許可が拒否された - ファイル/ディレクトリのパーミッションを確認してください。
- 無効な形式 -
--help を使用してサポートされている形式を確認してください。
🧪 APIリファレンス
ファイル情報出力
--metadata を使用すると、包括的なファイル情報が得られます。
{
"filename": "example.jpg",
"mimeType": "image/jpeg",
"size": 153600,
"created": "2023-01-01T00:00:00.000Z",
"modified": "2023-01-02T00:00:00.000Z",
"hash": "sha256:a1b2c3d4...",
"processingTime": 15
}
サポートされるMIMEタイプ
このツールは file-type パッケージを使用してファイルタイプを自動検出し、以下のものをサポートしています。
- 画像: JPEG, PNG, GIF, WebP, SVG, BMP, TIFF, ICO
- ドキュメント: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX
- アーカイブ: ZIP, RAR, 7Z, TAR, GZIP, BZIP2
- メディア: MP4, AVI, MOV, MP3, WAV, OGG, FLAC
- テキスト: 平文, HTML, CSS, JavaScript, JSON, XML, YAML, Markdown
- フォント: TTF, OTF, WOFF, WOFF2, EOT
- その他多数...
⚙️ パフォーマンス
ベンチマーク
| ファイルサイズ |
時間 |
メモリ |
| 1 KB |
5ms |
0 B |
| 1 MB |
8ms |
92.26 KB |
| 10 MB |
51ms |
170.35 KB |
| 100 MB |
523ms |
257.27 KB |
| 200 MB |
1.0s |
447.2 KB |
ベンチマークは実ハードウェア(MacBook Pro, 2.4 GHz 8-Core Intel Core i9, 32GB DDR4, macOS 15.6.1)で実行されました。
パフォーマンスに関する注意事項:
- メモリ使用量はエンコード中のピークヒープ増加を示します。
- 非常にメモリ効率の良いBase64実装です。
- 処理時間はファイルサイズに応じて合理的にスケーリングします。
ベンチマークは npm run benchmark を使用して実ハードウェアで実行されました。
最適化のヒント
- 生データ形式を使用する - 最高のパフォーマンスを得るために。
- メタデータを避ける - 単純な変換の場合は。
- 適切な折り返し設定を使用する - ユースケースに合わせて。
- ファイルを個別に処理する - 大きなバッチではなく。
⚙️ 設定
環境変数
AYB64_MAX_MEMORY - 最大メモリ使用量のしきい値
AYB64_QUIET - デフォルトのクワイエットモード設定
設定ファイル
デフォルトの設定を ~/.ayb64rc.json に作成します。
{
"format": "raw",
"wrap": 76,
"metadata": false
}
🔌 統合例
Node.jsスクリプト
const { spawn } = require('child_process');
function encodeFile(filePath) {
return new Promise((resolve, reject) => {
const child = spawn('ayb64', ['encode', filePath, '--format', 'json']);
let output = '';
child.stdout.on('data', (data) => {
output += data.toString();
});
child.on('close', (code) => {
if (code === 0) {
resolve(JSON.parse(output));
} else {
reject(new Error(`Process exited with code ${code}`));
}
});
});
}
ウェブ開発
CSS用のData URIを生成する。
ayb64 encode logo.png --data-uri > logo-data.css
JavaScriptモジュールを作成する。
for file in assets/*.png; do
ayb64 encode "$file" --format js -o "${file%.png}.js"
done
CI/CDパイプライン
- name: Encode assets
run: |
for file in dist/assets/*; do
ayb64 encode "$file" --format json --metadata > "$file.json"
done
🔧 トラブルシューティング
一般的な問題
Q: "Cannot find module 'file-type'"
A: npm install を実行して依存関係をインストールしてください。
Q: "Permission denied" エラー
A: ファイルのパーミッションを確認してください: chmod +r filename または適切な権限で実行してください。
Q: 出力が破損している
A: シェル/ターミナルでバイナリデータを適切に処理していることを確認してください。
デバッグモード
詳細な出力を得るためにデバッグ環境変数を設定します。
DEBUG=ayb64:* ayb64 encode file.txt
👥 コントリビュート
コントリビューションを歓迎します!ガイドラインについては CONTRIBUTING.md を参照してください。
開発環境のセットアップ
git clone https://github.com/skullzarmy/all-your-base64.git
cd all-your-base64
npm install
npm run dev
テストの実行
npm test
npm run test:coverage
npm run test:watch
ビルド
npm run build
npm run lint
npm run format
📄 ライセンス
MIT © Joe Peterson
🙏 謝辞
MIMEタイプ検出の強力なサポート
All Your Base64は、堅牢なファイルタイプ検出のためにオープンソースコミュニティの素晴らしい成果を活用しています。
🔍 file-type by Sindre Sorhus - マジックナンバーを使用したファイルタイプ検出のゴールドスタンダード。この素晴らしいパッケージは、バイナリシグネチャを使用して100種類以上のファイルタイプを高速に検出します。
📄 mime-types by jshttp - 拡張子マッピングを備えた包括的なMIMEタイプデータベース。Node.jsエコシステム全体のウェブサーバーのMIMEハンドリングのバックボーンです。
これらのパッケージは、独自に実装して維持するには何年もかかるであろうエンタープライズグレードのファイル検出を提供しています。巨人の肩の上に立っています! 🚀
オープンソースの依存関係
このプロジェクトは、これらの優れたオープンソースパッケージを使用して構築されており、感謝しています。
プラットフォームサポート
All Your Base64は、さまざまなプラットフォームでシームレスに動作します。
🍎 macOS - 適切なファイルシステム処理を備えたネイティブサポート
🐧 Linux - すべてのディストリビューションで完全な互換性
🪟 Windows - PowerShell、コマンドプロンプト、WSLをサポート
📦 Docker - CI/CDパイプライン用のコンテナ対応
☁️ クラウド - AWS Lambda、Google Cloud Functions、Azure Functions
📝 変更履歴
v1.0.0
- 最初のリリース
- コアのエンコード/デコード機能
- 複数の出力形式
- 包括的なエラーハンドリング
- 完全なテストカバレッジ
愛とたくさんのコーヒーで作られました ❤️☕
"In the beginning was the bit, and the bit was with base64, and the bit was base64."