Tizenネイティブアプリ開発ことはじめ
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 6,965 views

2013/7/6 Webプラットフォーム勉強会

2013/7/6 Webプラットフォーム勉強会

Statistics

Views

Total Views
6,965
Views on SlideShare
6,565
Embed Views
400

Actions

Likes
5
Downloads
21
Comments
0

6 Embeds 400

http://toshihirock.blogspot.jp 273
https://twitter.com 116
http://toshihirock.blogspot.com 8
http://localhost 1
http://toshihirock.blogspot.de 1
http://toshihirock.blogspot.kr 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Tizenネイティブア プリ開発ことはじめ 2013/7/6 Webプラットフォーム勉強会 @toshihirock Saturday, July 6, 13
  • 自己紹介 •@toshihirock •音楽好き •今までモバイル系アプリ開発(iア プリ、Android)などを実施 •本勉強会には前回参加させて頂き ました! Saturday, July 6, 13
  • 今日のお話 Saturday, July 6, 13 View slide
  • Tizen Native アプリ開発 Saturday, July 6, 13 View slide
  • 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