23
iii Androidアプリケーション 技術者認定試験ベーシックの概要 Android 技術者認定試験とは Android技術者認定試験は、Android技術者のスキルを認定する公的な試験で す。一般社団法人OESF(Open Embedded Software Foundation)がAndroid技 術者に求められるスキル項目を整理して「Android技術スキル標準」として定め、 それに基づいて試験を実施しています。OESFはAndroidをベースにした組み込 みシステムの普及・促進につとめ、Android技術者の育成に貢献することを目指 して2009年2月に設立されました。 Android技術スキル標準はアプリケーション開発者向けのものと、プラット フォーム開発者向けの2つのジャンルがあります。それぞれに入門者向けの「ベー シック」と、上級者向けの「プロフェッショナル」の2つのレベルに分かれています。 2012年8月現在、実際に試験が実施されているのはアプリケーション技術者認定 試験のベーシックのみです。最新の情報はOESFのWebサイト(http://www.oesf. jp/)をご覧ください。 試験の概要 Androidアプリケーション技術者認定試験ベーシックの概要は次の表に示した 通りです。 Android アプリケーション技術者認定試験ベーシックの概要 試験時間 90分 試験方法 CBT方式 問題形式 四肢択一 問題数 70問 合格ライン 70%以上の正解 受験料 1万5750円(税込み)。団体割引や学生・教職員向けの割引プランあり

Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

iii

Androidアプリケーション技術者認定試験ベーシックの概要

Android 技術者認定試験とは

 Android技術者認定試験は、Android技術者のスキルを認定する公的な試験です。一般社団法人OESF(Open Embedded Software Foundation)がAndroid技術者に求められるスキル項目を整理して「Android技術スキル標準」として定め、それに基づいて試験を実施しています。OESFはAndroidをベースにした組み込みシステムの普及・促進につとめ、Android技術者の育成に貢献することを目指して2009年2月に設立されました。 Android技術スキル標準はアプリケーション開発者向けのものと、プラットフォーム開発者向けの2つのジャンルがあります。それぞれに入門者向けの「ベーシック」と、上級者向けの「プロフェッショナル」の2つのレベルに分かれています。2012年8月現在、実際に試験が実施されているのはアプリケーション技術者認定試験のベーシックのみです。最新の情報はOESFのWebサイト(http://www.oesf.jp/)をご覧ください。

試験の概要 Androidアプリケーション技術者認定試験ベーシックの概要は次の表に示した通りです。

■ Android アプリケーション技術者認定試験ベーシックの概要

試験時間 90分

試験方法 CBT方式

問題形式 四肢択一

問題数 70問

合格ライン 70%以上の正解

受験料 1万5750円(税込み)。団体割引や学生・教職員向けの割引プランあり

Page 2: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

iv

出題内容 試験問題はOESFが作成した「Androidアプリケーションのスキル項目」に基づいています。 スキル項目は3つの階層に整理されています。第一階層は「アプリケーション」です。第二階層は「Androidアプリケーションフレームワーク」、「アプリケーションの公開」、「支援機能」の3つに分類されています。次頁の表には第二階層以下のスキル項目とその重要度を示してあります。☆の数が多いほど重要度が高く、最も重要な項目は☆☆☆となっています。

受験の申し込み 試験はプロメトリック社の試験会場で、CBT(Computer Based Testing)方式で毎日実施されています。プロメトリック社のWebサイト(http://it.prometric-jp.com/)で試験の予約、試験会場の検索、空席状況の確認ができます。 初めてプロメトリック社のIT系資格試験の予約をするときは、あらかじめプロ メ ト リ ッ ク 社 の「IT系 試 験 オ ン ラ イ ン 受 付 」(http://it.prometric-jp.com/reserve/index.html)でプロメトリックIDを取得する必要があります。 企業・団体向けに、受験料の団体割引が用意されています。また、学生や教職員向けにも割引プランがあります。詳細はOESFの「Android技術者認定試験制度」のWebページをご覧ください。(http://www.oesf.jp/modules/training/index.php?content_id=2)

本書で学ぶこと

 本書は、Androidを初めて学ぶ人がAndroidアプリケーション技術者試験ベーシックに合格する力を身につけることを目的にしています。この試験に合格するということは、Androidアプリケーションの基本的な仕組みを理解し、Android SDKなどで提供されている便利な開発ツールを使えるようになるということです。 AndroidアプリケーションはJava言語で作成します。本書は、読者にJava言語の基本的な知識があることを前提にしています。Java言語を使ったことのない人は、まずはJava言語の入門書を1冊読んでから、本書に取り組んでください。 本書は読者がWindows環境でAndroidアプリケーション開発の学習を進めていくことを想定しています。AndroidはLinuxをベースにしたOSですが、本書を学

Page 3: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

v

■ 表 Android アプリケーションのスキル項目(ベーシック)第二階層 第三階層 スキル項目 重要度 備考

1 �Androidフレームワーク

1 �システムアーキテクチャ

1�システムアーキテクチャ概要 ☆☆

2�ライセンス形態 ☆

2 �ユーザインターフェース

1�メニュー ☆☆ オプションメニュー、ダイアログメニュー

2�ダイアログ ☆☆ 各種ダイアログ

3�イベント処理 ☆☆☆ ボタン、キー、モーション等のイベント

4�ノティフィケーション ☆☆ 時計などが表示されている通知バー

5�スタイルとテーマ ☆ カラーセット等

6�ビュー ☆☆☆ ビューオブジェクト

7�Graphics(2D�&�3D) ☆☆ キャンバスでの描写、OpenGLでの描写

3 �リソースファイル 1�AndroidManifest ☆☆☆ アプリケーション名、起動方法、メインActivity等を定義

2�XMLの書式 ☆☆☆

3�リソースの代替設定と国際化 ☆ Alternativeオプションによるリソースの切り替え

4�SecurityとPermissions ☆☆ セキュリティの概念

4 �アプリケーションコンポーネンツ

1�IntentとIntent�Filter ☆☆☆ Intentの役割、アプリケーション間の連携、明示的・暗示的インテント

2�Activity ☆☆☆ ライフサイクル等

3�Content�Providers ☆☆

4�Service ☆☆ ライフサイクル等

5�BroadcastReceiver ☆☆

5�ストレージ 1�ファイル入出力の概要 ☆☆

2�Preferences ☆☆ アプリケーションのデータ保存・読み込み

3�SQLite ☆☆ SQL(データベース)の利用

6�通信 1�ネットワークプロトコル(HTTP�TCP/IP) ☆☆ java.netパッケージとandroid.netパッケージ

2�Bluetooth ☆ android.bluetoothパッケージ

3�Wi-fi ☆ androidのWi-Fiパッケージ

7 �外部機器とセンサ 1�GPS ☆ gpsセンサパッケージ

2�センサー ☆☆ センサパッケージ

8�マルチメディア 1�オーディオ ☆☆ メディアファイルの利用

2�ビデオ ☆☆ メディアファイルの利用

9�テスト 1�JUnitフレームワーク ☆ 自動テスト

10�ネイティブ 1�JNI ☆☆

2�スクリプト言語(ASE) ☆

3�NDKの概要 ☆

2 �アプリケーションの公開

1 �アプリケーション管理

1�バージョニング ☆ マニフェストファイルにバージョンを記載

2�プライベートキーの生成 ☆ keytoolを使用した秘密鍵の生成

3�Map�API�Key�の登録 ☆ MapViewを使用している場合に登録

2 �アプリケーション配布

1�署名 ☆ apkアーカイブに署名をする。(無いものはインストールできない)

2�アップデート ☆ バージョニングにより、Google�Play(旧Android�Market)から自動UPDATE

3�支援機能  1�開発機能 1�Eclipse ☆

2�Android�Development�Tools�Plugin(adt) ☆☆☆

3�layoutopt ☆ レイアウトファイルの問題検出ツール

4�Draw�9-patch ☆ 画像編集ツール

5�Android�Asset�Packaging�Tool(aapt) ☆ apkファイルの生成、アーカイブ化を行うツール

6�Android�Interface�Description�Language(aidl) ☆ 下位層とのインターフェース

7�sqlite3 ☆ SQLite

8�dx ☆ classファイルをdexに変換するツール

9�zipalign ☆ apkファイルの最適化ツール

2�デバッグ機能 1�Android�Emulator ☆☆☆

2�Android�Virtual�Devices(AVDs) ☆☆

3�Hierarchy�Viewer ☆ レイアウトファイルの階層表示ツール

4�Dalvil�Debug�Monitor�Servece(ddms) ☆☆

5�Android�Debug�Bridge(adb) ☆☆☆

6�Traceview ☆ Androidアプリケーションのトレース

7�mksdcard ☆ SDカードイメージの生成を行うツール

8�UI/Application�Exerciser�Monkey ☆ モンキーテストツール

9�android ☆☆ AVD及びSDKの管理ツール

Page 4: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

vi

ぶにあたってLinuxの知識はほとんど必要ありません。 ただし、C、C++言語で開発したネイティブモジュールをAndroidアプリケーションで利用するには、Linuxの知識が必要になります。本書の「第13章 ネイティブ」では、Linuxの開発環境を使用して解説しています。Windowsパソコンを利用している人は、Cygwinという無料のソフトウェアをダウンロード(http://www.cygwin.com)してインストールすることで、WindowsパソコンでLinuxの開発環境を利用できます。

 本書のサンプルコードの作成に使用した環境は以下の通りです。

OS Windows7

JDK 6update31

AndroidSDK r16(APIレベルは10)

Eclipse 3.7.1

Pleiades 1.3.3(安定版)

本書の構成 本書は「Androidアプリケーションのスキル項目」に完全準拠し、3週間で試験に合格できる実力が身につくように構成されています。 「第1章 システムアーキテクチャ」から「第9章 マルチメディア」までと「第12章 テスト」は、Androidアプリケーションのスキル項目のうち「Androidフレームワーク」に対応しています。Androidアプリケーションの仕組みと作り方を学びます。 「第10章 開発機能」と「第11章 デバッグ」はスキル項目のうち「支援機能」に対応しています。Androidアプリケーションの開発環境には便利でおもしろい開発ツールがいろいろ用意されているので、その使い方を身につけましょう。 「第14章 アプリケーション管理」と「第15章 アプリケーション配布」はスキル項目のうち「アプリケーションの公開」に対応しています。アプリケーションを公開するにあたってAndroid特有の約束事があります。それをきちんと理解しましょう。 最後の「第16章 模擬試験にチャレンジ!」では、本番の試験と同様に、制限時間を意識して取り組んでください。解けなかった問題にはマークをつけて、繰り返し学習しましょう。

Page 5: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

vii

 解説の合間に「確認問題」や「受験のポイント」・「Memo」・「参考」といったコラムを載せています。

確認問題

 説明を理解しているかを確認するための問題です。実際の試験に近い形式で、重要な問題を載せていますので、何度も復習して確実に解けるようにしてください。

受験のポイント

 試験を受けるにあたって押さえておきたいポイントを載せています。

Memo

 本文の説明の補足事項です。試験範囲に含まれる内容なので、本文と同様にしっかりと学習してください。

参考

 本文の説明の補足事項です。試験範囲に含まれない内容ですが、本文の内容をより深く理解するのに役立ちます。

 なお、本書のサンプルコードに出てくる「¥」(円マーク)は、学習環境がLinuxの場合にはバックスラッシュ「\」で表示されます。

ソフトウェア開発キットのダウンロード

 JDK、Android SDK、Eclipse、Pleiadesをダウンロードして、実際にAndroidアプリケーションの開発環境を整えてから、本書を読み進めてください。Androidアプリケーションの開発のおもしろさを実感しながら学習することが合格への近道です!

● JDKのダウンロードURL

http://www.oracle.com/technetwork/java/javase/downloads/

Page 6: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

viii

■ 図 JDK のダウンロード画面

 JDKは頻繁にバージョンアップされています。本書のサンプルコードはJDK 6 update 31に基づいています。

● AndroidSDKのダウンロードURL

http://developer.android.com/intl/ja/sdk/

■ 図 Android SDK のダウンロード画面

 本書ではAndroid SDK r16(APIレベルは10)を使用しています。

Page 7: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

ix

● EclipseとPleiadesのダウンロードURL

 EclipseとPleiadesのダウンロードURLは以下の通りです。インストールの手順は「第10章 開発環境」で詳細に解説しています。

(Eclipse)http://www.eclipse.org/downloads/

(Pleiades)http://mergedoc.sourceforge.jp/

 EclipseでAndroidア プ リ ケ ー シ ョ ン を 開 発 す る に は、ADT(Android development Tools)というプラグインをEclipseに組み込む必要があります。ADTを組み込む手順は「第10章 開発環境」で詳しく解説しているので、それをご覧ください。

環境変数PATHの設定 Windowsの環境変数PATHに、プログラムの実行ファイルの検索場所を登録しておきましょう。このことを「パスを通す」といいます。 JDKをインストールしたら、JDKをインストールしたフォルダの下にあるbinフォルダをWindowsの環境変数のPATHに登録しましょう。binフォルダに含まれているプログラムやコマンドをコマンドプロンプトから簡単に起動できるようにするためです。コントロールパネルから[システムとセキュリティ]→[システム]→[システムの詳細設定]→[環境変数]を選び、[ユーザー環境変数]の[新規]ボタンをクリックします。[新しいユーザー変数]のダイアログが表示されるので、「変数名」にはPATH、「変数値」には「C:¥JDKのインストールフォルダ¥bin」と入力します。 デフォルトでC:¥Program Files ¥Java¥jdk1.6.0.31に イ ン ス ト ールした場合は、環境変数PATHの ■ 図 [新しいユーザー変数 ] ダイアログ

Page 8: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

x

値としてC:¥Program Files¥Java¥jdk1.6.0.31¥binを入力します。 Android SDKをインストールしたら、Android SDKをインストールしたフォルダの下にあるtoolsフォルダにもパスを通しておきます。Android SDKに含まれているコマンドをWindowsのコマンドプロンプトから簡単に起動できるようにするためです。[環境変数]ダイアログで[ユーザー環境変数]の下に表示されている[PATH]を選択して、[編集]ボタンをクリックします。[ユーザー変数の編集]ダイアログが表示されるので、[変数値]の末尾に、;C:¥Android SDKのインストールフォルダ¥toolsを追加して[OK]ボタンをクリックします。先頭の「;」(セミコロン)はパスを通すフォルダを区切る記号です。 環境変数を設定するのは、単にコマンドプロンプトでプログラムやコマンドの起動を楽にするためだけではありません。アプリケーションの中には、環境変数の値を参照するものがあります。このようなアプリケーションは環境変数が正しく設定されていないときちんと動作しません。

 開発環境が整ったら、いよいよ学習のスタートです!

Page 9: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

xi

目次� CONTENTS

1週目第 1 章 システムアーキテクチャ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1

第 2 章 ユーザインターフェースI ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・15

第 3 章 ユーザインターフェースII ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・61

第 4 章 リソースファイル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・101

第 5 章 アプリケーションコンポーネント ・・・・・・・・・・・・・・・・・・・・133

2週目第 6 章 ストレージ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・189

第 7 章 通信 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・227

第 8 章 GPSとセンサ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・253

第 9 章 マルチメディア ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・269

第 10 章 開発機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・291

3週目第 11 章 デバッグ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・337

第 12 章 テスト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・369

第 13 章 ネイティブ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・385

第 14 章 アプリケーション管理 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・423

第 15 章 アプリケーション配布 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・441

第 16 章 模擬問題にチャレンジ! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・455

Page 10: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)
Page 11: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

1-1 Androidアーキテクチャ

1-2 ライセンス

1-3 練習問題

C O N T E N T S

システムアーキテクチャ

第 1 章

1週目

Page 12: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

2

第 1 章 システムアーキテクチャ

1-1 Android アーキテクチャSECTION

 AndroidはLinuxをベースとした携帯端末向けのプラットフォームです。Androidアーキテクチャを構成する要素や機能について理解することがAndroidアプリケーション開発を始める第一歩になります。

Android アーキテクチャ

 AndroidアーキテクチャはAndroidのシステムの構造を表したもので、アプリケーション、アプリケーションフレームワーク、ライブラリ、Androidランタイム、Linuxカーネルの5つの階層に分かれています(次頁の「図 Androidアーキテクチャ」を参照)。各階層は、複数のコンポーネント(構成要素)で構成されています。

アプリケーション

 Androidには標準でメール、SMS、カレンダー、地図、ブラウザ、電話帳などのアプリケーションが付属しています。アプリケーション開発者が作成するアプリケーションも、このアプリケーション層に含まれます。AndroidのアプリケーションはJava言語で作成することができます。

アプリケーションフレームワーク

 アプリケーションフレームワークとは、Androidアプリケーションの開発を容易にするためのさまざまな機能を提供するAPI(Application Program Interface)です。また、アプリケーションフレームワークを通して、ライブラリ層で提供されている機能をアプリケーション層で利用することができます。アプリケーションフレームワークはJava言語で作成されています。

Page 13: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

3

1-1 Androidアーキテクチャ

第1章

システムアーキテクチャ

Activity Manager Activity Manager(アクティビティマネージャ)はアプリケーションのライフサイクル(起動から終了までの流れ)を管理する機能です。また、アプリケーションの画面遷移を管理する機能を提供します。

Content Provider Content Provider(コンテントプロバイダ)はアプリケーション間でデータを共有するための機能です。例えば、電話帳アプリケーションはコンテントプロバイダを利用して作られているので、アプリケーション開発者は自分のアプリケーションで電話帳のデータを利用したり、電話帳にデータを登録したりすることができます。また、新たにコンテントプロバイダを作成することもできます。

アプリケーション

Home Contacts Phone Browser …

アプリケーションフレームワークActivity Manager

Window Manager

Content Provider

View System

Package Manager

Telephony Manager

Resource Manager

Location Manager

Notification Manager

Linux カーネル

Keypad Driver

Wifi Driver

Audio Drivers

Power Management

Display Driver

Camera Driver

Flash Memory Driver

Binder(IPC) Driver

ライブラリ Android ランタイムSurface Manager

Media Framework SQLite

OpenGL ES FreeType WebKit

Core Libraries

Dalvik Virtual Machine

SGL SSL libc

■図 Android アーキテクチャ

Page 14: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

4

第 1 章 システムアーキテクチャ

Location Manager Location Manager(ロケーションマネージャ)はGPSやWiFi(無線LAN)を利用した位置情報を管理する機能です。

Notification Manager Notification Manager(ノーティフィケーションマネージャ)はアプリケーションからユーザーへの通知を管理する機能です。通知はステータスバーの通知領域に表示されます。音声を再生したり、バイブレーションさせることもできます。

Package Manager Androidアプリケーションは、拡張子がapkのZIP形式で圧縮されたパッケージとして配布されます。Package Manager(パッケージマネージャ)はパッケージのインストールの管理を行う機能です。

Resource Manager Resource Manager(リソースマネージャ)はアプリケーションで使用する文字列、画像、レイアウト、各種ファイルなどのリソースを管理するための機能です。システムの設定に合わせて、使用するリソースを自動的に切り替えることができます。例えば、複数の言語に対応した文字列リソースを用意しておくことで、システムの言語設定にあわせて適切な言語の文字列が表示されます。

Telephony Manager Telephony Manager(テレフォニーマネージャ)は通話や着信、電波状態などの電話機能を管理する機能です。

View System View System(ビューシステム)はボタンやテキストを表示するためのUI

(User Interface、ユーザインターフェース)の部品を提供し、それぞれの部品が画面のどの位置にどのように表示されるか管理する機能です。

Window Manager Window Manager(ウィンドウマネージャ)は画面の管理をする機能です。

Page 15: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

5

1-1 Androidアーキテクチャ

第1章

システムアーキテクチャ

ライブラリ

 ライブラリはC/C++言語で作成されています。Androidアプリケーションは、Androidフレームワークを介してライブラリの機能を利用することができます。

Free Type Free Type(フリータイプ)はビットマップフォントやベクタフォントを描画するフォントエンジンです。

libc libcはBSDベースの標準Cライブラリ(Bionic libc)です。

Media Framework Media Framework(メディアフレームワーク)は音声、動画、静止画の再生と記録をするためのメディアライブラリです。

OpenGL ES OpenGL ESは、高性能な3DグラフィックスエンジンであるOpenGLの組み込み機器向けのライブラリです。OpenGL ES 1.0/ 1.1はAndroid 1.0(APIレベル1)から、OpenGL ES 2.0はAndroid 2.2(APIレベル8)からサポートされています。OpenGLとOpenGL ESのバージョンの対応は次の表の通りです。

■表 OpenGL と OpenGLES のバージョンの対応OpenGL OpenGL ES

1.3 1.0

1.5 1.1

2.0 2.0

SGL SGLは2Dの描画のためのライブラリです。

SQLite SQLiteは軽量なリレーショナルデータベースです。

Page 16: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

6

第 1 章 システムアーキテクチャ

SSL SSLはデータを暗号化して送受信するためのライブラリです。

Surface Manager Surface Manager(サーフェスマネ-ジャ)は2Dと3Dのグラフィックレイヤーを合成して画面に描画するためのライブラリです。

WebKit WebKitはHTMLレンダリングエンジンです。SafariやGoogle Chromeなどのブラウザでも使用されています。コア部分のライセンスはLGPLです。

Android ランタイム

Core Library Core Library(コアライブラリ)はJava SE 5.0のコアライブラリからSwingなどの機能を取り除き、Android独自の機能やサードパーティーのライブラリを追加したものです。 オープンソース版のJavaであるApache Harmonyをベースに開発されています。

Dalvik Virtual Machine Dalvik Virtual Machineはレジスタベースの仮想マシンです(Memo「レジスタベースとスタックベース」を参照)。携帯端末のようなメモリの少ない環境に最適化されており、複数のVM(Virtual Machine)を同時に起動することができます。Dalvik Virtual Machineは、Javaバイトコード(classファイル)をそのまま実行することはできず、Dalvikバイトコード(dexファイル)に変換してから実行します。

Page 17: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

7

1-1 Androidアーキテクチャ

第1章

システムアーキテクチャ

Memo レジスタベースとスタックベース レジスタベースとは、CPU内部のレジスタと呼ばれる領域にデータを読み込んで処理を実行する方式です。CPUだけで処理を実行することができるので、スタックベースに比べると処理を高速に実行できる場合があります。 スタックベースとは、主記憶装置(メインメモリ)にデータを読み込んで処理を実行する方式です。JVM(Java仮想マシン)はスタックベースの仮想マシンです。レジスタベースに比べてプログラム本体のサイズが小さくなる利点があります。ただし、Androidではclassファイルをdexファイルに変換する際に、サイズが小さくなるように工夫がされています。

Linux カーネル

 カーネルとはオペレーティングシステムの中核部分のことです。AndroidはLinux2.6ベースのカーネルを採用していましたが、本書発行時点(2012年9月)での最新のAndroid 4.0はLinux 3.0ベースのカーネルを採用しています。Linuxカーネルは、セキュリティ、メモリ管理、プロセス管理、各種ドライバなどの機能を提供します。

確認問題 アプリケーションフレームワーク アプリケーションフレームワークのコンポーネントとして、間違っているものはどれか。

a.Window Manager    b.Surface Managerc.Package Manager   d.View System

解説

 Surface Managerはアプリケーションフレームワーク層ではなく、ライブラリ層のコンポーネントです。正解はbです。

Page 18: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

8

第 1 章 システムアーキテクチャ

確認問題 Android ランタイム Androidランタイムの説明として、間違っているものはどれか。

a.Dalvik Virtual Machineは複数のVMを同時に起動することができる。b.Dalvik Virtual Machineはレジスタベースの仮想マシンである。c.コアライブラリはJavaの主要なライブラリを含んでいる。d. Dalvik Virtual MachineはJavaバイトコードをそのまま実行することができ

る。

解説

 Dalvik Virtual MachineはJavaバイトコードをそのまま実行することができません。Dalvikバイトコードに変換してから実行する必要があります。正解はdです。

Page 19: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

9

1-2 ライセンス

第1章

システムアーキテクチャ

1-2 ライセンスSECTION

 Androidのソースコードはオープンソースライセンスのソフトウェアとして公開されています。ここでは、Androidで利用しているライセンスについて説明します。

 Androidのソースコードは、Android Open Source Projectによって公開されています。Androidのソフトウェアに適用されているライセンスは、ほとんどがApache License 2.0ですが、LinuxカーネルはGPL、Webkitのコア部分はLGPLというように、いくつかのライセンスが利用されています。

Memo Android Open Source Project とは AndroidOpenSourceProject(AOSP、アンドロイド・オープンソース・プロジェクト)とは、Androidソフトウェアをオープンソースで公開するためのGoogle主導のプロジェクトです。

 各ライセンスの要点を以下にまとめておきます。

Apache License 2.0 Apache License 2.0 は、Apacheソフトウェア財団(ASF、Apache Software Foundation)によって規定されたライセンスです。 Apache License 2.0を適用したソフトウェアは自由に使用、複製することができます。著作権、特許権、ライセンスについて表記することで、Apache License 2.0を適用したソフトウェアや、その派生のソフトウェアを自由に頒布することができます。さらに、派生のソフトウェアには異なるライセンスを適用することができ、ソースコードを公開する義務はありません。 AndroidのソフトウェアのほとんどがApache License 2.0を適用しています。

Page 20: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

10

第 1 章 システムアーキテクチャ

GPL GPL(GNU General Public License、グヌー・ジェネラル・パブリック・ライセンス)はフリーソフトウェア財団(FSF、Free Software Foundation)が公開、管理しているライセンスで、主にGNUプロジェクトで使われています。 GPLを適用したプログラムを実行することに制限はありません。また、プログラムの出力結果も基本的にGPLの対象外です。 プログラムの複製と頒布は、著作権表示と無保証であること、ライセンスの条文(または条文の入手方法)を表記することで行うことができます。複製物の譲渡に対して手数料を課すこともできます。 GPLを適用したプログラムを一部分でも含む派生のプログラムには、GPLを適用しなければいけません。そのためソースコードを公開する義務が発生します。この仕組みをコピーレフトといいます。 AndroidではLinuxカーネルで使われています。

LGPL LGPL(GNU Lesser General Public License)は、フリーソフトウェア財団が公開、管理しているライセンスで、ライブラリに使われています。 LGPLのライブラリにリンクしたプログラムには、LGPLを適用する必要はなく、ソースコードを公開する義務もありません。ただし、デバッグのためのリバースエンジニアリングを禁止することはできません。また、ライブラリの著作権表示とライブラリを使用していることを表記し、GPLとLGPLのライセンスについて表記する必要があります。 LGPLのライブラリを改変した場合、LGPLかGPLのどちらかを適用する必要があり、ソースコードを公開する義務が発生します。 AndroidではWebKitのコア部分で使われています。

Page 21: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

11

1-2 ライセンス

第1章

システムアーキテクチャ

確認問題 ライセンス Apache License 2.0について、間違っているものはどれか。

a.派生のソフトウェアのソースコードは公開しなくてもよい。b.派生のソフトウェアは同じライセンスで公開しなくてはいけない。c.派生のソフトウェアには著作権、特許権、などを記載しなければいけない。d.Androidで一番使用されているライセンスである。

解説

 Apache License 2.0では派生物に対して、同じライセンスを適用する義務はありません。派生物に著作権、特許権、ライセンスに関する表記を行うことで、異なるライセンスを適用することができます。正解はbです。

Page 22: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

12

第 1 章 システムアーキテクチャ

1-3 練習問題SECTION

問題 1 コンテントプロバイダ コンテントプロバイダの説明として正しいものはどれか。

a. アプリケーション開発者は新たにコンテントプロバイダを作成することができる。

b.標準のアプリケーションにコンテントプロバイダを利用したものはない。c.共有されるデータの読み込みはできるが、書き込みはできない。d.ライブラリ層のコンポーネントである。

解説

 コンテントプロバイダはアプリケーションフレームワーク層のコンポーネントです。電話帳やギャラリーなど標準のアプリケーションで利用されています。共有されるデータへのアクセス方法は、読み込みのみ可、書き込みのみ可、読み書きとも可と変更することができます。アプリケーション開発者はコンテントプロバイダを利用したアプリケーションを作成することができます。 したがって、正解はaです。

問題 2 Linux カーネル Linuxカーネルについて、正しいものはどれか。

a. AndroidアプリケーションはLinuxカーネル上で動作する。b. Linuxカーネルは常に最新のバージョンを利用している。c. ライセンスはApache License 2.0である。d. 改変する場合はソースコードを公開する必要がある。

Page 23: Androidアプリケーション 技術者認定試験ベーシッ …ec.nikkeibp.co.jp/item/contents/brouse/t_P84960.pdfv 表 Androidアプリケーションのスキル項目(ベーシック)

13

1-3 練習問題

第1章

システムアーキテクチャ

解説

 Linuxのバージョンアップは、Androidのバージョンアップとは独立して行われています。AndroidのLinuxカーネルが常に最新のバージョンとは限りません。Androidアプリケーションは、Linuxカーネル上で動作するのではなく、Dalvik VM上で動作します。LinuxカーネルのライセンスはGPLです。そのため、Linuxカーネルを改変した場合は、ソースコードを公開する必要があります。 したがって、正解はdです。

問題 3 Webkit のライセンス Webkitのライセンスについて、正しいものはどれか。

a. Webkitの派生物にはLPGLを適用しなければいけない。b. Webkitを利用したアプリケーションのリバースエンジニアリングは認められ

る。c. WebkitのライセンスはLGPLのみである。d. Webkitを利用したアプリケーションはLGPLを適用しなければいけない。

解説

 LGPLの派生物にはGPLとLGPLのいずれかのライセンスを適用しなければいけません。また、Webkitのコア部分のライセンスはLGPLですが、それ以外の部分は改変してもソースコードを公開する必要がないBSD Licenseです。LGPLのライブラリを利用したアプリケーションのライセンスをLGPLにする必要はありません。LGPLのライブラリを利用したアプリケーションに対して、デバッグのためのリバースエンジニアリングを禁止することはできません。 したがって、正解はbです。