Androidのシステムアーキテクチャ今昔

早くも一か月ぶりになってしまいましたが。二回目です。
圧倒的コンテンツ不足です。  

問題集を4冊も(中古で)揃えたというのにどいつもこいつも記事が古すぎる・・・
アウトプットもくそもねぇ!
このブログ、見切り発進もいいところでしたね。

でもそんなことは言っていられないから(会社の評価がかかっているから)何か書く。

Androidアプリケーション技術者認定試験ベーシック」対策本の決定版

f:id:tu21themouth:20170926222721j:plain

2013年1月初版Androidアプリケーション技術者認定試験対策委員会著の対策問題集です。
私が買った本の中では一番新しく、最も信用できる本です。この本で出題されている問を片っ端から解いて調べて、今と昔で仕様が変わっている部分をまとめていこうと思います。 とりあえず。 勉強になるのか知らないですけど!

全文写したらなんかの権利に引っ掛かりそうなんで要点だけかいつまんで書きますね。

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

問1 Androidアーキテクチャで正しいのはどれ

AndroidJavaで利用可能な機能の多くをサポートしている。
まあこれはいいでしょう。そうそう変わらないでほしい。

問2 Dalvik仮想マシンとして正しいのはどれ

Apache Harmonyのサブセットを基に開発されている。
そもそもAndroidランタイムはAndroid 5.0以降DalvikからARTに置き換えられたそうです。ぶっちゃけDalvik聞いたこともありませんでした。今も現役なのな?まだ出題されるのかな?
Dalvikではアプリ起動の度にバイトコードからネイティブコードに変換していたそうですが、ARTはインストール時に変換する事前コンパイルをしてくれるらしい。
詳しくは後で調べよ

問3 コアライブラリの記述として正しいのはどれ

Java互換のライブラリとAndroid独自のライブラリを含む。
C/C++でも記述されているんですね。へぇ これはどうやら今も変わっていないようです。多分

問4 Androidアーキテクチャに含まれるライブラリに関して正しいのはどれ

WebKitは、Webページの表示などをサポートするブラウザエンジンである。
ほかの選択肢のMedia Framework(オーディオとかビデオとか操作するエンジン)、Free Type(フォントのライブラリ)、SGL(2Dグラフィックエンジン)もすべて現役みたいですね。あんまり変わらないものなんでしょうか。 Media Frameworkは名前のわりにライブラリに属するのね。わかりにく

問5 アプリケーションフレームワークに分類されないものはどれ

SurfaceManager
SurfaceManagerは名前はフレームワークっぽいけどライブラリの一種っていうひっかけなんですって
それよりも、この本に載ってるTelephony Manager(電話機能の管理をするフレームワーク)が別の2016年12月出版のAndroidの本で紹介されていないのが気になる。developers見ると普通に紹介されてるし今でも現役っぽいけどなんでだろ・・・
保留

問6 アプリケーションフレームワークの説明として正しいのはどれ

Content Providersは、アプリケーション間で共有するデータを管理する。
ContentProviderってAndroidの4大要素に数えられるんですってね。まぁ4大要素で検索しても古い記事しか出てこないのだけど。

問7 Androidアプリケーションのファイル形式はどれ

apkファイル
そういえばapkファイルってどこに作られてるんだろ
まだapkファイルとして扱ったことが無かったのでよく知りませんでしたわ。調べとこ。

問8 Androidアプリケーションの実行に関して正しいものはどれ

アンドロイドアプリケーションは、基本的に個別の仮想マシン上で実行される。
基本的にはプラットフォームの違いを吸収すべくJava仮想マシン上で動くそうなので、この選択肢は今でもあってる?
ただ、2014年11月アップデート後のLollipop以降、スマートフォンでもユーザーアカウントを複数設定して切り替えて使えるマルチユーザー機能を利用することができるようになったそうなので、この設問の解説にある「端末上のアプリケーションにはそれぞれ個別にLinuxユーザIDが割り当てられ、別々のユーザとして動作します。」っていう記述に疑問が残る。
判断がつかない・・・ これもまた別個で調べなきゃ・・・

問9 AndroidのバージョンとAPIレベルの記述で正しいものはどれ

Androidの各バージョンは、一つのAPIレベルに対応している。
この辺は命名規則みたいなもんですかね。そうそう変わるもんでもなさそう。
2017年9月現在の最新APIレベルは26ですがこの本が書かれたころは17だそうです。
新しい要素も増えたでしょうな。

問10 Androidアプリケーションを構成する要素に含まれないものはどれ

Binder
なんかあいまいな問題ね。要するにアプリケーションコンポーネントのことらしい。 コンポーネントはActivity、Service、ContentProvider、BroadcastReceiverの四つで、Binderはアプリケーション間のプロセス間通信を実現するドライバなのでコンポーネントではないそうです。この辺も今も健在。

ライセンス形態

問1 Androidの大部分が採用しているライセンスはどれか

Apache Software License 2.0 wikiによるとApache License 2.0に準じるため、Androidを採用した企業・個人が改変部や付加部分をGPLのように公開する必要はないそうです。ただし、WebKitのライセンスはLGPLLinuxのライセンスはGPLと別なので公開が求められるのだとか。
テストに出そう!

問2 Androidのライセンス形態に関する記述で正しいものはどれ

Androidで開発したアプリケーションは、ソースコードを公開しなくてもライセンス違反にはならない。
さっそく出た!!!

問3 AndroidLinuxカーネル部分を改変して商用として利用する場合の条件はどれ

改変したソースコードは公開の義務が発生する。
これも!!!
LinuxカーネルGPLに引っ掛かるのでこうなるんですねー
お仕事として扱う身としてはこういうことちゃんと知っていかねば

第1章おわり

ふぅ。 システムアーキテクチャは今もそのまま使われてる部分が多いみたいで、変な問題は少なかったでしょうか。
ていうか今更だけどこの本が出版された以降のバージョンアップで変更された以外に増えた部分も別途フォローしないとテスト対策にならないですね。
にどでま!!!!
次回は第2章ユーザインタフェースやりまーす