akiyoko blog

akiyoko の IT技術系ブログです

「Titaniumもくもく会 #17」に参加してきました

前回参加した「Titanium もくもく会 #8」からおよそ10ヶ月。
久々のもくもくイベント参加です。


「Titaniumもくもく会 #17」(2014.3.19) #titaniumjp


Titaniumでのデータ管理ライブラリ比較

@atticatticattic

SQLite, jsrel, taffyDB をベンチマークしてみた。

SQLite

  • SQL使うのでソースが汚くなる
  • insertするたびにI/Oに負荷が

jsrel

  • SQLとの親和性のある JsonDB
  • 基本はオンメモリ、ファイル保存も可
  • NodeとWeb用なので、Titaniumで使うためには改造が必要
  • 初心者向きではない

TaffyDB

  • それなりに有名で手軽
  • 基本はオンメモリ、ファイル保存も可
  • ユーザが多い
  • ベンチマークがそれほど速くない
  • read, sortは SQLが一番速い?
  • BEGIN-COMMITを使うと、DBへの書き込みが一括で書き込まれるので(?)、劇的に速くなる
    db.execute('BEGIN')
    for ...
    db.execute('COMMIT')

テストコード
https://github.com/YoshikazuOota/storeTest


まだまだ踏み足りないAlloy地雷原始末記

福原 和郎 氏


前々回のスライド: http://www.slideshare.net/kazurof/alloy-minefieldsettlementstory
前回のスライド: http://www.slideshare.net/kazurof/alloyminefieldstory2

  • app/lib/の下にブレークポイント付けてもダメ
    • Resourcesは中間ファイルの置き場。そっちに付ける
  • 地雷チケットはみんなでIssueをウォッチしてプレッシャーをかけよう!
  • MenuItemの画像
    • Googleのサンプルアイコン使ってたら、ファイルの更新日時が同じだったのでリフレッシュされずハマった
    • Titanium cleanでもダメ。みんなハマるところ(紺野)
    • 困ったら、Resourcesを消そう!

タイトルなし

coffeegyunyu(小山田 浩)氏

ブログ: TitaniumMobile勉強記
http://h5y1m141.hatenablog.com

  • build待ちが開発スピードを阻害
  • TiShadowを使うと、build待ちが無くなる
  • 「tishadow run」で待ち時間が1秒程度に
  • まとめて転送も可能

今更ながらTiShadowの便利さを実感したので利用イメージをまとめてみた
http://h5y1m141.hatenablog.com/entry/2014/03/02/085706

http://tuki0918.hatenablog.com/entry/2013/06/10/141941
も。

  • 利点
  • Webブラウザからコードを実行可能
  • 「tishadow screenshot」でスクリーンショットが撮れる
  • TiShadow利用時の注意点
    • カスタムフォントはiOS向けアプリのみ利用可
    • ACS, Ti.Facebookを利用する場合には、tishadow app側のtiapp.xmlも修正しないといけない

それでもクロスサイトプラットフォームを諦めない

日向 強 氏


  • 分岐分岐。。。
  • 新規プロジェクト作成時は、Titanium SDKのバージョンを最新にした方がよい(現在は 3.2.2)
  • 画面遷移を使う場合は、two-tabの方で作った方がよい
    • iPhone版だと戻るボタンが自動付与される
  • UIは基本的にどちらのOSでも使えるように作る
    • どうしてもダメだったら、xmlを分けて置く場所を変える

もくもく

Androidのビルド待ちが前から気になっていたので、TiShadowを試してみました。

参考にしたのはこちらのページ。
「Titanium Mobile / TiShadow 導入→動作確認まで」

Mac OS X 10.9.2

$ npm -v
1.3.2
$ node -v
v0.10.13
$ titanium -v
3.2.1


まず、ターミナルを3つ立ち上げておきます。

ターミナル①

TiShadowサーバを起動します。

