8月13日(水)から8月17日(日)まで、全国から選抜された学生が幕張に集まり4泊5日の集中合宿「セキュリティ&プログラミングキャンプ2008」が開講された。
夏休みもど真ん中の8月13日(水)から8月17日(日)まで、本来なら帰省や行楽で都心から全国に人が流れる時期、逆に全国からITに覚えのある学生が幕張に集まり4泊5日の集中合宿「セキュリティ&プログラミングキャンプ2008」が開講された。ソースコードとプログラミングを本分とする当サイトとしては、今年初めて開設されたプログラミングコースでどのような講義が行われ、学生たちは何を学んだのかが気になるところである。
豪華講師陣を擁したプログラミングコース
プログラミングコースでは、17名の学生がAからFまで6つの班に分かれて受講し、演習ではグループ学習も行われた。カリキュラムは午前4時間、午後4時間、夜間3時間で組まれ(セキュリティコースも同様)、つまり睡眠と食事を除いて残りの起きてる時間のほとんどをプログラミングのことを考えて過ごすことになる。
講師陣はミラクルリナックスの吉岡弘隆氏を主査に、日本Linux協会会長の野首貴嗣氏、Debianプロジェクトの能城茂雄氏、USAGI(LinuxのIPv6スタック)プロジェクトの吉藤英明氏、wakatonoの愛称で知られる宮本久仁男氏、amachangことサイボウズラボの天野仁史氏らといった一騎当千の開発者に加え、これまでのキャンプ卒業生らによるチューターが学生たちをサポートする。
カリキュラムは、1日目の午後から4日目の午前中までで、アルゴリズムとデータ構造といった基本から、吉岡流のデバッグ&コードリーディング術までさまざまな技術が講義された。4日目の午後は「グループ実習」に当てられ、各班が自分たちでテーマを決めてソフトウェアを作製した。講義で演習したプログラムを拡張してもよいし、まったく違うものを持ってきてもよい。そして実習の成果を、最終日の午前中にセキュリティコースと合同で発表して、修了となる。
このグループ演習でプログラミングコース各班がどんなテーマを設定し、4日間のカリキュラムをどのように消化して、自らのコーディングに活かしたのか。成果発表会でのプレゼンと実演を中心に、プログラミングキャンプの成果を見てみることにしよう。
A班 グラフィカルなゲームの競作
セキュリティ&プログラミングキャンプには中学生から大学生まで幅広い層の学生が参加しているが、プログラミングコースのA班は3人全員が高校生。彼らは同じグループの仲間と敢えて競作をするという選択をし、3人がそれぞれグラフィカルなゲーム製作に挑戦した。
ゲーム製作は今回のプログラミングキャンプのメインカリキュラムで、「C言語によるゲーム製作」が2コマ計5時間(講師は能城茂雄氏)、「JavaScriptによるゲーム製作」(天野仁史講師)も2コマ計6時間が組まれている。両方の授業で「テトリス」という同じゲームをプログラミングするため、それぞれの言語の特徴を活かして異なる手法で実装されることが実感できる。
発表されたゲームは、まずHSPとC言語によるシューティングゲーム。いくら攻撃しても敵機が破壊されない「相手が無敵」状態のバグが残っているが、C言語ではじめてポインタを使ったいうチャレンジの成果としては十分ではないだろうか。なおポインタの解説も「プログラミング入門3」という1時間半の授業に含まれている。
続いて、JavaScriptで作ったテトリスをFlashで再実装したプログラム。両言語の仕様の違いを吸収することがたいへんだったという。驚いたことに、人の動きで操作できるインターフェイスを実装していた。実演スクリーンの前に立った人間をウェブカムで認識し、人が左右に動くとブロックが左右移動し、手を上に伸ばすと回転する仕様になっていたようだ。しかし実演ではなかなか思った通りには動いてくれず、苦戦していた。
最後に、同じくウェブカムを利用したモーション操作のテトリス。こちらはHSPによる実装。コードが短く、ウェブカムのコードもそれほど時間はかからなかったという。ハマったのは色の設定がRGBじゃなかったところ。
A班に限らずどの発表を見ても感心させられたことだが、講義で演習したソースコードにプラスアルファでもうひと味を足したコードをもって発表に望んでいる。A班で使われたHSPやウェブカムといったプラスアルファの技術はチューターの提案によるもので、学生にとっては発表の半日前のグループ実習の時間になってはじめて触れた技術だという。にもかかわらずすぐに対応できる適応力の高さにチューター自身も驚いていた。
会員登録無料すると、続きをお読みいただけます
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です