Tizenについて

Post on 31-Oct-2014

14 views 5 download

Tags:

description

Tizen architecture Introduction

Transcript of Tizenについて

Tizen について

Naruto TAKAHASHItnaruto@gmail.com

2

3

Android と iOS があるのに今更新しいモバイルプラッ

トフォーム?

モバイル?IVI?ホントよくわからない。

何者?Firefox OS との違いは?

4

目的

• Tizen のソースコードを解析しわかったこと。

• Tizen を多角的に検証しどんなプラットフォームか学んでいきましょう。

5

Who’s Guy?

Naruto TAKAHASHI(@TNaruto)

•Mail: tnaruto@gmail.com

• Blog: http://eflmemo.hatenablog.com/

• Company: Turbo Systems Co, Ltd.

Interesting Keyboards

• EFL(Enlightenment Foundation Libraries)

• Tizen

•WebKit

Tizen の特徴

• Tizen を知る三つのキーワード

7

Tizen の特徴はたったの三つ

• オープンソースプロジェクト

• 多種多用なデバイスのサポート

• スタンダードな HTML5 プラットフォーム

8

Tizen Project 開発メンバー

• 管理 • 開発

9

のビジョン

• Linux の普及、中立的な協業と教育の場の提供

• Linux 開発の保護と支援

• 技術プラットフォームとしての Linux の強化

10

のビジョン

• Linux の普及、中立的な協業と教育の場の提供

• Linux 開発の保護と支援

• 技術プラットフォームとしての Linux の強化

Linux を普及させ貢献する法人

11

のビジョン

• Linux の普及、中立的な協業と教育の場の提供

• Linux 開発の保護と支援

• 技術プラットフォームとしての Linux の強化

• 誰でも使えるオープンな Linux ディストリビューションが欲しい。

• どんなデバイスで動作するLinux ディストリビューションが欲しい。

• アプリケーションの作成の敷居を下げたい。

12

13

Tizen は Linux Foundation のスピリッツを受け継いだディストリビューション

14

たったの三つだけど、大きな特徴

• オープンソースプロジェクト

• 多種多用なデバイスのサポート

• スタンダードな HTML5 プラットフォーム

15

Tizen(Linux) でみんなが幸せになる大事な要素

16

オープンソースプロジェクト

17

オープンソースプロジェクト

• ソースコードがすべて開かれていて、閲覧、利用、フィードバックが可能

• Tizen はカーネルとユーザーランドの成果物をオープンソースのライセンスで公開

18

オープンソースプロジェクト(2)

• Tizen は既存オープンソースのプロダクトを多く採用

• 特に GUI に関連するコンポーネントをサードパーティのソフトウェアを採用している。

19

他のモバイルプラットフォームの GUI 周り

• Android• Linux kernel + Java をベース

にしたオリジナルユーザーランド

• Firefox OS• Linux kernel + Gecko をベー

スにしたオリジナルユーザーランド

• Ubuntu Phone• Linux kernel + Mir と

Qt/QML をベースにしたオリジナルユーザーランド

20

アップストリーム・ファースト

• サードパーティプロダクトを多く採用するディストリビューションはオープンソースプロジェクトとしては最適なスタイル。

• Tizen の成果物は Tizen のみの利益にはならず、他のプロジェクトへもオープンソース全体へ良い影響を与えられる。

• 自身のプロダクトで済ませるプロジェクトと違い、他者へ伝播することでオープンソース全体へ良い影響を与えられる。

21

伝播例

• オープンソースのマルチメディアフレームワーク

• Linux での動画再生のデファクトスタンダード

• MeeGo では GStreamer に多くのフィードバックがあった

• MeeGo を使わない人へも恩恵があり。

• Tizen でも利用している。

22

の伝播力

• Tizen は伝播力が高い理想的なオープンソースプロジェクトと言える

