あおみかんのブログ

フリーランスのIT系エンジニア。ゲーム制作スタジオ4th cluster代表。

【同人誌草稿】 第一章 コンピュータと文字

まえがき

最近、某えりっくが書いてる「ぷろぐらみんぐおさんぽまっぷ」に触発?インスパイア?されて何か書いてみようかと思っていて、ブログに草稿を書いていこうと思っています。

何かWebプログラミングに偏ってね?みたいな意見も見られたし

むしろ、Webプログラミングを初めてみたい人に向けて偏らせた文章を書いた方がいいのかなとか、ふわっとしたアイディアが降ってきたので書き始めようかな、という感じです。 ちなみに「ぷろぐらみんぐおさんぽまっぷ」は若干ですが予備知識の要求水準が高いと思ったので、さらに敷居を下げます。

前々から、情報科学…というか情報技術には良い教科書が必要だと思っていたので、そこへの布石になればいいなとも思っています。

コンピュータと文字

コンピュータと文字、という見出しで「えー、Webプログラミングの勉強しに来たのに、突然めんどくせー話だなー。」って思うかもしれません。でも、大事なことなので、ちょっとだけ我慢して読んでおいてください。なるべく短くまとめました。

コンピュータが0と1で成り立っている、というのは有名な話なので、あなたも知っていることでしょう。 私達は今では、この0と1を使って、画像や音声、映像、プログラムそれ自体、といった様々なものをデータとして表現しています。 文字はとても重要ですから、データの中でも特別な地位を持っています。

コンピュータは英語圏で生まれたし、生まれた時点で世界公用語と言える地位を英語が担っていたので、コンピュータで使われる文字や単語は英語がベースになっています。 とくに最初の頃にアルファベットと一部の記号が"ASCIIコード"として定められました。そして、その後もインターネットをはじめとする様々な仕組みが、この"ASCIIコード"を中核に発展していきました。
しばらく経って、さまざまな言語でコンピュータを使うために、たくさんの文字が扱えるようになりました。 Unicodeというものですが、本章では詳しく述べません。

ただのテキストをファイルとして保存したものを時折「プレーンテキスト(Plain Text)」と呼びます。 また、文字による仕組みを「キャラクタベース」(cf. CUI:キャラクタベースユーザインタフェース)と呼ぶことがあります。

小難しい話はこのぐらいにして、続きに行きましょう。

【次回予告】 コンピュータの通信 〜わたしたちがWebサイトを見る時に何が起きているのか〜

本書の構成予定メモ

1章は上記の文字の説明で閉じる。 0章って扱いにしてもいいかもしれないし、やっぱまどろっこしいからAppendixに押しこむのも視野。
2章ではHTTP通信の概略、ここでは言及せずにOSIの第7層(だっけ?HTTPのレイヤー)のみ。 DNSTCP/IPは紹介に留める。
3章では、HTMLなどの様々なファイルの解釈までを行う。
4章、Webサーバーの仕組みと実際に使われているシステムの紹介。(apache/nginx については、指定されたパスのファイルを読むように「作られている」事を強調したい。)
5章、簡単なコーディングでWebサーバーとWebアプリケーションの基本的な仕組みの解説 (sinatraを例にするつもりだが、少しばかりnode.jsと迷っている)。 ここで、様々な言語があって選ぶのが大変であることに言及。
6章、RDBMS、NoSQLなど具体的な、Webアプリケーションを支えるバックエンド技術の紹介
7章、最近の流行り (APIの話やAWSから始まったクラウドコンピューティングの話。あ、ここでのクラウドの定義は大規模サーバー群を共有して使うことで計算資源のピーク時に合わせて冗長性をもたせすぎず、待機時のコストを下げる方法な。)
8章、よいシステムを構築するために(少なくとも発展途上の今は様々なバッドノウハウを頭に全部入れておく必要があること。それらを上手く組み合わせて、妥当な動作をすればOKだということ。 完璧なシステムはないから、やってみて良くしていこうねPDCAってこと)