uzuki aoba meets corona sdk

10
@uzuki_aoba meet CoronaSDK iOSAndroidも同時にコーディングできたら、 それはとっても嬉しいなって 2013/10/12 1

Upload: takuro-fukamizu

Post on 08-Jul-2015

329 views

Category:

Technology


0 download

DESCRIPTION

第1回 Corona SDK 初心者勉強会@熊本( http://atnd.org/events/17738 )のLTスライドです。

TRANSCRIPT

Page 1: Uzuki aoba meets corona sdk

@uzuki_aoba meet CoronaSDK

iOSもAndroidも同時にコーディングできたら、

それはとっても嬉しいなって

2013/10/12 1

Page 2: Uzuki aoba meets corona sdk

簡単に自己紹介• 深水拓郎(@uzuki_aoba)

– 熊本県立大学大学院アドミニストレーション研究科情報管理コース博士前期課程2年

– 出身は鹿児島県出水市です。– 一般的な情報系の学生です。

• Hobbies: PC, デジタルガジェット, バイク, NGC ,サブカルチャー

• 言語: Visual C#, Objective-C(Cocoa), VBA, JavaScript(with jQuery), PHP, Python, Action Script(for Flex), COBOL

• ここまでLua経験なし

• スマートフォン3台所有(3回線)– iPhone4 (Softbank)– Sharp IS03 (au)– HTC EVO (au | UQ WIMAX)

• 本当はDocomoの回線が欲しかった…

2013/10/12 2

Page 3: Uzuki aoba meets corona sdk

Corona SDKの第一印象

• Social Game系の勉強会で初見– 当時、Objective-Cでの開発(の手伝い)がひと段落した直後

2013/10/12 3

• iOSとAndroidの開発が同時にできる!– Android用にJavaも勉強しないといけないという現実を見つめて

いた時期だったので

• OpenGLがネイティブで使える!– XcodeでOpenGLを使おうとして挫折した直後で、衝撃的だった

• なんかよくわかんないけど、すごく跳ねたり転がったりしてる!(笑– 物理エンジンのデモはとにかくインパクト強かった

Page 4: Uzuki aoba meets corona sdk

Web APIのクライアントとしてのCorona

• 最初はそういう使い方が目的だった• Web APIを非同期で並列に呼びに行って、全部戻ってくるのを待っ

て、目的の要素をListViewで表示する、みたいなサンプルを作って勉強してた

2013/10/12 4

• JSONを標準でサポート

•XMLもLuaのライブラリ拾って来れば余裕

•非同期リクエストのAPI(network.request)もシンプルで使いやすい

•Network系のAPIは最近強化されて、実用的になってる

•データを表示する程度なら、サンプル(ListViewとか)を改造すればすぐできる。大丈夫だ、問題ない。

適正があると思うところ

•非同期処理の後始末がちょっと面倒

•終了後の処理フローや、並列に走らせているときのフロー管理が難しい

• JavaScriptも同じ状況で、最近すごく使いやすくなったので、Coronaも同じように使いやすいAPIが出ることに期待

•AndroidだとMapが開けない…

•OS標準の機能に関連するところで制約が出る

ちょっと困るところ

Page 5: Uzuki aoba meets corona sdk

せっかくなのでゲームでも作ろうと。

• BM98(と、その互換アプリケーション群)– KONAMI beatmaniaに似たスタイルのPC

用音ゲー– プレイヤーソフトに譜面(bmsファイ

ル+音データ)を読み込ませてプレイする

– 一時期流行ったが、今はだいぶマイナーになった

2013/10/12 5

• の、スマートフォン/タブレット版は作ってる人が少ない(1つしかないし、マーケットにも公開されてない)

• 既存のコンテンツは量・質ともに申し分ない。

• 僕自身はゲームコンテンツ作れる人間ではないので、これを輸出する側に回ろうかと。

• ついでにBM98クラスタがまた流行ると良いな。

目標: iOS/Android両対応のタブレット向けBM98互換アプリのリリース

Page 6: Uzuki aoba meets corona sdk

要求定義

• BM98互換アプリの役割– BMS(譜面データ)の解読

– 譜面に従って演奏をする

– ユーザーからの入力に応じ、音を出す/タイミングの正確さを判定する

– 得点を集計する

• ソーシャルな機能を搭載したいです。– 対応とか。

• (難易度×得点によるトロフィー)

2013/10/12 6

Page 7: Uzuki aoba meets corona sdk

現状

• 譜面の解読 -> 演奏– ちょっと音がずれてます

• Q:本当に“ちょっと“?• A:これでもだいぶマシになったんです。

• 積算すると2日くらいでここまできました– ほとんどがBMS(譜面データ)の理解と、それを演奏するためのアルゴリズムに費やされています。• 音楽知識が皆無なので、最初は意味が分かりませんでした。

– コーディング自体はスイスイーっと進みました。• 公式のAPIリファレンス見ながら• サンプルコードの優秀さと、Director Classの使いやすさが神がかっていたおかげです。

2013/10/12 7

Page 8: Uzuki aoba meets corona sdk

ある程度触ってみたうえでの感想

• HTMLを手打ちして自分のWebサイト作ってた頃を思い出した。– iswebライトのサービス終了に伴い取り潰されてしまいましが

(苦笑

• SDK側が用意してるUIパーツは無いに等しいし、いちいちコードで記述するのは面倒だっていうのも確かにわかるけど、プログラマー自身が理解してないソースコードを押しつけられるよりは幾分開発しやすいし、理解できてるコードの方が書いてて楽しいよね?

• UIが簡素でよければ、Objective-Cよりはるかに手間はかからないし、動きのあるものを書きたい場合はCocoaのUIより良い。(OpenGLのおかげ)

• Timerイベントの実行間隔が途中で変えれて、少しうれしかったり。2013/10/12 8

Page 9: Uzuki aoba meets corona sdk

その他、気になること。

ロゴがかっこ良くなりましたね!

• 作ったアプリのアイコンもデフォルトでCoronaのロゴに鳴るので、わかりやすい。

media.playSoundだと短すぎる音声ファイルは再生されない?

• audio api (Open AL)

• audio.loadSound()で事前ロード

• audo.play()でロード済みの音声ファイルを再生

フォルダ・ファイル操作系が苦手?

• ドキュメントディレクトリのファイル・フォルダの一覧とかどうやって取るのかな?

要望

• 画像のIndexed Colorに対応してほしい

2013/10/12 9

Page 10: Uzuki aoba meets corona sdk

Lua言語について

• スクリプト言語• ブラジル・リオデジャネイロのカトリカ大学で生まれた手続き型言語• C言語のプログラムへの組み込み目的で設計された• 特徴:高速な動作、高い移植性、組み込みの容易さ、C言語との接続性

2013/10/12 10

マイナーだけど実はいろいろ使われてるよ

• Lua 5.1 リファレンスマニュアル– http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html– ※charset記述が無いので高確率でも文字化けします。文字エンコードを「EUC-JP」に切り替えてご覧ください

• Lua基礎文法最速マスター– http://handasse.blogspot.com/2010/02/lua.html

ゲーム

•THE iDOLM@STER2

•PlayStation Home(サーバー内のスクリプト言語として)

•RagnarokOnline

•その他、ゲームでは意外と活躍中。

その他

•Adobe Photoshop Lightroom

•MySQL Proxy

•nmap

•OpenWrt (ゲートウェイ用組み込みLinux)

•YAMAHAの一部ルーターの拡張スクリプト

よく参照する資料