$ sudo npm install -g tishadow
$ tishadow -v
2.5.4
$ tishadow server
[DEBUG] TiShadow server started. Go to http://localhost:3000

ブラウザから「http://localhost:3000」にアクセスすると、こんな画面が出るはず。

f:id:akiyoko:20140321020329p:plain

ターミナル②

$ mkdir ~/tishadowapp && tishadow app -d ~/tishadowapp
Enter app id [com.yydigital.tishadowapp]: com.sample.testapp
[INFO] Creating new app...
$ cd ~/tishadowapp/

MacAndroidデバイスを接続して・・、

$ titanium build -p android -T device

TiShadowアプリが実機上で起動します。
アプリから、Mac自身のIPアドレス「192.168.11.4」に Connect します。

・・できた。

f:id:akiyoko:20140321020703p:plain

ブラウザ上の「Devices」にも何か表示されました。

ターミナル③

最後に、確認したい方の Titaniumアプリをデプロイします。
実機で立ち上がっているTiShadowに、TiShadowサーバ経由で流し込むイメージでしょうか。

$ cd /Users/akiyoko/Documents/Titanium_Studio_Workspace/hogeapp
$ tishadow run

うまく立ち上がりました。
・・が、アプリで使っている「Font Awesome」が「(eg)」などと表示されてしまいました。なるほどこれは、coffeegyunyuさんのおっしゃる通り。仕方ないっぽいです。


なお、ソースコードを修正するたびに「tishadow run」でデプロイすればよいとのこと。


しかしながら、現状でデプロイが完了するまで30秒ほどかかるので、ドラスティックにビルド待ちが改善するわけではなさそうです。何か設定が必要なのでしょうか。。

もしかすると、

[DEBUG] Bundle requested.
[INFO] [android, 2.3.3, 192.168.11.6] [IconcFont] wrong parameter. (__parentSymbol)
[INFO] [android, 2.3.3, 192.168.11.6] [IconcFont] wrong parameter. (__parentSymbol)
[INFO] [android, 2.3.3, 192.168.11.6] [IconcFont] wrong parameter. (__parentSymbol)
[INFO] [android, 2.3.3, 192.168.11.6] [IconcFont] wrong parameter. (__parentSymbol)
[INFO] [android, 2.3.3, 192.168.11.6] Unpacking new bundle: pipcount1000
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 0271a8bf-d38a-44ea-b565-16c227849ee7
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 9fdd512d-9a61-48aa-aaa6-28eefa0a6406
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 0801d9ba-f8d0-45ed-ade5-1add343b483b
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 8636bd22-d3b2-417f-af28-b6fcfc43323a
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: cff8f691-4a1d-4791-82b2-9fe37a89c5b7
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: ea99e1e6-97ec-4106-a275-cc35c89bfe98
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 7dc4ef7c-d9ba-412f-9164-1ffac5aa98c5
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 3c570fde-21d4-46a9-8815-511afa62f5c8
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: db7ae03f-b22b-4726-9a62-5717e780f0c8
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: 85a655be-ed7d-4d58-96e1-032d95cab22f
[DEBUG] [android, 2.3.3, 192.168.11.6] CLOSING: df3b6d2b-e4b8-4797-aa44-3143d413a141

Font Awesome の問題なのかもしれません。。


トラブル

ターミナル②で、アプリから「192.168.11.4」に Connect する際、

Alert
Connect Failed
"Connect to /192.168.11.4:3000 timed out"

と、接続できない事態に。

コンソールにもエラーが。

[ERROR] TiHttpClient: 	at java.lang.Thread.run(Thread.java:1019)
[INFO]  ALERT: (KrollRuntimeThread) [120,964527] Connect Failed
[INFO]  ALERT:
[INFO]  ALERT: "Connect to /192.168.11.4:3000 timed out"

ずいぶん悩んだ後、

※ 同一ネットワーク上にいるか注意して下さい。

なるほど。3Gで接続するんじゃなくて、Wi-fiで接続すれば良いというのに気付きました。

解決。