SlideShare a Scribd company logo
1 of 41
Download to read offline
Titanium Mobile
~本当にあったこわい話~
自己紹介

日本シーエイダブリュウ株式会社
原田 敦
http://j-caw.co.jp
Blog http://j-caw.co.jp/blog/?author=1


              Twitter
              @harapanizm
スペック
●
    IT 業界入ってから 5 年くらいずっと WEB エ
    ンジニア(客先常駐)
●
    最近は iPhone ・ Android アプリとか作ってる
    (自社受託 )
●
    WEB アプリケーション開発の画面側の
    JavaScript くらいは余裕でいける
●
    これといってすごいことを成し遂げているわ
    けでもない普通の人
Titanium Mobile って?
  (さすがにもう知ってるんじゃね…)
Titanium Mobile とは

「 Write Once, Adapt Anywhere 」


一度ソースコードを書いてしまえば、最
小のコードを付け加えるだけで iPhone で
も Android でもその他のプラットフォーム
でも動かせるよ!
っていうありがたい技術。
ざわ ... ざわ ...
   ざわ ...


            えっ、なになに?
ざわ ...      ワンソースで iPhone でも Android
            でも動かせる…?


              同じコードを何本も作ったり、1 ざわ ...
ざわ ... ざわ
              箇所の仕様変更で何箇所も修正し
            ...
              なければならないストレスから解
              放されるのか…!               ざわ ...
有名な事例
MogSnap       zaim
有名な事例
日刊ねこ新聞      ロケプラ
Titanium Mobile をもう少し kwsk
●
    米 appcelerator 社が提供してるオープンソースのクロスプ
    ラットフォーム開発の技術

●
    JavaScript で開発できるため WEB エンジニアが参入しやす
    い

●
    Aptana ベースの Titanium Studio という専用 IDE を使って開
    発( Aptana は Eclipse ベースの WEB オーサリングツー
    ル) Eclipse と操作方法が近いので WEB エンジニアはとっつ
    きやすい

●
    Black Berry とか Windows Phone の対応も進めてるらし
続き
●
    ネイティブの UI コントロールが使用できる( Picker とか
    TextField とかそういうの)

●
    Titanium Mobile SDK が提供する機能だけでは不足している場
    合、自分でモジュールを作ることもできる

●
    MVC フレームワークもあるらし( Alloy, TiMVC, Carbon )使
    わなかったからよく知らないけどね!

