20111130 titanium mobile

27
Titanium Mobileとは? http://www.flickr.com/photos/vaucher/5763894833/ 111128日月曜日

description

はじめようTitanium+JavaScriptでスマホアプリ開発カフェVol.1の発表資料

Transcript of 20111130 titanium mobile

Page 1: 20111130 titanium mobile

Titanium Mobileとは?http://www.flickr.com/photos/vaucher/5763894833/

11年11月28日月曜日

Page 2: 20111130 titanium mobile

iPhone開発のおさらい

Objective-C文法を覚える

作りたいアプリに関するAPIを理解

+

標準ライブラリ(拡張ライブラリ)利用法学ぶ

+

11年11月28日月曜日

Page 3: 20111130 titanium mobile

Android開発のおさらい

Javaの文法を覚える

作りたいアプリに関するAPIを理解

+ +

標準ライブラリ(拡張ライブラリ)利用法学ぶ

11年11月28日月曜日

Page 4: 20111130 titanium mobile

iPhone/Androidでそれぞれ違う言語&API覚えるのは大変

http://www.flickr.com/photos/panman_/4507107513/

11年11月28日月曜日

Page 5: 20111130 titanium mobile

Titanium Mobileの場合の開発は?

// commentvar sampleCode = ‘Hello’;alert(sampleCode);

JavaScriptの文法を覚える(*1)

作りたいアプリに関するAPIを理解

+(任意)ライブラリ利用法学ぶ

+

tw_twitter_api

