アスキーアートとは? 短い歴史と主な種類
キーボードの文字で描く絵のしくみと、その由来を紹介します。
アスキーアート(AA)は、キーボードで打てる文字だけで描いた絵です。色も線もありません。/、\、_、| などの文字を行ごとに並べて、文字や絵の形を作ります。
|\__/|
( o o )
=\ ww /=
/ \
(_| |_)
5行のねこも、ターミナルのプログラムが起動時に表示する大きなロゴも、どちらもアスキーアートです。
ASCII とは?
ASCII は、1963年にアメリカの標準として初めて発表された文字コードです。どのコンピューターでも、文字ごとに同じ番号を使えるようにしました。128個のコードのうち95個が印字できる文字で、英字の大文字と小文字、数字、スペース、そして ! @ # $ % ^ & * ( ) - _ = + [ ] { } ; : ' " , . < > / ? \ | ~ などの記号です。
この95文字はほぼすべてのコンピューターとフォントが対応しているため、これだけで描いた絵はどこに貼っても文字化けしません。アスキーアートが長く使われてきた大きな理由のひとつです。
短い歴史
- タイプライターの絵。 文字で絵を描くことはコンピューターより古くからありました。19世紀の終わりから、タイプライターで文字や記号を重ね打ちして絵を作る人たちがいました。
- プリンターと研究所。 1960年代は画像を印刷できるプリンターが珍しく、絵を文字で印刷していました。よく知られているのは、1966年にベル研究所の Ken Knowlton と Leon Harmon が写真を小さな記号の格子に変えた作品です。
- エモティコン。 1982年、カーネギーメロン大学の Scott Fahlman が、掲示板で冗談の目印として
:-)を使うことを提案しました。 - BBS と ANSI アート。 1980〜90年代のダイヤルアップの掲示板(BBS)では、ログイン画面や署名を文字の絵で飾りました。IBM PC のブロック文字(
█ ▓ ▒ ░)と色を組み合わせた絵は ANSI アートと呼ばれます。 - FIGlet。 1991年、Glenn Chappell と Ian Chai が、文字を大きな文字のバナーに変えるプログラム FIGlet を作りました。いまでもターミナルのプログラムの起動ロゴや README のバナーを作るいちばん一般的な方法です。
- 顔文字。 日本では
(^_^)のように正面から読む顔が広まりました。2ちゃんねるなどの掲示板では、全角文字を使った大きな AA も生まれました。Unicode が広まると、ʕ•ᴥ•ʔや¯\_(ツ)_/¯のようにさまざまな文字を混ぜるようになりました。
アスキーアートの種類
| 種類 | どんなものか | 例 |
|---|---|---|
| テキストバナー | FIGlet フォントで文字を複数行の大きな文字にしたもの | 起動画面、README のタイトル |
| 線画 | / \ _ | などの文字で輪郭を描いたもの |
ねこ、ケーキ |
| 濃淡のアート | .:-=+*#%@ のように濃さの違う文字で面を埋めたもの |
写真を変換したもの |
| ブロック・ANSI アート | █ ▓ ▒ ░ などのブロック文字で作った絵 |
ゲームのロゴ、ドット絵 |
| 顔文字・1行アート | 顔や動作を1行で表したもの | (╯°□°)╯︵ ┻━┻ |
厳密には、ASCII の95文字だけを使った絵がアスキーアートです。█ や ツ のように範囲外の文字を使った絵は、Unicode アートやテキストアートと呼ばれます。ふだんは、これらをまとめてアスキーアート(AA)と呼んでいます。
なぜ等幅フォントが必要なの?
アスキーアートは、すべての文字が同じ幅であることを前提にしています。コードエディタやターミナルで使われる等幅フォントでは、i も W も同じ幅をとるので、行がそろいます。
メッセンジャーや SNS のアプリの多くは、文字ごとに幅が違うプロポーショナルフォントを使っています。そこにアスキーアートを貼ると、スペースや i は狭く、W や @ は広くなって、絵が横にずれてしまいます。
対処法は3つあります。
- コードブロックを使う。 Discord、Slack、GitHub などコードブロックが使える場所では、アートを ``` で囲むと等幅フォントに切り替わります。Discord にアスキーアートを貼る方法をご覧ください。
- 幅の狭いアートを使う。 1行の顔文字や幅の狭いフォントなら、ずれが目立ちません。チャットアプリでアスキーアートが崩れる理由をご覧ください。
- 画像で送る。 アートを PNG で保存すれば、どのアプリでも同じ見た目になります。
どこで使われている?
- ターミナルのプログラムのロゴやサーバーのログイン画面
- GitHub README のタイトルバナーや、コードのコメントの区切り
- Discord サーバーのお知らせやゲームのチャット
- 誕生日のメッセージや SNS のプロフィール
lab.ascii で文字を入力すると、12種類のフォントのテキストバナーが一度にできます。写真を変換するなら画像アスキーアート変換を使ってください。