[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
Tizenネイティブア
プリ開発ことはじめ
2013/7/6
Webプラットフォーム勉強会
@toshihirock
Saturday, July 6, 13
自己紹介
•@toshihirock
•音楽好き
•今までモバイル系アプリ開発(iア
プリ、Android)などを実施
•本勉強会には前回参加させて頂き
ました!
Saturday, July 6, 13
今日のお話
Saturday, July 6, 13
Tizen Native
アプリ開発
Saturday, July 6, 13
HTML5
ではありません!
すいません!!!
Saturday, July 6, 13
そもそもNativeって何
なのよ?HTML5じゃ
ねーの?
Saturday, July 6, 13
HTML5だけじゃない
• Tizenアプリ開発は以下の2種類
• TizenWebProject→HTML+JavaScrip
+CSS3
• NativeProject→C++
• Native+Webのハイブリッドアプリ
開発も可能
Saturday, July 6, 13
特徴
• C++でコードを書く
• ライフサイクルによる制御が可能
• ライブラリが利用可能
(Libxml2,OpenGLなど)
Saturday, July 6, 13
えっ?C++?めっちゃ面
倒そう。。
Saturday, July 6, 13
ある程度大丈夫!
• STL対応
• SmartPointers対応
• TizenNativeAPIで補完提供
• Collection系(ArrayList,HashMap)
• Utility系(Math,RegularExpression)
Saturday, July 6, 13
こわくないよ!
(多分)
Saturday, July 6, 13
HTML5な人はSDKイ
ンストールまでは参考に
なるよ!(多分)
Saturday, July 6, 13
目次
• 開発環境構築
• NativeでHelloWorld!
• NativeでUnitテスト!
• ビルド高速化
• ログ出力
• Tips
Saturday, July 6, 13
開発環境構築
Saturday, July 6, 13
ところで皆さんの中で
Tizen開発環境構築した
方はどれぐらいいらっ
しゃいますか?
Saturday, July 6, 13
対応OS
• WindowsXP/7(32bit/64bit)
• Ubuntu(32bit/64bit)
• MacOSX←New!
Saturday, July 6, 13
必要ハードスペック
(公式)
• At least dual-core 2GHz of CPU
• At least 2GB of RAM memory
• At least 3GB of free disk space
• エミュレーター利用時
• IntelVTx supported by CPU
(recommended)
Saturday, July 6, 13
動かしてみたが。。。
• MacBookAir(CPU:Intel Core2
Duo1.4GHz,メモリ4GB)では力不足
• エミュレーターが遅いっっ!!!
• 結局MacBookProを購入。。。
Saturday, July 6, 13
ネイティブ開発時
個人的推奨スペック
• CPU:Corei5,Corei7相当
• メモリ:8GB
• エミュレーターを利用する場合に
はIntelVT対応していないとかなり
遅い(BIOSで有効化設定が必要)
Saturday, July 6, 13
インストールの流れ
1. Java(not openJDK)のインストール
2. Tizen Install Managerのダウンロー
ド
3. TizenSDK(Tools)のインストール
Saturday, July 6, 13
Javaのインストール
• OracleからJavaをダウンロード
• OpenJDKはNG
• Javaのバージョンは6もしくは7系
• インストール後、パスを通す
Saturday, July 6, 13
Tizen Install Manager
のダウンロード
• 公式サイト(https://
developer.tizen.org/downloads/tizen-
sdk)からOSに応じたものをダウン
ロード
Saturday, July 6, 13
Tizen Install Manager
の起動
• Windows,Macの場合、Javaがインス
トールされていればOK
• Ubuntuの場合、必要なパッケージ
がないとNG。apt-getで取得する必
要がある。
Saturday, July 6, 13
TizenSDKの取得方法
• Tizen Install ManagerにはTizenSDK
が含まれないので取得が必要。
• Tizen Install Manager起動後、ネッ
トワークを利用して取得するか、
事前にisoをダウンロードも可能。
Saturday, July 6, 13
Tizen Install Manager
のインストール
Install Manager
SDK Image
Saturday, July 6, 13
TizenSDKのインストール
• Tizen Install Managerを起動
Saturday, July 6, 13
Saturday, July 6, 13
TizenSDKのインストール
• ネットワーク経由でインストール
の場合、Next。
• iso事前取得済みの場合、Advanced
からisoを選択。
Saturday, July 6, 13
TizenSDKのインストール
• 基本的に次へ次へでOK。
• TizenSDKのインストール先が表示
された際は一応パスを確認。
Saturday, July 6, 13
TizenSDKのインストール
• IntelVTに関する設定画面も基本的
には次へ次へでOK。
• BIOSの設定をしていない場合、エ
ラーが表示される(Tizenのインス
トールは終わる)
Saturday, July 6, 13
ソフトウェア
• TizenIDE
• Emulator Manager
• Web Simulator
• Install Manager
• などなど。
Saturday, July 6, 13
ソフトウェア起動
• Ubuntu
• Applications→TizenSDK
• Windows
• スタート→TizenSDK
• Mac
• tizen-sdkパスの配下
Saturday, July 6, 13
TizenIDE
Saturday, July 6, 13
TizenIDE
• ほぼEclipseのIDE
• Web,Nativeアプリ作成時に利用
• ビルド、エミュレーターへのアプ
リ転送なども可能
• Eclipse Plugin利用可能
Saturday, July 6, 13
Emulator Manager
Saturday, July 6, 13
Emulator Manager
• AndroidのAVDManagerとほぼ同じ
• IntelVT設定が失敗しているとHW
VirtualizationをEnabledに出来ず、起
動がとても遅い。
• 起動できない場合、RAM Sizeを低
くすると起動できる事がある。
Saturday, July 6, 13
Web Simulator
Saturday, July 6, 13
Web Simulator
• HTML5アプリの確認が出来るエ
ミュレーター(ブラウザ)
• Tizenエミュレーターと比較すると
高速で起動
• 画面の向き、画面解像度など端末
情報の設定も可能
Saturday, July 6, 13
Install Manager
Saturday, July 6, 13
Install Manager
• TizenSDKのインストール、アンイ
ンストール、アップデートが可
能。(アップデートは未確認)
Saturday, July 6, 13
デモ
Saturday, July 6, 13
環境構築まとめ
• Native開発時はPCスペック大事
• HTML5アプリ作成はWebSimulator
が使える
• エミュレーター利用の場合には仮
想化設定がとても大切
Saturday, July 6, 13
Nativeで
HelloWorld!
Saturday, July 6, 13
手順
1. TizenIDEでプロジェクト作成
2. 証明書作成(初回)
3. エミュレーターへの転送
Saturday, July 6, 13
プロジェクト作成
• Tizen IDE起動
• New→Others→Tizen Native Project
Saturday, July 6, 13
プロジェクト作成
Tizen Native
Project
Saturday, July 6, 13
プロジェクト作成
Templateタブ-From
based Aplication
Saturday, July 6, 13
プロジェクト作成
• 任意のプロジェクト名を入力して
Fnish
Saturday, July 6, 13
証明書作成
• 転送時に証明書で署名する必要が
ある。
• 証明書作成はcertificate-generatorを
利用
• Windowsではbat、Linux or Macでは
Shellで提供
Saturday, July 6, 13
証明書作成
• $ tizen-sdk/tools/certificate-
generator/certificate-generator.sh
• $ tizen-sdk/tools/certificate-
generator/certificate-generator.bat
Saturday, July 6, 13
証明書作成
toshihiro308@Toshihirock-MacBook-Air:~/tizen-sdk/tools/certificate-generator$ ./
certificate-generator.sh
Please enter the country name(optional, two letters): (Enter)
Please enter the state or province name(optional): (Enter)
Please enter the city name(optional): (Enter)
Please enter your name(optional, default is 'author'): (Enter)
Please enter your organization name(optional): (Enter)
Please enter your department name(optional): (Enter)
Please enter your email id(optional): (Enter)
Please enter password for pkcs12 format key certificate:
mypassword
Please enter alias for generated pkcs12 structure:
ryan
Please enter file name for storing pkcs12 file (*.p12):
ryan.p12
Saturday, July 6, 13
証明書作成
• TizenIDEから利用する証明書を設
定
• Preferences→Secure Profiles
Saturday, July 6, 13
証明書作成
Certificate pathで
パスを指定
証明書のパスワー
ド指定
任意の名称で
Profile作成
Saturday, July 6, 13
エミュレーターへの転送
• エミュレーターを事前に起動
• 対象プロジェクトを選択→右ク
リック→Run As→Tizen Native
Application
Saturday, July 6, 13
デモ
Saturday, July 6, 13
NativeでHelloworld
まとめ
• TizenIDEから作成可能
• エミュレーター転送でも証明書の
作成が必要
Saturday, July 6, 13
Nativeで
Unitテスト!
Saturday, July 6, 13
Unitテストはできる?
• テスト用のプロジェクトを作成す
ることで可能
• Google C++ TestFrameworkが利用
可能
• Functionテストが出来る
• 画面の確認などは出来ない
Saturday, July 6, 13
テストプロジェクト作成
• Tizen IDE起動
• File→New→Others
Saturday, July 6, 13
テストプロジェクト作成
Tizen
Native Unit
Test Project
Saturday, July 6, 13
テストプロジェクト作成
テスト対象の
プロジェクトを
選択
Saturday, July 6, 13
テストプロジェクト作成
• 対象プロジェクトでincludeしてい
るファイルが読み込まれる
• 自動生成されるテストコードにテ
ストケースを追加する
Saturday, July 6, 13
テスト対象コード
#include "Util.h"
int Util::Sum(int x, int y) {
	 return x + y;
}
void Util::AppendWorld(Tizen::Base::String& str) {
	 str.Append("World!");
}
Saturday, July 6, 13
テストコード
//includeファイルなど抜粋
TEST_F(TestSuite, test03)
{
	 Util *p = new Util();
	 ASSERT_EQ(3, p->Sum(1, 2));
	 delete p;
}
TEST_F(TestSuite, test04)
{
	 Util *p = new Util();
	 Tizen::Base::String hello = Tizen::Base::String("Hello");
	 Tizen::Base::String helloworld = Tizen::Base::String("HelloWorld!");
	 p->AppendWorld(hello);
	 ASSERT_EQ(helloworld, hello);
	 delete p;
}
Saturday, July 6, 13
テスト実行
• エミュレーター起動
• 先にテスト対象プロジェクトをビ
ルドしておく
• テストプロジェクトで右クリック
→Run As→Tizen Native Unit Test
Application
Saturday, July 6, 13
テスト実行(成功)
実行テスト
ケース
Saturday, July 6, 13
テスト実行(失敗)
予想される値
と実際の値
Saturday, July 6, 13
デモ
Saturday, July 6, 13
NativeでUnitテスト
まとめ
• 特に設定などは必要なく、
TizenIDEからテストが可能
• Functionテストが実行可能
Saturday, July 6, 13
ビルド高速化
Saturday, July 6, 13
とあるアプリ
をビルドしてみた
• じゅ、10分超え。。だと。。
• C++やばい。。。
• C++高速化の手法をGoogle先生に
聞く
Saturday, July 6, 13
教えてGoogle先生!
• 以下の回答を貰った。
• 平行ビルド
• ccacheによるキャッシュ
• 分散ビルド
Saturday, July 6, 13
平行ビルド
• CPUの複数コアを利用して平行で
ビルドする。らしい。
• CPUのコア数+1ぐらいで平行処理
を設定すると良い。らしい。
Saturday, July 6, 13
平行ビルド設定
• TizenIDEで簡単に設定可能
• 対象プロジェクト→右クリック
→Properties
Saturday, July 6, 13
平行ビルド設定
C/C++ Build
Behaviourタブ
Use parallel
buildにチェック
平行数を指定
Saturday, July 6, 13
平行ビルド設定後
• 設定完了後、ビルドするとmake -j
hogeという形で平行ビルドが可能
• 具体的な時間計測は行っていない
が、確実にビルド時間は短くなっ
た
Saturday, July 6, 13
ccacheによるキャッシュ
• ビルドする際に以前利用した
キャッシュを利用する事で高速化
を図る
• 2回目のビルド以降早くなる
• ccacheというソフトを利用
Saturday, July 6, 13
ccacheインストール
• MacであればHomebrew,Ubuntuであ
ればapt-getでインストール
• Windowsの場合、Cygwinなどでイ
ンストール
Saturday, July 6, 13
ccache有効化
• 対象のプロジェクトで右クリック
→Properties
• Settings→C++ Compiler、及びC++
Linker
Saturday, July 6, 13
ccache有効化
Command Line
parternsを変更
(後述)
Saturday, July 6, 13
ccache有効化
• 変更前(C++ Compiler)
• ${COMMAND} ${FLAGS} $
{OUTPUT_FLAG} $
{OUTPUT_PREFIX}${OUTPUT} $
{INPUTS}
Saturday, July 6, 13
ccache有効化
• 変更後 (C++ Compiler)
• /usr/local/bin/ccache clang++ $
{FLAGS} ${OUTPUT_FLAG} $
{OUTPUT_PREFIX}${OUTPUT} $
{INPUTS}
• ccacheのフルパスは適宜変更
• C++ Linkerも忘れずに
Saturday, July 6, 13
Windowsの場合
• ccacheのキャッシュを保持する
フォルダのパス指定が/home/....と
なっている
• Windowsのパスでの指定が必要
Saturday, July 6, 13
対応方法
• TizenIDEで自動生成されるmakefile
で「../makefile.init」のinclude実施
• makefile.initを作成し、
CCACHE_DIRでキャッシュする
ディレクトリを指定
Saturday, July 6, 13
ccache設定後
• 設定後、2回目のビルド以降で
キャッシュが有効化される
• $ccache -sコマンドでキャッシュ状
況が確認できる
• こちらも具体的な数字は不明だが
早くなった気がする。多分。
Saturday, July 6, 13
分散ビルド
• 分散ビルドはまだ確認してませ
ん!
• どなかたやった人がいらっしゃっ
たら教えてください
Saturday, July 6, 13
ログ出力
Saturday, July 6, 13
ログ出力は?
• ログ出力用のマクロがある
• AndroidのLogcatのようにTizenIDE
で確認できる
• Window→ShowView→Log
Saturday, July 6, 13
LogView
Saturday, July 6, 13
LogView
Saturday, July 6, 13
マクロ種類
• Log Macros
• Try Macros
• Assert Macros
• Secure Log Macros
Saturday, July 6, 13
Log Macros
• 普通のログ出力
• ログレベル(info,debug,error)
• タグ付け可能
• 引数の条件式がtrueの場合のみの
出力も可能
Saturday, July 6, 13
Log Macros(例)
• AppLog(“Hello Wolrd”);
• AppLog(“tag”,“Hello World”);
• DebugLog(“tag”,“Hello World”);
Saturday, July 6, 13
その他
• Try Macros→条件式結果によるロ
グ出力
• Assert Macros→条件式の内容が
falseの場合、プロセスkillするらし
い(未確認)
Saturday, July 6, 13
その他
• Secure Log Macros→基本的にLog
Macros、Try Macrosと同様のログが
ある。
• コンパイル時に設定でログ出力を
やめたり出来るらしい
Saturday, July 6, 13
まとめ
Saturday, July 6, 13
まとめ
• TizenではWebかNativeでアプリが
作れる
• NativeはやはりHTML5と比べると
敷居は高い
• どうしてもNativeな場合はPCス
ペック大事
Saturday, July 6, 13
Tips
Saturday, July 6, 13
Tips
• TizenのAPIリファレンスと同じ形
式でDoxygen+GraphiraizerでAPIリ
ファレンス作成可能
• TizenIDEのHelp→Help Contentsで
ローカルのAPIリファレンス確認
• TizenAPIにHoverで詳細確認可能
Saturday, July 6, 13
ご清聴ありがとうござい
ました!
Saturday, July 6, 13

More Related Content

Tizenネイティブアプリ開発ことはじめ