#2」というイベントでtypesterさんが「typester式Perl勉強法」なる題名でPerlの勉強方法についてトークしたとのこと。今自分なりにも「Webサービスに必要なプログラミングの言語習得」にまつわる話をまとめようと思っていたので、エピソードを交えて書いてみます。Webサービスを作るためにほぼ必須なプログラミングに対する知識。プログラミング言語の習得法に興味のある方は多いでしょう。プログラミング僕がはじめてプログラムを書いたのは、大学の情報処理の授業でいきなりJavaを触らせられた時にさかのぼります。最終課題がJavaアプレットという仕組みを使ってGUIのゲームなりを作るというものでした。何をやっているのかサッパリ。課題では誰かが書いたコードをうまくパクることに成功。それなりにハッタリの効くゲームができました。おかげで授業の評価は「A」でした。ちなみにそのゲームの名前はJavaをもじって「ジャバシックパーク」と言い、恐竜を育てる今で言う育成ゲームです。名前は気に入ってるのですが、まともにプログラミングで作品を作ったという感覚は得られなかったなぁという印象です。次に受けたプログラミングの授業は「データ構造とアルゴリズム」というもの。Cを学びながら最終的には「シェル」と呼ばれるマシンとの対話ソフトを作っていく。Javaに比べればCはより単純で、結果がコマンドラインですぐわかるような課題を毎回出してくれたので理解が早い。言語を書いて結果が実行されるってことの楽しさ、ワクワク感に味を占めることができたと思います。この2つのプログラミングの授業の経験から得られる教訓はこのようなものです。GUIアプリより書いていて結果がすぐ分かるCLIで学ぼう。ブラウザで結果が確認できるプログラムを書こうとしがちです。言語を習得する際に一番早い、というか気持ちがいい気がします。それをPerlで書いてみます。ブラウザで表示させたい!とCGIなるものを作ってみるとこのようなコードになります。World";ここでいきなり躓きがちなのは「Content-Typeほにゃららってなんぞー」ってことです。このプログラムが正確に実行されるのかを確かめるにはCGIが動くサーバを用意しなくてはいけません。めんどくさいし時間がかかります。このようなCGIはあまり使いません。してもサーバの実行環境依存を考えなくてはいけないので言語習得に向いていないと思うのです。World」はどうするか。このようなコードになります。World\n";一行になりました!しかも単純明快です。Perlを知らない人でも意味はわかると思います。「printってのが表示させる命令なんだなぁ」と。ちなみに「\n」は改行を表します。以下のコマンドをターミナルというアプリから起動します。脱出したことになります。実行までの時間が極力短いため、作っては試すという繰り返しがしやすいです。そこで躓く必要はないのです。誰と言うとかなり問題がありそうなので言いませんが、とある高校生の話をします。ちなみに残念ながら女子高生ではありません。いうPerlのカンファレンスでの出来事。一度だけお会いしたことのある高校生の方が発表するということで勇んで発表を見に行きました。主題はなぜ高校生の自分がPerlを使ってプログラミングをするかということで、そのキッカケについて触れられてました。過去に何度か本を読んだりしてPerlを学ぼうとしたが挫折したという話のあと、面白いことが起こります。「いかにして効率よく大量のおっぱい画像をダウンロードするか」という記事でした。題名からして発表会場内は爆笑。僕も声をあげて笑ってしまいました。CLIのプログラムを掲載していました。以下は実行している様子の当時のスクリーンショットです。彼曰く、Webから何かをダウンロードするCLIを作ることが楽しいことを知ってPerlにのめり込んで行ったとのことです。確かに一般的にはクローラーと呼ばれるWeb上のリソースを取得するCLIプログラミングは非常に楽しいです。いろんなやり方をいくつかエピソードを紹介してきましたが、僕もその高校生もある程度挫折をしてることがわかります。どこからそのプログラミングを使いこなし、言語の理解が高まるか?というのは人によってそれぞれだと思います。本や講義で学べる人も入れば、コードを書くことで学ぶ人もいる。どんな本を読むか、どんな講義を受けるか、どんなコードを書くかによっても学べるものは様々です。言語習得には「これだ!」というのに出会うまで、いろんなやり方を試すのがいいのかなぁなんて思います。このようなWebサービス開発にまつわるエッセイをメルマガでも連載しています。ちなみに火曜日発行です。