*1:参考情報:Node.jsの開発をしている人には馴染みがあるCommonJSにTitanium Mobileも準拠しています。詳しくは本家の英語情報を(http://wiki.appcelerator.org/display/guides/CommonJS+in+Titanium)

11年11月28日月曜日

Page 6: 20111130 titanium mobile

Titanium Mobileの動作原理

JavaScriptインタプリタ JavaScriptインタプリタ

APIs APIs

Application(JavaScriptで書かれたプログラム)

iOS Android OS

Modules Modules

Native iOS app Native Android app

TitaniumMobile

JavaScriptのプログラムからObjective-CやJavaで構築されたTitaniumMobileのAPIを呼び出して動作(※誤解されやすいですがJavaScriptのコードがObjective-CやJavaに自動変換されているわけではありません)

11年11月28日月曜日

Page 7: 20111130 titanium mobile

Objective-Cで構築されたTitanium.UI.Viewのソースコード

Javaで構築されたTitanium.UI.Viewのソースコード

参考までにTitanium MobileのAPI(Titanium.UI.View)

※ ソースコードはGitHub(https://github.com/appcelerator/titanium_mobile)にあります。

11年11月28日月曜日

Page 8: 20111130 titanium mobile

Titanium Mobileが提供するAPI✤ iPhone/AndroidのそれぞれのAPIをより簡単かつ共通的に操作できるようになってます。

✤ 代表的な機能は右記通り

NativeUI

メディア機能

データI/O

ネットワーク通信

デバイス操作

ラベル、テキスト入力、ボタン等、Webブラウザ機能

画像、動画の表示

ファイルシステムの操作SQLiteデータベース

XHR(XMLHttpRequest)Socket通信

カメラ、GPS

11年11月28日月曜日

Page 9: 20111130 titanium mobile

Titanium Mobileでの開発する上での参考書籍✤ 基本的には以下書籍をベースにしてTitaniumMobileの使い方について説明しますので復習/予習のために書籍購入をオススメします

✤ TitaniumMobileで開発するiPhone/AndroidアプリJavaScriptによるスマートフォンアプリ開発入門http://amzn.to/tIcL0t

11年11月28日月曜日

Page 10: 20111130 titanium mobile

Titanium Studioとは?http://www.flickr.com/photos/alanant/4483533096/

11年11月28日月曜日

Page 11: 20111130 titanium mobile

Titanium Studioとは?✤ コード補完、Git連携をサポートしたエディタ、プロジェクトの管理、シミュレーター、実機でのアプリの実行機能を持った統合開発環境

✤ 詳しくはこちら(http://bit.ly/vBbq20)

✤ Aptana Studioがベースになっているので、細かい使い方についてはAptanaの情報も参考になると思います

✤ ※日頃からプログラミングされている人向けの情報※Emacs/Vim/TextMate/CotEditor..等各自好みのテキストエディタを使ってコードを書き、ターミナルから所定のコマンド入力することでbuildすることも可能。くわしくはこちら(http://wiki.appcelerator.org/display/guides/Titanium+Command+Line+Interface)

11年11月28日月曜日

Page 12: 20111130 titanium mobile

プロジェクト設定✤ TitaniumStudioを起動した後、File→New→Titanium Mobile Projectと進みます

✤ 右記画面が表示されますので今回は以下入力してプロジェクトの設定を行います✤ Project name: webbrowse

✤ App Id:jp.co.pasonatech.20111130

✤ 補足)今回はローカルでの作業のため App Idを仮にこのようにしましたがAppStoreで配布する場合、他のアプリケーションと重複することは出来ません。

11年11月28日月曜日

Page 13: 20111130 titanium mobile

プロジェクト設定後✤ TitaniumStudioが自動的にいくつかのフォルダ&ファイルを自動生成して最終的に右記のような画面が表示されます

✤ app.js以外のファイルは基本的には編集することはありません。

✤ TitaniumStudio起動時にはウィンドウが複数表示されて画面が狭く感じる場合、レイアウト変更可能です

✤ フォントが小さく感じる場合補足資料を参照

11年11月28日月曜日

Page 14: 20111130 titanium mobile

ビルドしてiPhoneSimulator上で動作するか確認しましょうAppExplorerのウィンドウを選択して1.赤枠のボタンをclick2.iPhoneSimulatorを選択

11年11月28日月曜日

Page 15: 20111130 titanium mobile

Webサイトを表示出来るアプリケーションを作る※「TitaniumMobileで開発するiPhone/Androidアプリ」34ページから38ページを参考に作成

11年11月28日月曜日

Page 16: 20111130 titanium mobile

アプリケーション開発①✤ App Explorerからapp.jsをダブルクリックしてapp.jsを開きます

✤ App Explorerがどこにあるかわからない場合にはTitanium StudioのメニューでWindow→Show View→App Explorerを選択するとApp Explorerが表示されます

11年11月28日月曜日

Page 17: 20111130 titanium mobile

アプリケーション開発②app.jsソースコード前半&解説// this sets the background color of the master UIView (when there are no windows/tab groups on it)Titanium.UI.setBackgroundColor('#000');// create tab groupvar tabGroup = Titanium.UI.createTabGroup();//// create base UI tab and root window//var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff'});var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1});var label1 = Titanium.UI.createLabel({! color:'#999',! text:'I am Window 1',! font:{fontSize:20,fontFamily:'Helvetica Neue'},! textAlign:'center',! width:'auto'});win1.add(label1);

タイトルが「Tab 1]、背景色が白(#fff)のWindowを生成win1という名前を付けてます

タイトルが「Tab 1]、アイコンを指定、対応するWindowとしてWin1を指定したTabを生成tab1という名前を付けてます

表示内容「I am Window 1」、表示色を灰色(#999)、フォント名&サイズを指定したLabelを生成label1という名前を付けてます

win1の内部にlabel1を配置してます

Tabを格納するためのTabGroupを生成tabGroupという名前を付けてます

11年11月28日月曜日

Page 18: 20111130 titanium mobile

アプリケーション開発③ここまでのUIイメージ

TabGroup

tabwindow

label

11年11月28日月曜日

Page 19: 20111130 titanium mobile

アプリケーション開発④app.jsソースコード後半&解説// create controls tab and root window//var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff'});var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2});var label2 = Titanium.UI.createLabel({! color:'#999',! text:'I am Window 2',! font:{fontSize:20,fontFamily:'Helvetica Neue'},! textAlign:'center',! width:'auto'});win2.add(label2);//// add tabs//tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab grouptabGroup.open();

背景色が白(#fff)のWindowを生成win2という名前を付けてます

タイトルが「Tab 2]、アイコンを指定、対応するWindowとしてWin2を指定したTabを生成tab2という名前を付けてます

表示内容「I am Window 2」、表示色を灰色(#999)、フォント名&サイズを指定したLabelを生成label2という名前を付けてます

win2の内部にlabel2を配置してます

tabGroupの内部にtab1,tab2を配置

tabGroupを開く(= 表示する)11年11月28日月曜日

Page 20: 20111130 titanium mobile

アプリケーション開発⑤app.jsを改造する

var label1 の行から、win1.add(label1);の所まで削除します

// this sets the background color of the master UIView (when there are no windows/tab groups on it)Titanium.UI.setBackgroundColor('#000');// create tab groupvar tabGroup = Titanium.UI.createTabGroup();//// create base UI tab and root window//var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff'});var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1});var label1 = Titanium.UI.createLabel({! color:'#999',! text:'I am Window 1',! font:{fontSize:20,fontFamily:'Helvetica Neue'},! textAlign:'center',! width:'auto'});win1.add(label1);

11年11月28日月曜日

Page 21: 20111130 titanium mobile

アプリケーション開発⑥WebView配置// this sets the background color of the master UIView (when there are no windows/tab groups on it)Titanium.UI.setBackgroundColor('#000');// create tab groupvar tabGroup = Titanium.UI.createTabGroup();//// create base UI tab and root window//var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff'});var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1});var webView = Titanium.UI.createWebView({! url:'http://www.google.co.jp'});win1.add(webView);

11年11月28日月曜日

Page 22: 20111130 titanium mobile

アプリケーション開発⑦WebViewとは✤ WebKitブラウザ機能とほぼ同等の機能を持った部品✤ WebKitとは:WebブラウザのSafariにも標準搭載されるオープンソースソフトウェアでHTML、CSS、JavaScript等を解釈して画面描画を担当

✤HTML5/CSS3ベースのHTMLコンテンツをほぼそのまま動作させることが可能

✤ 指定したURLのHTMLコンテンツ表示

✤ あらかじめ自分が作成したHTMLコンテンツの表示

Titanium Mobileの機能を使ってiPhoneアプリでよく見かける標準的なUI(含む

HTMLベースのコンテンツを表示する部分にTitaniumMobileのWebViewを活用

11年11月28日月曜日

Page 23: 20111130 titanium mobile

アプリケーション開発⑧HTMLコンテンツ準備して表示~中略~var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff'});var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1});var webView = Titanium.UI.createWebView({});webView.html = '<html>' + '<head>' + '<title>自分で準備したHTMLを表示</title>' + '</head>' + '<body>' + '<h1>自分でつくったHTMLコンテンツ表示する</h1>' + '<p>こんな感じでコンテンツが表示できます</p>' + '</body>' + '</html>';win1.add(webView);

11年11月28日月曜日

Page 24: 20111130 titanium mobile

余力あったら簡易WebブラウザTitanium.UI.setBackgroundColor('#FFF');var tabGroup = Titanium.UI.createTabGroup();var win1 = Titanium.UI.createWindow({ title:'簡易ブラウザ', backgroundColor:'#fff'});var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1});// 1.URLを入力できるテキストフィールドを準備var urlBox = Titanium.UI.createTextField({ color:'#336699', top:10, left:10, width:200, height:30, hintText:'enter url', keyboardType:Titanium.UI.KEYBOARD_URL, returnKeyType:Titanium.UI.RETURNKEY_DEFAULT, autocapitalization: false, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED});

urlBox.addEventListener('blur',function(e){ actInd.show(); webView.url = e.value; webView.reload();});win1.add(urlBox);

// 2.読み込み処理を中止するボタンを準備var stopBtn = Ti.UI.createButton({ title:'stop', top:10, left:220, width:60, height:30, systemButton:Titanium.UI.iPhone.SystemButton.STOP});stopBtn.addEventListener('click',function(e){ webView.stopLoading(); actInd.hide();});win1.add(stopBtn);

次のページに続く

11年11月28日月曜日

Page 25: 20111130 titanium mobile

余力あったら簡易Webブラウザ// 4.「読み込み中」ということを示すためのActivityIndicatorを準備var actInd = Titanium.UI.createActivityIndicator({ top:50, height:55, width:'auto', opacity:0.5, color:'#FFFFFF', backgroundColor:'#000', borderRadius:5, borderColor:'#000', font:{fontFamily:'Helvetica Neue', fontSize:13}, message:' Loading...', style:Titanium.UI.iPhone.ActivityIndicatorStyle.PLAIN});win1.add(actInd);

tabGroup.addTab(tab1);tabGroup.open();

// 3.HTMLコンテンツを表示するためのWebViewを準備var webView = Titanium.UI.createWebView({ top:50, left:0, width:'auto', height:'auto'});webView.addEventListener('beforeload',function(e){ actInd.show();});webView.addEventListener('load',function(e){ actInd.hide();});win1.add(webView);

11年11月28日月曜日

Page 26: 20111130 titanium mobile

補足資料:App Id:

✤ 自分が作成するアプリケーションがAppStore上で唯一のものと判別出来るように利用されるID

✤ 唯一のIDとして名前を考えるときにはドメイン名を反転させたもの+アプリケーション名が推奨されてます。仮にアプリケーション名をpasonatechappsとした場合に

✤ 独自ドメイン(仮:h5y1m141.jp)を取得している場合:jp.h5y1m141.pasonatechapps

✤ 独自ドメインは持ってないがtwitterアカウント(例:h5y1m141)を持っている場合:com.twitter.h5y1m141.pasonatechapps

11年11月28日月曜日

Page 27: 20111130 titanium mobile

補足資料:TitaniumStudioのフォント設定

✤ フォントが小さく読みづらい場合TitaniumStudio設定変更します

✤ TitaniumStudio → Preferencesを選択

✤ Generalメニューをクリック

✤ Appearanceをクリック

✤ Colors and Fontsをクリック

✤ TextFontのメニュークリック

11年11月28日月曜日