Software Design 連載 第11回 石巻Bootcamp

Software Design 連載 第11回 石巻Bootcamp

この記事は、技術評論社 Software Design 2012年11月号の転載です。
記事のPDFはこちらからダウンロードできます。 技術評論社のご協力に感謝いたします。

Hack For Japan

エンジニアだからこそできる復興への一歩
“東日本大震災に対し、自分たちの開発スキルを役立てたい ”というエンジニアの声をもとに発足された「 Hack For Japan」。本コミュニティによるアイデアソンやハッカソンといった活動で集められた IT業界の有志たちによる知恵の数々を紹介します。

第11回
石巻Bootcamp

Hack For Japanスタッフ
及川 卓也 OIKAWA Takuya
Twitter @takoratta
高橋 憲一 TAKAHASHI Kenichi
Twitter @ken1_taka

 Hack For Japanは震災復興を支援する各種団体との連携を行っており、7月末には石巻2.0と共同で石巻Bootcampを行いました。このBootcampは石巻工業高校の生徒にプログラミングを習得してもらうもので、今まで本格的なプログラミング経験のない生徒に2.5日でAndroid上で動作するゲームを制作してもらいました。
 今回は、この石巻Bootcampの模様をお伝えします。

石巻2.0とイトナブ

 震災復興を支援する中で、被災された方やそれを支援する方とお話をさせていただく機会が多くあります。その中で多くの方がおっしゃっているのが、「震災前の姿に戻すことだけが震災復興のあり方ではないのではないか」ということです。これを機に新しい町のあり方を考えるべきではないかとの考えです。
 宮城県の石巻を舞台にそのような活動を行っているのが、「石巻2.0」です(図1)。サイトの「石巻2.0とは注1」では次のように書かれています。