●
    テスティングフレームワークも使えるよ( Jasmine とか)使
    わなかったからよくし( ry
他にも
クロスプラットフォーム技術
   あったよね?
PhoneGap
●
    HTML5 + CSS3 + JavaScript で開発

●
    ネイティブ UI ではなくそれっぽい UI コ
    ントロールを使用する
●
    既存の JavaScript ライブラリが使用できる
    ( jQuery とか mootools.js とか)
●
    WEB エンジニアの参入が容易
Flash
●
    ActionScript で実装
●
    Flash 技術をそのまま使用できるのでアニメー
    ションなどが作りやすい
●
    Flash エンジニアの参入が容易
●
    ネイティブ UI は使用できない。 Flash の
    SDK が用意する UI コントロールを使用する
クロスプラットフォーム技術の比較
                  メリット                      デメリット
Titanium Mobile   ・ WEB エンジニアが参入しやす         ・もっさり
                  い(学習コストが低い)               ・公式 API があるがなぜか載って
                  ・ネイティブ UI が使える            ない機能があったりする
                  ・自作モジュールで機能拡張でき           ・アプリのタイプによって向き不
                  る                         向きがある

PhoneGap          ・ WEB エンジニアが参入しやす         ・もっさり
                  い(学習コストが低い)               ・ネイティブの UI コントロールを
                  ・既存の JavaScript ライブラリが    使えないため、実現できる機能に
                  使用できる                     制限がある

Flash             ・ Flash エンジニアが参入しやす       ・超もっさり
                  い                         ・ Flash エンジニアってプログラ
                  ・アニメーションに強い               マじゃないよね?
                  ・ Android と iOS の違いを意識す   ・タッチ感度が非常に悪い
                  る必要がほとんどない                ・ Air 実行環境ごとビルドするので
                                            アプリ容量がかさむ
こうして Titanium Mobile を選択した

    このへんから本題
自分の事例
「ぜい肉で育つダイペット」
ダイエットをサポートする iPhone アプリ。毎日体重を入力して、
やせた分の体重をエサとして与えることができる。
順調にやせていくとペットが成長していく。
https://itunes.apple.com/jp/app/id588284013
Titanium Mobile の恐怖
         その 1

画像の 描画がすげぇ遅い
成長日誌画面

 実はこの画面、数字や単位は全
 て画像。

 かなり多くの ImageView を生成
 しており、 300 個以上生成する
 場合もある。

 スペックの低い iPhone 3GS で
 比較してみるとどうなるか…
200 個の ImageView を生成してみる
  Objective-C   Titanium Mobile
対策その       1    画像を全部先読みする

CreateImageView をする前に全画像ファイル
を読み込んでおくようなコードを書いた。

var numImage = Ti.Filesystem.getFile(
Ti.Filesystem.resourcesDirectory, "images/num01.png");



体感ではほとんど効果なし… orz
対策その   2 差分だけ読み込んで生成する
体重入力されたら体重一覧の画面も更新しなけ
ればならないので、画面表示毎に再ロードして
いた。
(これは WEB エンジニアならではの感覚?)

画面表示時に差分のみロードすることで、速
度改善。
初回表示時は致し方ないが、体感による動作
遅延ストレスはだいぶ改善された。
Titanium Mobile の恐怖
        その 2

アニメーションに弱い
Objective-C の場合
Titanium Mobile の場合
原因
●
     Titanium Mobile ではパーツごとにアニメー
     ションする際、連続してコードを書いても実
     行にズレが生じる(目視で明らかにわか
     る)。
    (例)
    // 左側の羽を 15° 回転
    leftWing.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(15)});
    // 右側の羽を -15° 回転
    rightWing.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(-15)});
    // 左腕を 15° 回転
    leftArm.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(15)});
    // 右腕を -15° 回転
    rightArm.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(-15)});
対策
●
    Titanium Mobile 用のゲームエンジンモジュー
    ルがある。これを使ってアニメーションさせ
    ればスムーズに動くかも!


    Infosia 氏が開発している
    「 QuickTiGame2d 」を調査してみる
    http://d.hatena.ne.jp/infosia/20120108/1326002975
対策 続き
サンプルを組んでやってみる…
ただの WEB エンジニア。ゲームなんか作っ
たことないし、 enchant.js も知らなけれ
ば、 OPEN/GL もさわったことがない。

結論。
マスターするのに時間かかりそうなので、現行のや
り方でひたすらチューニングする(事実上の無
策)。
Titanium Mobile の恐怖
        その 3

 実行がやたら遅い
カジュアルに測定してみる
■ 前提
Titanium Mobile 2.1.3
IPhone4, iOS 6.0
Xcode 4.6
Titanium Studio 2.1.2


「ダイペット」のビルドから実機転
送完了までを計測する。
測定結果
●
    Titanium Mobile による実機転送の結果
    →1 分 33 秒
●
    Xcode による実機転送
    →0 分 6.2 秒(最速、 Titanium の 15 倍)
●
    おまけ。 Titanium Mobile によるシミュレータ
    転送の場合
    →0 分 16.7 秒
結論
みてわかるように実機転送に恐ろしく時間がか
かる。
→ シミュレータにたよった開発をしなければな
らならない
→ 実機で動かしてみると動かない
→ またシミュレータで開発

   時間のロスが大きい!
                View の作成時に結構ストレス…
Titanium Mobile の恐怖
                   その他
■ メモリオーバーフローでよく落ちる
モバイル端末は PC 程スペックが高くないた
め落ちやすい。ある程度メモリの解放を考慮
したコードを書く必要がある。
にわか JavaScript 使いだと結構ハマる。
(例)明示的に null を代入する
// 正面・左側の羽
this.leftWing = null;
// 正面・右側の羽
this.rightWing = null;
Titanium Mobile の恐怖
            その他
