基本

アスキーアートとは? 短い歴史と主な種類

キーボードの文字で描く絵のしくみと、その由来を紹介します。

最終更新:

アスキーアート(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つあります。

  1. コードブロックを使う。 Discord、Slack、GitHub などコードブロックが使える場所では、アートを ``` で囲むと等幅フォントに切り替わります。Discord にアスキーアートを貼る方法をご覧ください。
  2. 幅の狭いアートを使う。 1行の顔文字や幅の狭いフォントなら、ずれが目立ちません。チャットアプリでアスキーアートが崩れる理由をご覧ください。
  3. 画像で送る。 アートを PNG で保存すれば、どのアプリでも同じ見た目になります。

どこで使われている?

  • ターミナルのプログラムのロゴやサーバーのログイン画面
  • GitHub README のタイトルバナーや、コードのコメントの区切り
  • Discord サーバーのお知らせやゲームのチャット
  • 誕生日のメッセージや SNS のプロフィール

lab.ascii で文字を入力すると、12種類のフォントのテキストバナーが一度にできます。写真を変換するなら画像アスキーアート変換を使ってください。