• Tizen の成果物は Tizen プロジェクト内部で留まらずにオープンソース全体へ貢献できる可能性を持っている。

23

多種多用なデバイスのサポート

24

多種多様なデバイスのサポート

• Tizen はマルチデバイスで動作するビジョンを持っている。

• Printer

• Clamshell(Laptop PC)

• Digital Camera

• Smart tv

• Smart phone

• Tablet

25

HTML5 だから出来ること!

26

そうですけど、マルチデバイスを支えるバックボーンがあります。

27

マルチデバイスを支えるバックボーン

• Tizen コンプライアンス

• https://source.tizen.org/compliance

28

Tizen コンプライアンス

• マルチデバイスで Tizen を動かすためのコンプライアンス

• Tizen コンプライアンスはデバイスとアプリケーションがスムーズに動作することを保証するためのもの。

• 共通のレイヤーと各デバイスに合わせたプロフィールレイヤーで構成

29

Tizen コンプライアンス(2)

• デバイスのプロフィールの実装

• デバイスプロフィールを実装する際は、首尾一貫した挙動と UX をアプリケーションへ提供すること。

• アプリケーション

• アプリケーションを各デバイスへビルドした時に、そのアプリケーションがデバイスプロフィール上で動作すること。

30

Tizen コンプライアンス(2)

• デバイスのプロフィールの実装

• デバイスプロフィールを実装する際は、首尾一貫した挙動と UX をアプリケーションへ提供すること。

• アプリケーション

• アプリケーションを各デバイスへビルドした時に、そのアプリケーションがデバイスプロフィール上で動作すること。

• Tizen ではアプリケーションがどのプロフィールのデバイスでも動作し、ユーザー体験も同じことが保証されます。

31

Tizen コンプライアンスがあることで…

• モバイル向けに作成したアプリを他のデバイスで使用する。

• あるいは他のデバイスで作成したアプリをモバイルで使用する。ということが可能です。

32

Tizen マルチデバイス化実例

• Tizen Dev Phone

• RD-210(Galaxy S2 相当)

• RD-PQ(Galaxy S3 相当)

• Tizen 搭載モバイル端末

• Samsung Exynos(ARM)

• ソースコード公開中

• http://review.tizen.org/git/

33

Tizen マルチデバイス化実例

• Nexcom NDiS 166

• Tizen IVI リファレンス機

• Intel Core i7/i5プロセッサ(x86)

• ソースコード公開中

• http://review.tizen.org/git/

34

Tizen マルチデバイス化実例

• Samsung NX300/NX2000

• Tizen 搭載デジタルカメラ

• Samsung DRIMeIV(ARM)

• ソースコード公開中

• http://opensource.samsung.com/

35

Tizen マルチデバイス化実例(予定)

• Intel タブレットリファレンスデザイン

• Tizen 搭載タブレット

• Bay Trail(x86)

• 最初のターゲットはAndroid, WinRT

• Tizen も予定に入っている。

36

Tizen マルチデバイス化実例(予定)

• システナ社 Tizen タブレット

• Tizen 搭載タブレット

• ARM(Soc 不明)

• 最初は Tizen 2.0 をベース

• IVI も予定

37

Tizen コンプライアンスがあることで…

• いろんなデバイスで Tizen が動くのも夢じゃない!

38

スタンダードな HTML5 プラットフォーム

39

ベンチマークでのハイスコア

40

HTML5 の品質が高いのは当たり前

• HTML5TEST でハイスコア

• 492 とトップクラス

• RingMark でモバイルアプリを作成する機能を備えていることの証明

41

W3C sysapp WG

• デバイスやシステムを触る Tizen Device API を定義、実装

• 現状は名前空間プレフィックスが tizen からはじまる命名規則

• W3C にシステムアプリの API を策定するワーキンググループがあり今後どのデバイスでも動く API 名に変えられていく?

• http://www.w3.org/2012/sysapps/

