ITスキルがほとんどない、秋葉原にあるカルチャーメイドカフェ「私設図書館シャッツキステ」のメイドさんたちがプログラミングを学ぶ連載企画「エンジニア登竜門」。
前回は、六本木にある「Hackers Bar」にて心優しきハッカーと出会い、プログラミングのレクチャーを受けました。今回、長いスカートを翻(ひるがえ)して彼女たちが優雅に向かうのは、ITエンジニア教育の専門スクール「リナックスアカデミー(http://www.linuxacademy.ne.jp/)(※)」。同校の先生から簡単なプログラミングの実技を教わり、“エンジニア登竜門”をかけ登ります。
果たして、どんな関門が彼女たちを待ち受けているのでしょうか!
※…ITエンジニア教育の専門スクール。社会人のためのプログラミングスクール・エンジニアスクールとして、5000人を超える受講生がLinuxやネットワーク、プログラミング、スマホアプリプログラミングを習得し、卒業しています。20代から50代まで幅広い層に支持されるスクールです。
<今回の登場人物>
先生・高坂一城さん:リナックスアカデミーで教鞭をとる先生。コンピュータ黎明期からゲームにハマり、自作でゲームを作っていた。プログラミングの大ベテラン。
ミソノさん:シャッツキステのメイド。図書館で司書をしつつ、シャッツキステでもメイドとしてお給仕している。おっとりしているようで、時折鋭い考察を入れる。
ノバラさん:シャッツキステのメイド。歌が大好き。プログラミングができたら、歌を歌うロボットを作って、いつでもシャッツキステに自分の歌を届けられるようにしたい。
ようこそ、ITエンジニア教育の専門スクール「リナックスアカデミー」へ!
ノバラ:ここが、ITエンジニア教育の専門スクール「リナックスアカデミー」ですか。すごくオシャレな場所ですね。
ミソノ:どうやら、この先にある教室で先生が待ってくれているそうですよ。
ノバラ:あっ! あそこにいらっしゃるのが先生でしょうか。
先生:お待ちしていました! 講師を務める高坂です。どうぞよろしくお願いします。
ミソノ&ノバラ:よろしくお願いします!
先生:ではさっそくですが、講義を始めましょ……。
???:ちょっと待ったああああああああああああああ!!!
ミソノ&ノバラ:そ、その声はっ!!
バーーーーーーーン!!!
(扉が開く音)
エリス:2人がコソコソしていると思ったら、プログラミングのお勉強に行っていたなんて! どうして私に声をかけてくれなかったのかしら!! 私だって、プログラミングを勉強して、シャッツキステのホームページを自分でもっともっと良いものに作り替えたいとずっと思っていたんだから!!!
ミソノ:そうだったんですね! じゃあ、今回はエリスさんも一緒にプログラミングを学びましょう。負けませんよーーー!!!
3人:がんばろー! おー!
<今回の登場人物・追加>
エリスさん:シャッツキステ 代表取締役&総メイド長。HTMLとCSSの基本はわかるが、JavaとPerlの勉強で挫折した過去を持つ。実は、いつかプログラミングをきちんと学びたいと思っていた。
[ document.write ] まずは文字を画面に表示してみよう
先生:では、3人揃ったところで講義をはじめましょう。今回は、JavaScriptという言語を勉強します。
ノバラ:じゃば、すくりぷと?
先生:JavaScriptは、みなさんがよく観ているWebページに、何かの動きをつけることができるプログラミング言語なんです。
ミソノ:そういえば、第1回にハッカーの浜辺さんが作ってくれた雪の降る画面でも、JavaScriptが使われていました。
先生:いきなり雪を降らせるのは難しいので、まずは入力した言葉をページに表示するところからやってみましょう。ではさっそく、以下のコードを書いてみてください。「document.write」は、画面に何かの文言を表示する処理で、この場合は「ようこそJavaScriptへ」が表示されます。
<想定結果>
カタ トタタタタン トタ トタタタン
(3人がキーボードを叩く音)
ノバラ:あれ? コードを全部入力したのに、画面に文字が表示されません……。
先生:どこかで記述を間違えると、処理がエラーになって文言が表示されなくなってしまいます。でも、このエラー探しこそが、エンジニアの仕事の醍醐味でもあります。頑張って間違いを探してみましょう。
ノバラ:うぅ……。英語ばかりだし、どこを見ているのかわからなくなってきました……。エンジニアの方々は、こういったエラーと常に向き合っているんですね。すごいです。私も頑張ります!
あ、半角スペースが抜けている! 直したらきちんと表示されました! 嬉しいです!
先生:どこにエラーの原因があるのかを調査して、少しずつ解決していく。プログラミングって、その積み重ねなんですよ。
[ 変数 ] データを入れる箱
先生:次は、「変数」について勉強します。変数とは、データを入れる箱のようなものです。この箱には、数字だけではなく、文字列やその他にも色々な種類のデータを入れることができます。さらに、この箱には自由に名前をつけられるので、長い文字列をわかりやすく管理できるんです。
例えば、以下のソースコードでは「ようこそ JavaScript へ」という文言を「s1」という変数に代入(※)して、さらに「s1」「”<br>”(改行)」「”s1”」という文言をそれぞれ画面に表示しています。
※…プログラミングでは、「=」は「右の値を左の変数に入れること」を表します。
<想定結果>
エリス:変数ってどんなときに使うんですか?
先生:色々な用途があるんですが、主な用途は「何回も使われるデータを、色々な箇所で使いまわせるようにするため」です。
例えば、もし「ようこそJavaScriptへ」を変数を使わずに10回表示したかったら、10回も「ようこそJavaScriptへ」と書かなければいけません。すごく面倒くさいですし、もし文言が「ようこそ!」だけに変更になったとしたら、10か所を修正しなければいけないので非常に面倒になってしまいます。
でも、「ようこそJavaScriptへ」を変数「s1」の箱に入れてしまえば、「s1」と書くだけでいいので、タイピングの量が劇的に減ります。それに、文言が変更されたとしても「s1」という箱に代入している部分だけを修正すればよくなるんです。
エリス:なるほどー。すごく便利な箱なんですね!
[ for ] くり返し処理
先生:それでは次に、よりプログラミングらしい「くり返し処理」をやってみましょう。これは、何回もくり返すような処理を楽に書くためのものです。
以下のソースコードでは、「for」という構文を使ってくり返し処理を書いています。「var i = 1」「i <= 5」「i++」という3つのパートに分かれていますが、
var i = 1 ⇒ 変数iに数字の1を入れる
i <= 5 ⇒ 変数iの値が5以下の場合、処理をくり返す
i++ ⇒ 処理をくり返すたびに、iの数字を1増やす
という意味です。
<想定結果>
ミソノ:どうして、「i++」という書き方をするんですか?
先生:通常、変数に1を足す場合には「i = i + 1」という書き方をします。でも、プログラミングでは、「1を足す」という処理を使う場面がすごく多いので、この言語を作った人が「なるべく楽な書き方をしたい」と考えて、「i++」が「1を足す」という意味になるような仕様にしたんですよ。
この例以外にも、プログラミング言語って時代を経るごとにどんどん便利になっているんです。世の中の誰かが、他のエンジニアのために言語を進化させてきたんですよ。
ミソノ:なんだかプログラミングって、魔法の詠唱みたいですね!
先生:ま、魔法の詠唱!?
ミソノ:見習い魔法使いって、何か呪文を唱えるまでに時間がかかるんです。でも、上級魔法使いは短い詠唱時間で強力な呪文を唱えることができます。プログラミングもそれと同じで、上手に扱える人はどんどん記述を短くして、効率よく役立つ処理を書けちゃう。まるで熟練の魔法使いみたい!
エリス:そう言われると、テキストが魔導書に見えてきました……! 萌えます!
先生:確かにエンジニアって魔法使いかもしれないですね。上手な人ほど、無駄がなくて綺麗で、かつ多くの処理ができるプログラムを書くんですよ。
プログラミングの世界は、優しさで創られている
ノバラ:プログラミング言語って世の中にたくさんありますよね。もし、JavaScriptで優秀な魔法使いになったとしても、他の言語を勉強しようと思ったら、またゼロから勉強し直さないといけないんですか?
先生︰いえ、そんなことはありません。言語はそれぞれ違うと言っても、文法には似ている部分も多いので、何かの言語をマスターすれば他言語の習得にかかる時間も労力もグッと減らせます。
エリス:つまり、「白魔法」「黒魔法」みたいに、たとえ違う魔法を使ったとしても「魔法を使うこと」自体は同じだから、習得しやすいんですね!
先生:そうですね。プログラミングをするための基本さえ身につけば、違う言語でも楽に習得できるはずです。なので、最初は簡単な言語からスタートして、プログラミングの面白さを知ってから、徐々に難しい言語に移っていくといいでしょう。
では、今回はこれにて終了です。プログラミングを体験してみて、どうでしたか?
エリス:私たちにとって、インターネットやアプリってすでに生活の一部ですけど、そういうものがどうやって作られているのか、裏側を少しだけ知ることができて良かったです。シャッツキステのホームページも、JavaScriptを使って便利にできるかしら……!
ミソノ:今回すごく印象に残ったのは、プログラミングって「優しさ」でできているんだな、ってことでした。
さっきの「i++」でも出てきたように、世の中の誰かが、同じように困っている人を楽にしてあげたくて、プログラミングが発展してきた。だから、色んなサービスやアプリで私たちの生活が便利になっているのも、誰かが「もっと楽にしたい。もっと便利にしたい」思って何かを開発してくれたから。プログラミングには、先人たちのそういった優しさがいっぱい詰まっているんですね!
プログラミングの裏側には「優しさ」があることに気づいた3人。エンジニアって、プログラムを通じて、世の中にいる誰かに思いやりを届ける仕事なのかもしれません。それでは、次回のエンジニア登竜門もお楽しみに。3人の新たなるチャレンジに、乞うご期待です!
~ to be continued ~
取材協力: 私設図書館シャッツキステ、 リナックスアカデミー