コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

モジュール化ネタ その3

今日、「日本Coronaの会 関西 第一回 初心者向け勉強会」に参加してきました。同じLua言語を使ったツールなので、とても勉強になりました。モジュールの書き方も「こういう風にするのか」と、すごく勉強になったので、ここに書いておきます。

モジュールの宣言は可変長引数で

Lua言語に慣れた方なら常識なのかも知れませんが、私は知りませんでした。Coronaのソースプログラムは下記のような感じでモジュール宣言をしていました。

--モジュール宣言-------------------------
module( ..., package.seeall )
function foo()
 print( "adesu")
end

ファイル名がaaa.luaだとします。そうすると、呼ぶ側はどうなるかというと、下記のようになります。

--モジュール読み込み宣言
require( "aaa" )
aaa.foo()

自動的にファイル名がモジュールの名前になります。さらに、下記のようにして、モジュール名も宣言できます。

--モジュール読み込み宣言
 a = require( "aaa" )
 a.foo()

この場合、aaa.foo()も a.foo()もどちらも使えます。
これは、なるほどと思いました。

package.pathはセミコロンでいくつでも

これはCorona勉強会とは関係ないのですが、先日書き忘れていたので書いておきます。package.path宣言は、複数のフォルダにモジュールが分かれて入っていても、下記のようにセミコロンでつなげて書けます。WindowsのPATHと同じです。

package.path =  system.getCardMnt().."/luarida/?.lua;"..system.getCardMnt().."/luarida/common/?.lua"

CoronaとLuarida

初めてCoronaに触って感じたことは、根本の設計が逆だなと思いました。Luaridaの場合は、dalvikVMがイベント待ちしていて、LuaVMからの要求を受け付けているのに対し、Coronaの設計はLuaVMがイベント待ちをしていて、dalvikVMから来た要求を処理して返す。このような設計になっているのだろうなと思いました。フレーム割り込みもイベントだと考えれば、Coronaの設計の方が全然今風ですね。
なるほど、と思いました。
それ以外の画面サイズの対応とか、話を聞けば聞くほど似たような実装をしているなぁと感じました。あまり変えようが無いのかもしれませんね。Androidに特化していないので、実装につらい面がありますが、特化すればすごく便利なツールになると思いました。
Coronaで一つなにかアプリを作ってみたくなりました。でも、Android-2.2以上対応なので、手元に実機環境が無いのが玉にキズです。