• 現状は Tizen Device API が方言になっているが、方言にならないように働きを掛けている。

42

HTML5 アプリの潜在能力

• 学習が容易

• 開発者が圧倒的に多い。

• アプリのポータビリティが高い

• Tizen

• Firefox OS

• Blackberry 10

• Android

• Windows Phone

Tizen の内部構造

• Tizen を紐解く

44

Tizen のベースソース

• SLP(Samsung Linux Platform) がベースになっている。

• SLP• "LiMo4" のリファレンス実装

1 Samsung が策定を進めていたLiMo 仕様

2 カーネル+ミドルウェア+ GUI ツールキットも決めていた。

• SDK, エミュレータも完備

45

Tizen とは

• SLP のアーキテクチャと SDK のコンセプトを踏襲

• GUI のツールキットを一新

• 複数の GUI ツールキットを EFL(Enlightenment Foundation Libraries) 一つへ統一

• HTML5 でアプリを作れるように。

• Tizen では HTML5 はアプリケーションを実装する手段の一つ。

46

Tizen と Firefox OS の思想の違い

• HTML5 は選択肢の一つ

• Linux でみんなを幸せにすること。

• いろいろなデバイスへのLinux 搭載が目標

• HTML5 は唯一無二

• インターネットでみんなを幸せにすること。

• Web の技術ですべて済むのが目標

47

Tizen アーキテクチャ

48

Tizen アーキテクチャ

• Linux Kernel とデバイスドライバ

• ミドルウェアを担当する CORE 層

• Tizen Web App のフレームワーク

• Tizen Native App のフレームワーク

49

Tizen Web フレークワーク

50

Tizen Web フレームワーク詳解

51

Tizen Web フレームワーク

• HTML コンテンツをシステム上でアプリケーションにするランタイム

52

Tizen Web App

• HTML5 + JS + CSS で実装された HTML コンテンツ

53

Tizen Web App + NPAPI プラグイン

• NPAPI プラグイン

• HTML へ <object> タグで埋め込むコンテンツ拡張プラグイン

• NPRuntime で Javascript API でプラグインをされる。

• 動作方法

• Tizen Web App へプラグイン(バイナリファイル)を埋め込む

54

wrt(WebRunTime)

• Webkit を使って実装された HTML レンダリングプログラム

• Javascript の VM には WebKit 搭載の JavaScriptCore を採用

55

wrt プラグインフレームワーク

• wrt に拡張 Javascript API を追加するフレームワーク

• DPL(Design Pattern Library) を使って実装されている。

• Tizen Device API は wrt プラグインとして実装されている。

• 拡張 Javascript API は wrt のみ追加可能。

• 不用意に実行される危険がない。

56

Tizen Device API

• Javascript から デバイスやシステムへアクセスする API

57

Tizen Device API 一覧

API名 概要

Alarm アラームの設定や設定取り消し

Application

アプリケーションの管理や起動

Bluetooth Bluetooth デバイスへのアクセスや管理

Messaging SMS, MMS, Eメール の送信や受信

NFC NFC デバイスへのアクセスや管理

Content デバイスのマルチメディアコンテンツへのアクセス

Download ダウンロードの操作や管理

Filesystem ファイルシステムへのアクセス

API名 概要

Calendar イベントやタスクの管理

Callhistory 通話履歴の参照

Contact 電話帳へのアクセスや管理

Power デバイスの電源状態の管理

SystemInfo システム状態へのアクセス

SystemSetting システム状態の設定

Time 時刻、タイムゾーンのアクセスや設定

Notification アプリケーションの通知

58

Tizen Device API 一覧(2.1 で追加)

API名 概要

DataControl 他のアプリのデータやりとり(SQL, MAP)

Package アプリパッケージの管理や情報取得

NetworkBearerSelection ネットワーク経路の選択

Push Tizen push server からのプッシュ受信

SecureElement SIM やセキュア SD などのセキュアデバイスとのやりとり

