【初心者の覚書】「アスキー(ASCII)」とは何か。〜文字コード？符号化方式？〜

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2867756/194110f0-e184-213d-4764-33f9a80fd929.png)
画像：[「【平成レトロ】知ってる？ アスキーアート　絵文字やスタンプとは違った“魅力” …表情ゆたかな作品たち」、LASISA](https://lasisa.net/photo/53729#photo3)


文字化けしない ~~文字コード~~ 符号化方式といえばUTF-8。気づいたら、「とりあえずUTF-8で」と束の間のひとときに符号化方式の選択を迫られたとしても何の疑問もなくUTF-8を選ぶだろう。
しかし、今日職場で「文字コードがアスキーだと...」という言葉を耳にし、~~文字コード~~ 符号化方式にアスキー？そんなこともあるのかと気になり、アート専用だと思っていた認識を改めたく慎んで書き記したい。
また、記事を公開した際、「UTF-8」や「アスキー」のことを「文字コード」だと誤認していたので、アスキーだけではなく、「符号化方式」についても触れたい。

# 文字コードvs符号化方式

文字コードとは「文字に一対一で対応する割り当てられた数値」のことを指す。

符号化方式とは文字や記号を数字（ビット列）に変換するルールや仕組みのことを指す。
例: ASCII, UTF-8, Shift_JIS


# ASCIIとは　〜American Standard Code for Information Interchange〜
1960年代に米国にて制定された記号、ローマ字の合わせて128字を定義した符号化方式である。

> 文字を7ビットの値(0～127)で表し、128文字が収録されている。
[「ASCII 【American Standard Code for Information Interchange】 アスキー」、IT用語辞典e-Words](https://e-words.jp/w/ASCII.html)



## ASCIIの父　〜Bob Bemer〜
ASCIIは、「よし、符号化方式作ろう」と思いつきによって作られたものではないようだ。

電子計算だけでなく文字入力・通信も可能になった時代、機械毎に思い思いに文字コードが量産されたことは想像に難くないだろう。
> Before ASCII was developed, ...each computer manufacturer represented alphabets, numerals, and other characters in its own way. 
（ASCII が開発される前は...各コンピューターメーカーは、アルファベット、数字、その他の文字を独自の方法で表していました。）
[" ASCII ", Britannica](https://www.britannica.com/topic/ASCII)


当時は文字を表示するために60種類以上の方法があったそうだ。参照：[ASCII](https://ethw.org/ASCII)


そんな中、”コンピュータ通信用の単一コード”を開発するための文字コードを[「ANSI（米国規格協会）」](https://www.ansi.org/)に提案したのがASCIIの父、Bob Bemerだった。


>IBMのボブ・ベマーがアルファベットを表記するための7ビットの符号化方式を ANSI（米国規格協会）に提案した。1963年（昭和38年）、ベマー案を若干修正する形で ANSI X 3.4、いわゆる「ASCIIコード」が制定された。
[「ASCIIコードは7ビット」、ぱふう家のホームページ](https://www.pahoo.org/e-soul/webtech/encode/encode02-01.shtm)

## 大統領令で認められたASCII
ASCIIという符号化方式が制定されて5年で大統領お墨付きの符号化方式になっているスピード感、すごいな。（小並感）

> 1968年3月11日、リンドンB.ジョンソン大統領は、連邦政府機関間の電子データ交換 (EDI) のための連邦情報処理標準として ASCII を採用することを義務付ける大統領令に署名しました。(大統領令 11110)
["Timeline of ASCII History", ASCIIcode.com](https://www.ascii-code.com/timeline)



## アスキーアートの歴史

「アスキーアート」とはコンピュータの符号化方式が設定される以前の活版印刷の時代から「テキストアート」という形で存在していたそうだ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2867756/a89a2c68-b61b-7a70-714e-c3459bd908c6.png)


[The Surprisingly Rich History of ASCII Art](https://thenewstack.io/surprisingly-rich-history-ascii-art/)

上記の画はフローラ・FF・ステイシーさんという方が 1898 年にタイプライターだけを使って作成した画像。

制限された状態で生み出したいという人間の想像力の底力を感じさせられ、心を動かされてしまった。

> 認識可能なASCIIアートの最も古い例は、1960 年代半ばにベル研究所の従業員であるケネスノウルトンによって作成されましたが、それが広く普及したのは、電子掲示板システム(BBS)の出現により、1970年代後半から1980年代前半になってからでした。
[The Surprisingly Rich History of ASCII Art](https://thenewstack.io/surprisingly-rich-history-ascii-art/)

私たちが一般的にイメージする「アスキーアート」の起源的なものは、1967年にNYtimesに掲載された下記の画像のことらしい。


![computernude.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2867756/4cf97b85-fa36-b5de-d213-aa13620a58ce.png)


参照：[Leon Harmon, Ken Knowlton](https://buffaloakg.org/artworks/p20142-computer-nude-studies-perception-i)


もはやプロの所業である。


# なぜ7bitなのか？
特に気になった点が、「7ビット」が使われているという点だ。
ASCIIは10進数で0番から127番、２進数で「0000000」から「1111111」までで表される。２進数表記の中でいい感じに収めたかったから、なのだろうか。


> ASA/ANSIは規格を改定していき、最終的にはANSI INCITS 4-1986まで版を重ねるが、頑として7bit Codeの姿勢を崩さなかった。
...
英語以外の通信には8bitが必要であり、結局ASCIIコードは尊重をされつつも、通信の世界も1Byte＝8bitに移行することになった。
[「「1Byteが8bitに決まったワケ」についての長い話　まずは「バベッジの階差機関」から」、ITmediaNews](https://www.itmedia.co.jp/news/articles/2202/03/news151_7.html)

上記の主張強めな引用によると(「ASCII 7bit なぜ」という検索に上位でひっかかったので一応引用)、
英語圏(米国)では1byte=7bitと認めたいからASCIIも7bitにした、という記載があるが（もちろん英語以外を表示するためには拡張8bitの符号化方式で表示する必要があるのだが。）下記やその他サイトを調べると、必ずしも7bit至上主義的な理由からASCIIが7bitだったわけではないのではないかと感じた。

> ASCIIコードは貴重なメモリを1ビットでも無駄にすまいと、わざわざ7ビットのコード体系にしてある。
[「ASCIIコードは7ビット」、ぱふう家のホームページ](https://www.pahoo.org/e-soul/webtech/encode/encode02-01.shtm)

「パリティピット」これがASCIIが7bitである所以と読み取れた。

> 最上位桁の8ビット目は、チェックビット（パリティビット）として使われる場合が多く、その名残で、現在でも7ビットしか使えない環境が残っています。
[いま改めて「文字コード」について（その１）](https://xn--ruq167cnto080a.com/media_key/2980/#ASCII)

# 基本情報技術者試験における"ASCIIコード"の問題
進数。これはASCIIや符号化方式について考える上で避けて通れない問題のようだ。
なぜASCIIは7bitだったのかについて調べていたところ出てきた問題。


https://www.fe-siken.com/kakomon/19_haru/q11.html


# まとめ
ASCIIの記事を書くなんて簡単だろうと、アドベントカレンダーの記事テーマに選択したのだが、「符号化方式」の内容を「文字コード」という言葉で誤認し、記事を公開して改めて読み直してから気づいたレベルに染み込んでいたことに慄いている。



# 参考にした記事

https://ethw.org/ASCII

https://ja.wikipedia.org/wiki/ASCII

https://www.pahoo.org/e-soul/webtech/encode/encode02-01.shtm

https://www.asciiart.eu/

https://ja.wikipedia.org/wiki/1963%E5%B9%B4

https://www.gixo.jp/blog/12465/

https://gigazine.net/news/20201201-ascii-origin/

https://archive.org/details/ascii-bemer/page/n29/mode/2up