■Android   動かないとか…
iPhone のみ動くとか、 Android のみ動くと
かっていうコードが結構ある。
また、画面のアスペクト比とか解像度の問題
もある。
「ダイペット」は Android ネイティブで開発
することに…
まとめ
       Titanium Mobile の良いところ

●
    プログラム自体は Objective-C よりはるかに簡
    単。
●
    公式ドキュメントも割と充実している。
●
    他のクロスプラットフォーム技術と比べて、
    ネイティブの UI コントロールを使えるところ
    は良い。
●
    熟練すればそれなりに強力だと思ってる。
まとめ
        Titanium Mobile の注意点その 1
●
    実装者の JavaScript スキルレベルは足りてい
    るのか?
    標準的(主観だけど)な WEB エンジニアの
    JavaScript スキルレベルだと結構ハマる。例
    えば以下の言葉を理解しているか?
    クロージャ、ローカルスコープ、グローバル
    汚染、 prototype 、 JavaScript での継承、疑
    似的なクラスなど
→ 実装者がどの程度のレベルか確かめよう!
まとめ
       Titanium Mobile の注意点その 2
●
    比較的スペックの高い新しい端末に限定する
    べし。
    前述の動作比較で示したとおりスペックの低
    いとパフォーマンスチューニングのコストが
    増える。
    ちなみに「ダイペット」は iPhone5 ならサク
    サク動く。
    → 対応端末を制限しよう!
まとめ
       Titanium Mobile の注意点その 3
●
    チーム開発は避けるべし。
    【理由】
    JavaScript は自由度が高い言語で、同じ機能
    要件でも実装方法が多岐に渡る。誰かのスキ
    ルレベルが低いと収拾がつかなくなる恐れが
    ある。
→ 実装者のレベルを確かめよう!
 規模によっては一人で作った方が良いかも!
まとめ
      Titanium Mobile の注意点その 4

●
    クロスプラットフォーム対応をあてにしな
    い。
    熟練していない状態では、ネイティブ 2 本作
    るのと大して工数は変わらない。ノウハウを
    蓄積させてから臨むべし。
→ 自作アプリを何本か作ってみて
 ノウハウを蓄積しよう!
まとめ
       Titanium Mobile の注意点その 5

●
    作りたいアプリが Titanium Mobile で開発する
    のに適しているがどうかを知るべし。

    ゲームとかアニメーションは比較的苦手。
    ツール系アプリなら大体いけそう。
→ 本当に Titanium Mobile を使用するのが
 最善なのか慎重に考えよう!
それでもハマってしまったら…


すぐにネイティブ開発に切り替える

    勇気を持とう!
ご清聴ありがとうございました

More Related Content

What's hot

今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜
これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜
これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜VirtualTech Japan Inc.
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptotrmr
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j昌桓 李
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説MinoDriven
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜Teppei Sato
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoTakayuki Shimizukawa
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT Akabane Hiroyuki
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方hibiki443
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみたzaki4649
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With LaravelTakumi Yoshida
 
イッパン的なゴカテイ作ってみた #histudy 2017/08
イッパン的なゴカテイ作ってみた #histudy 2017/08イッパン的なゴカテイ作ってみた #histudy 2017/08
イッパン的なゴカテイ作ってみた #histudy 2017/08sperkbird
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 

What's hot (20)

今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜
これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜
これから始める人のための自動化入門 〜Ubuntu Jujuを使って〜
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
nginx入門
nginx入門nginx入門
nginx入門
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
 
まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
 
イッパン的なゴカテイ作ってみた #histudy 2017/08
イッパン的なゴカテイ作ってみた #histudy 2017/08イッパン的なゴカテイ作ってみた #histudy 2017/08
イッパン的なゴカテイ作ってみた #histudy 2017/08
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 

Viewers also liked

月額制受託開発「開発チームレンタル」
月額制受託開発「開発チームレンタル」月額制受託開発「開発チームレンタル」
月額制受託開発「開発チームレンタル」Atsushi Harada
 
