WACのアプリを使ってみて/あるいはAndroidアプリのセキュリティ再考
Android Advent Calendar 2011も24日目を迎えて,残す所後2日となりました.
http://androidadvent.blogspot.com/
皆様,わくわくされてますか?
どうも皆様初めまして,みやび(@myb1126)と申します.
携帯ソフトウェア開発やネットワークエンジニアなどをやって生計を立てています.
オープンなコミュニティでは,Androidのソースコードリーディングや提供されているツール,開発環境/プロセスなどに特に主眼を当てて発表をさせていただいております.
さて,Androidが大好きで情報を求めてブログを見に来てくださった皆様には大変申し訳ないのですが
私自身はAndroidの事は非常に好きなのですが,一般の方には余りお勧めしておりません.
”現状は”ユーザのリテラシーとセキュリティを最大限に考慮したフィーチャーフォンをお勧めしてたりする変なやつです.
フィーチャーフォンはユーザ共通の利益の最大公約数を狙っており,技術者にとっても互換性を大事にしたAPIを提供しており,信頼のある会社にはよりユーザのプライベートな情報へのアクセスを許すAPIを公開するなど,Androidで挙げられている様な問題を各社で解決するような試みを行なっています.(いました?)
Googleを含む,OHAならなんとか問題ない所まで持って行ってくれそうな気もするのですが,
サードパーティとのコミュニケーション,ユーザリテラシーの問題などこれまで日本のキャリアが頑張って築いてきたモノと比較してしまうのでそこらへんを含めてGoogleがどう考えているのか,日本のキャリアがそこらへんをどう捉えて進めているのか気になる所です.
要するにAndroidは非常に最先端な事を取り組んで居るため,技術者的にはオススメですが一般の方にはAndroidはお勧めしておりません.
と,ここの読者層の方たちにそんなことを言ってもダメでしたね.
さて,今日はWACとWACを触ってみた後のAndroidのセキュリティ(?)について書きたいと思います.
WACは,フィーチャーフォン向けのLinux OSの規格を定めている団体が採用しようとしているアプリ”等”の団体名/規格です.
言語としてJavascriptを採用することで,Webサービスを作っている開発者層を取り込み,かつこれまででは作れなかった端末の機能を利用してアプリが作れるようになる事を狙っています.
また,Androidをモデルに開発ツール/マーケットなどを含めて標準化を進めていこうとしています.
Androidのセキュリティが問題視される中,新しい規格でどこまで実用的な物を作れるのか?という意味において個人的に注目ているのでここで共有させていただきたいと思います.
ちなみに標準化ではなくアプリの規格のみですが,似た実装には以下のものが挙げられます.
■Webkit拡張して,JSで動作(WACもこっち?)
PhoneGap
jsWaffle
http://d.aoikujira.com/jsWaffle/wiki/index.php?
■JSからNative変換
Titanium Mobile
http://www.appcelerator.com/products/titanium-mobile-application-development/
Worklight
---------------------------------------------
さて,前置きが長かったのですがWACについて説明していこうと思います.
公式のHPはこちらです.(中途半端ですが,日本語化もされています.
さすがに後発の規格だけあり,Androidのマネで含まれるべき情報が集約されています.
と,ここまでは以前Blogにまとめてました.
http://d.hatena.ne.jp/graceful_life/20111010/1318263534
---------------------------
WACはそろそろ3.0が勧告されようという段階です.
2.0までは,基本的な情報の取得とHTML5の機能が取り込まれました.
3.0では,それに加えてネットワークAPIが追加されます.
ネットワークAPIでは課金などの機能が実装されるようです.
現在定義されている機能は以下の通りです.
セクション | 説明 |
---|---|
Introduction (English) | WAC 携帯端末 API の紹介 |
DeviceAPIs module (English) | WAC 携帯端末 API にアクセスするための基本オブジェクト |
Accelerometer (English) | 携帯端末の加速度センサーを使用可能にする API |
Orientation (English) | 携帯端末の方位センサーを使用可能にする API |
Camera (English) | 携帯端末のカメラを使用したメディアのキャプチャを可能にする API |
DeviceStatus (English) | 携帯端末のステータス情報へのアクセスを可能にする API |
Filesystem (English) | 携帯端末のファイル システムへのアクセスを可能にする API |
Messaging (English) | メッセージ送信および検索を可能にする API |
Geolocation (English) | 携帯端末の位置を特定する API (W3C で規定されているとおり) |
PIM (English) | 異なる PIM (Personal Information Management) 機能を特定する API |
Contacts (English) | 連絡先情報の管理を可能にする API |
Calendar (English) | カレンダー情報の管理を可能にする API |
Tasks (English) | タスク情報の管理を可能にする API |
DeviceInteraction (English) | 異なる携帯端末の機能を通じてエンド ユーザーとの対話を可能にする API |
WACのランタイムはAplixやOpera等から提供されており,当然Androidでも動作させることが可能です.
さらにはこれらの機能を持ったアプリがEclipseで開発可能になっています.
Androidが開発標準として,築きあげてきた物が確実に生きてますね.
今回は,一番安定してそうなAplixのランタイムを動作させて見ました.
WACのHPからウィジェットマネージャー等を落としてインストールすると,アプリが動かせるようになります.
詳細を省きますが,とりあえずアプリを動かして見ました.(Nexus Sの4.0.3だと動かなかったので,2.3.3にロールバックしました.
カメラなんかも動くようになってますが,以下の記述を見るとまたランタイムごとのフラグメンテーションに悩まされることになりそうです.
pluginElement.type = "application/x-vnd-aplix-webvm";
また,セキュリティのポリシーもまだまだ未成熟の様で,デバイスにアクセスする毎にプロンプトが表示されユーザに許可を求めてきます.
これは確実にWindows Vistaの再来!の様に非常に使いづらくなっています.
VistaからWindows7が劇的にセキュアで使いやすくなった時の様に,次の一歩が期待される.
そんな状況でした.
ちなみに,Intentの仕組みも使えるのかな?と思って,market://detail?hogehoge 様なURLも試してみたのですが,
残念ながらリンク先が見つからないと出てしまいました.
Intentの様な仕組みも組み込んでくれると嬉しいですね.
--------------------------------------------------
さて,まだまだこれからと言った様なWACですが,ここらででAndroidに戻って比較してみましょう.
Androidではデバイスの持つ機能にアクセスする時に何のユーザ許可も求めて来ません.
これはマーケットからDLしインストールする際に,アクセスする情報が既に提示され,ユーザがこれを承認しているからです.
それぞれを書きだしてみるとこんな感じです.
Android:( アクセス情報の提示 +DL)→インストール→動作(GPS/Bluetooth等一部のデバイスのみはアクセス許可が必要)
WAC:DL→(アクセス情報の提示+インストール)→(動作+アクセス許可)
アクセス情報の提示と動作時までが離れすぎてて,ユーザが覚えてなきゃいけないんですよね...
アクセス情報の提示も画面の一番下で省略されてしまっています.
実行時に許可が求められないのもまた問題です.
スパイウェアに対して無防備になり,ユーザが意識しない情報を送信されてしまうおそれがあります.
でも,そんなGoogleさんですが アプリを使っていて,次のような画面に見覚えはありませんか?
Googleさん,自分のWebサービスの方だけはちゃっかりこんな画面を用意しています.
と言うより提示しなければ認証できないので提示しなければいけないのですが....
# 余談ですがいくら便利でもGoogleのサービスを利用するのにメアドとパスワードを入力を求めるようなアプリは使ってませんよね?
# 適当に落としてみて試してますが,こういった機構を利用せずパスワードを求めてくるアプリがあるので気をつけましょう.
そう,ユーザにID/Passwordを打たせずとも,Googleのサービスであれば
ユーザの認証を行い,アクセス許可を求める事を実現しています.
ついでにユーザにアクセス情報の提示までしているのです.
# ちなみにこれはAccountManagerを利用して実現しています.このサンプルがまたわかりづらくて,かつもっとセキュアにできるという...
ここでは,まだ私自身が納得のいく結論を出せていないので,実行時にアクセス許可を求めるプラットフォームがあり,Googleのサービス(on Android)にもこういった仕組みがあることを知っていただければそれで満足です.
# 開発者もこういった情報をどんどん仕入れていかなければならず本当に大変ですね.
追いながらまたブログに書かせていただこうと思います.
同じプラットフォームでも,ここまで違ったユーザオペレーションになるのかと,ちょっと感動しましたw
------------------------------------
長くなりましたが,まとめです.
WACというJavascriptを用いてアプリを作る規格が策定されており,
今回はAndroid上で動作環境を整え動かして見ました.
ユーザビリティが確保されておらずまだまだと言った状況ですが,既に動作する下地は整っています.
動作環境が変わって,違ったセキュリティポリシー/モデルを試すことができ,比較することで
それをきっかけにAndroidのセキュリティに付いて,再度考えてみたくなりました.
Androidは,まだまだ未熟でユーザに高いリテラシーを要求します.
今のAndroidはベストではありません.
WACの様な大きなしくみを作って,今とは違う大きなプラットフォームの動きがあります.
どのような未来が待っているのか?
いえ,私達がどのような未来を作るのか?
非常に楽しみでわくわくします.
------------------------------------
さて,とりとめもない話になってしまいましたが,とりあえず今日はここまで
明日の最終日を飾るのは @kassy_kz さんと @garlicG さんです.頑張ってください.