ASCIIアートはコンピューターの黎明期から続く開発者文化の定番です。ターミナルの起動バナーからREADMEのヘッダー、IRCのチャンネル挨拶まで、あらゆる場面で使われてきました。このガイドでは、テキストからASCIIアートへの変換の仕組み、適切なFIGletフォントの選び方、そしてオンラインツールを使った即座の生成方法を解説します。
ASCIIアートテキストとは
ASCIIアートテキストは、標準の印刷可能文字を使って大きな文字形状を表現します。ピクセルアートとは異なり、ASCIIアートは純粋に文字だけで構成されています。等幅フォントが使用できる環境ならどこでも正しく表示されます:ターミナル、Markdownファイル、ソースコードのコメント、プレーンテキストメールなど。
_ _ _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/
FIGletフォントの仕組み
FIGlet(Frank, Ian, and Glenn’s Letters)はASCIIアートテキストを生成するための標準ライブラリです。FIGletフォントは、各文字を複数行のASCII表現にマッピングするプレーンテキストファイル(.flf)です。エンジンは入力文字列を読み込み、各文字の字形を検索して、行ごとに組み立てます。
出力に影響する主なパラメーター:
- フォント — 字形のスタイルを定義(ブロック、スクリプト、シャドウ、3Dなど)
- 幅 — 折り返し前の最大文字数
- レイアウト — 文字間のスペース(フル、フィット、またはスマッシュ)
- 方向 — 左から右、または右から左
人気のFIGletフォント
| フォント | スタイル | 最適な用途 |
|---|---|---|
standard | 清潔で読みやすい | 汎用、READMEヘッダー |
banner | 全大文字、太字 | 短いバナーやお知らせ |
slant | イタリック風 | コードのセクション区切り |
shadow | ダブルシャドウ | ターミナルの挨拶 |
big | 大きくシンプル | 素早い視認性 |
block | 塊状の3D | プロジェクトロゴ |
script | 筆記体風 | クリエイティブな見出し |
doom | スペースインベーダー風 | ゲームプロジェクト、レトロ感 |
speed | 丸みを帯びた | モダンなCLIツール |
3d | 立体感 | 奥行きのあるロゴ |
よくある使用ケース
READMEヘッダー
GitHubとGitLabはコードブロック内のASCIIアートを正しく表示します:
```
____ _____ _
/ __ \___ ___ ____ |_ _|__ ___ | |
/ / _` / _ \/ _ `|/ _` || |/ _ \ / _ \| |
\ \__,_\___/\_,_/_/|_/ |_|\___/\___/|_|
\____/
```
ほとんどのターミナルの幅とGitHubのプレビューペインとの互換性のため、幅を80文字以内に保ちましょう。
ターミナル起動バナー
~/.zshrcや~/.bashrcにASCIIアートを追加する開発者も多くいます:
# ~/.zshrc
cat << 'EOF'
____ _ ___ __ ___
| _ \ _____ __/ \ / _ \/ _/ __|
| | | / _ \ \ / / _ \ | | | | |___ \
| |_| | __/\ V / ___ \ | |_| | |___) |
|____/ \___| \_/_/ \_\ \___/|_|____/
EOF
コードのセクション区切り
長いソースファイルでは、論理セクションを分けるためにASCII区切りを使うことがあります:
# ============================================================
# ██████╗ █████╗ ████████╗ █████╗ ██████╗ █████╗ ███████╗███████╗
# ============================================================
プログラムでASCIIアートを生成する
Node.js(figletパッケージ)
npm install figlet
import figlet from 'figlet';
figlet.text('Hello World', { font: 'Standard' }, (err, data) => {
if (err) throw err;
console.log(data);
});
// 同期版
const result = figlet.textSync('ZeroTool', { font: 'Slant' });
console.log(result);
Python(pyfigletパッケージ)
pip install pyfiglet
import pyfiglet
# デフォルトフォント
result = pyfiglet.figlet_format("Hello World")
print(result)
# フォント指定
result = pyfiglet.figlet_format("ZeroTool", font="slant")
print(result)
# 利用可能なフォント一覧
fonts = pyfiglet.FigletFont.getFonts()
print(f"{len(fonts)}種類のフォントが利用可能")
Go(go-figureパッケージ)
go get github.com/common-nighthawk/go-figure
import figure "github.com/common-nighthawk/go-figure"
func main() {
myFigure := figure.NewFigure("Hello World", "standard", true)
myFigure.Print()
// カラー出力
colorFigure := figure.NewColorFigure("ZeroTool", "slant", "green", true)
colorFigure.Print()
}
幅と折り返しの考慮点
ASCIIアートはコンテナが狭すぎると崩れます。目安:
- 80列:ほとんどのターミナルで安全、クラシックなデフォルト
- 120列:ほとんどのIDE端末とモダンなディスプレイで安全
- ロゴの折り返しは絶対避ける — 生成前に対象の幅を確認
文字幅の短いフォント(speed、small)は同じ列数でより多くのテキストを収めることができます。コピー前にジェネレーターの幅プレビューで確認しましょう。
出力をきれいに保つコツ
- 狭いフォントでは大文字を使う — 多くのFIGletフォントは大文字向けに設計されており、小文字の字形はアンバランスに見えることがある
- 等幅フォントのコンテキストでテスト — プロポーショナルフォントでは行がずれる
- ワンクリックコピー — オンラインツールは正確なスペースを保持した生の複数行文字列をコピーする
- 異なるターゲット向けのエスケープ — JSON文字列では改行は
\nにする必要があり、YAMLではブロックスカラー(|)を使ってリテラル改行を保持する
オンラインASCIIアートジェネレーターの使い方
任意のテキストを貼り付け、200種類以上のFIGletフォントからライブプレビューで選択し、ワンクリックでコピー。インストール不要、APIキー不要、レート制限なし — すべてブラウザ内で動作します。
機能:
- 入力またはフォント変更時のライブプレビュー
- 200種類以上のFIGletフォントをスタイル別に分類
- クリップボードへのワンクリックコピー
- 対象コンテナに合わせた幅制御
- 初回読み込み後はオフラインで使用可能