SlideShare une entreprise Scribd logo
1  sur  24
それでも
TitaniumでiPhone,Android
クロスプラットフォームを諦め
ない
2014.03.19
日向強 @coffeegyunyu
 このスライドはCoffeeScriptを多用してます。
CoffeeScriptアレルギーの人はご注意ください。
 ここに出ているのはあくまで個人の用例ですので、
「100%こうしたほうがいいよ」というものでは
ないのであしからず。
Caution
自己紹介
日向強
株式会社アールラーニング
開発事業部
モバイルのプロジェクト
(iOS,Android)を主にやってます
Titaniumでつくったも
の
Font Stamp
文字とフォントを組み合わせて各種SNSに
画像を送信するアプリ
ダウンロード数は33,000
Titanium3.2.0 使用
https://play.google.com/store/apps/details?id
=jp.coe.fontstamp
https://itunes.apple.com/jp/app/fontosutanp
u-wen-zisutanpuga/id687721425?mt=8
Titaniumでつくったも
の
coe
声を使ったソーシャルレコーディングアプリ
声を録音し、現在位置に声を置いておくことで、
他の人が声を拾って聞くことができるアプリ
現在3000件ほど声が世界中においてあります
Titanium 3.2.0使用
https://itunes.apple.com/jp/app/coe-
shengdetsunagaruapuri/id367895344?mt=8
https://play.google.com/store/apps/details?i
d=jp.coe.coe
Titaniumの悪循環
Titaniumの悪循環
Titaniumで両方作
れるらしいよ
コストダウン
できるのな
ら・・・
iOSでは動かない
Androidでもこの機能欲しい
if(OS_IOS)
If(OS_ANDROID)
もっと
もっと
iOS、Androidの分岐がいたる
ところに入ったメンテしづら
いスパゲッティの出来上がり
各所各所でOSごとの分
岐を設けます
一時的に要件は満たさ
れます
プロジェクト作成編
 新規プロジェクト作成時は、絶対にTitanium SDKを
3.2.1にしよう
プロジェクト作成編
なんで?
Titanium 3.1.3 Android Titanium 3.2.1 Android
 Titanium SDK 3.2.1だとデフォルトでAndroidの
UIのサイズが最適化されるよ(<property
name=“ti.ui.defaultunit”
type=“string”>dp</property>)
 Titanium SDK 3.2.1だと、Androidのデザインも
かっちょよくなるよ(Theme.holo)
なんで?
 新規プロジェクトの
選択について
画面遷移が発生する
アプリだとわかって
いる場合、
タブを使わなくても
Two-tabbed Alloy
Applicationのほうが
いい
プロジェクト作成編
 画面遷移の処理方法をiOS,Androidで統一できるから
(iOSのNavigationWindowとか意識しなくていい)
なんで?
#グローバルに現在のタブを保持
$.index.addEventListener "open", (e) ->
Alloy.Globals.currentTab = e.source.activeTab if e?.source?.activeTab?
$.index.addEventListener "focus", (e) ->
Alloy.Globals.currentTab = e.tab if e?.tab?
clickMe = (e)->
nextwindow = Ti.UI.createWindow()
Alloy.Globals.currentTab.open nextwindow #ここで画面遷移
$.index.open()
app/controller/index.coffee
実際に画面遷移すると
iPhone
(前に戻るボタンが自動付与)
Android
(Backキーで戻れる)
Controller編
 Android,iOSで明確に異なる記述で処理をする場合、
CoffeeScriptのクラスの機能を使用したほうが見通しや
すい
Controller編
Controller編
#共通機能クラス部分
class HogeWindowInplBase
constructor:->
hello:(e)->
alert "hello"
thankyou:->
alert "Thank you"
#OSによって使用する継承クラスを決定
IMPL = if OS_IOS then class HogeWindowInplIos extends HogeWindowInplBase
hello:(e)->
alert "hello iOS"
else if OS_ANDROID then class HogeWindowInplAndroid extends HogeWindowInplBase
hello:(e)->
alert "hello Android"
#コントローラ実装部
impl = new IMPL()
clickHello = (e)->
impl.hello() #ここはOSによって異なる
clickThankyou = (e)->
impl.thankyou() #ここはOS共通
app/controllers/HogeWindow.coffee
Controller編
iOS Android
UI編
 まずは、どのOSでも使える部品のみを使って画面
を組み立てる ドキュメントとにらめっこしましょ
う
 その上で、OS個別の部品を使いたくなったら、