MessagePort 他のアプリケーションとのやりとり

Bookmark Bookmark へのアクセス

DataSynchronization OMA DS 1.2 プロトコルサーバと連絡帳やイベントデータの同期

59

Tizen Device API(2)

• モバイルのデバイスを触る API が一通り実装されている。

• Native アプリケーションや Web アプリケーションが混在するTizen のシステムで、Web アプリケーションと Native アプリケーションが対等にやり取りするための仕組みになっている。

• カメラの API は存在しないが、カメラのサービスと連携するとカメラの機能が使えるとのこと。

60

Tizen Native フレームワーク

61

Tizen Native フレームワーク詳解

62

Tizen Native フレームワーク

• Native アプリケーションを実装するためのライブラリ群

• システムをフルに使用可能。

63

Native アプリケーションタイプ

• UI アプリケーション

• 画面を表示するアプリケーション

• サービスアプリケーション

• 画面を表示せずバックグラウンドで動作するアプリケーション

64

Native アプリ実装方法

• Tizen Native アプリ

• Tizen Native API を使って実装したアプリ

• CORE アプリ

• CORE 層を直接使って実装したアプリ

• Tizen の標準アプリはどちらの実装も用意されている。

65

Tizen Native API(OSP)

• OSP(Open Service Platform)使用

• Bada 由来

• C++ 実装必須

• BadaのアプリをTizenのアプリに変換するツールあり

66

CORE アプリ

• CORE のコンポーネントを使用

• EFL とその他ライブラリを使用して実装する。

• C/C++ で選択可能

67

Tizen のアプリケーションタイプ

• Tizen Web App

• Tizen Native App

• UI Application

• Service Application

68

Tizen Web App

• HTML と Javascript 、CSS で実装。

• Packaged Web Apps の仕様に準拠し、パッケージング。

• HTMLコンテンツ作成がアプリケーション作成につながるので開発が容易。

• ライフサイクルは存在せず、トップ画面に描画された時の実装を行えば良い。(ライフサイクルは wrtが管理)

• Tizen Device API も豊富になってきている

69

Tizen Web App のシステム上での展開例

70

Tizen Web App 利点

• ポータビリティ性の高い実装にすれば、Tizen 以外にも Firefox OS やその他で動作するマルチプラットフォームアプリケーションが作成可能。

• Android で Packaged Web Apps をサポートすれば Android でも動作します。

71

Tizen Web App ユースケース

• 既存のウェブのサービスを持っている方には移植しやすい。

• 新しく Tizen アプリを作ってみたい方にはおすすめ。

• Thin Client として活用の可能性も。

72

Tizen Naive App(UI Application)

• C/C++ で実装されたアプリケーション。UI ウィジットがありフロントエンドで動作する。

• ユースケース

• Tizen Web App でできない複雑なことをやりたい

• 高速に動作するアプリケーションを作りたい

• iPhone や Android で動作させていたアプリがあってそれを移植したい。

73

Tizen Native App(Service Application)

• C/C++ で実装されたアプリケーション。UI ウィジットがなく、バックグラウンドで動作する。

• ユースケース

• Tizen Web App でできない複雑なことをやりたい

• バックグラウンドで動作するプログラムを作成したい。

74

Tizen のアプリケーションタイプ発展系

• Tizen Web App + NPAPI Plugin

• Tizen Hybrid App

75

Tizen のアプリケーションタイプ発展系

• Tizen Web App + NPAPI Plugin

• Tizen Web App ベースのものへ Native 要素を追加したもの

• Tizen Hybrid App

• Tizen Native App の UI を HTML で作るようにしたもの

76

Tizen Web App + NPAPI Plugin

• Tizen Web App へ NPAPI Plugin を追加

• NPAPI Plugin はアプリケーションに Javascript API を拡張する魔法のツール。

