Androidのシステムアーキテクチャ 〜全体像を理解するために〜:Android技術者認定試験「ACE」ドリル(1)(1/2 ページ)
Android技術者認定試験制度「ACE」の対策問題を解きながら、Androidアプリケーション開発の“ベーシックなスキル”を養おう! 今回は「システムアーキテクチャ」についてだ。
Androidとは?
いま、スマートフォン市場が非常に盛り上がっています。この1年で日本の携帯電話の主役は完全にスマートフォンに変わりました。携帯電話売り場の様変わりもさることながら、各種メディアでも大々的にスマートフォンの特集が組まれているのもよく見かけます。いわば、1つのブーム、“ムーブメント”といっていいでしょう。
その火付け役となったのは、間違いなくApple社の「iPhone」でしょう。しかし、その風向きは変わりつつあります。iPhoneが(旧バージョンの併売を除いて)1機種しか存在しないためでもありますが、2010年末には日本国内でも「Android」を搭載したスマートフォンの売り上げがiPhoneを上回りました(参考記事)。また、その勢いは一般消費者に対してだけではなく、企業にも加速度的に浸透しています。最も分かりやすい指標が、Androidに関係する開発案件の急増です。それは私自身も強く感じています。このような状況のため、いまソフトウェア業界は、“Androidエンジニアが枯渇している(Androider急募!)”状態になっています。
Androidエンジニアに必要なスキル
しかし、Androidの歴史が浅いこともあり、Androidエンジニアのスキルを評価する方法が乏しく、各企業は優秀なエンジニアを集めることに非常に苦労しています。
せっかく案件があるのにメンバーを集められない!
Javaの経験は豊富なので大丈夫だと思ったがAndroidの開発は違うスキルも必要で失敗してしまった……。
などの声を、私もたくさん耳にしています。そのため、業界として、Androidエンジニアが必要なスキルを明確に規定し、そのスキルを客観的に認証していく仕組みを作ることが急務でありました。
そこで、一般社団法人「Open Embedded Software Foundation(以下、OESF)」は“Android開発に必要なスキルは何か”を明確にするためにAndroid技術スキル標準「ATSS(Android Technical Skill Standard)」を策定・公開し、またそれに基づく客観的なスキルアセスメントの方法として、Android技術者認定試験制度「ACE(OESF Authorized Certification Engineer for Android)」をアプリケーション・ベーシック(注1)から開始しました。
このようにOESFの動きを中心とし、Androidエンジニアに必要なスキルを可視化、および客観的に評価する取り組みがなされています。本連載では、ACE対策問題を皆さんに解いてもらい、Androidアプリケーション開発の“ベーシックなスキル”を養ってもらうことを目的としています。それでは早速、本編に入りましょう。
なお、本連載はACEのアプリケーション・ベーシックを対象とし、演習問題を解きながら、Androidの基礎知識を学んでいきます。問題の分類に関してはATSSの第3階層に準拠します。
第3階層 | スキル項目 | 概要 |
---|---|---|
システムアーキテクチャ | システムアーキテクチャ概要 | |
ライセンス形態 | ||
ユーザーインタフェース | メニュー | オプションメニュー、ダイアログメニュー |
ダイアログ | 各種ダイアログ | |
イベント処理 | ボタン、キー、モーションなどのイベント | |
ノティフィケーション | 時計などが表示されている通知バー | |
スタイルとテーマ | カラーセットなど | |
ビュー | ビューオブジェクト | |
Graphics(2D&3D) | キャンバスでの描写、OpenGLでの描写 | |
リソースファイル | AndroidManifest | アプリケーション名、起動方法、メインActivityなどを定義 |
XMLの書式 | ||
リソースの代替設定と国際化 | Alternativeオプションによるリソースの切り替え | |
SecurityとPermissions | セキュリティの概念 | |
アプリケーションコンポーネンツ | IntentとIntent Filter | Intentの役割、アプリケーション間の連携、明示的・暗示的インテント |
Activity | ライフサイクルなど | |
Content Providers | ||
Service | ライフサイクルなど | |
BroadcastReceiver | ||
ストレージ | ファイル入出力の概要 | |
Preferences | アプリケーションのデータ保存・読み込み | |
SQLite | SQL(データベース)の利用 | |
通信 | ネットワークプロトコル(HTTP TCP/IP) | java.netパッケージとandroid.netパッケーシ |
Bluetooth | android.bluetoothパッケーシ | |
Wi-Fi | androidのWi-Fiパッケーシ | |
外部機器とセンサー | GPS | GPSセンサーパッケーシ |
センサー | センサーパッケーシ | |
マルチメディア | オーディオ | メディアファイルの利用 |
ビデオ | メディアファイルの利用 | |
テスト | JUnitフレームワーク | 自動テスト |
ネイティブ | JNI | |
スクリプト言語(ASE) | ||
NDKの概要 | ||
アプリケーション管理 | バージョニング | マニフェストファイルにバージョンを記載 |
プライベートキーの生成 | keytoolを使用した秘密鍵の生成 | |
Map API Keyの登録 | MapViewを使用している場合に登録 | |
アプリケーション配布 | 署名 | apkアーカイブに署名をする(ないものはインストールできない)。 |
アップデート | バージョニングにより、AndroidMarketから自動UPDATE | |
開発機能 | Eclipse | |
Android Development Tools Plugin(adt) | ||
layoutopt | レイアウトファイルの問題検出ツール | |
Draw 9-patch | 画像編集ツール | |
Android Asset Packaging Tool(aapt) | apkファイルの生成、アーカイブ化を行うツール | |
Android Interface Description Language(aidl) | 下位層とのインタフェース | |
sqlite3 | SQLite | |
dx | classファイルをdexに変換するツール | |
zipalign | apkファイルの最適化ツール | |
デバッグ機能 | Android Emulator | |
Android Virtual Devices(AVDs) | ||
Hierarchy Viewer | レイアウトファイルの階層表示ツール | |
Dalvik Debug Monitor Service(ddms) | ||
Android Debug Bridge(adb) | ||
Traceview | Androidアプリケーションのトレース | |
mksdcard | SDカードイメージの生成を行うツール | |
UI/Application Exerciser Monkey | モンキーテストツール | |
android | AVDおよびSDKの管理ツール | |
表1 ATSSの第3階層−アプリケーションスキル定義 |
システムアーキテクチャ
今回はAndroidのシステムアーキテクチャについて学びましょう。いわばAndroid全体の“設計図”となる基礎知識ですので、Androidにかかわるエンジニアは必ず知っておくべき必要がある項目です。これを学ぶことにより、Androidの全体像を理解できるようになります。なお、ACE対策としてはATSSの第3階層「システムアーキテクチャ」に該当します。
それでは、早速演習に入りましょう。
今回の演習問題
演習1:フレームワーク構成
演習1 図1の空欄(a)〜(d)を埋める語句として、正しい組み合わせ選択してください。
(1)(a)Linuxカーネル2.6、(b)ライブラリ、(c)Javaランタイム、(d)アプリケーションフレームワーク、(e)アプリケーション
(2)(a)Linuxカーネル2.6、(b)ライブラリ、(c)Androidランタイム、(d)アプリケーションフレームワーク、(e)アプリケーション
(3)(a)Linuxカーネル2.6、(b)ライブラリ、(c)Androidランタイム、(d)Androidフレームワーク、(e)アプリケーション
(4)(a)Linuxカーネル2.4、(b)ライブラリ、(c)Javaランタイム、(d)アプリケーションフレームワーク、(e)アプリケーション
演習2:アプリケーション
演習2 Androidアプリケーションを開発する際に用いるプログラミング言語を選択してください。
(1)C
(2)Objective-C
(3)C++
(4)Java
演習3:ライセンス
演習3 Androidのライセンス形態を選択してください。
(1)Apache License 2.0
(2)GNU General Public License(GPL)
(3)Lesser General Public License(LGPL)
(4)BSD License
Copyright © ITmedia, Inc. All Rights Reserved.