app/view/{それぞれのOS}/{ファイル名}.xmlを作成す
る
UI編
UI編
ファイル構成例
└── views
├── UIWindow.xml ←OS独自のビューが設定されていない場合
├── index.xml
└── ios
└── UIWindow.xml ←iOS独自のビュー
UI編
iOS/UIWindow.xml UIWindow.xml
<Alloy>
<Window>
<View class="container">
<Button >hello</Button>
<Button >thankyou</Button>
</View>
</Window>
</Alloy>
<Alloy>
<Window>
<Toolbar class="container">
<Items>
<Button >hello</Button>
<Button >thankyou</Button>
</Items>
</Toolbar>
</Window>
</Alloy>
※iOSなので、せっかくだからToolbarを使いたい!
UI編
iOS Andoird
現在アールラーニング
では技術者を募集して
います
TitaniumやAndroid,iOSに限らず、
Java,Ruby,インフラetc…
技術に自信のある方は、お気軽に
t-hyuga@r-learning.co.jpまで!

Contenu connexe

Similaire à Titanium mokumoku 20140319

[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会Rei Matsushita
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作るTomoki Hasegawa
 
TestFlightみたいなのを自作する
TestFlightみたいなのを自作するTestFlightみたいなのを自作する
TestFlightみたいなのを自作するTomoki Hasegawa
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
ゲリラ的サービスの育て方
ゲリラ的サービスの育て方ゲリラ的サービスの育て方
ゲリラ的サービスの育て方Hidetoshi Mori
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Atsushi Harada
 
アプリのUXを磨くベスト・プラクティス
アプリのUXを磨くベスト・プラクティスアプリのUXを磨くベスト・プラクティス
アプリのUXを磨くベスト・プラクティスYuichi Kato
 
エンジニアのお祭り
エンジニアのお祭りエンジニアのお祭り
エンジニアのお祭りTomoki Hasegawa
 
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930Ichiro Yamamoto
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションYoshito Tabuchi
 
Androidが変えたもの
Androidが変えたものAndroidが変えたもの
Androidが変えたものYuki Yamakido
 
classmethod devio2015 J-1 iBeacon
classmethod devio2015 J-1 iBeaconclassmethod devio2015 J-1 iBeacon
classmethod devio2015 J-1 iBeaconHiraku Komuro
 
これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!
これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!
これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!Yoshinori Kobayashi
 
Linked in勉強会プレゼン
Linked in勉強会プレゼンLinked in勉強会プレゼン
Linked in勉強会プレゼンTatsunori Hirota
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
Titanium勉強会
Titanium勉強会Titanium勉強会
Titanium勉強会Yusuke Kita
 
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめiPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめHiramatsu Ryosuke
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイトrie05
 
Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能
Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能
Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能yugosugiyama
 

Similaire à Titanium mokumoku 20140319 (20)

[社内向け]Titanium勉強会
[社内向け]Titanium勉強会[社内向け]Titanium勉強会
[社内向け]Titanium勉強会
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作る
 
TestFlightみたいなのを自作する
TestFlightみたいなのを自作するTestFlightみたいなのを自作する
TestFlightみたいなのを自作する
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
ゲリラ的サービスの育て方
ゲリラ的サービスの育て方ゲリラ的サービスの育て方
ゲリラ的サービスの育て方
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
アプリのUXを磨くベスト・プラクティス
アプリのUXを磨くベスト・プラクティスアプリのUXを磨くベスト・プラクティス
アプリのUXを磨くベスト・プラクティス
 
アプリ市場傾向から見る スマートフォンECのこれから
アプリ市場傾向から見る スマートフォンECのこれからアプリ市場傾向から見る スマートフォンECのこれから
アプリ市場傾向から見る スマートフォンECのこれから
 
エンジニアのお祭り
エンジニアのお祭りエンジニアのお祭り
エンジニアのお祭り
 
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
Androidが変えたもの
Androidが変えたものAndroidが変えたもの
Androidが変えたもの
 
classmethod devio2015 J-1 iBeacon
classmethod devio2015 J-1 iBeaconclassmethod devio2015 J-1 iBeacon
classmethod devio2015 J-1 iBeacon
 
これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!
これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!
これからiPhoneアプリを作ってみたいけど、プログラミング知識のない方へ!ワンコインセミナーでその一歩を踏み出してみよう!
 
Linked in勉強会プレゼン
Linked in勉強会プレゼンLinked in勉強会プレゼン
Linked in勉強会プレゼン
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
Titanium勉強会
Titanium勉強会Titanium勉強会
Titanium勉強会
 
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめiPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト
 
Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能
Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能
Flutter.Thursday@DeNA TechCon2024 うちのアプリのデバッグ機能
 

Dernier

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Dernier (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

Titanium mokumoku 20140319