araki tech

for developers including me

Android開発用語集【初学者向け】

Android開発用語集

前置き

この記事は、Android Kotlin日本語チュートリアルで併用される辞書的な記事です。

単体でももしかしたら役立つかもしれません。

全てを網羅しているわけでは無く、初学者/中級者向けの記事です。

紹介順は適当ですが、コアとなる概念やスーパークラスを前半に、その他を後半に持ってきています。

随時追加、更新される予定です。

View

[びゅー]

全ての土台となるクラス。

TextViewButtonRecyclerViewもこれに属する。

ViewGroup

[びゅーぐるーぷ]

複数のViewを管理するView

例えばRecyclerViewはこのViewGroupを継承している。

RecyclerView is Viewであり、RecyclerView is ViewGroup、そしてViewGroup is Viewである。

Context

[こんてきすと / こんてくすと]

日本語に訳すと「文脈」になるが、実際にはContextはコンテキストである

Activityの遠い親クラスであり、Activity is Context。

ContextはAndroidフレームワークの機能を使うために必要なインターフェースとなる。

イメージとしては、ApplicationやActivityの芯・源流のようなもので、これを使ってリソースにアクセスしたりする。

下層モジュールなどでContextを使いたい場合は、コンストラクタ引数などでプロパティとして保持しておくか、都度メソッドの引数で渡す、もしくはLiveDataで監視しておいてContextを使える側までイベントを伝播させる方法がある。

Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
アプリケーション環境に関連したグローバルな情報へのインターフェースです。これは抽象クラスであり、その実装はAndroidシステムによって提供されます。アプリケーション特有のリソースやクラスへのアクセスを可能にし、アプリケーションレベルの操作、例えばActivityの開始やブロードキャスト、Intentの受け取りなどを呼び出せます。(Context | Android Developers)

Lifecycle

[らいふさいくる]

そのモジュールの生命の概念

ActivityやFragmentは独自のLifecycleを持ち、その上に作られるプロパティやインスタンス、ないしViewはそのLifecycleに依存する。

Android Kotlin日本語チュートリアルAndroid Kotlin日本語チュートリアル

たまに、「TextViewはLifecycleを持たない」と勘違いをしてしまうが、実際には土台となるActivityやFragmentのLifecycleに依存するため、半分間違い。

正しくは「TextViewは “独自の” Lifecycleを持たない」。

ユーザーがアプリの内外を移動してからアプリに戻ると、アプリ内の Activity インスタンスはライフサイクルのさまざまな状態の間を遷移します。 Activity クラスには、システムがアクティビティを作成、停止、再開している、またはアクティビティが存在するプロセスを破棄しているなど、状態が変化したことをアクティビティが認識できるようにするコールバックが備えられています。(アクティビティのライフサイクルについて | Android Developers)

LifecycleScope

[らいふさいくるすこーぷ]

Lifecycleのスコープ。

つまり、そのLifecycleが生きている範囲内 (スコープ)を指す。

そのスコープ内で実行される処理は、非同期だろうと依存するLifecycleが死ぬと処理も中断される

LifecycleOwner

[らいふさいくるおーなー]

Lifecycleの所有者。

実際にはinterfaceで、ActivityやFragmentはこれを実装済みなので、Activity is LifecycleOwnerであり Fragment is LifecycleOwner。

Data Binding

[でーたばいんでぃんぐ]

データをバインド (束縛) すること。

例えば、車に乗っていて信号待ちしていたとする。

ドライバーは信号機をずっと見ていて、青に変わったら進む。

このとき、ドライバーはデータ (信号機) をバインド (ずっと監視) している、と言える。

LiveData

[らいぶでーた]

主にData Bindingで使う監視可能なデータ

ライフサイクルを持つモジュールから監視を行い、変更をきっかけに何かしらの処理を開始できる。

監視するには誰が監視するのかを明確にする必要があり、LifecycleOwnerが必要。

LiveData は監視可能なデータホルダークラスです。通常の監視とは異なり、LiveData はライフサイクルに応じた監視が可能です。つまり、アクティビティ、フラグメント、サービスなどの他のアプリ コンポーネントのライフサイクルが考慮されます。このため、LiveData はライフサイクルの状態がアクティブなアプリ コンポーネント オブザーバーのみを更新します。(LiveDataの概要 | Android developers)

Gradle

[ぐれいどる]

ビルド自動化システムのこと。

Android固有のものではないが、JavaやKotlinで利用される。

外部ライブラリの紐付け管理やプロジェクト情報の管理などを行う。

Androidではプロジェクト対象のものと、モジュール対象のGradleがあり、どちらもファイル名がbuild.gradleなので最初は戸惑う。

基本的にモジュール側でライブラリ依存関係を加筆修正することが多い。

GradleはApache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システムであり、プロジェクト設定の宣言にはApache Mavenが利用するXML形式ではなくGroovyベース、もしくはKotlin Scriptベースのドメイン固有言語 (DSL) を採用している。(Gradle – Wikipedia)

Gradle と Android Plugin for Gradle を使用すると、Android アプリやライブラリを柔軟にコンパイル、ビルド、パッケージ化できます。(Gradle のヒントとテクニック | Android developer)

