![](https://hrs-tokyo.com/wp-content/uploads/2021/06/event-banner.png)
全世界700万人が感動した『アメリカの中学生が学んでいる 14歳からのプログラミング』本を紹介します
2022.04.18
2016年の発売直後から大きな話題を呼び、中国・ドイツ・韓国・ブラジル・ロシア・ベトナムなど世界各国にも広がった「学び直し本」の圧倒的ロングセラーシリーズ「Big Fat Notebook」の日本版が刊行された。藤原和博氏(朝礼だけの学校 校長)「プログラミングは新しい言語の獲得だ」、野田クリスタル氏(お笑い芸人・マヂカルラブリー)「プログラミングがやりたくなる! まるでゲームの攻略本みたい!」、尾原和啓氏(元グーグル・IT評論家)「プログラミングを通して、ビジネスにも応用できる考え方が見えてくる!」と絶賛されている。
全世界700万人が感動した同シリーズのプログラミング編『アメリカの中学生が学んでいる 14歳からのプログラミング』より、本文の一部を抜粋・掲載します。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/7/2/1080m/img_8d29f85f425842ba612515962f2b9f3e83247.jpg)
世の中には数百種類のプログラミング言語があって、プログラマは、しようとしている作業の種類に応じて、プログラミング言語を使い分けている。
たとえば、JavaScript、PHP、Pythonといった言語は、ウェブページを作成するのに使われる。ウェブページとは、ウェブブラウザ(Google Chrome、Safari、Firefoxなど)に表示できる文書のこと。ウェブページを集めたものをウェブサイトという。
それから、モバイルアプリケーションは、Swift、Java、Cといったプログラミング言語でつくられることが多い。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/7/0/1080m/img_702c95168457dbcbd31287add6a2f2e347978.png)
目次
プログラミング言語を使う
それぞれのプログラミング言語には、別々の強みがある(たとえば、サクサク動く言語、書きやすい言語、きれいなグラフィックスを表示できる言語、というふうに)。
だから、巨大なプロジェクトになると、何種類かのプログラミング言語を使い分けることもあるのだ。たとえば、こんな感じだ。
Facebookでは、Python、JavaScript、PHPなど。
YouTubeでは、Python、JavaScript、C++など。
Twitterでは、JavaScript、C++、Rubyなど。
3つのウェブサイトとも、共通してJavaScriptが使われている。
それは、JavaScriptが(HTMLやCSSと並んで)、主にフロントエンドの言語として使われるからなのだ。
つまり、ウェブサイトのうち、画面上で実際に見える部分をつくるのに使われる言語、ということだ。
一方で、Facebook、YouTube、Twitterのようなウェブサイトは、大量の情報(投稿、コメント、プロフィール写真、動画など)を保存している。
だから、大量の情報を整理して、フロントエンドと結びつけるためのプログラミング言語、つまりバックエンドの言語が必要になる。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/c/c/1080m/img_cc7f9ca63ae409d24b8fa7f17b647b97170443.png)
目的によって、使われるバックエンドの言語も変わる。
たとえば、C++は、ほかのプログラミング言語と比べて、すばやく実行される(つまり命令をこなす)けれど、書くのが難しい。
だから、企業は、製品をまずPythonみたいな簡単な言語で書き、あとで部分部分をC++に置き換えて、情報の処理速度を高めたりするのだ。
世界中の言語を話せる人がいないのと同じで、すべてのプログラミング言語がわかるプログラマなんて、もちろんいない。
それでも、いくつかのプログラミング言語を知っておくと便利だ。
たとえば、グラフィックスに優れた言語と大量のコードの処理に優れた言語を組み合わせる、なんてことができるようになるからだ。しかも、ほとんどのプログラミング言語は構造が似ている。
コンピュータはどうやってコードを読む?
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/a/5/1080m/img_a521788d1bdfec2c965baa57a74a354622720.png)
バイナリ
コンピュータは、オンとオフのふたつの状態を持つ電気回路を使って、情報を処理するけれど、コンピュータ科学者は、オンとオフの状態を表すのに、数字の1と0を使う。
この1と0の列は、バイナリまたは機械語というエンコードの一種だ。
バイナリには、0と1のどちらかの数字しかない、と覚えておけばわかりやすい。
バイナリでは、数字の1と0が使われることが多いけれど、実は「オン」と「オフ」とか、「○」と「×」で表したってかまわない。
単語、数値、文字、記号、画像、動画、プログラム、絵文字、音楽は、みんなバイナリで表現できるのだ。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/e/4/1080m/img_e4b37004b2a82b371f5f27e9e041621649684.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/c/1/1080m/img_c1322699a9fea42919908bc7ab90f60e54589.png)
コンピュータのCPUは、機械語で書かれた命令しか読めない。
だから、人間がコンピュータにプログラムを入力したあと、コンピュータプログラムは必ず、バイナリ形式の機械語に変換されるのだ。プログラムを機械語に変換する(置き換える)プロセスのことをコンパイルという。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/6/a/1080m/img_6a544f0a3fef34230ba775a64482c39e34895.png)
画面上に「Hello, World!」と出力するのに、どのプログラミング言語を使ったとしても、機械語はまったく同じになる。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/0/2/1080m/img_023ab2fc342aad4f016be19197dfc77e294072.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/9/4/1080m/img_94de78d290adf63e6c3b16362b65417c147118.png)
数値をバイナリで表現する
バイナリは、数値を使って数をかぞえたり、数値を表現したりする方法のひとつといえる。バイナリは、0と1の2種類の数字を使うことから、2進法とも呼ばれる。一方、みんながいつも使っている数のかぞえ方は、10種類の数字を使うので、10進法と呼ばれる。10進法の場合、それぞれの桁の値は、そのすぐ右の桁の値よりも、10倍大きくなる。数値が大きくなるたびに、左側に新しい桁を追加していくのだ。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/e/8/1080m/img_e8bb2c1e1251980da68a7c5f383e8ca160646.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/5/3/1080m/img_53acf67e8697369e22ad8ce830a1cd0f204993.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/a/5/1080m/img_a5f9b4decaade4884a9cf64a0b599c9a80560.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/7/0/1080m/img_70d7a4009a971fb8212f1550f4c2192a69946.png)
バイナリの桁の値:それぞれの桁の値は、その右の桁の2倍。
数値1をバイナリで表すには、1の桁に「1」と書けばいい。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/f/2/1080m/img_f2f3a2e1a9ff66fae5393e6738af146426207.png)
じゃあ、数値2をバイナリで書くとしたら、どうすればいい?
バイナリには、「2」という数字はない。だから、1の桁に0と書いて、左へひとつ移動し、2の桁に1と書けばいいのだ。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/d/c/1080m/img_dc02dcad29a87460b9754e8f1151d32a35641.png)
1の桁は0なので、桁の値は0×1で0。
2の桁は1なので、桁の値は1×2で2。
ふたつの値を足すと、0+2なので、2になる。
基本的な足し算を使うだけで、バイナリの値が求められる。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/c/f/1080m/img_cfa95c011ea5776a321fa948245fb74760716.png)
コンピュータみたいに、バイナリを「1」と「0」の代わりに、「オン」と「オフ」で考えてもいい。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/4/3/1080m/img_438508ff4bfc7cff6370c4fd88e9c17d295076.png)
文字をバイナリで表現する
最初、コンピュータは、数学の計算をするためだけに使われていたけれど、その後、文字や記号をバイナリで表現する方法も開発された。
ASCII(アスキー)とは、一つひとつのアルファベットや記号に、専用のバイナリコードを割り当てたもののこと。
それぞれの文字に数値を割り当て、それをバイナリへとエンコードしたものだ。
たとえば、大文字のAには、65という数値が割り当てられている。
これをバイナリで書くと01000001になるのだ。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/2/8/1080m/img_28c544a99b9d3fe055ae768ffa71cd2292629.png)
ビットとバイト
コンピュータの記憶装置の話で、「16ギガバイトのメモリ」とか「1テラバイトのハードディスク」なんて用語をよく聞く。こうした用語は、実はバイナリ形式の桁数を表しているのだ。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/f/b/1080m/img_fbc6a583662b046d89a22425dadf16e530538.png)
ビットは、記憶の最小単位で、バイナリにおける1桁(1または0)のこと。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/9/b/1080m/img_9b5895ab0cfc11f30764bb04642a325e125833.png)
その次に大きな単位が、バイトだ。
1バイトは8ビットを表す。
たとえば、01010101は、バイナリで8桁だから、1バイトになる。
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/6/f/1080m/img_6f5f39ba92b8fb387b7af6eab50a1aa9162525.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/7/b/1080m/img_7bcc3b781a3398ca8f14e4fb76f3b9fb87877.png)
もっと大きなバイト数を表したいときは? 頭にこんな言葉をくっつければいい。
◆キロバイト(KB)―約1000バイト(A5サイズのWord文書は、100KBくらい)
◆メガバイト(MB)―約100万バイト(音声ファイルは、数MBくらい)
◆ギガバイト(GB)―約10億バイト(高画質の映画は、数GBくらい)
◆テラバイト(TB)―約1兆バイト(最新のハードディスクは、1~3TBくらい。ハッブル宇宙望遠鏡が地球に送っているデータが、年間10TBくらい)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/3/7/1080m/img_37b30bcb658d7d1af35de3130e1610f2100069.png)
![アメリカの中学生が学ぶプログラミング言語超入門【全世界700万人が感動したプログラミングノート】](https://dol.ismcdn.jp/mwimgs/c/f/1080m/img_cfce21b98055c0faebb299e2ab313b2e88129.png)