プログラミング生放送勉強会 第14回@品川
2012年4月7日(土)に日本マイクロソフト品川本社のセミナールームで、コミュニティ「プログラミング生放送」によるIT・開発系イベント、プログラミング生放送勉強会 を開催しました。その模様をお届けします。
今回は、モバイル系開発のテーマを中心に、スピーカーの皆さんに話していただきました。iOS向けのゲームのデバッグ、2Dゲーム向けプラットフォームのMoai SDK 、.NETでAndroid開発できるMono for Android 、JavaScriptでAndroid/iPhoneアプリを作れるTitanium Mobile のセッション、そして、ライトニングトークを8名の方にしていただきました。どのセッションも好評でしたので、ぜひ視聴してみてください。
今回の勉強会は約70名の参加がありました。学生の参加は約3分の1で、高校生の割合も多かった印象があります。
図1 会場の様子
今回のセッションの動画は、このレポートのページから視聴できます。ニコニコ動画のユーザーであれば、プログラミング生放送勉強会 2012年 で一覧を参照できます(要ログイン) 。
プログラミング生放送勉強会
プログラミング生放送勉強会は、特定の分野に興味のある人たちの交流の場として開催しているIT・開発系の勉強会です。コミュニティ「プログラミング生放送 」が主催しています。勉強会では、ニコニコ生放送 (ユーザー生放送)や、Ustream 、ニコキャスト を利用して勉強会を中継しています。
プログラミング生放送勉強会では、ニコニコ生放送やTwitterからの視聴者のコメントをスクリーン上に反映し、オンラインからも参加できるのが特徴です。コメント表示はプレゼンツールのMISAO を使用しています。
プログラミング生放送勉強会は楽しい雰囲気の勉強会ですので、お近くで開催された場合はぜひ参加してみてください。勉強会がはじめての方も歓迎です。
IT勉強会スタンプラリー
プログラミング生放送は、IT勉強会スタンプラリー に参加しています。今回の勉強会はスタンプラリー対象の勉強会でした(図2 ) 。詳しくは、IT勉強会スタンプラリーのWebサイトと、gihyo.jpのインフォメーション を確認してください。現在では50近くのコミュニティが参加しています。参加コミュニティも募集中です。
図2 IT勉強会スタンプラリーの実施
ちょっと低レベルなゲームデバッグのお話 C言語+iOS
それでは、各セッション内容を簡単に紹介します。最初は、有限会社エムシーエフ まかべひろし(@sinpen )さんのセッションです。どのようにゲームデバッグを行っているかについて紹介いただきました。デバッグ機能の組み込みよって、早く・簡単にバグの発見ができるとのことでした。
図3 ちょっと低レベルなゲームデバッグのお話 C言語+iOS
WindowsでiOSゲーム開発
冒頭では、WindowsでiOSのゲーム開発についてふれています。ゲーム開発に限定すれば、多くの部分をMacとWindowsで共通化でき、WindowsのVisual Studioでも同じゲームが開発可能であると、実際に作成したゲームのデモと併せて紹介しています。
ゲームデバッグとテストメニュー
本題のゲームデバッグについては、どのようにバグを発見するか紹介しています。端末単体でデバッグできるようテストメニューを作成し、ゲーム内のパラメーターなどの表示、デバッグ用の機能の追加について、具体的な説明がありました。また、テスト用のUIの作成は手間であるため、キーボードのショートカットでデバッグ機能を呼び出すことを紹介しています。iOSの場合は、Bluetoothキーボードを使用します。ただし、キーボード対応のための実装が必要のとこです。実験的に作成したとのことですが、BluetoothのゲームコントローラーでiPhoneゲームを操作するデモも行っています(図4 ) 。
図4 ゲームコントローラーでの操作
メモリリークとマルチタッチのシミュレート
やっかいなバグとして、メモリリークのデバッグについてサンプルコードも併せて紹介がありました。ゲームでは、ゲーム途中でリーク位置の検出が必要であり、マクロによるメモリ確保と記録を行っているとのことでした。
現在、開発用のシミュレーターではマルチタッチができません。毎回実機に転送してデバッグすると時間がかかりますが、Windowsでゲームロジックが動作するのであれば、マルチタッチのシミュレートがジョイパッドの複数接続によって可能とのことでした。
ちょっと低レベルなゲームデバッグのお話 C言語+iOS #pronama 第14回@品川 ニコニコ動画:https://www.nicovideo.jp/watch/sm17499839 JavaScriptを有効にしてください。
参加者からは、ノウハウの共有はうれしい、デバッグに必要な情報がわかり勉強になったなどの声がありました。
『Moai』で日曜スマフォプログラミング
必ず6が出るサイコロを作ってみた の作者、きりん(@kirin_nico )さんのセッションは、プログラミング言語Luaで記述できる、スマフォ・PC・Webブラウザーに対応した 2D ゲーム向けプラットフォーム「Moai SDK」の紹介です。
図5 『 Moai』で日曜スマフォプログラミング
Moai
Moaiは、Zipline Games社の2Dゲーム向けオープンソースプラットフォームです。3月末にVer. 1.00がリリースされています。次のコンポーネントで構成されています。
Moai SDK :メインのゲーム開発環境
Moai Custom Cloud Logic :Luaで記述できるクラウドサービス
Moai Direct Services :ランキング機能などのAPIを提供するクラウドサービス(Ver. 1.00で追加)
2Dゲーム向けエンジンで、グラフィック系命令や物理エンジン、パーティクルエンジンなどが含まれていて、簡単に使えるとのこと。また、基本的に同じコードで、Windows・Mac・Android・iOS・Google Chromeで動くとのことです。プログラミング言語はLuaを使用します。
セッションでは、もう少し詳しく紹介されています。
『Moai』で日曜スマフォプログラミング プロ生勉強会 第14回@品川 #pronama ニコニコ動画:https://www.nicovideo.jp/watch/sm17500874 JavaScriptを有効にしてください。
残念ながら今回のセッションでは実際に動くデモが少なく、参加者からはデモをもっと見たいと声もありましたが、おもしろかった・実際に使ってみたいなどの声もありました。Luaやゲーム開発環境に興味ある方は、ぜひチェックしてみてください。
Mono for Android and Xamarin mobile products
Xamarin mono hackerの榎本 温 (@atsushieno ) さんからは、Mono for AndroidとXamarin社のモバイル向け製品についてセッションしていただきました。Mono for Androidとは、Android向けのモバイル開発フレームワークで、Monoという.NETのクラスプラットフォームに基づいて作られています。
図6 Mono for Android and Xamarin mobile products
クロスモバイル開発プラットフォーム
クロスプラットフォームによる開発のアプローチはいろいろありますが、Xamarin社では、C#によるマルチプラットフォームの製品を提供し、完全なクロスプラットフォームは行わず、UI部分はプラットフォームネイティブがよいという立場とのことです。プラットフォーム中立部分はコードを共有できるよう、Xamarin Mobile APIというクロスプラットフォームの共通機能を実現するライブラリーを用意しています(図7 ) 。
図7 Xamarin products direction
また、開発者フレンドリーを目指し、統合インストーラーやドキュメントやサンプルなども提供しているとのことです。
Mono for Android
今回は、複数のプラットフォームの中から、Androidの開発環境のMono for Androidについてセッションしていただきました。Mono for Androidは、Android上のMonoランタイムで動作します。このランタイムはCで書かれており、AndroidのCライブラリーをP/Invokeが可能、またランタイムは、Dalvik仮想マシンと並行して動作しているとのことです。
Mono for Androidでは、.NET FrameworkのSystem名前空間のライブラリーを提供し、Android APIバインディングにより、C#からAndroidの機能が呼び出せます。また、Visual StudioやMonoDevelopのIDEによる開発ができます。
セッションでは、AndroidエミュレーターとVisual Studioを使用したデモや、MonoDevelopによるUIデザイナーのデモを行っています。
さらに、Mono for Androidを作る上で、どのような技術を使用しているかについても話があり、興味深い内容となっています。
Mono for Android and Xamarin mobile products プロ生勉強会 第14回@品川 #pronama ニコニコ動画:https://www.nicovideo.jp/watch/sm17501291 JavaScriptを有効にしてください。
参加者の感想は、少し難しいとの声もありましたが、C#によるAndroidアプリ開発に興味のある方や、Mono for Androidの仕組みについて知りたい方はぜひチェックしてみてください。
JavaScriptだけでAndroid/iPhoneアプリを作れるTitanium Mobileの紹介
Appcelerator社の増井 雄一郎(@masuidrive )さんからは、JavaScriptでAndroidやiPhoneアプリ開発を可能にするTitanium Mobileについて紹介していただきました。
図8 JavaScript だけで Android/iPhone アプリを作れる Titanium Mobile の紹介
Titanium Mobile
スマートフォンのアプリ開発を考えた時、各プラットフォームでObjective-CやJavaなど開発環境が異なります。そういった場合にHTML5を利用してWebアプリとして作る方法がひとつあります。ただし、HTML5は進化の途中であり、スマートフォンの進化に比べ遅く、また、ストアにアプリを登録できない問題があります。Titanium Mobileは、Objective-CやJavaを覚えるのは辛いけどアプリを作りたい場合に、JavaScriptのみでアプリを開発できるツールです。UIもJavaScriptで記述します。
Titanium MobileはHTML5と競合するものかというと、そうではなく同時に使うことが多いとのこと。たとえば、アニメーションやグラフの描画などはHTML5で記述し、スマートフォンのネイティブ部分はTitanium Mobileで記述するなど混在して使います。
現在どの程度Titanium Mobileが使用されているかというと、30万以上のユーザー、3万5000以上のTitanium Mobileによるアプリがストアに登録されているとのこと。セッションでは、実際の事例も紹介しています。
モバイルアプリに大切なこと
Appcelerator社は、モバイルアプリには大切なこととして、どのようなアプリであるかということの次に、ユーザーエクスペリエンスを大切にしているとのことです。クロスプラットフォームで同じ見た目のUIではなく、Titanium Mobileでは、Android・iPhoneアプリそれぞれのネイティブのUIを活かせます。
ひとつ書くとどこでも動くことを目指すのではなく、Write once, adapt any ware(ひとつ書くといろいろな環境に適用させることができる)であり、ユーザーがアプリのUIに体を慣らすのではなく、ユーザーの慣れたUIを提供するために、プログラムによるコストはある程度必要である考えでTitanium Mobileは作られています。つまり、ある程度の書き分けは必要です。
Titanium Mobileのアーキテクチャーは図9 のようになっています。アプリのパッケージ内にJavaScriptのインタプリタ―があり、ネイティブのAPIを呼びます。たとえば、タブUIを表示するという同じコードでも、実行するプラットフォームによって結果が異なります。
図9 Titanium Mobileのアーキテクチャー
できること・できないこと
Titanium Mobileを利用すると、ネイティブUIやマルチメディアなど、ほぼすべての機能を使えます。ただし、当然ながら犠牲にしている点もあり、Titanium Mobileが苦手としていることは線を引くなど描画系のコマンドが弱いとのこと。また、JavaScriptの制限により、非常にリアルタイム性の高いものや、スプライトエンジンなども用意されていないためゲームなどにも標準機能では向いていません。しかし、Objective-CやJavaで拡張するModuleという機能が用意されています。クロスプラットフォーム性はくずれますが、画像処理など高速な処理が求められる部分のみModuleとして用意して使えます。Moduleのストアも用意されています。
Titanium MobileのゲームエンジンのModule「QuickTiGame2d」を利用して、ゲームを作成された方が参加者にいて、突発的にデモをしてもらう場面もありました(図10 ) 。
図10 QuickTiGame2dを使ったゲームデモ
セッションでは、以上のほかにも、どのようにアプリを開発していくかについてサンプルコードもまじえて紹介しています。
Javascript だけで Android/iPhone アプリを作れる Titanium Mobile の紹介 ニコニコ動画:https://www.nicovideo.jp/watch/sm17500920 JavaScriptを有効にしてください。
参加者の質問の中で、反応が一番大きかったのは、Titaniumの読み方だったように思います。英語では、タイタニウム・チタニウムどちらでもなく、日本語での読みを決めるときに、チタンやチタニウムで検索すると、車のパーツや時計の情報が多く、“ ggrビリティ” を考えてタイタニウムにしたとのことです。
ライトニングトーク大会
セッションの最後には、参加者の方にライトニングトークをしていただきました。タイトルと発表者のお名前だけ紹介します。これらもニコニコ動画で視聴できるようになっています。ぜひご視聴ください。
ライトニングトーク プロ生勉強会 第14回@品川 #pronama ニコニコ動画:https://www.nicovideo.jp/watch/sm17501045 JavaScriptを有効にしてください。
おわりに
今回 参加していただいた皆様、ありがとうございました。今後もプログラミング生放送勉強会は、各地で開催を予定していますので、参加お待ちしています。
プログラミング生放送の情報は、コミュニティページ とBlog 、そしてTwitter (図11 )で配信しています。こちらもチェックしてくださいね。
図11 プロ生ちゃん