SlideShare a Scribd company logo
1 of 40
Download to read offline
Titaniumによる
iPhone/Androidアプリ開発
株式会社 はてな
アプリケーションエンジニア
倉井龍太郎
自己紹介
倉井龍太郎 ( id:r_kurain, @kurain )
ブックマーク チーム / アプリケーションエンジニア
ブックマークアプリ( iPhone, iPad )
Monolith (iPhone)
Titanium やばい
夜中に興奮して blog に書いたら人気エントリに
以来、社内の Titanium厨として認識されています
Titanium の為に Android を買いました!
Agenda
iPhone 向けの開発を実演します
Titanium で開発すると何がうれしいのか
Titanium で出来ること、出来ないこと
Titaniumとは?
Javascript で iPhone/Android “ネイティブ”アプリ開発
Titanium Mobile が正式名称
Appcelerator が開発 有償サポート
Apache License v2.0
画像は Titanium Web サイトより引用
Appcelerator
いまやたら熱い会社
Titanium Desktop
$9m の資金調達
Paypal と提携
@masuidrive さんが入社
実演
必要環境
OS X Snow Leopard
XCode + iOS SDK (4.2 対応 )
Android SDK (Android 開発をする場合のみ)
まずは見たいですよね
実演
ディレクトリ構造
Project Name
README/LICENSE/CHANGELOG/tiapp.xml
Resources
iphone
Default.png
appicon.png
生成されるコード
var tabGroup = Titanium.UI.createTabGroup();
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
});
tabGroup.addTab(tab1);
tabGroup.open();
これでも動く
var win1 = Titanium.UI.createWindow({
title:'Tab 1',
backgroundColor:'#fff'
});
var label = Titanium.UI.createLabel({
text:'Hello World',
});
win1.add(label);
win1.open();
ここまでの利点
コード短いですよね!
エミュレータ起動までが高速(2回目以降)
メモリ管理が不要です
Twitter Client
実例として Twitter Client を作ります
OAuth 認証して
自分のタイムラインが見える
Tweet を投稿できる
画面イメージ
KitchenSink
やりたいことが決まったら Sample を探す
公式デモアプリ
https://github.com/appcelerator/KitchenSink
project import して自分でビルド
デモします
まずは TableView
Tweet の Timeline を表示する
UITableView と同じ
Titanium.UI.TableView に対して
Ti.UI.TableViewRow の配列を渡すだけ
table_view.js
var data = [];
var tableView =
Ti.UI.createTableView(
{
!! data:data
! }
);!
Ti.UI.currentWindow.add(tableView);
JS 指定で createWindow
var win = Titanium.UI.createWindow(
{
title:'Tab 1',
url:'table_view.js',
backgroundColor:'#fff'
}
);
実演
Tweet 取得
まずは認証なしの API から Tweet を取得
Titanium.Network.HTTPClient を使います
HTTP Request
Ti.Network.HTTPClient
var screen_name = 'kurain';
var url = "http://api.twitter.com/1/statuses/
user_timeline.json?screen_name="+screen_name;
var xhr = Ti.Network.createHTTPClient();
xhr.open("GET",url);
xhr.onload = function() {
var tweets =
JSON.parse(this.responseText);
}
xhr.send();
Callback
xhr.onload = function() {
var tweets = JSON.parse(this.responseText);
var data = [];
for(var i=0;i<tweets.length;i++) {
var row = Ti.UI.createTableViewRow();
var label = Ti.UI.createLabel(
{
text: tweets[i].text
}
);
row.add(label);
data.push(row);
}
var tableView = Titanium.UI.createTableView(
{
! ! data:data
! }
);
Titanium.UI.currentWindow.add(tableView);
}
Demo
画像も付けてみる
Twitter Icon を出してみましょう
自分のしか出ませんが
Tweet の左側に margin をとって
画像を差し込みます
Ti.UI.ImageView
var url = tweets[i].user.profile_image_url
var image = Ti.UI.createImageView(
{
image:url,
left: 0,
width: 48,
height: 48
}
);
row.add(image);
デモ
他にも便利機能が色々
Pull to refresh
Dynamic Scrolling
Edit and Move
すべてサンプルがあるので実装が簡単です!
OAuth
APIの殆どは OAuth 認証が必須
oauth-adapter
http://code.google.com/p/oauth-adapter/
Javascript で書かれた OAuth library
認証画面の表示も
OAuth-Adapter
Ti.include('oauth_adapter.js');
var oAuthAdapter = new OAuthAdapter(
'your-consumer-secret',
'your-consumer-key',
'HMAC-SHA1'
);
oAuthAdapter.loadAccessToke('twitter');
OAuth Send
oAuthAdapter.send(
'https://api.twitter.com/1/statuses/
update.json',
[['status', '@kurain Say Hello to
#titanium!']],
'Twitter', //Message Title
'Published.', //Succeed Message
'Not published.' //Failed Message
);
OAuth 認証
if (oAuthAdapter.isAuthorized() == false) {
var receivePin = function() {
oAuthAdapter.getAccessToken(
'https://api.twitter.com/oauth/access_token'
);
oAuthAdapter.saveAccessToken('twitter');
};
oAuthAdapter.showAuthorizeUI(
'https://api.twitter.com/oauth/authorize?' +
oAuthAdapter.getRequestToken(
'https://api.twitter.com/oauth/request_token'
),
receivePin
);
}
OAuth認証の次は
status のアップデートと OAuth 認証をセットにして
関数を作成
ナビゲーションバーの右肩にボタンをつけます
NavigationBar
var r = Titanium.UI.createButton(
{
! systemButton:Titanium.UI.iPhone.SystemButton.ADD
}
);
//addEventListener に注目!!
r.addEventListener('click',function()
{
! tweet('Hoge!');
}
);
Titanium.UI.currentWindow.setRightNavButton(r);
デモ
その他の特徴
Objective-C で Plugin が書けます
TiBar という Barcode 認識ライブラリもあるうようで
す
@masuidrive さんによる AdMob plugin もあります。
出来ないこと
直接の OpenGL の利用は今のところ無理そう
細やかなメモリ管理
close しても解放されなかったり
ガチガチの速度チューニング
で、Androidは?
まだまだこれからな予感
OS依存のコードもある
変更なしに同じコードが動くわけではない
エミュレータ遅い
自分で debugger をつないで実機で試すべき?
参考文献
titanium-mobile-doc-ja
http://code.google.com/p/titanium-mobile-doc-ja/
APIの解説, 入門PDF, Build Rakefile, etc..
id:donayama さん
まとめ
Titanium による簡単アプリ作成をしてみました
ライブラリによりOAuthの利用も可能です
コードの短さ、開発の速さを実演
出来ない事もありますが、なかなか面白いです。
Thank you.

More Related Content

Similar to TitaniumによるiPhone/Androidアプリ開発

TitaniumとNode.jsは兄弟
TitaniumとNode.jsは兄弟TitaniumとNode.jsは兄弟
TitaniumとNode.jsは兄弟Toshiro Yagi
 
[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会Rei Matsushita
 
Titanium
TitaniumTitanium
Titaniumyono05
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
TitaniumMobile Alloyの紹介
TitaniumMobile Alloyの紹介TitaniumMobile Alloyの紹介
TitaniumMobile Alloyの紹介Shin O
 
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16Yoshiaki Yoshida
 
拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。GuildWorks
 
拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。toshihiro ichitani
 
2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料Eiichi Yoshikawa
 
Switching to Indie iOS Development
Switching to Indie iOS DevelopmentSwitching to Indie iOS Development
Switching to Indie iOS DevelopmentEd Magnin
 
20130817 Titanium勉強会(午前)
20130817 Titanium勉強会(午前)20130817 Titanium勉強会(午前)
20130817 Titanium勉強会(午前)Toshiro Yagi
 
いわてTitanium勉強会#1
いわてTitanium勉強会#1いわてTitanium勉強会#1
いわてTitanium勉強会#1Toshiro Yagi
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Atsushi Harada
 
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」feedtailor
 
Androidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返りAndroidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返りichirokato5
 
Titanium初心者によるAlloy地雷原始末記
Titanium初心者によるAlloy地雷原始末記Titanium初心者によるAlloy地雷原始末記
Titanium初心者によるAlloy地雷原始末記Kazuro Fukuhara
 

Similar to TitaniumによるiPhone/Androidアプリ開発 (20)

TitaniumとNode.jsは兄弟
TitaniumとNode.jsは兄弟TitaniumとNode.jsは兄弟
TitaniumとNode.jsは兄弟
 
[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会
 
Titanium+twilio
Titanium+twilioTitanium+twilio
Titanium+twilio
 
Ti九州
Ti九州Ti九州
Ti九州
 
Titanium
TitaniumTitanium
Titanium
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
TitaniumMobile Alloyの紹介
TitaniumMobile Alloyの紹介TitaniumMobile Alloyの紹介
TitaniumMobile Alloyの紹介
 
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
"たいたにうむ"な1ヶ月間 @Titaniumもくもく会 #16
 
About Titanium Mobile
About Titanium MobileAbout Titanium Mobile
About Titanium Mobile
 
拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。
 
拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。拝啓、プロダクトオーナー様。
拝啓、プロダクトオーナー様。
 
2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料
 
Switching to Indie iOS Development
Switching to Indie iOS DevelopmentSwitching to Indie iOS Development
Switching to Indie iOS Development
 
20130817 Titanium勉強会(午前)
20130817 Titanium勉強会(午前)20130817 Titanium勉強会(午前)
20130817 Titanium勉強会(午前)
 
いわてTitanium勉強会#1
いわてTitanium勉強会#1いわてTitanium勉強会#1
いわてTitanium勉強会#1
 
Ti.trap
Ti.trapTi.trap
Ti.trap
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
 
Androidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返りAndroidエンジニアになってからの1年間の感想と振り返り
Androidエンジニアになってからの1年間の感想と振り返り
 
Titanium初心者によるAlloy地雷原始末記
Titanium初心者によるAlloy地雷原始末記Titanium初心者によるAlloy地雷原始末記
Titanium初心者によるAlloy地雷原始末記
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

TitaniumによるiPhone/Androidアプリ開発