ISHINOMAKI 2.0は東日本大震災を経験した石巻というまちを、震災前の状況に戻すのではなく、新しいまちへとバージョンアップさせるために2011年6月に設立されました。メンバーには地元の若い商店主やNPO職員をはじめ、建築家、まちづくり研究者、広告クリエイター、Webディレクター、学生など様々な職能を持つ専門家が集まっています。
 この石巻2.0には多くのプロジェクトがありますが、そのうちの1つ、Webデザインやソフトウェア開発を学ぶ環境を石巻の若者に提供しようというのが「イトナブ」です。イトナブは「IT」+「営む」+「学ぶ」を合わせた造語です。

 図1 石巻2.0(http://ishinomaki2.com/

石巻ハッカソン

 この石巻2.0イトナブが7月27日~29日で開催したのが石巻ハッカソンです。この石巻ハッカソンはStartup WeekendとIT Bootcampの2つから構成されていました。
 Startup Weekendは起業を目指してビジネスモデルを競い合うもので、日本でも東京などで週末を利用して行われているものです。今回は「地域住民が抱えるさまざまな問題について、ITを駆使して解決し、新たなビジネスモデルを構築する」ことを目標として、グループ単位で競い合いました。
 もう1 つのIT Bootcamp(本稿ではBootcamp と略します)のほうにHack For Japan としてはおもにかかわりましたので、こちらを少し詳しく紹介します。

Bootcamp

 Bootcampには石巻工業高校から約10名の生徒が参加しました。これら参加者は1年生から3年生までの異なる学年の生徒で構成されており、誰も本格的なプログラミングを学んだことがない状態でした。この生徒たちに7月27日(金)の午後から7月29日(日)の午後までの2.5日にちょっと欠けるくらいの時間でプログラミングを一通り学んでもらい、最終的にAndroid の上でのゲームを完成させるという高い目標を掲げてBootcamp は開始されました。
 講師は、Hack For Japan から佐々木陽、高橋憲一、及川卓也、そして今回はCorona SDK(後述)を開発ツールとして使いましたので、日本Coronaの会から山本直也さんと小野哲生さんが参加しました。

Corona SDK

 スマートフォン(Android およびiOS)アプリケーションの開発を体験してもらうことにしましたが、授業で基本的なプログラミングは習っているものの、Java などを習得している生徒はほとんどいない状況でしたので、Corona注2を用いることにしました。
 このCoronaとは、サンフランシスコのCorona Labs社が開発・販売しているAndroid/iOSをターゲットとしたマルチプラットフォームアプリケーション開発のためのフレームワークおよびSDKの名称です。CoronaはOpenGL ESのグラフィクス処理とLua言語によるスクリプティングにより、ゲームなどの2次元アプリケーションの開発に適した構造を持っており、画面へのコンテンツ描写が処理の中心となるアプリケーションの開発に適したものとなっています。
 このCoronaを用いるためにCorona Labs社からは10個のライセンスを寄附いただき、また、会場には講師の山本さんが執筆された「基礎から学ぶCorona SDK」や実際にアプリケーションを転送して試すためのAndroidスマートフォン、Nexus Sも寄贈されました。

2.5日間の様子

●初日
 まずは開発に親しんでもらうことを目的としました。単純に“Hello!”と文字を表示するところから始めて、次に画像を配置してイベントとの関連付けを行い、タップすると音が出るアプリケーションを開発するところまでやりました。終了した生徒にはCoronaのTシャツが進呈され、無事全員がそのTシャツをゲットすることができました。
●2日目
 日本語に訳すと「怒った鳥」という名前のあのアプリを目指せ!という目標を掲げて、Corona SDKに組み込まれている物理エンジンについて学びました。この機能を活用することで、オブジェクトを飛ばして何かにぶつかったときの当たり判定処理などが簡単に実現できます。
 そしてこの日の最後の締めは、3日目に各自が作成するオリジナルアプリのアイデアをまとめました。紙にイメージを書きながらやったのが良かったようで、ゲーム系、音楽系、さまざまなアプリの構想が出てきました。
●3日目
 前日に考えたアイデアを元にアプリの開発に入りました。実質午前中のみの時間で1つのアプリに仕上げる必要があったのですが、「このジャンプボタンは1度押すと一定時間使えないようにしたいのですがどのようにすればできますか?」「それならタイマー機能を使うといいよ」といった具合に生徒と講師のやり取りが交わされて、どんどん仕上げられていきました。筆者ら講師の側もだんだん熱が入っていったことを覚えています。
 そして最後にBootcampの集大成として、Startup Weekendの大人達の成果発表に混ざって自分たちの作ったアプリを紹介するプレゼンテーションを行いました。アプリのアピールポイントを的確に説明することはもちろん、会場のウケを取る場面もあったりと、みんななかなか堂々としていました。


写真 Bootcamp風景
開発成果物

 参加した生徒(と講師陣)の悪戦苦闘の2.5日間の成果が次のものです。
●「しゃちほことばし」(分類:ゲーム/制作:高3)
 左に配置されたダルマを飛ばすことで、右に配置したしゃちほこを落とすゲームです。間には上下に動いている障害物があり、それを避けるようタイミングを計ってボールを飛ばします。
●「jumping」(分類:ゲーム/制作:高3)
 空中に配置されている箱の間を、左右移動ボタンとジャンプボタンを駆使して飛び跳ねながら移動していくゲームです。パワーを使うジャンプボタンの使用に制限を加えることでゲーム性を高くしたのが工夫のポイントです。
●「ボールタッチ」(分類:ゲーム/制作:高3)
 画面を埋め尽くさんばかりに大量に落ちてくるボールにタッチして、その数を競うゲームです。
●「sound mission」(分類:音楽/制作:高3)
 ボールが跳ねてぶつかると音階を奏でる障害物が画面に複数配置されており、今回は「かえるのうた」が半自動で奏でられるようになっています。最後の要素は自分でうまく動かさないと音が出ないというゲーム性もあります。
●「Beginner Drummer」(分類:音楽/制作:高2)
 ドラムの基本パーツを画像とともに配置し、画像にタッチすることでドラムセットを演奏できるアプリケーションです。
●「scratch」(分類:音楽/制作:高2)
 DJが使うようなスクラッチ音源を画像とともに配置し、タッチすることで演奏できるアプリケーションです。録音した先生の声を元にしたサウンドも2つ用意してあります。その2つをタッチすると、「寝るなー」と「起きろー」と叫びます。
●「クイズゲーム」(分類:パズル/制作:高3)
 簡単な計算の回答を1から9の数字の中から選ぶだけなのですが、その9つの数字が物理エンジンの原理を用いて枠の中を動きまわります。動いている数字をタッチする難しさがこのパズルの面白いところです。
●「シーソーゲーム」(分類:パズル/制作:高3)
 シーソーの右側の籠にあるしゃちほこと釣り合うように、左側の籠に重りとなるものを入れていくゲームです。重りを置いた位置がシーソーの中心からどれだけ離れているかも関係するようになっています。
●「ドミノ」(分類:パズル/制作:高1)
 自分で板を配置していき、ドミノ倒しを楽しむことができます。横スクロールして画面からはみ出した範囲を見ることもできるようになっています。

講師として参加したことから学んだこと

 今回のBootcampに講師として参加した側にもたくさんの学びがありました。Corona SDKに触れられたことやゲームのシナリオを考えるといういつもは行わないような経験を得られたことも貴重でしたが、普段はごく当たり前になってしまっていることの意味を問いなおす良い機会にもなりました。
 たとえば、プログラミングの際にコメントを使いますが、このコメントにはソースコードの可読性を高めるという意味と、プログラムに変更を加える際に動作していたコードを保持しておくというような意味があります。当初生徒は可読性をあまり考えずに、改行もインデントもばらばらなコードを書いていました。ですが、自分の書いたものを後から読む必要が出てくるにつれ、読みやすさを意識するようになりますし、各段階で指示された動きをするプログラムの完成後に自分でパラメータを調整する際には、動作していたプログラムを残しておくという必要性が出てきます。このような機会をうまくとらえコメントの使い方などを教えたのですが、生徒に教えることでコメントの持つ意味を自分たちでも整理できたように思います。
 併催していたStartup Weekendとともに最終日に成果披露の機会を得られたことで、2日目の午後からはそれを意識した開発になりました。この厳しい時間の制約の中では、いかにして目標を達成するかが重要となります。避けなければいけないのは、未完成のまま発表の時間を迎えることです。すると最初から完璧なものを求めるのではなく、「小さく始めて、大きく育てる」というアジャイル的な発想が必要となりました。
 今回は習ったばかりの技術を使うことになるので、時間以外に大きな制約要因になるものはやりたいことを実現する技術でした。それは習ったことなのか、もしくは短時間で習得できることなのか。講師の私たちも、そのような制約を意識したうえでアドバイスをしました。あるときには妥協しなければならなかったり、あるときには異なる形で機能を実現することであったりしました。また、最後に中途半端に時間が残ったときに、その短い時間で追加できることは何かを一緒に考えました。
 大げさに言うならば、Startup Weekendで行っている起業のためのプラン作りのようなものを、生徒たちと一緒に行うことができ、最近言われる「リーンスタートアップ」のような経験を得ることができたのです。

今後

 今回、2.5日という時間でここまでたどり着けたことは素晴らしい成果だと思います。Hack For Japanでは石巻2.0と協力して今後もこの生徒たちをサポートしていきます。すでに、Facebookグループが作成されており、全国に分散する講師や先生の情報共有と議論のためだけでなく、参加した生徒もメンバーに加わって質疑応答などがされています。
 生徒たちはプログラミングコンテストやそのほか成果を披露する場にも積極的に参加予定です。具体的には、10月20日に宮城県仙台市で開催される「ICT ERA+ABC 2012東北注3」にて、今回のBootcampの模様を発表することが決まっています。
 
 

脚注

注1)石巻2.0とは
注2)http://www.coronalabs.com
注3)http://www.android-group.jp/conference/ictera-abc

 
この文書は、クリエイティブ・コモンズライセンスの下に提供されています。
著作者の表示・非営利・改変禁止の条件に従い、この文書を再利用していただけます。

CC-BY-NC-ND