「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう
「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう
「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろうAtsushi Harada
 
Mobile Financial Services
Mobile Financial ServicesMobile Financial Services
Mobile Financial Servicesjeremykagan
 
Mobile Banking In 2020 Cgap
Mobile Banking In 2020 CgapMobile Banking In 2020 Cgap
Mobile Banking In 2020 CgapGaurav Gupta
 
Titanium 最近の動向 (2016年)
Titanium 最近の動向 (2016年)Titanium 最近の動向 (2016年)
Titanium 最近の動向 (2016年)忠利 花崎
 
121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...
121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...
121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...Spire Research and Consulting
 
席ゆずってもいいですよアプリ
席ゆずってもいいですよアプリ席ゆずってもいいですよアプリ
席ゆずってもいいですよアプリAtsushi Harada
 
アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜
アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜
アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜Atsushi Harada
 
ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)Atsushi Harada
 
プログラマは何を勉強するか
プログラマは何を勉強するかプログラマは何を勉強するか
プログラマは何を勉強するかなおき きしだ
 
Digital financial services: essentials
Digital financial services: essentialsDigital financial services: essentials
Digital financial services: essentialsSonia Arenaza
 
ぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつAtsushi Harada
 
これからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増えるこれからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増えるAtsushi Harada
 
Performance up Web Design
Performance up Web DesignPerformance up Web Design
Performance up Web DesignToshiaki Sasaki
 
○○したら受託開発が180°変わった
○○したら受託開発が180°変わった○○したら受託開発が180°変わった
○○したら受託開発が180°変わったAtsushi Harada
 
愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短いTakuto Wada
 
ぼくがやってるぷろじぇくとまねじめんと
ぼくがやってるぷろじぇくとまねじめんとぼくがやってるぷろじぇくとまねじめんと
ぼくがやってるぷろじぇくとまねじめんとToshiaki Sasaki
 
1日30分で作れる個人サービスのススメ
1日30分で作れる個人サービスのススメ1日30分で作れる個人サービスのススメ
1日30分で作れる個人サービスのススメAtsushi Harada
 
KPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブKPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブAtsushi Harada
 

Viewers also liked (20)

月額制受託開発「開発チームレンタル」
月額制受託開発「開発チームレンタル」月額制受託開発「開発チームレンタル」
月額制受託開発「開発チームレンタル」
 
「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう
「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう
「◯◯さんだから仕事をお願いしたい」と頼まれるエンジニアになろう
 
Mobile Financial Services
Mobile Financial ServicesMobile Financial Services
Mobile Financial Services
 
Branchless bank in Uzbekistan
Branchless bank in UzbekistanBranchless bank in Uzbekistan
Branchless bank in Uzbekistan
 
Mobile Banking In 2020 Cgap
Mobile Banking In 2020 CgapMobile Banking In 2020 Cgap
Mobile Banking In 2020 Cgap
 
Titanium 最近の動向 (2016年)
Titanium 最近の動向 (2016年)Titanium 最近の動向 (2016年)
Titanium 最近の動向 (2016年)
 
121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...
121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...
121010_Mobile Banking & Payments for Emerging Asia Summit 2012_Building block...
 
席ゆずってもいいですよアプリ
席ゆずってもいいですよアプリ席ゆずってもいいですよアプリ
席ゆずってもいいですよアプリ
 
アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜
アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜
アジャイル出来ません 〜ビギナー向けアジャイルコミュニティを約2年間運営してみた〜
 
ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)
 
プログラマは何を勉強するか
プログラマは何を勉強するかプログラマは何を勉強するか
プログラマは何を勉強するか
 
Digital financial services: essentials
Digital financial services: essentialsDigital financial services: essentials
Digital financial services: essentials
 
ぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつ
 
これからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増えるこれからはフリーランスのエンジニアがもっと増える
これからはフリーランスのエンジニアがもっと増える
 
Performance up Web Design
Performance up Web DesignPerformance up Web Design
Performance up Web Design
 
