Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Android Bazaar and Conference 2011 Summer(ABC2011s)に行ってきました!

こんばんは。kimukimuです。

今日は、Android Bazaar and Conference 2011 Summer(ABC2011s)に行ってきました!

ABC2011sとは、日本Androidの会主催の、日本でのAndroidの普及と発展を図る会です。
3000人以上が申し込んだ非常に盛況なイベントでした!

アンドロイドールのお姉さん方が浴衣着てたのにはちと驚きましたが、
とりあえず個人的に優先度は低いのでここは技術ブログなので、技術について書きます!

セッションは1つの時間帯で10個以上ありましたが、
私が参加してきたのは下記のセッションです。

時間 概要 カテゴリ
10:00 〜 11:30 基調講演 -
13:00 〜 13:40 Android is NOT just 'Java on Linux' 開発2
14:00 〜 14:40 Linuxカーネルから紐解くAndroid 開発2
15:00 〜 15:40 AndroidプログラマのためのARM概論。でも少しIntelの話も! 開発2
16:00 〜 16:40 横浜PF部その1
Androidアーキテクチャ入門
Android におけるデバイスの認識について
BC10でUSB wifiを使う
開発2
17:00 〜 17:40 横浜PF部その2
dalvikのGCをのぞいてみた
Deep in ADB - AndroidDebugBridgeの中級編資料
Android 2.3での変化点
開発2

見てわかる通り、全部アプリの開発とは直接関係ありません。
ひたすらAndroidが動作するプラットフォームとLinuxカーネルについてのセッションに参加してました。

とりあえず、ポイントについては下記の通り。
これまでAPIAndroidバージョンの違いについては調べていましたが、
実際のAndroidアーキテクチャについては余り調べてこなかったので新鮮でした。

LinuxカーネルとAndroidの関係

AndroidLinuxの一種であることは非常に有名です。
ですが、実際にどういう関係があるのか、については実はあまり分かっていませんでした。
今日聞いた内容をまとめると、こうです。

  • 1. Androidが使用しているのはLinuxカーネルのみ。ユーザ領域は全く違う。
  • 2. AndroidではJavaが中心に置かれて設計されている。デーモンプロセスも大部分はJavaで書かれている。
  • 3. AndroidJavaクラスライブラリはJ2SEとほとんど共通。但し一部独自クラスとなっている。
  • 4. AndroidJava実行環境であるDavlikVMはJavaバイトコードを更に一段階変換したDexコードを実行している。
  • 5. AndroidにおけるプロセスのライフサイクルはJavaプロセスのライフサイクルが基本。 C/C++で書いたとしても、JavaのJNIを通して実行される。

一般的なLinux(Ubuntu)とAndroidの違い

一般的なLinuxUbuntuを例として比較)とAndroidの違いは代表的なものは下記の4点でした。

  • 1. セキュリティ

ユーザごとにユーザIDが割り振られるLinuxと違い、
AndroidではアプリケーションごとにユーザIDが割り振られる。
アプリケーション間でデータの操作などが行えないようにするため。

  • 2. Linuxの一般的なIPCの代わりにAIDL/Intentを用いている

プロセス間通信の手段として、Linuxでは一般的なIPCではなく、AIDL/Intentを用いている。
セキュリティの事情にもある通り、Androidではプロセス同士の独立性を高める必要があるため。

  • 3. 電源管理

モバイル機器を前提としているため、電力消費を極力抑える機構が組み込まれている。
結果、アプリが動作していない場合、CPU停止状態にして電力の使用を抑制する。

  • 4. メモリ管理

Androidでは基本的に搭載しているメモリが小さい上に、Swapが存在しない。
そのため、新規アプリを起動する際、残メモリ量が少ない場合は
メモリの使用量が大きく、優先度が低いプロセスをKillするLowMemoryKillerが組み込まれている。

その他印象に残ったこと

あと、Android Bazaarも見て回ってきましたが、一番印象に残ったのはishidaも書いている、
AWSとAndroidとArduinoで飛行石を作ってみたでした。(ABC2011sにもいらしてました)
インパクトが半端なかったです。やはり。

最後に、忘れてはいけないこと

最後に。

今回のABC2011sは、多くの人命を奪った大震災と原発事故の長期化に対して、
AndroidとIT技術/ネットワーク/メディアを駆使して日本を元気にしようという決意の会でもあります。

基調講演を通して、『技術を駆使して、世界をよりよいものにする』という
エンジニアの基本を見失ってはいけないと改めて感じさせられました。

エンジニアである以上
単に『新しい技術を身につけよう』『凄いものを作ろう』だけでは足りませんよね。
世界をよりよく発展させてこそのエンジニアのはずです。

それでは。