Tizenについて

103
Tizen について Naruto TAKAHASHI [email protected]

description

Tizen architecture Introduction

Transcript of Tizenについて

Page 1: Tizenについて

Tizen について

Naruto [email protected]

Page 2: Tizenについて

2

Page 3: Tizenについて

3

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

トフォーム?

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

何者?Firefox OS との違いは?

Page 4: Tizenについて

4

目的

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

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

Page 5: Tizenについて

5

Who’s Guy?

Naruto TAKAHASHI(@TNaruto)

•Mail: [email protected]

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

• Company: Turbo Systems Co, Ltd.

Interesting Keyboards

• EFL(Enlightenment Foundation Libraries)

• Tizen

•WebKit

Page 6: Tizenについて

Tizen の特徴

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

Page 7: Tizenについて

7

Tizen の特徴はたったの三つ

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

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

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

Page 8: Tizenについて

8

Tizen Project 開発メンバー

• 管理 • 開発

Page 9: Tizenについて

9

のビジョン

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

• Linux 開発の保護と支援

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

Page 10: Tizenについて

10

のビジョン

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

• Linux 開発の保護と支援

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

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

Page 11: Tizenについて

11

のビジョン

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

• Linux 開発の保護と支援

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

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

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

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

Page 12: Tizenについて

12

Page 13: Tizenについて

13

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

Page 14: Tizenについて

14

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

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

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

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

Page 15: Tizenについて

15

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

Page 16: Tizenについて

16

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

Page 17: Tizenについて

17

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

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

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

Page 18: Tizenについて

18

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

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

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

Page 19: Tizenについて

19

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

• Android• Linux kernel + Java をベース

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

• Firefox OS• Linux kernel + Gecko をベー

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

• Ubuntu Phone• Linux kernel + Mir と

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

Page 20: Tizenについて

20

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

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

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

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

Page 21: Tizenについて

21

伝播例

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

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

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

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

• Tizen でも利用している。

Page 22: Tizenについて

22

の伝播力

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

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

Page 23: Tizenについて

23

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

Page 24: Tizenについて

24

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

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

• Printer

• Clamshell(Laptop PC)

• Digital Camera

• Smart tv

• Smart phone

• Tablet

Page 25: Tizenについて

25

HTML5 だから出来ること!

Page 26: Tizenについて

26

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

Page 27: Tizenについて

27

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

• Tizen コンプライアンス

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

Page 28: Tizenについて

28

Tizen コンプライアンス

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

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

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

Page 29: Tizenについて

29

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

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

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

• アプリケーション

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

Page 30: Tizenについて

30

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

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

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

• アプリケーション

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

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

Page 31: Tizenについて

31

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

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

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

Page 32: Tizenについて

32

Tizen マルチデバイス化実例

• Tizen Dev Phone

• RD-210(Galaxy S2 相当)

• RD-PQ(Galaxy S3 相当)

• Tizen 搭載モバイル端末

• Samsung Exynos(ARM)

• ソースコード公開中

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

Page 33: Tizenについて

33

Tizen マルチデバイス化実例

• Nexcom NDiS 166

• Tizen IVI リファレンス機

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

• ソースコード公開中

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

Page 34: Tizenについて

34

Tizen マルチデバイス化実例

• Samsung NX300/NX2000

• Tizen 搭載デジタルカメラ

• Samsung DRIMeIV(ARM)

• ソースコード公開中

• http://opensource.samsung.com/

Page 35: Tizenについて

35

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

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

• Tizen 搭載タブレット

• Bay Trail(x86)

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

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

Page 36: Tizenについて

36

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

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

• Tizen 搭載タブレット

• ARM(Soc 不明)

• 最初は Tizen 2.0 をベース

• IVI も予定

Page 37: Tizenについて

37

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

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

Page 38: Tizenについて

38

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

Page 39: Tizenについて

39

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

Page 40: Tizenについて

40

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

• HTML5TEST でハイスコア

• 492 とトップクラス

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

Page 41: Tizenについて

41

W3C sysapp WG

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

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

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

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

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

Page 42: Tizenについて

42

HTML5 アプリの潜在能力

• 学習が容易

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

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

• Tizen

• Firefox OS

• Blackberry 10

• Android

• Windows Phone

Page 43: Tizenについて

Tizen の内部構造

• Tizen を紐解く

Page 44: Tizenについて

44

Tizen のベースソース

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

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

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

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

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

Page 45: Tizenについて

45

Tizen とは

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

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

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

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

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

Page 46: Tizenについて

46