• Tizen オフィシャルでは計算の速くするサンプルしかないため、NPAPI で CORE 層のリソースを触れるかはまだ不明。

• NPAPI Plugin でポータビリティの低下

• 他のモバイルプラットフォームでは動作しなくなる。

77

Tizen Web App + NPAPI Plugin ユースケース

• Tizen Web App へ Tizen Device API 以外の拡張 API を追加したい場合

• Tizen Web App で計算スピードを高めたい場合

78

Tizen Hybrid App

• C/C++ で実装されたアプリケーション。

• フロントエンドは Webkit コンポーネント上で Tizen Web App を動作

• バックエンドで Tizen Native App(Service) を動作

79

Tizen アプリケーションタイプ表

アプリタイプ Tizen Web App

Tizen Web App + NPAPI Plugin

Tizen Hybrid App

Tizen Native App(UI)

Tizen Native App(Service)

言語 HTML + JS HTML + JSNPAPI(C/C++)

HTML + JSC/C++

C/C++ C/C++

実行速度 △ ○ ○ ◎ ◎

実装容易さ ◎ ○ ○ △ △

ユースケース Web サービスをアプリにする。

Web App の一部処理の高速化

サービス付きのWeb App

高速なアプリ。過去のリソースを流用するアプリ

バックグラインド処理をするアプリ

Tizen の未来

• 開発体制を “in-out” から “out-in” へ

81

今までの Tizen の状態

82

今までの Tizen Project

• コードはマイルストーンに沿ってリリースされ、パブリックなリリースとして Tizen.org へ置かれている。

• Tizen.org 上ではリリースサイクルとソースのリリースのみが行われている。

• 方向性の決定やプラットフォームの開発はどこかで行われている。

• 開発が継続的じゃないし、不透明

• 成果物のソースは公開されている。

• しかし、内部で決めて結果だけをリリースする “in-out” 状態

83

これからの Tizen Project

• Tizen.org を開発とコントリビュートのメインエリアにする。

• 製品化や商業利用はプロファイルに依存することにする。

• ポリシーと役割、メインコードツリーは誰からもどこからも取得とビルドが出来るようにする。

• Tizen.org は Tizen プラットフォームの開発ハブになっていく。

• ソースファイルだけではなく開発もオープンにする。

• 開かれた場所で開発する “out-in” へシフトする。

84

“out-in” の目標

• 開発コミュニティーが Tizen を変えていくモデルにする。

• コミュニティーメンバーは何を期待されているか知る。

• 企業はコミュニティーのコントリビュートを取得する方法を知る。

85

Tizen codebase

• 可能な限りアップストリームのコードに近づける

• リクエストによる駆動アップグレード

• 一つのプロジェクトが複数のプロファイル上で動作することを目標に

86 開発メンバー階層図

87 コントリビュートのフロー図

88

いつから?

• “out-in” 運用は Tizen 3.0 から開始する。

• Tizen 3.0 は来年リリース予定。

89

Tizen はさらにオープンに。コミュニティー主体に。

Tizen の可能性

• まとめにかえて

91

Tizen Project 開発メンバー

• 管理 • 開発

92

経験豊富な開発・経営メンバー

93

“Write once, run anywhere”

• Java の代名詞

• どのデバイスも。

• HTML5 も Native も。

• アプリケーションがすべてのデバイスで同じ挙動を保証する。

• Tizen コンプライアンスで厳密に定義。

94

多種多様なデバイスのサポート

• Tizen はすべてのデバイスで動作可能。

95

実績(予定も)すでにたくさん

96

要求に応じたアプリケーション種類の選択の豊富さ

• できることは簡単に。

• できないこともいくらでもできる。

97

できることは簡単に

98

できないこともいくらでも

99

オープンな運営

• Linux Foundation によるオープンな運営

100

開けゴマ!

101

Tizen 3.0 からはさらにオープンコミュニティー主体に。

102

ご静聴ありがとうございました