PRESS』編集部が自信を持ってお届けするシリーズです。本書は,Androidの内部を解説する本です。system)を中心とした巻になります。グラフィックスと引っ掛からないアニメーションの実現に関わる部分に半分以上の紙面を割いています。Androidと名の付いた本のほとんどがアプリを書くための本であるのに対し,本書はその内部がどうなっているかを解説しているAndroid自身について書かれた本である点に特徴があります。アプリを書く時に必要な事項は読者が既に知っているという前提で,それを実現するためにAndroidの内部がどうなっているのかをハードウェアから通常のアプリのコードまで,その間に横たわるすべてを解説することを目的としています。ハードウェアからクラスライブラリまでAndroid自身について書かれた本というのはそれ自体が極めて少ないのが現状ですが,その数少ないAndroid自身の本もどれも低レベルな所だけの解説に終わっています。init周辺やプロセスの解説などは豊富にありますが,肝心のGUI周辺の話が皆無です。どれもそのような本になってしまうのには理由があります。いまやAndroidについてすべてを解説するのは不可能なくらい,Androidは大きなシステムとなりました(下表参照)。1243万Androidがここ数年でどれだけ大きくなってきたかを行数で比較する。Androidはさまざまなオープンソースのソフトウェアを含んだ巨大なシステムで,どこまでを行数とカウントするか,どのファイルは行数とカウントするかで大きく数字はぶれるが,同じ計測方法で複数の年を比較すると,どれだけ成長しているのかは知ることができる。以上の数字では大体8年で4倍以上に膨れ上がっていることがわかる。このようなAndroidについて各レイヤを解説していこうと思うと,1つ2つのレイヤについて解説しただけで本1冊分の内容となってしまうのです。上から下まですべてのレイヤを,万遍なく解説するのは不可能と言えます。レイヤを上から下までつなぐ所にAndroidのおもしろさが多く含まれています。各レイヤの途中で力尽きてしまうと,Androidのおもしろさは伝わりません。そこで本書は,各レイヤのすべてを解説するということはしません。それよりもある一つの問題について,一番上のレイヤから一番下のレイヤまで,その問題に関連する部分だけを解説するという手法を取っています。Layer)から始まり,ViewRootImplやCanvasのdraw関連メソッドといった通常のアプリ開発者が触れる所まですべての構造を解説してあります。本書で扱っている問題は,GUIシステムです。Viewを中心としたGUIプログラミング,とりわけ「引っ掛からないアニメーション」を中心的課題に設定し,それに付随してイベントやUIスレッドなどのGUIプログラミングの話題も扱っています。できる限りの平易さ本書は扱うテーマについて一切の妥協をしていません。どれだけ難しくても,必要だと思うことについてはすべて正面からしっかりと扱う方針で書きました。結果として,本書はかなり難しい本になっています。同じレベルの内容を扱う類書に比べると,本書は極めて平易に詳しく解説が書かれています。見てもらえばわかるように図解も極めて豊富に用意しました。うまく図解するのが難しいようなことでも,それが理解を助ける人もいるだろうと思ったらなるべく図解を試みました。本書のレベルの内容にしては,これだけ図解があるのは大変珍しいと思います。一方で,やはり本書はそれなりの前提条件を満たした技術者でないとしっかりとは理解できないというのも間違いありません。した本来の読者の邪魔になる解説をたくさん付けて,本来なら最後まで読むだけの実力があったのに挫折させてしまっては本末転倒です。そこで本書の方針としては,本書の対象読者として標準的なレベルの技術者が邪魔と感じないぎりぎりの所まで基礎的な解説を足すという考えで書きました。冗長には感じても理解を妨げるほどではないと思う範囲で,できるだけ基礎的な解説を行うというのが本書の方針です。second,秒間60フレーム)を実現するためのGUIシステム」について語るためには,バイトコード実行環境についてもかなり突っ込んだ解説が必要になります。Nougatでまさかのバイトコード実行環境の大変更が入り,バイトコード実行環境についてはほぼすべてを書き直すことになりました。Nougatのバイトコード実行環境は素晴らしく,業界でも類を見ない最先端の洗練されたものとなっています。そのようなタイミング的な幸運に恵まれたので,本書は恐らくNougatのバイトコード実行環境について本格的に書かれた世界で最初の本だと思います。世界のすべての本を読んでいるわけではないのでひょっとしたら筆者以外にもこれについて解説を書いている人がいるかもしれませんが,いずれにせよタイミング的なことを考えればかなり希少なのは間違いありません。本書でどれほど詳しい説明を行っているかについては,目次を見ると大まかに把握できるでしょう。Worldアプリを書く時には必要ありません。凝ったアプリを作る時にも必要ないでしょう。それでは本書を読むと,どのようなメリットがあるのでしょうか。複雑で高いパフォーマンスの必要なViewが作れるようになる本章の内容が必要になるのはそのさらに先,Androidの中まで良く理解していないと達成できないパフォーマンスが必要になるアプリを作る時に必要になります。「高いフレームレートを維持して複雑なレイアウトをこなす」「自分のアプリの問題領域にあったViewGroupを作成しなくてはいけない」といったレベルの問題に挑む時に,本書の内容は必要になります。View関連の込み入ったトラブルシュートができるようになるまた,View関連の少しググっても答えが出てこないような自分の書いたコードに特有の込み入ったトラブルに遭遇した時に,自分でソースコードを調べて解決しようとするなら本書の内容は役に立つと思います。Androidのソースコードはプロセス境界と言語境界を頻繁にまたぐため,ただ順番にコードを読んで行くだけだとなかなか全体像が掴みづらくなっています。本書の内容を理解しておけば,Viewの周辺や描画の周辺,そしてイベント回りで発生するどのようなトラブルでも,どこを追うべきかすべてがわかり,手早く必要なコードに辿り着いて問題を解決できるようになるはずです。「Androidの今」を理解できるAndroidの重要な特徴として「リッチなGUIシステムを持つ」点が挙げられます。Environment)との統合など,今や他とは一段レベルの違う完成度となっています。Androidがどのくらい洗練されているのかを考えるには,アプリ開発者に見えるレイヤだけ見てもよくわかりません。言うのは,過去の互換性をある程度維持した範囲でシステムは発展を続けているからです。現在のAndroidを理解するには,その下を見ていかなければなりません。GUIシステムとバイトコード実行環境周辺は,最近のAndroidの主要な部分です。本書の内容は,まさに現在のAndroidとはどれだけ洗練されたシステムかを解説する内容となっています。スマホ(smartphone)市場は実質iPhoneとAndroidの2つだけになってしまったのか,その他の携帯電話のシステムはどうしてまったく見なくなってしまったのかということを知りたい業界関係者にとっては,本書の内容は示唆に富むものになっているでしょう。Androidに限らずGUIシステムの解説は数あれど,本書ほど詳細にGUIシステムが解説されることは滅多にありません。言うのも,本書のレベルの解説を行うためにはソースが公開されている必要があるからです。そのソースコードが公開されたGUIシステムのうち,業界でもホットな分野であるモバイルの業界最先端のものの一つがAndroidのGUIシステムなのですから,これを調べてみる価値は十分にあるに違いありません。筆者がAndroidのGUIシステムのソースコードの探求で多くのことを学んだように,きっと読者の皆さんも本書から多くの発見が得られると思います。有野和真(ありのかずま)新卒でガラケー向けのブラウザ会社に入り組み込み業界で働いた後,2005年にマイクロソフトディベロップメントに移り.NETのサーバーサイド分野であるSharePointの開発に従事。2009年からフリーランスになり,機械学習関連のプロジェクトやスパコンの独自GPGPU開発に携わる傍ら,Androidのお絵描きアプリ「LayerPaint」を共同開発。べてのエンジニアのための,プログラミング技術情報誌です。~テスト管理の効率を上げ,脆弱性診断を自動で行う~早期リリースが注目される中で,ソフトウェアの品質やセキュリティ面への対応も重要になってきたと感じます。本連載では,安全性・安定性を加えた開発サイクルについて考えていきます。本特集では,2018年10月にリリースされたばかりのバージョン11と,現場の主力として使えるバージョン10にフォーカスし,この7年間で大きく進化したPostgreSQLの魅力を余すことなくお伝えします。ゆるく,不定期に更新予定です。......押さえておきたい輻輳制御アルゴリズム本連載ではTCP/IPの中でも特に,新たなアルゴリズム登場の背景として,ネットワーク環境の変化や,TCP輻輳制御アルゴリズムの変遷と概要をみていきます。ロクナナワークショップ」。本連載では,最新講座情報,セミナーイベントの開催情報やレポートを中心にお伝えてしていきます。TopicsUbuntuコミュニティに興味があるユーザ向けに,ML・Wiki・フォーラムなどの最新の話題を1週間分厳選してお届けします。統合監視ソフトウェアZabbixの概要と新機能の追加による設定や設計の考え方,よくある質問などを解説します。Linuxの統合認証にも新たな変化がありました。この連載ではAD-Linux統合認証の最新状況を紹介します。