第三回 Tizen 勉強会
   Naruto TAKAHASHI
ターボシステムズ株式会社
  tnaruto@gmail.com
EFL meets Tizen Mobile
Framework
   ネイティブコードで動作するアプリケーション
    ◦ Tizen の Core Services を直接実行可能

   UI ライブラリは EFLのみをサポート
    ◦ 一応、他の UI ライブラリを追加する裾野はあります。
      もともとは GTK をサポートしていたようです。
      ただし、その道はだいぶ険しいと思います…
   Enlightenment Foundation Libraries の略
   Enlightenment DR17 のために作成
   開発期間は 13,4年(!)
   近々 EFL 1.7 をリリース予定。
    ◦ (※) Enlightenment DR17 はまだリリースされてない。

   小粒なライブラリが階層を成しています。
    ◦   Eina    – データ構造ライブラリ
    ◦   Eet     - ストレージライブラリ
    ◦   Evas    - キャンバスライブラリ
    ◦   Ecore   - メインループライブラリ

   省メモリ
    ◦ EFL のメモリ使用量は Qt の ¼, GTK の ½
   Web App 以上のアイキャンディー
    ◦ ぬるぬる
    ◦ ぬるぬる!!
    ◦ ぬるぬる( ´∀`)

   Tizen のライフサイクルに準拠したアプリの作成

   C/C++ でアプリが書けますよ。
   現行の html5 でシステム周りを組むのは難しい。
    ◦ バックグラウンド動作
    ◦ システムトレイ
    ◦ Etc, etc
      Mozilla さんが頑張って解決している


   ライフサイクルを掌握したい
    ◦ Tizen 1.0 のWRT はバックグラウンド動作はしない

   省メモリ+高速動作を実現したい
    ◦ iOS の facebook App が html5 から native へ
   バックグランド動作のサポート
    ◦ Android でいう Service みたいなのは可能?
    ◦ UNIX でいうデーモンみたいなのは可能?

   アプリ間通信のサポート
    ◦ Android でいう Intent みたいなものは可能?
    ◦ UNIX でいうプロセス間通信みたいなのは可能?


   「これはできるの?」は勉強会で随時レポートします
How to implement Tizen
Native App
   C/C++ で開発

   エントリーポイントは main() からはじまるよ

   UX は elementary(EFL) を使用

   メインループ、ライフサイクルは Tizen Application
    Framework を使用
   AUL(Application Utility Library)
    ◦ App の launch(Web App <-> Native App 双方向)
   App-Core
    ◦ App のライフサイクルの管理、システムイベントキャッチ
   App-Service
    ◦ アプリケーションのサービス設定
   appcore に渡すコールバック関数一覧
    オペレーション     説明
    create      メインループに入る前に実行される。
                (ウィンドウの生成などの初期化処理を行う。)

    terminate   メインループの後に実行される。
                (アプリの終了処理などを行う。)

    pause       ウィンドウがバックグラウンドに移動したときに実行される。
                (停止処理や、バックグラウンド処理の開始などを行う)
    resume      ウインドウがフォアグランドに移動したときに実行される。
                (復帰処理、バックグラウンド処理の停止など行う)
    reset       再実行時に実行される。
   システムの変更があったときのイベント

   appcore_set_event_callback() で登録する。

   システムイベント
    ◦   LOWメモリー
    ◦   LOWバッテリー
    ◦   言語変更
    ◦   地域変更
   デバイスの回転を検知したときのイベント

   appcore_set_rotation_cb() で登録する。

   イベントの種類
    ◦   縦向き
    ◦   縦向きで逆
    ◦   横向き
    ◦   横向きで逆
How to build Tizen Native App
   ビルドのために揃えるもの!
    ◦ コンパイル環境
    ◦ デバイスへの転送


   Tizen SDK 1.0 のサポート状況
    ◦ コンパイル環境(×: ない)
    ◦ デバイスへの転送(○:sdb コマンドで転送する)

   コンパイル環境は自分で準備しないといけない。
   Tizen プロジェクトでオフィシャルに用意しているクロ
    スコンパイル環境
    ◦ GBS
    ◦ OBS
    ◦ Scratchbox2(お亡くなりになりました)
   Tizen パッケージ開発のコマンド
    ◦ Git レポジトリから tar.gz(rpm)の自動生成
    ◦ ローカル環境でのテストビルド
    ◦ OBS へコード提出

   コマンド例
    ◦ gbs build –A armv7l

   詳細は下記を参照してください
    ◦ https://source.tizen.org/os-development/git-
      build-system/
   パッケージを作成するデーモンサービス
   サーバにビルドを依頼できる…らしい

   OBS Server のイメージは以下
    ◦ http://susestudio.com/a/e0uuBG/obs-obs-server-
      obs-light


   OBSlight(クライアント?)のインストール方法は以下
    ◦ http://en.opensuse.org/openSUSE:OBS_Light_Install
      ation
おさらい
   Tizen Native App とは?
    Tizen デバイスでネイティブで動作するアプリケーション

   Tizen Native App の実装方法は?
    UI ウィジットは EFL を使用します。
    フレームワークは Tizen Application Framework を使用
     します。

   Tizen Native App のビルド方法は?
    GBS を使います。
    OBS も使えます。(使い方調査中)
   EFL 関連(重要)

   Tizen Application Framework 調査報告
    ◦ Tizen Native App のつくり方
    ◦ アプリのパッケージの作成方法

   WRT(WebRunTime) 調査報告
    ◦ Tizen Web App を動かすランタイム
    ◦ WebkitEFL + Tizen Device API 実装
    ◦ Web App の独自 API 拡張方法の調査
   それ、○○ だとどういう意味?
    ◦ Tizen Native App と Android App とのマッピング
      専門用語のマッピング
      機能、概念のマッピング
    ◦ Tizen Native App と Unix App とのマッピング
      制限事項など

   どなたか「それ、iOS だとどういう意味? 」やりません
    か?
   どなたか「それ、Android だとどういう意味? 」やりま
    せんか?
   SDK 2.0 がリリースするまで待てない!
    ◦ 2012/E にリリース予定

    ◦ Tizen フォンの販売が 2013年になった。
      (※) Samsung が Android と WP8 に注力するため
    ◦ SDK 2.0 の年度末リリースよりもっと遅くなるのでは…?

   ビルド環境構築を一人でやるとつまづくし、つまらない
    ◦ みんなでつまづけば怖くない!

   OSC 2012 Tokyo/fall の参加者が人少ないらしいから
    ビルド環境構築大会やっていいですか?(^q^)
   日程
    ◦ 2012/9/7(金) 10:00-18:00
    ◦ 2012/9/8(土) 10:00-17:30


   場所
    ◦ 明星大学 日野キャンパス 28号館


   詳細はこちら!
    ◦ http://www.ospn.jp/osc2012-fall/
   日程
    ◦ 2012/9/8(土) 12:00-12:45

   場所
    ◦ 明星大学 28号館204教室

   内容
    ◦ Tizenに関する技術Topicや動向
    ◦ HTML5アプリケーションの実行・デモ

    ◦ 人が少なければ Tizen Native ビルド環境構築大会 (^q^)
See you (^_^)/~

Tizen native application

  • 1.
    第三回 Tizen 勉強会 Naruto TAKAHASHI ターボシステムズ株式会社 tnaruto@gmail.com
  • 2.
    EFL meets TizenMobile Framework
  • 3.
    ネイティブコードで動作するアプリケーション ◦ Tizen の Core Services を直接実行可能  UI ライブラリは EFLのみをサポート ◦ 一応、他の UI ライブラリを追加する裾野はあります。  もともとは GTK をサポートしていたようです。  ただし、その道はだいぶ険しいと思います…
  • 4.
    Enlightenment Foundation Libraries の略  Enlightenment DR17 のために作成  開発期間は 13,4年(!)  近々 EFL 1.7 をリリース予定。 ◦ (※) Enlightenment DR17 はまだリリースされてない。  小粒なライブラリが階層を成しています。 ◦ Eina – データ構造ライブラリ ◦ Eet - ストレージライブラリ ◦ Evas - キャンバスライブラリ ◦ Ecore - メインループライブラリ  省メモリ ◦ EFL のメモリ使用量は Qt の ¼, GTK の ½
  • 7.
    Web App 以上のアイキャンディー ◦ ぬるぬる ◦ ぬるぬる!! ◦ ぬるぬる( ´∀`)  Tizen のライフサイクルに準拠したアプリの作成  C/C++ でアプリが書けますよ。
  • 8.
    現行の html5 でシステム周りを組むのは難しい。 ◦ バックグラウンド動作 ◦ システムトレイ ◦ Etc, etc  Mozilla さんが頑張って解決している  ライフサイクルを掌握したい ◦ Tizen 1.0 のWRT はバックグラウンド動作はしない  省メモリ+高速動作を実現したい ◦ iOS の facebook App が html5 から native へ
  • 9.
    バックグランド動作のサポート ◦ Android でいう Service みたいなのは可能? ◦ UNIX でいうデーモンみたいなのは可能?  アプリ間通信のサポート ◦ Android でいう Intent みたいなものは可能? ◦ UNIX でいうプロセス間通信みたいなのは可能?  「これはできるの?」は勉強会で随時レポートします
  • 10.
    How to implementTizen Native App
  • 11.
    C/C++ で開発  エントリーポイントは main() からはじまるよ  UX は elementary(EFL) を使用  メインループ、ライフサイクルは Tizen Application Framework を使用
  • 12.
    AUL(Application Utility Library) ◦ App の launch(Web App <-> Native App 双方向)  App-Core ◦ App のライフサイクルの管理、システムイベントキャッチ  App-Service ◦ アプリケーションのサービス設定
  • 13.
    appcore に渡すコールバック関数一覧 オペレーション 説明 create メインループに入る前に実行される。 (ウィンドウの生成などの初期化処理を行う。) terminate メインループの後に実行される。 (アプリの終了処理などを行う。) pause ウィンドウがバックグラウンドに移動したときに実行される。 (停止処理や、バックグラウンド処理の開始などを行う) resume ウインドウがフォアグランドに移動したときに実行される。 (復帰処理、バックグラウンド処理の停止など行う) reset 再実行時に実行される。
  • 14.
    システムの変更があったときのイベント  appcore_set_event_callback() で登録する。  システムイベント ◦ LOWメモリー ◦ LOWバッテリー ◦ 言語変更 ◦ 地域変更
  • 15.
    デバイスの回転を検知したときのイベント  appcore_set_rotation_cb() で登録する。  イベントの種類 ◦ 縦向き ◦ 縦向きで逆 ◦ 横向き ◦ 横向きで逆
  • 16.
    How to buildTizen Native App
  • 17.
    ビルドのために揃えるもの! ◦ コンパイル環境 ◦ デバイスへの転送  Tizen SDK 1.0 のサポート状況 ◦ コンパイル環境(×: ない) ◦ デバイスへの転送(○:sdb コマンドで転送する)  コンパイル環境は自分で準備しないといけない。
  • 18.
    Tizen プロジェクトでオフィシャルに用意しているクロ スコンパイル環境 ◦ GBS ◦ OBS ◦ Scratchbox2(お亡くなりになりました)
  • 19.
    Tizen パッケージ開発のコマンド ◦ Git レポジトリから tar.gz(rpm)の自動生成 ◦ ローカル環境でのテストビルド ◦ OBS へコード提出  コマンド例 ◦ gbs build –A armv7l  詳細は下記を参照してください ◦ https://source.tizen.org/os-development/git- build-system/
  • 20.
    パッケージを作成するデーモンサービス  サーバにビルドを依頼できる…らしい  OBS Server のイメージは以下 ◦ http://susestudio.com/a/e0uuBG/obs-obs-server- obs-light  OBSlight(クライアント?)のインストール方法は以下 ◦ http://en.opensuse.org/openSUSE:OBS_Light_Install ation
  • 22.
  • 23.
    Tizen Native App とは? Tizen デバイスでネイティブで動作するアプリケーション  Tizen Native App の実装方法は? UI ウィジットは EFL を使用します。 フレームワークは Tizen Application Framework を使用 します。  Tizen Native App のビルド方法は? GBS を使います。 OBS も使えます。(使い方調査中)
  • 24.
    EFL 関連(重要)  Tizen Application Framework 調査報告 ◦ Tizen Native App のつくり方 ◦ アプリのパッケージの作成方法  WRT(WebRunTime) 調査報告 ◦ Tizen Web App を動かすランタイム ◦ WebkitEFL + Tizen Device API 実装 ◦ Web App の独自 API 拡張方法の調査
  • 25.
    それ、○○ だとどういう意味? ◦ Tizen Native App と Android App とのマッピング  専門用語のマッピング  機能、概念のマッピング ◦ Tizen Native App と Unix App とのマッピング  制限事項など  どなたか「それ、iOS だとどういう意味? 」やりません か?  どなたか「それ、Android だとどういう意味? 」やりま せんか?
  • 26.
    SDK 2.0 がリリースするまで待てない! ◦ 2012/E にリリース予定 ◦ Tizen フォンの販売が 2013年になった。  (※) Samsung が Android と WP8 に注力するため ◦ SDK 2.0 の年度末リリースよりもっと遅くなるのでは…?  ビルド環境構築を一人でやるとつまづくし、つまらない ◦ みんなでつまづけば怖くない!  OSC 2012 Tokyo/fall の参加者が人少ないらしいから ビルド環境構築大会やっていいですか?(^q^)
  • 27.
    日程 ◦ 2012/9/7(金) 10:00-18:00 ◦ 2012/9/8(土) 10:00-17:30  場所 ◦ 明星大学 日野キャンパス 28号館  詳細はこちら! ◦ http://www.ospn.jp/osc2012-fall/
  • 28.
    日程 ◦ 2012/9/8(土) 12:00-12:45  場所 ◦ 明星大学 28号館204教室  内容 ◦ Tizenに関する技術Topicや動向 ◦ HTML5アプリケーションの実行・デモ ◦ 人が少なければ Tizen Native ビルド環境構築大会 (^q^)
  • 29.