• TitaniumMobile開発Tipsその1 ~JSファイルの分割~

    このエントリーを含むはてなブックマークはてなブックマーク - TitaniumMobile開発Tipsその1 ~JSファイルの分割~ この記事をクリップ!Livedoorクリップ - TitaniumMobile開発Tipsその1 ~JSファイルの分割~ Yahoo!ブックマークに登録 @niftyクリップに追加 Share on Tumblr FC2ブックマークへ追加 newsing it! Googleブックマークに追加 Bookmark this on Delicious FriendFeedで共有 このエントリをつぶやくこのWebページのtweets

    こんにちは。モバイル事業部の佐野です。
    今回はJSファイルの分割とコンテキストについて説明したいと思います。
    TitaniumStudio等で新規にプロジェクトを作成すると、すべてapp.jsにコードが書かれていると思います。

    ここからアプリを作っていく場合に全てをapp.jsに書くのはコードが読みづらいし、
    機能別とか画面単位に分けたいと感じると思います。

    解決策としては以下の方法があります。
    ①createWindowのurlプロパティに処理ファイルを指定する方法
    ②ファイルをincludeする方法

    この2つの方法において以下のような違いがあります。
    ①ソース間の変数参照が出来ない(別コンテキストのため、変数スコープが別になっている)
    ②ソース間の変数参照出来る(同一コンテキストのため、変数スコープが同一になっている)

    各機能間等で変数参照を行うことが多いので②の方法が推奨されています。
    今回は②ファイルをincludeする方法についてソースを見ながら簡単に説明したいと思います。

    今回使用するのはTitanium.includeメソッドになります。
    Titanium.includeメソッド【API Reference】
    http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.include-method.html

    パラメタに読み込みたいJSファイルを指定するだけです。
    これを以下のソースからincludeメソッドを修正します。

    【app.js】

    //win1を生成し、ラベルを設定する部分を別ソースにしたい
    var win1 = Titanium.UI.createWindow({
        title:'Win 1',
        backgroundColor:'#fff'
    });
    var label1 = Titanium.UI.createLabel({
        color:'#999',
        text:'I am Window',
        font:{fontSize:20,fontFamily:'Helvetica Neue'},
        textAlign:'center',
        width:'auto'
    });
    win1.add(label1);
    win1.open();

    上記のソースでUI部分を②の方法でファイル分割すると下記の通りになります。

    【app.js】

    //名前空間を定義
    var test = {};
    //別ソースを読み込む
    Titanium.include('ui.js')
    //別ソースで定義したWindowオブジェクト生成メソッドを呼び出す
    var win1 = test.ui.createWindow();
    win1.open();

    【ui.js】

    (function(){
        //UI用の名前空間を定義
        test.ui = {};
        //Windowオブジェクト生成メソッドを定義
        test.ui.createWindow = function(){
            //Windowsオブジェクトの生成
            var win = Titanium.UI.createWindow({
                title:'Win 1',
                backgroundColor:'#fff'
            });
            //Labelオブジェクトの生成
            var label = Titanium.UI.createLabel({
                color:'#999',
                text:'I am Window',
                font:{fontSize:20,fontFamily:'Helvetica Neue'},
                textAlign:'center',
                width:'auto'
            });
            //labelをwinに設定
            win.add(label);
            return win;
        };
    })();

    Titanium.includeでは指定したJSファイルをそのまま置換するのと同じです。
    上記のように分割することが出来るので、UIだけでなく、ネットワーク処理、DB処理も同様に分割することで
    読みやすく、メンテしやすいソースになると思います。

     
  • Titanium Certified Application Developerになってきた!

    このエントリーを含むはてなブックマークはてなブックマーク - Titanium Certified Application Developerになってきた! この記事をクリップ!Livedoorクリップ - Titanium Certified Application Developerになってきた! Yahoo!ブックマークに登録 @niftyクリップに追加 Share on Tumblr FC2ブックマークへ追加 newsing it! Googleブックマークに追加 Bookmark this on Delicious FriendFeedで共有 このエントリをつぶやくこのWebページのtweets

    最近何かと名前を聞くようになってきたTitaniumという開発環境の資格を取ってきました!

    ↑その時にもらってきたシャツとUSBメモリ

    とってきたのは”Titanium Certified Application Developer”というものなのでこの資格はモバイル(iPhone/Android)限定ですが、Titanium自体は他にもDesktopやWebのアプリケーションがJavascriptで作れたり作れるようになったりして、いいかんじです。

    ということでほんの少しだけ、ほかのスマートフォン向けJavascriptフレームワークとTitanium Mobileの利点を紹介したいと思います。

    各環境に合わせた見た目にしてくれる

    同じコードでiPhone向けにはiPhoneっぽく、Android向けにはAndroidっぽくしてくれます。

    新規プロジェクトを作成するとはいってるタブでウィンドウを切り替えるコードです。タブが上下違っていたり、タイトルの有無なんかはTitaniumが自動でやってくれます。

    スマートフォン向けJavascriptフレームワークでWebアプリを作るときにこれを実現しようとすると、iPhoneかAndoroidかで処理を分岐させ、それぞれの画面を別々に作ってあげないとならないのでめんどくさいです。

    デバイスにアクセスできる

    SenchaTouchやjQueryMobileと違い、TitaniumMobileで作成したアプリはネイティブアプリになるのでカメラやGPSなど、携帯端末固有の機能を使ったアプリケーションを作ることもできます。Webアプリ用のJavascriptフレームワークとの違いですね。(逆に、比較すると手軽にリリースできないあたりが玉に瑕)

    ・・・と、簡単ですがこんな感じです。

    他になにか知りたければ@appcelerator_jaとか追いかけるといいと思うよ!

    そいじゃ!