Tizen と Firefox OS の思想の違い

• HTML5 は選択肢の一つ

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

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

• HTML5 は唯一無二

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

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

Page 47: Tizenについて

47

Tizen アーキテクチャ

Page 48: Tizenについて

48

Tizen アーキテクチャ

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

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

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

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

Page 49: Tizenについて

49

Tizen Web フレークワーク

Page 50: Tizenについて

50

Tizen Web フレームワーク詳解

Page 51: Tizenについて

51

Tizen Web フレームワーク

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

Page 52: Tizenについて

52

Tizen Web App

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

Page 53: Tizenについて

53

Tizen Web App + NPAPI プラグイン

• NPAPI プラグイン

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

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

• 動作方法

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

Page 54: Tizenについて

54

wrt(WebRunTime)

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

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

Page 55: Tizenについて

55

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

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

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

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

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

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

Page 56: Tizenについて

56

Tizen Device API

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

Page 57: Tizenについて

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 アプリケーションの通知

Page 58: Tizenについて

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 プロトコルサーバと連絡帳やイベントデータの同期

Page 59: Tizenについて

59

Tizen Device API(2)

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

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

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

Page 60: Tizenについて

60

Tizen Native フレームワーク

Page 61: Tizenについて

61

Tizen Native フレームワーク詳解

Page 62: Tizenについて

62

Tizen Native フレームワーク

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

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

Page 63: Tizenについて

63

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

• UI アプリケーション

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

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

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

Page 64: Tizenについて

64

Native アプリ実装方法

• Tizen Native アプリ

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

• CORE アプリ

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

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

Page 65: Tizenについて

65

Tizen Native API(OSP)

• OSP(Open Service Platform)使用

• Bada 由来

• C++ 実装必須

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

Page 66: Tizenについて

66

CORE アプリ

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

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

• C/C++ で選択可能

Page 67: Tizenについて

67

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

• Tizen Web App

• Tizen Native App

• UI Application

• Service Application

Page 68: Tizenについて

68

Tizen Web App

• HTML と Javascript 、CSS で実装。

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

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

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

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

Page 69: Tizenについて

69

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

Page 70: Tizenについて

70

Tizen Web App 利点

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

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

Page 71: Tizenについて

71

Tizen Web App ユースケース

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

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

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

Page 72: Tizenについて

72

Tizen Naive App(UI Application)

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

• ユースケース

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

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

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

Page 73: Tizenについて

73

Tizen Native App(Service Application)

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

• ユースケース

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

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

Page 74: Tizenについて

74

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

• Tizen Web App + NPAPI Plugin

• Tizen Hybrid App

Page 75: Tizenについて

75

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

• Tizen Web App + NPAPI Plugin

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

• Tizen Hybrid App

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

Page 76: Tizenについて

76

Tizen Web App + NPAPI Plugin

• Tizen Web App へ NPAPI Plugin を追加

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

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

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

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

Page 77: Tizenについて

77

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

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

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

Page 78: Tizenについて

78

Tizen Hybrid App

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

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

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

Page 79: Tizenについて

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

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

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

Page 80: Tizenについて

Tizen の未来

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

Page 81: Tizenについて

81

今までの Tizen の状態

Page 82: Tizenについて

82

今までの Tizen Project

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

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

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

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

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

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

Page 83: Tizenについて

83

これからの Tizen Project

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

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

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

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

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

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

Page 84: Tizenについて

84

“out-in” の目標

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

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

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

Page 85: Tizenについて

85

Tizen codebase

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

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

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

Page 86: Tizenについて

86 開発メンバー階層図

Page 87: Tizenについて

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

Page 88: Tizenについて

88

いつから?

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

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

Page 89: Tizenについて

89

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

Page 90: Tizenについて

Tizen の可能性

• まとめにかえて

Page 91: Tizenについて

91

Tizen Project 開発メンバー

• 管理 • 開発

Page 92: Tizenについて

92

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

Page 93: Tizenについて

93

“Write once, run anywhere”

• Java の代名詞

• どのデバイスも。

• HTML5 も Native も。

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

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

Page 94: Tizenについて

94

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

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

Page 95: Tizenについて

95

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

Page 96: Tizenについて

96

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

• できることは簡単に。

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

Page 97: Tizenについて

97

できることは簡単に

Page 98: Tizenについて

98

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

Page 99: Tizenについて

99

オープンな運営

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

Page 100: Tizenについて

100

開けゴマ!

Page 101: Tizenについて

101

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

Page 102: Tizenについて

102

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

Page 103: Tizenについて