0. プログラミングって何だろう

0.1 なぜ学ぶのか?

_images/chap00_010.jpg

ここではプログラミングを初めて学ぶ受講者のために、 プログラミング学習の意義を簡単に説明する。

コンピュータを使うためにプログラミングはほとんど必要がない。 検索サイトを使えばほとんどの疑問の答えは容易にみつかる。 キーボードを操作できなくても、タップや音声でほとんどの操作が可能だ。 企業内でのコンピュータ操作も、自動化ツールが発達しつつある。 操作を動画撮影すれば、自動化してくれるツールも多数存在する。 定型的業務や監視的業務で、プログラミングを必要とすることは、ほぼなくなりつつある。

では、なぜプログラミングを学ぶべきなのだろう?

0.2 コンピュータとは何か?

_images/chap00_020.jpg

現代は、コンピュータ文明の時代である。 1円未満のごま粒程度の部品にコンピュータが内蔵できる。 そして毎秒1億回以上の計算を行うことができる。 様々なものにコンピュータが内蔵されている。 コンピュータを内蔵したものはそうでないものは全く異なる。

コンピュータには、一見何千という複雑な機能があるように見えるが、そうではない。 最新のコンピュータでも、基本的には加減乗除の機能しか持っていない。 それ以外の様々な働きをしているのはコンピュータではなく「プログラム」だ。 もちろんプログラムを含めてコンピュータと呼ぶことが多い。 しかし、単純な計算だけを超高速で行う部品に、プログラムを与えることで万能となる。

0.3 プログラムでできること

_images/chap00_030.jpg

19世紀の女性数学者エイダ・ラブレスは、コンピュータがたとえば音楽演奏など、計算以外のあらゆる働きをするだろうと述べた。 20世紀のチューリングは、コンピュータが知能を模倣する可能性を論じた。 1960年代に経営学者のドラッカーは、コンピュータが企業のあり方を変えるだろうと予想した。 1970年代、シリコンバレーに1000以上あった小さな半導体メーカの一つだったインテル社は、マイクロコンピュータの製品化により世界最大の半導体企業に成長した。 1991年にティムバーナーズリーは、欧州原子核研究機構でごく小さな簡単な通信プログラムを作った。 それは今日World Wide Web(ワールドワイドウエブ)と呼ばれ10億人以上の人に毎日利用されている。

コンピュータが将来どんな能力を発揮し得るかを予見する力が、 現代社会ではきわめて強力な武器になる。 プログラミングを理解することで、目の前にある自分の仕事を解決するだけでなく、 そのことによる仕事内容の変化、 そして社会そのものの変化を展望する視野を得ることに、 大きな意義がある。

0.4 JavaScriptの魅力

_images/chap00_040.jpg

この講義では、JavaScript を通じてプログラミングを学ぶ。

世界最大のオープンソースプログラムのリポジトリ、つまりプログラムの登録サイトの一つ、 Github の統計によると、 現在最も多く使われているプログラミング言語が JavaScript である。 JavaScript の登録数はここ10年間上昇を続け、 Python を抜いて、現在もっともよく登録されている言語となっている。

JavaScript は早くから公的標準になっている (ECMA Script)。 また HTML5 という現在のWebページの標準規格に含まれている。 Node.js というモジュールでWebサーバ側でも利用が増えている。 IoT や RPA でも有望だろう。 JavaScript は今後も用途を拡大しつつ、利用が増えていくだろう。

この講座では Node.js によるサーバ構築も体験する。 Node.jsを使ったサーバやWebページは一つのファイルにまとめて、それをデータセンターに登録して稼働することができる。 これを世界中のサーバに展開することも容易だ。 個人で作ったインターネットサービスでも簡単に10億人程度の処理が可能となる。 今日世界10億人の利用者に使われる、インターネットサービスを開始するために、 資金も、設備も、ネットワーク技術もいらない。 必要なのは役立つサービスを生み出す創造力だけである。 JavaScript を学ぶことで、そうした仕組みを理解することを目指してほしい。

0.5 心構え

_images/chap00_050.jpg

ただし、プログラミングを学ぶことは簡単ではない。

本講座は、プログラミングを未経験であっても、簡単に習得できることを目指している。

しかし、JavaScript と Web の技術は、大変長い時間をかけて発達してきたため、非常に複雑だ。 JavaScript言語、インターネットの仕組み、Webページとサーバの仕組みなども理解する必要がある。 それぞれ、一つを学ぶだけでもかなり大変な内容だ。

さらに、プログラミングは、知識として覚えるだけではよく理解できない。 英語の単語と文法をいくら記憶しても英語がスムーズに話せるようにはならないように、 プログラミングに習熟するには、熱意をもって取り組むことが重要だ。 くりかえし様々なプログラムを作ってみる以外に、近道はない。

しかし、大変盛沢山の講座だが、ぜひがんばって習得してほしい。

Webページやサーバは、今日日常的に利用している技術である。 そのプログラムを動かしてこそ、プログラミングの本質を実感できるだろう。 身近にある様々な Web のサービス。 これらはほとんどの人にとっては、どういう仕組みで動いているか、想像もつかないものかもしれない。 しかし、それらを構成するすべての部分のプログラムを理解すれば、 これらが決して、摩訶不思議な理解不能のものではなく、 時間をかければだれでも理解できるものだ、と実感してほしい。

特に、本講座では十分理解しないまま次のステップに進むことは避けてほしい。 本当に重要な事項にしぼって学習を進めていく。あとで使わない知識は何ひとつない。 一つ一つの事項を記憶するだけでなく、用意されている練習問題で練習して十分理解してから次のステップに進むようにしてほしい。 そうすれば、一つ一つのステップを楽しんで学べるよう、工夫したつもりである。

_images/chap00_060.jpg

<<<2022年の改定について>>>

本講義資料の初版は2018年にリリースし, 今回 2022年 に改定した。 この間、多くの貴重なコメントや質問をいただいた他、 Visual Studio Code も Windows もかなりデザインや操作方法が変わった。 いただいた多くの質問やコメントに対応して説明を改良した他、 新しいインストール方法、React について補足、改定した。

動画も一部差し換えたが、わずかな差である場合は、資料だけを修正し、 動画は2018のままとした。 したがって、動画と本ページでは内容が若干ことなる場合がある。 その場合はweb資料の方が新しい内容になっているので、そちらを優先してほしい。 ソフトウエアは日々進化するから、 開発ツールなどについて記載した情報はすぐに古くなる。 機会があるごとに対応していくが、 もし資料と実際の状況が違う場合には、 ネットなどで最新の情報をさがして補ってほしい。