AndroidManifests.xml

[あんどろいどまにふぇすつ]

すべてのアプリ プロジェクトでは、プロジェクト ソースセットのルートに AndroidManifest.xml ファイルを(このままの名前で)配置する必要があります。 マニフェスト ファイルは、アプリに関する重要な情報を Android ビルドツール、Android オペレーティング システム、Google Play に対して説明するものです。
(アプリ マニフェストの概要 | Android developers)

独自のApplicationクラスを実装した場合も、ここに明記する必要がある。

Inflate

[いんふれーと / いんふれいと]

ActivityやFragment、ViewHolderなどにレイアウトXMLを設定すること。

inflate自体は「(風船などの) 中に息を吹き込む」という意があるが、どちらかと言うと「中に何か入れて大きくする / 膨張させる」といった意味が近い。

Bundle

[ばんどる]

Androidで扱うオブジェクトの入れ物。

通常、Stringを主キーとして保管される。

主に、ActivityやFragmentの状態を保存し、復帰時に用いられたりする。

override fun onCreate(savedInstanceState: Bundle?)

が一番よく見るBundleである。

ちなみに和訳するなら「束」。

Parcelable オブジェクトと Bundle オブジェクトは、IPC / Binder トランザクションやインテントを持つアクティビティ間などのプロセス境界で使用したり、設定変更前後の一時的な状態を格納したりすることが想定されています。このページでは、Parcelable オブジェクトと Bundle オブジェクトの使用に際しての推奨事項とおすすめの方法について説明します。(Parcelable と Bundle | Android developer)

RecyclerView

[りさいくらーびゅー]

リスト形式やグリッド形式といった複雑なViewを構成するViewGroup

RecyclerViewはAdapter、ViewHolder、LayoutManagerから構成される。

その名の通り、リソースをリサイクルしながら効率よくViewGroupを生成する。

Android Kotlin日本語チュートリアル

Android Kotlin日本語チュートリアル

RecyclerView を使用すると、大規模なデータセットを簡単かつ効率的に表示できます。データを指定し、各アイテムの表示方法を定義すると、必要に応じて、RecyclerView ライブラリが動的に要素を作成します。(RecyclerView で動的リストを作成する | Android developer)

Adapter

[あだぷたー]

ViewHolderとその中身を結びつける役割を持つ。

An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set.
アダプターオブジェクトはAdapterViewとViewに必要な基本データを橋渡しする役割を持ちます。Adapterはデータアイテムへのアクセスを提供し、同時にデータセットの各アイテムに対してViewを作成する役割もあります。(Adapter | Android Developers)

ViewHolder

[びゅーほるだー]

とあるViewのホルダー。

Adapterによって使いまわされる。

LayoutManager

[れいあうとまねーじゃー]

RecyclerViewのレイアウト管理者。

どういったデータを生成し、いつViewの更新を行うかも責務として持っている。

Adapter.onBindViewHolder()を呼び出すのはこれ。

LinearLayoutManagerなどAndroidフレームワーク側で用意されているものがあるが、自作すれば複雑なRecyclerViewも構築可能である。

その他

ここからはAndroid開発用語ではなくとも、関わってくる大事な言葉をまとめます。

「そんなことまで…」という単語も載せています。

JetBrains

[じぇっとぶれいんず]

IDEを作ってるチェコの会社。

Android StudioのベースとなっているIDE「IntelliJ IDEA」と、Kotlinはここが開発している。

ソフトウェア開発者とチームに欠かせないツール
皆さんが楽しくソフトウェアを開発できるための製品を作っています
(ソフトウェア開発者とチームに欠かせないツール – JetBrains)

Kotlin

[ことりん]

JetBrains社が開発しているプログラミング言語。

JVM (Java仮想マシン) で動作し、Javaの上位互換となる言語で、KotlinからJavaのライブラリを使用できる。

JetBrainsはJavaやPython、Rubyなど多岐にわたる言語に向けてIDEを作っているため、その経験を活かして理想の言語を作り上げた、というのがKotlin。

大きな特徴として、SwiftのようなNull安全性を持ち、静的片付け言語であるが型推論が柔軟なことが挙げられる。

Kotlinというのはロシアの島の名前で、バルト海にあるらしい。

A modern programming language that makes developers happier.
開発者をもっと幸せにするモダンなプログラミング言語。
(Kotlin Programming Language)

Android developers

[あんどろいど でべろっぱーず]

Android公式リファレンス。

困ったらこれを見る。

間違ったことは書いてあるはずがないので信用できるし、サンプルコードは真似るべき。

Android Jetpack

[あんどろいど じぇっとぱっく]

Androidライブラリの拡張パックのようなもの。

素のAndroidだと煩雑な処理も、これを利用するとスッキリ書ける。

必要なものだけ自分でGradleに依存関係を記述する。

Jetpack はライブラリ スイートです。ベスト プラクティスを取り入れ、ボイラープレート コードを減らし、Android バージョンやデバイスが変わっても一貫して機能するコードの作成を助け、コーディングの負担を軽減します。
(Android Jetpack | Android developers)