静岡javaScript勉強会 #2に参加されるみなさんこんにちは、参加されないみなさんもこんにちは。僕は11月のすべての土曜日を留守にして家族の顰蹙を買うという重圧に耐え切れずに早々に離脱してしまいましたので朝からお家でjsってます。
ところで、@tomofの「Backbone.js入門」面白かったですか?よっしゃーいっちょおとうさんもbackbone.jsでウェブアプリケーションつくっちゃうぞーっていう気になりましたか?はいそうですか、そうですよね。ついでに、その勢いでBackbone.jsっぽい開発のノリでiPhoneアプリを開発できたら面白いと思いません?思いますよね。
やりましょう、Alloyで!(孫社長風味でよろしく)
というような内容のエントリです。
Titanium CLIとAlloyのインストール
Titanium CLIはTitaniumで開発するためのコマンドラインのツールで、AlloyはTitaniumのためのMVCフレームワークですが、両方共Node.jsのv0.8以上がインストールされていればnpmでインストールできるはずです。
npm install -g titanium
npm install -g alloy
うまくいかない場合は下のサイトを参考にしてください。
エディタ
EmacsでもvimでもST2でも好きなモノを使えば良いとおもいますが、僕はEmacs(24)をつかっています。でnxmlモードにzencoding-modeをあててあります。入ってない場合はM-x list-packaegesでzencoding-modeを選んでインストールしたらinit.elに下の内容を追記しておけばいいです。
(add-hook 'sgml-mode-hook 'zencoding-mode)
(add-hook 'nxml-mode-hook 'zencoding-mode)
他にはjavascriptの開発用にjs2-modeを入れているのとcoffeeモードにflymakeが効くようにしてありますが今回の内容では必要ありません。
追記121118: CoffeeScriptを使って開発する方法
開発の流れ
最初にtitaniumコマンドでプロジェクトの雛形をつくります
$ titanium create
Titanium Command-Line Interface, version 3.0.13
Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved.
Please report bugs to http://jira.appcelerator.org/
Target platforms: (android,ios,ipad,iphone,mobileweb) iphone
App ID: com.example.tabsample
Project name: tabsample
[INFO] Creating Titanium Mobile application project
[INFO] Project 'tabsample' created successfully in 276ms
プロジェクトのディレクトリに移動してalloyの雛形をつくります。
$ cd tabsample/
$ alloy new
.__ .__
_____ | | | | ____ ___.__.
\__ \ | | | | / _ < | |
/ __ \| |_| |_( <_> )___ |
(____ /____/____/\____// ____|
\/ \/
Alloy by Appcelerator. The MVC app framework for Titanium.
[INFO] Installed "ti.physicalSizeCategory" module to tiapp.xml
[INFO] Installed "ti.alloy" plugin to tiapp.xml
[INFO] Deployed ti.alloy compiler plugin to plugins/ti.alloy/plugin.py
[INFO] Deployed ti.alloy hooks to plugins/ti.alloy/hooks
[INFO] Generated new project at: app
ここからEmacsを使っていきます。まずはapp/views/index.xmlを修正します。中身を全部消してzencodingでさくっと用意します。zencodingはC-returnで起動させて
Alloy>TabGroup>(Tab#tab icon title>Window#window title backgroundColor>Label#lable)*2
みたいにワンライナーで書けるので便利すぎです。
zencodingで大まかにスキャフォールドを用意したら、アトリビュートなんかを設定します。ちなみに画像はここから取ってきてapp/assets/iphone/に起きました。
<Alloy>
<TabGroup>
<Tab id="tab1" icon="KS_nav_views.png" title="Tab 1">
<Window id="window1" title="Tab 1" backgroundColor="#fff">
<Label id="label1">
I am Window1
</Label>
</Window>
</Tab>
<Tab id="tab2" icon="KS_nav_ui.png" title="Tab 2">
<Window id="window2" title="Tab 2" backgroundColor="#fff">
<Label id="label2">
I am Window2
</Label>
</Window>
</Tab>
</TabGroup>
</Alloy>
app/styles/index.tssはLabelの設定だけ。
"Label": {
font: {fontSize:20, fontFamily:"Helvetica Neue"},
color: "#999"
}
tssにはどのモードをアサインするのがいいのでしょうか?誰か知っていたら教えて下さい。(追記121117 json-modeあててみた)
iOSシミュレータを起動
プロジェクトのトップディレクトリで
するとシミュレータが立ち上がります。素敵ですね。これで、雛形作ってシミュレータを動かすところまでできました。あとはapp以下を良い感じにいじってイケてるアプリを作るだけですね。
シミュレータが立ち上がるまでに結構待たされるのでストレスを感じますが、それは僕のmacが遅いからですね。はやく買い換えたい。
おまけ(Alloyの開発にJadeを使う)
@k0sukeyにAlloyJadeという素敵なものがあることを教えてもらいました。Jade派の僕としては非常に惹かれるので後で試そうかなと思っています。