○○したら受託開発が180°変わった
○○したら受託開発が180°変わった○○したら受託開発が180°変わった
○○したら受託開発が180°変わった
 
愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い愛せないコードを書くには人生はあまりにも短い
愛せないコードを書くには人生はあまりにも短い
 
ぼくがやってるぷろじぇくとまねじめんと
ぼくがやってるぷろじぇくとまねじめんとぼくがやってるぷろじぇくとまねじめんと
ぼくがやってるぷろじぇくとまねじめんと
 
1日30分で作れる個人サービスのススメ
1日30分で作れる個人サービスのススメ1日30分で作れる個人サービスのススメ
1日30分で作れる個人サービスのススメ
 
KPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブKPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブ
 

Similar to Titanium Mobile ~本当にあったこわい話~

[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会Rei Matsushita
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料Monaca
 
Titanium mobileで遊んでみた
Titanium mobileで遊んでみたTitanium mobileで遊んでみた
Titanium mobileで遊んでみたYutaka Tsumori
 
モバイルアプリ開発最前線(PhoneGap)
モバイルアプリ開発最前線(PhoneGap)モバイルアプリ開発最前線(PhoneGap)
モバイルアプリ開発最前線(PhoneGap)Akihiro Matsumura
 
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConViewネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConViewRakuten Group, Inc.
 
Android webブラウザのhtml5対応状況
Android webブラウザのhtml5対応状況 Android webブラウザのhtml5対応状況
Android webブラウザのhtml5対応状況 Masakazu Muraoka
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability SeminarVisso株式会社
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよNaruto TAKAHASHI
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話Shoya Tsukada
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...
ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...
ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...健一 茂木
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1Hiroki Toyokawa
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Kenichi Kambara
 

Similar to Titanium Mobile ~本当にあったこわい話~ (20)

[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
 
Titanium mobileで遊んでみた
Titanium mobileで遊んでみたTitanium mobileで遊んでみた
Titanium mobileで遊んでみた
 
T itanium概要
T itanium概要T itanium概要
T itanium概要
 
titanium_outline20111227
titanium_outline20111227titanium_outline20111227
titanium_outline20111227
 
モバイルアプリ開発最前線(PhoneGap)
モバイルアプリ開発最前線(PhoneGap)モバイルアプリ開発最前線(PhoneGap)
モバイルアプリ開発最前線(PhoneGap)
 
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConViewネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
 
Android webブラウザのhtml5対応状況
Android webブラウザのhtml5対応状況 Android webブラウザのhtml5対応状況
Android webブラウザのhtml5対応状況
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよ
 
About Titanium Mobile
About Titanium MobileAbout Titanium Mobile
About Titanium Mobile
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話
 
Titanium実装最初の一歩.
Titanium実装最初の一歩. Titanium実装最初の一歩.
Titanium実装最初の一歩.
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...
ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...
ひとりでできるもん!サーバープログラム不要、Java Scriptだけで作るハイブリッドアプリ(iphone,android,web)...
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 

More from Atsushi Harada

機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座Atsushi Harada
 
機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座Atsushi Harada
 
一流のエンジニアはみんなやっている1つのこと
一流のエンジニアはみんなやっている1つのこと一流のエンジニアはみんなやっている1つのこと
一流のエンジニアはみんなやっている1つのことAtsushi Harada
 
エンジニア経営者の葛藤とこれから・5分で終わる株主総会
エンジニア経営者の葛藤とこれから・5分で終わる株主総会 エンジニア経営者の葛藤とこれから・5分で終わる株主総会
エンジニア経営者の葛藤とこれから・5分で終わる株主総会 Atsushi Harada
 
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方Atsushi Harada
 
エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方Atsushi Harada
 
「楽しいことだけやる」のがプログラミングの勉強のコツ
「楽しいことだけやる」のがプログラミングの勉強のコツ「楽しいことだけやる」のがプログラミングの勉強のコツ
「楽しいことだけやる」のがプログラミングの勉強のコツAtsushi Harada
 
○○したら受託開発が180°変わった(10分版)
○○したら受託開発が180°変わった(10分版)○○したら受託開発が180°変わった(10分版)
○○したら受託開発が180°変わった(10分版)Atsushi Harada
 

More from Atsushi Harada (8)

機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座
 
機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座機械学習入門者向け微分を完全に理解する講座
機械学習入門者向け微分を完全に理解する講座
 
一流のエンジニアはみんなやっている1つのこと
一流のエンジニアはみんなやっている1つのこと一流のエンジニアはみんなやっている1つのこと
一流のエンジニアはみんなやっている1つのこと
 
エンジニア経営者の葛藤とこれから・5分で終わる株主総会
エンジニア経営者の葛藤とこれから・5分で終わる株主総会 エンジニア経営者の葛藤とこれから・5分で終わる株主総会
エンジニア経営者の葛藤とこれから・5分で終わる株主総会
 
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
普通のwebエンジニアでも出来る、ド素人からの機械学習のはじめ方
 
エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方エンジニア向け絶対に挫折しない個人サービスの作り方
エンジニア向け絶対に挫折しない個人サービスの作り方
 
「楽しいことだけやる」のがプログラミングの勉強のコツ
「楽しいことだけやる」のがプログラミングの勉強のコツ「楽しいことだけやる」のがプログラミングの勉強のコツ
「楽しいことだけやる」のがプログラミングの勉強のコツ
 
○○したら受託開発が180°変わった(10分版)
○○したら受託開発が180°変わった(10分版)○○したら受託開発が180°変わった(10分版)
○○したら受託開発が180°変わった(10分版)
 

Recently uploaded

共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdfkikuchi5
 
日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略
日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略
日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略poco-c
 
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こすMichael Rada
 
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』Jun Chiba
 
Broadmedia Corporation. 240510fy2023_4q
Broadmedia Corporation.  240510fy2023_4qBroadmedia Corporation.  240510fy2023_4q
Broadmedia Corporation. 240510fy2023_4qbm_pr
 
company profile.pdf
company profile.pdfcompany profile.pdf
company profile.pdfkeiibayashi
 

Recently uploaded (6)

共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
 
日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略
日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略
日本上場SaaS企業データを使った経験曲線の分析|売上成長によるコストダウン戦略
 
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
 
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
 
Broadmedia Corporation. 240510fy2023_4q
Broadmedia Corporation.  240510fy2023_4qBroadmedia Corporation.  240510fy2023_4q
Broadmedia Corporation. 240510fy2023_4q
 
company profile.pdf
company profile.pdfcompany profile.pdf
company profile.pdf
 

Titanium Mobile ~本当にあったこわい話~

  • 3. スペック ● IT 業界入ってから 5 年くらいずっと WEB エ ンジニア(客先常駐) ● 最近は iPhone ・ Android アプリとか作ってる (自社受託 ) ● WEB アプリケーション開発の画面側の JavaScript くらいは余裕でいける ● これといってすごいことを成し遂げているわ けでもない普通の人
  • 4. Titanium Mobile って? (さすがにもう知ってるんじゃね…)
  • 5. Titanium Mobile とは 「 Write Once, Adapt Anywhere 」 一度ソースコードを書いてしまえば、最 小のコードを付け加えるだけで iPhone で も Android でもその他のプラットフォーム でも動かせるよ! っていうありがたい技術。
  • 6. ざわ ... ざわ ... ざわ ... えっ、なになに? ざわ ... ワンソースで iPhone でも Android でも動かせる…? 同じコードを何本も作ったり、1 ざわ ... ざわ ... ざわ 箇所の仕様変更で何箇所も修正し ... なければならないストレスから解 放されるのか…! ざわ ...
  • 9. Titanium Mobile をもう少し kwsk ● 米 appcelerator 社が提供してるオープンソースのクロスプ ラットフォーム開発の技術 ● JavaScript で開発できるため WEB エンジニアが参入しやす い ● Aptana ベースの Titanium Studio という専用 IDE を使って開 発( Aptana は Eclipse ベースの WEB オーサリングツー ル) Eclipse と操作方法が近いので WEB エンジニアはとっつ きやすい ● Black Berry とか Windows Phone の対応も進めてるらし
  • 10. 続き ● ネイティブの UI コントロールが使用できる( Picker とか TextField とかそういうの) ● Titanium Mobile SDK が提供する機能だけでは不足している場 合、自分でモジュールを作ることもできる ● MVC フレームワークもあるらし( Alloy, TiMVC, Carbon )使 わなかったからよく知らないけどね! ● テスティングフレームワークも使えるよ( Jasmine とか)使 わなかったからよくし( ry
  • 12. PhoneGap ● HTML5 + CSS3 + JavaScript で開発 ● ネイティブ UI ではなくそれっぽい UI コ ントロールを使用する ● 既存の JavaScript ライブラリが使用できる ( jQuery とか mootools.js とか) ● WEB エンジニアの参入が容易
  • 13. Flash ● ActionScript で実装 ● Flash 技術をそのまま使用できるのでアニメー ションなどが作りやすい ● Flash エンジニアの参入が容易 ● ネイティブ UI は使用できない。 Flash の SDK が用意する UI コントロールを使用する
  • 14. クロスプラットフォーム技術の比較 メリット デメリット Titanium Mobile ・ WEB エンジニアが参入しやす ・もっさり い(学習コストが低い) ・公式 API があるがなぜか載って ・ネイティブ UI が使える ない機能があったりする ・自作モジュールで機能拡張でき ・アプリのタイプによって向き不 る 向きがある PhoneGap ・ WEB エンジニアが参入しやす ・もっさり い(学習コストが低い) ・ネイティブの UI コントロールを ・既存の JavaScript ライブラリが 使えないため、実現できる機能に 使用できる 制限がある Flash ・ Flash エンジニアが参入しやす ・超もっさり い ・ Flash エンジニアってプログラ ・アニメーションに強い マじゃないよね? ・ Android と iOS の違いを意識す ・タッチ感度が非常に悪い る必要がほとんどない ・ Air 実行環境ごとビルドするので アプリ容量がかさむ
  • 15. こうして Titanium Mobile を選択した このへんから本題
  • 17. Titanium Mobile の恐怖 その 1 画像の 描画がすげぇ遅い
  • 18. 成長日誌画面 実はこの画面、数字や単位は全 て画像。 かなり多くの ImageView を生成 しており、 300 個以上生成する 場合もある。 スペックの低い iPhone 3GS で 比較してみるとどうなるか…
  • 19. 200 個の ImageView を生成してみる Objective-C Titanium Mobile
  • 20. 対策その 1 画像を全部先読みする CreateImageView をする前に全画像ファイル を読み込んでおくようなコードを書いた。 var numImage = Ti.Filesystem.getFile( Ti.Filesystem.resourcesDirectory, "images/num01.png"); 体感ではほとんど効果なし… orz
  • 21. 対策その 2 差分だけ読み込んで生成する 体重入力されたら体重一覧の画面も更新しなけ ればならないので、画面表示毎に再ロードして いた。 (これは WEB エンジニアならではの感覚?) 画面表示時に差分のみロードすることで、速 度改善。 初回表示時は致し方ないが、体感による動作 遅延ストレスはだいぶ改善された。
  • 22. Titanium Mobile の恐怖 その 2 アニメーションに弱い
  • 25. 原因 ● Titanium Mobile ではパーツごとにアニメー ションする際、連続してコードを書いても実 行にズレが生じる(目視で明らかにわか る)。 (例) // 左側の羽を 15° 回転 leftWing.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(15)}); // 右側の羽を -15° 回転 rightWing.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(-15)}); // 左腕を 15° 回転 leftArm.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(15)}); // 右腕を -15° 回転 rightArm.animate({delay:200, duration:250, transform:Ti.UI.create2DMatrix().rotate(-15)});
  • 26. 対策 ● Titanium Mobile 用のゲームエンジンモジュー ルがある。これを使ってアニメーションさせ ればスムーズに動くかも! Infosia 氏が開発している 「 QuickTiGame2d 」を調査してみる http://d.hatena.ne.jp/infosia/20120108/1326002975
  • 27. 対策 続き サンプルを組んでやってみる… ただの WEB エンジニア。ゲームなんか作っ たことないし、 enchant.js も知らなけれ ば、 OPEN/GL もさわったことがない。 結論。 マスターするのに時間かかりそうなので、現行のや り方でひたすらチューニングする(事実上の無 策)。
  • 28. Titanium Mobile の恐怖 その 3 実行がやたら遅い
  • 29. カジュアルに測定してみる ■ 前提 Titanium Mobile 2.1.3 IPhone4, iOS 6.0 Xcode 4.6 Titanium Studio 2.1.2 「ダイペット」のビルドから実機転 送完了までを計測する。
  • 30. 測定結果 ● Titanium Mobile による実機転送の結果 →1 分 33 秒 ● Xcode による実機転送 →0 分 6.2 秒(最速、 Titanium の 15 倍) ● おまけ。 Titanium Mobile によるシミュレータ 転送の場合 →0 分 16.7 秒
  • 32. Titanium Mobile の恐怖 その他 ■ メモリオーバーフローでよく落ちる モバイル端末は PC 程スペックが高くないた め落ちやすい。ある程度メモリの解放を考慮 したコードを書く必要がある。 にわか JavaScript 使いだと結構ハマる。 (例)明示的に null を代入する // 正面・左側の羽 this.leftWing = null; // 正面・右側の羽 this.rightWing = null;
  • 33. Titanium Mobile の恐怖 その他 ■Android 動かないとか… iPhone のみ動くとか、 Android のみ動くと かっていうコードが結構ある。 また、画面のアスペクト比とか解像度の問題 もある。 「ダイペット」は Android ネイティブで開発 することに…
  • 34. まとめ Titanium Mobile の良いところ ● プログラム自体は Objective-C よりはるかに簡 単。 ● 公式ドキュメントも割と充実している。 ● 他のクロスプラットフォーム技術と比べて、 ネイティブの UI コントロールを使えるところ は良い。 ● 熟練すればそれなりに強力だと思ってる。
  • 35. まとめ Titanium Mobile の注意点その 1 ● 実装者の JavaScript スキルレベルは足りてい るのか? 標準的(主観だけど)な WEB エンジニアの JavaScript スキルレベルだと結構ハマる。例 えば以下の言葉を理解しているか? クロージャ、ローカルスコープ、グローバル 汚染、 prototype 、 JavaScript での継承、疑 似的なクラスなど → 実装者がどの程度のレベルか確かめよう!
  • 36. まとめ Titanium Mobile の注意点その 2 ● 比較的スペックの高い新しい端末に限定する べし。 前述の動作比較で示したとおりスペックの低 いとパフォーマンスチューニングのコストが 増える。 ちなみに「ダイペット」は iPhone5 ならサク サク動く。 → 対応端末を制限しよう!
  • 37. まとめ Titanium Mobile の注意点その 3 ● チーム開発は避けるべし。 【理由】 JavaScript は自由度が高い言語で、同じ機能 要件でも実装方法が多岐に渡る。誰かのスキ ルレベルが低いと収拾がつかなくなる恐れが ある。 → 実装者のレベルを確かめよう!  規模によっては一人で作った方が良いかも!
  • 38. まとめ Titanium Mobile の注意点その 4 ● クロスプラットフォーム対応をあてにしな い。 熟練していない状態では、ネイティブ 2 本作 るのと大して工数は変わらない。ノウハウを 蓄積させてから臨むべし。 → 自作アプリを何本か作ってみて  ノウハウを蓄積しよう!
  • 39. まとめ Titanium Mobile の注意点その 5 ● 作りたいアプリが Titanium Mobile で開発する のに適しているがどうかを知るべし。 ゲームとかアニメーションは比較的苦手。 ツール系アプリなら大体いけそう。 → 本当に Titanium Mobile を使用するのが  最善なのか慎重に考えよう!