AGL Demonstrator (Tizen IVI)を動かしてみる

この記事は [Tizen Advent Calendar 2013](http://www.adventar.org/calendars/253) 22日目向けに書いた記事です。
Advent Calendar に参加するのは初めて、くまだすです。

[15日目](http://moguriqt.hatenablog.jp/entry/2013/12/15/221911)でもぐりそさんが既に触れててあわわわ、となったのですが、写真が1枚だけだったので予定通り AGL Demonstrator がなにかと、VMwareでの動かし方について解説します。

基本 IVI（車載器・カーナビ）の話なのでモバイルにしか興味のない人はTizenってこんなのもあるんだなぁと知っていただければOKです。

#用語解説
##IVI (In-vehicle infotainment) ってなに？
[12日目](http://d.hatena.ne.jp/Uemmra3/20131212/1386849398) でUemmra3さんが紹介済みなので詳しくはそちらを読んでください。
日本で平たく言うとカーナビのこと。私のイメージだと市販カーナビ（後付けタイプ）より純正カーナビ（車メーカーが初めからつけてくれる奴）に近いです。あと付けという感じじゃなく車そのものの情報を使った表示系をすべて統合してくれるものをイメージしています（私の感覚）。本記事のAGL Demonstratorを見てもらえるとイメージがつかめると思います。

##AGL (Automotive Grade Linux) ってなに？
> Automotive Grade Linux ワークグループは、リファレンス ディストリビューションである Tizen プロジェクトと連携し、デジタル計器盤から車載インフォテインメントまで広範な自動車アプリケーション向けに最適化されたリファレンス プラットフォームを開発します。The Linux Foundation はこの活動を主催し、Linux カーネル コミュニティ、その他のオープンソース ソフトウェア コミュニティ、および自動車業界とのコラボレーションに中立な環境を提供します。
[AGL公式](http://www.linuxfoundation.jp/collaborate/workgroups/automotive-grade-linux)より引用

Tizenってここに書いちゃってますよ。調べてて今初めて知りました。平たく言うと下記3点を抑えればOKだと思います。

* オープンソースな車載器向けプラットフォームを作りましょうというプロジェクト。
* そこにTizenを採用します。
* Linux Foundation のプロジェクトです。

当初はTizenとは明言していなくて別にYocto Projectあたりをベースにして作るつもりなのかと思っていたのですが、ここに書くくらいなのでTizenを推し進めていくつもりのようです。Tizen と書いていますが、ここではもちろん IVI 向けのTizenのことを指しています。

## GENIVI
> GENIVI's objective is to foster a vibrant open-source IVI community by:
* Delivering a reusable, open-source platform consisting of Linux-based core services, middleware, and open application layer interfaces
* Engaging developers to deliver compliant applications
* Sponsoring technical, marketing and compliance programs.
[About GENIVI](http://genivi.org/about-genivi)より

> GENIVIの目的は以下により活発なオープンソースのコミュニティを育てることです。
* Linuxベースのコア・ミドルウェア・アプリケーションインタフェースを含んだ再利用可能・オープンソースなプラットフォームを提供すること。
* 開発者に規約に沿ったアプリケーション（プラットフォーム？）を提供することを約束すること。
* 技術的・市場戦略・コンプライアンスプログラムに後援すること。

向かう先は AGL と近いのですがGENIVIはより広く捉えているように見えます。また GENIVI コンプライアンスというプログラムがあり、基準（内容はよく知りませんが）を満たすと認定してもらえるようです。
http://genivi.org/compliant-products

ここには Tizen IVI や MeeGo も含まれています。

# Tizen IVI の対抗馬
モバイルの場合Android, iOS という2強を崩しにかかるのに、 FxOS, Sailfish OS, Ubuntu と乱立してるという構図。Tizenはどうなるでしょうか。
IVI の場合はデファクトスタンダードとなるものがありません。それを作ろうとしているのがAGLであったり、共通となる指針を作ろうとしているのがGENIVI。OSSの中ではTizen-IVIが今のところトップを走っているような印象（あくまで私の目から見た私感）です。とはいえ他に対抗馬がいないわけではなく私が有力視している（お気に入り）はYocto Project。meta-iviがあります。このあたりのことを調べていてBaserockも知りましたが、どういうものなのかよく知りません。

Yocto Project, Baserock ともに GENIVI のオープンソースな [Baseline](http://projects.genivi.org/projects) として位置づけられているようです。誰かBaserockについて教えて。

##AGL Demonstrator ってなに？
[2013 AGL User Experience Contest](http://automotive.linuxfoundation.org/2013-agl-user-experience-contest)
というコンテストがありました。すでに結果が出ています。
[Contest winners](http://automotive.linuxfoundation.org/2013-agl-user-experience-contest-winners)

このコンテストで使用されたプラットフォームのようです。リファレンスとなるシステムということだと思います。[ここ](http://moguriqt.hatenablog.jp/entry/2013/12/15/221911)でもぐりそさんが Tizen 3.0 ベースのAGL Demonstrator について言及されているので新しいものも出ているかもです。

#AGL Demonstrator の動かし方
##インストール
以下の場所からダウンロードします。
http://automotive.linuxfoundation.org/news/2013-05-13/agl-demonstrator-vmware-image-released
今回必要なものは [vmdk イメージ](http://content.linuxfoundation.org/auto/downloads/images/agl-demo-vmware-1.0.vmdk.bz2)だけです。

VMWare は既に持っているものを使用するかまだ入れていなければ[公式](http://www.vmware.com/jp/products/player/)から最新のものをダウンロードするので大丈夫だと思います。
私はVMware Player 6.0.1 Linux版をインストールして使用しました。

若干注意点があります。[ダウンロードページ](http://content.linuxfoundation.org/auto/downloads/images/)にreadme-vmware.md があるのですが、これをちゃんと読まないと動かせません。

1. vmdk ダウンロード
1. 解凍
1. 新規VMの作成
1. OSをあとでインストールするようなオプションを選択
1. OS選択はFedoraを選択（たぶんどうでもいい）
1. 適当に名前をつける　例）tizen-ivi-2.0　※後でわかりますが1.0.90っぽいんですけどねー。
1. （あとで消すけど）仮想HDDを新規で作る。（直接ダウンロードしたHDDをマウントできればいいのですができないので一旦作ったあとで削除します）
1. とりあえずVMを起動せずにそのまま作成を完了させる。ここから設定を修整。
1. 先ほど作成した空っぽのHDDを削除
1. HDDを追加。ここでは **『IDE』を選択** 。多分重要。でもって解凍したvmdkを指定。
1. フォーマットをアップグレードするか？と聞かれてもNoを突きつける。 **そのままで何もいじらないように。** 重要
1. VM を起動すると黒い画面上でマウスカーソルが表示された状態になります。
1. マウスの右ボタンを押したまま（離すとメニューが閉じちゃうので）、ずるずる引っ張ってxtermを開く。
1. ./start_demo.sh

HDDの指定のところだけ気をつけてください。これでデモが起動するよ！必要ならサウンドデバイスをVMwareの設定で渡してあげると音もなります。

#スクリーンショット
[Google+ Photo](https://plus.google.com/photos/108282129956329839052/albums/5960247562959434961) にひと通りコメント付きでアップしました。たぶんQiitaで見るより見やすいので。

#AGL Demonstrator で気になったところ
HTML5で動く。車載器の情報が JavaScript から取得して表示できるみたい。JavaScriptつかって簡単にアプリ作れるんだろうなぁと。あと中では node を使ってるみたいです。

ディスプレイの形状がどうなってるのかもちょっと気になりました。音楽とか電話帳の動きでスライドインするやつはディスプレイの右側に待機してくれてるんだけど、意図的なのか単なるバグなのか。上部だけディスプレイが表示領域が右側に出っ張ってるとか続きを別のディスプレイに表示するとかはありだと思うので。

こういうのが実現されると車載器向けのアプリケーションを誰でもかけるようになってどんどん面白いことができそうな気がしてきます。今まで想像もしたことのないものが飛び出してきそうでわくわくしますね！