Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2016-03-07

N高校の生徒専用のプログラミングハイレベルハイスクール体験会に行ってきたのたが革命的に面白すぎて辛い 04:48

 ロージーというやつがいて、皆があまりにロージーと呼ぶので本名がわからないが、日本人で、17才の時に高校を中退してドワンゴに就職、そして20歳で結婚、さらにクックパッドに転職して子会社の取締役までやってるへんなやつがいて、こいつがとにかく面白い教材を作ったと評判なので、「見に行ってこい」と異世界の会長に下命され、体験会に行ってきた。一応課長ですしおすし


https://i.gyazo.com/511de645e42123eca7038ea03beea2e0.png


 最初は「ふーん。ロージーね。ロージー。よーわからんがなんか似た匂いを感じるヤツだなあ」くらいにしか思ってなかったんだけど、彼が作った教材「働クリッカー」が驚異的に面白い。


https://i.gyazo.com/e9b676f12266770af47c5cd2ea3cb633.png

http://zeny.io/products/working-clicker/


 働クリッカーは、いわゆるひとつのクッキークリッカークローンである。

 が、ただのクッキークリッカーではない。


 Cキーを押すとコンソールが出現し、ここにプログラムを書くことで、プログラムにクリックさせることができるのだ。


 この教材の出来の良さが驚異的だ。


 プログラムの魅力がぜんぶここに詰まってる。


 そして「クリックする」というシンプルな行為をworkというひとつの関数に代替させることで、プログラミングが人類に与える恩恵をわかりやすく伝えることができるようになっている。



 「このゲーム異常に面白いなー」


 と言うと、ロージーが



 「これ、0.8秒で一億達成して全実績解除するってのできますよ。ちなみにオレは0.6秒だしました」


 と言うので、しばらく遊んでいたんだけど、「なるほど面白い。良く出来てるなー」と休憩挟んで廊下でサボってると、ロージーが授業中にも関らず廊下にやってきて。


 「清水さん、やんないの?0.8秒切ってよ」


 オレはこういう煽りをされたとき、受けて立つと決めている。

 しかしロージー、すげえやつだな。まだ3回しか会ったことない倍くらいの年齢のオッサンにパッシングしてくるとは。



 「やってやろうじゃねえか」


 まあ正直言うとどうすればいいかという道筋は見えていた。

 道筋が見えちゃうと興味なくなっちゃうという僕の悪癖でさっきは投げ出したが、そこまで言われたらやらなきゃ男がすたる。


 しかもJavaScript。ナメんなよ。こちとら商売道具だ。


 といっても、秘密はなにもない。

 とりあえずクリア条件を満たすようにループを書いたら0.9秒で処理が完了した。


 でもこれじゃあダメだ。こっからあと0.1秒。


 あとのやり方は、泥臭い、ループ展開だ。

 workをループ展開で1000回くらいやるsuperworkという関数を作る。これだけで0.8秒。


 次に、それぞれのアイテムを買うべきタイミングをプログラムで計測して、それにあわせてsuperworkとpurchaseの数を調整。ループ回数を1回(つまりループしない)でクリアできるように調整して、0.6秒。


 さらに雑だが、適当にループの中身(全て展開すればいいというわけでもない)を展開したり逆にループに封じ込んだりして調整した。


 しかしこいつは天才的なゲームデザインだ。

 初心者にもプログラミングの基本がわかりやすく、上級者にも夢中になれる課題が与えられる。

 正直、自分がこんなにムキになれるとは思わなかった。

 久しぶりに熱い。やってることはくだらないが、ゾクゾクするようなプログラミングの興奮がここには詰まっていた。


 授業が終わってから控室でロージーの顔を見るなり


 「0.492秒」


https://i.gyazo.com/07650e5a3394dd7c7e77907c7ae7ef7d.png


 と伝えると、ロージーは嬉しそうに顔をほころばせた。


 「どんなの書いたの?」


 「ループ展開」


 「泥くせえなあ。まあでも結局それしかないんだよね。オレも本気で最適化しようと思った時、最初に開いたのExcelだもん」



 ロージーはそう言って笑った。


 プログラミングはワザであると同時に、ゲームでもある。


 似たようなアプローチはhack for playにもあるが、ロージーのやり方はよりシンプルでスマートだといえた。

 そのうえツールが手抜きじゃない。ちゃんとサンドボックス化されていて、丁寧に作られてる。僕なら雑にWebで済ませちゃうところをロージーは下回りをちゃんと作ってる。


 ロージーは7歳の頃からプログラミングしてたらしい。プログラマーを10年もやれば、まあ一人前だ。


 ゴトーは「そういうやり方で速くなるんですかあ」と感心していたが、こんなことはオッサンなら誰でも知ってることだ。


 最適化は泥臭い。

 だから最近の若いプログラマーは最適化を後回しにしたり、コンパイラに頼ったりする。

 最適化のテクニックなんか覚えるよりも新しい言語のひとつでも覚えたほうが良い、っていうのが最近の潮流らしい。残念ながら。



 けれどもロージーは最適化をゲーム化した。

 生徒たちはプログラミングを好きになるだろう。


 4月から始まるプロハイハイことプログラミング・ハイレベル・ハイスクール。

 一年間でプログラミングの全てを叩き込み、高校を卒業するより前にIT企業に就職させることを目指す究極のショートカット。入学して半年後にははてなやLINE、Cookpad、チームラボ、そしてもちろんドワンゴなんかでインターン経験ができる。


 実際にそれを成し遂げたロージーだからこそできるスクール。


 やべえ。こいつはホンモノだ。

 一年後の卒業生からどんな傑物が生まれるか。

 今から楽しみだ。


プロから学んで即戦力プログラマーを育成【バンタン プログラマーズ・ハイレベル・ハイスクール】

http://www.vantan-hs.com/phh/