💡

Android開発 主要ライブラリ・クラス リファレンス

に公開

Android開発 主要ライブラリ・クラス リファレンス

目次

  1. Android Jetpack
  2. Kotlin Coroutines
  3. ネットワーク通信 (Ktor Client)
  4. Google API関連
  5. Android標準API

1. Android Jetpack

Android Jetpackは、高品質なAndroidアプリを効率的に開発するためのライブラリ、ツール、ガイダンスのスイートです。ベストプラクティスに従い、定型的なコードを削減し、複雑なタスクを簡素化することで、開発者がアプリ固有の機能に集中できるよう支援します。

1.1. Activity & Fragment

Activityはアプリの単一画面を表すUIの基本的なコンテナです。FragmentはActivity内でUIのモジュール化された部分を表します (Jetpack ComposeではComposable関数が同様の役割を担うことが増えています)。

androidx.appcompat.app.AppCompatActivity

Material DesignをサポートするActivityの基本クラス。

メソッド/プロパティ 説明
onCreate(savedInstanceState: Bundle?) Activityが最初に作成されるときに呼び出されます。レイアウトのインフレートや初期化処理を行います。
setContentView(layoutResID: Int) 指定されたレイアウトXMLリソースをActivityのUIとして設定します。 (Composeではあまり使われない)
setContent(content: @Composable () -> Unit) Jetpack ComposeのUIコンテンツをActivityに設定します。
findViewById<T extends View>(id: Int): T レイアウトXML内のViewをIDで検索します。 (Composeではあまり使われない)
getSystemService(name: String): Any? システムレベルのサービスを取得します。 (例: Context.LAYOUT_INFLATER_SERVICE)
startActivity(intent: Intent) 新しいActivityを起動します。
finish() 現在のActivityを終了します。
supportFragmentManager: FragmentManager このActivityに関連付けられたFragmentManagerを取得します。
lifecycle: Lifecycle このActivityのLifecycleオブジェクトを取得します。
onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) startActivityForResultで起動したActivityが終了したときに呼び出されます。 (現在は ActivityResultLauncher の使用が推奨)

androidx.fragment.app.Fragment

Activity内のUIの再利用可能な部分。

メソッド/プロパティ 説明
onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? FragmentのUI階層を作成して返すために呼び出されます。
onViewCreated(view: View, savedInstanceState: Bundle?) onCreateView が返った直後に呼び出され、Viewの初期化を行います。
requireActivity(): FragmentActivity FragmentがアタッチされているActivityを取得します。アタッチされていない場合は例外をスローします。
requireContext(): Context FragmentがアタッチされているContextを取得します。アタッチされていない場合は例外をスローします。
childFragmentManager: FragmentManager このFragment内のFragmentを管理するためのFragmentManagerを取得します。
parentFragmentManager: FragmentManager このFragmentが属する親(Activityまたは親Fragment)のFragmentManagerを取得します。
arguments: Bundle? Fragment作成時に渡された引数を取得します。

1.2. Lifecycle (ViewModel, LiveData/StateFlow)

UI関連データのライフサイクル管理を容易にし、データの変更を監視可能にします。

androidx.lifecycle.ViewModel

UI関連データをライフサイクルを意識して保持・管理するためのクラス。ActivityやFragmentが再生成されてもデータは保持されます。

メソッド/プロパティ 説明
onCleared() ViewModelが関連付けられたスコープ(例:Activityの終了)で破棄される直前に呼び出されます。リソースの解放処理に適しています。
viewModelScope: CoroutineScope (拡張プロパティ) ViewModelのライフサイクルに連動するCoroutineScope。ViewModelがクリアされると自動的にキャンセルされます。

androidx.lifecycle.viewmodel.compose.viewModel()

Composable関数内でViewModelインスタンスを取得するためのヘルパー関数。

関数シグネチャ 説明
viewModel<VM : ViewModel>(factory: ViewModelProvider.Factory? = null): VM 指定された型のViewModelインスタンスを取得または作成します。Hiltと組み合わせる場合は hiltViewModel() を使用します。

androidx.lifecycle.LiveData<T>

オブザーバブルなデータホルダークラス。ライフサイクルを認識し、関連するLifecycleOwner(ActivityやFragmentなど)がアクティブな状態のときのみオブザーバーに更新を通知します。

メソッド/プロパティ 説明
value: T? LiveDataが保持する現在の値。
observe(owner: LifecycleOwner, observer: Observer<in T>) 指定されたLifecycleOwnerのライフサイクル内でデータの変更を監視します。
observeForever(observer: Observer<in T>) ライフサイクルに関係なく常にデータの変更を監視します。手動で removeObserver する必要があります。
setValue(value: T?) LiveDataの値を設定します。メインスレッドから呼び出す必要があります。
postValue(value: T?) LiveDataの値を非同期的に設定します。ワーカースレッドから呼び出すことができます。
hasActiveObservers(): Boolean アクティブなオブザーバーが存在するかどうかを返します。

kotlinx.coroutines.flow.StateFlow<T>

現在の状態と新しい状態の更新をコレクタに発行する、ホットなオブザーバブルフロー。LiveDataの現代的な代替としてよく利用されます。

プロパティ/メソッド 型/パラメータ 説明
value T StateFlow の現在の状態値。
replayCache List<T> 最新の値をキャッシュします (通常は1つ)。
subscriptionCount StateFlow<Int> アクティブなコレクタの数を表す StateFlow
update(function: (T) -> T) (拡張関数) (T) -> T アトミックに値を更新します。
compareAndSet(expect: T, update: T) expect: T, update: T 現在の値が expect と等しい場合に update に値を設定します。

kotlinx.coroutines.flow.SharedFlow<T>

複数のコレクタで値を共有できるホットなフロー。イベント通知など、一度きりのイベントを複数の購読者に通知するのに適しています。

メソッド/プロパティ 型/パラメータ 説明
emit(value: T) value: T SharedFlow に新しい値を発行します。サスペンドする可能性があります。
tryEmit(value: T) value: T バッファに空きがあれば値を発行し、成功した場合は true を返します。サスペンドしません。
replayCache List<T> 新しいコレクタに対してリプレイされる最新の値のリスト。
subscriptionCount StateFlow<Int> アクティブなコレクタの数を表す StateFlow

1.3. Jetpack Compose

Androidのモダンな宣言的UIツールキット。より少ないコードで、直感的かつインタラクティブなUIを構築できます。

1.3.1. Core Runtime

Composeの基本的な構成要素とランタイム機能を提供します。

要素/関数 説明
@Composable Composable関数であることを示すアノテーション。UI要素を記述・発行する関数に付与します。
remember { ... } Composable関数内で状態やオブジェクトを記憶し、再コンポーズ時に値を保持します。
remember(key1, key2, ...) { ... } 指定されたキーが変更された場合にのみ、ブロック内の計算を再実行して値を記憶します。
mutableStateOf(value: T): MutableState<T> Composeで監視可能な変更可能な状態オブジェクト (MutableState) を作成します。値の変更は再コンポーズをトリガーします。
State<T>.value: T Stateオブジェクトの現在の値を読み取ります。
MutableState<T>.value: T MutableStateオブジェクトの現在の値を読み書きします。
LaunchedEffect(key1: Any?, block: suspend CoroutineScope.() -> Unit) Composableのライフサイクルに紐づいたコルーチンを起動します。key1が変更されると既存のコルーチンはキャンセルされ、新しいコルーチンが起動します。
DisposableEffect(key1: Any?, effect: DisposableEffectScope.() -> DisposableEffectResult) LaunchedEffect に似ていますが、Composableが破棄される際にクリーンアップ処理 (onDispose) を実行できます。
SideEffect { ... } コンポジションが成功するたびに実行される処理を記述します。Compose管理外のオブジェクトを更新する場合などに使用します。
derivedStateOf<T>(calculation: () -> T): State<T> 1つ以上のStateオブジェクトから計算される新しいStateオブジェクトを作成します。計算は、依存するStateが変更された場合にのみ再実行されます。

1.3.2. Foundation (Layout)

基本的なレイアウトコンポーネントやインタラクション、グラフィック描画のための修飾子を提供します。

レイアウトコンポーネント
コンポーネント 説明
Column(modifier, verticalArrangement, horizontalAlignment, content) 子要素を垂直方向に順に配置します。
Row(modifier, horizontalArrangement, verticalAlignment, content) 子要素を水平方向に順に配置します。
Box(modifier, contentAlignment, propagateMinConstraints, content) 子要素を重ねて配置したり、特定の位置に配置したり、サイズ制約を制御したりします。
Spacer(modifier: Modifier) レイアウト内の要素間に固定サイズの空白を作成します。
BoxWithConstraints(modifier, contentAlignment, propagateMinConstraints, content) 利用可能なスペースの制約(Constraints)を子コンテンツに提供する Box
androidx.compose.ui.Modifier

Composableの外観や動作(パディング、サイズ、クリック処理など)を修飾するための一連の拡張関数。

一般的な修飾子 (例) 説明
Modifier.padding(all: Dp) / padding(horizontal, vertical) 要素の周囲にパディングを追加します。
Modifier.fillMaxWidth(fraction: Float = 1f) 親コンポーネントの幅いっぱいに要素を広げます。
Modifier.fillMaxHeight(fraction: Float = 1f) 親コンポーネントの高さいっぱいに要素を広げます。
Modifier.fillMaxSize(fraction: Float = 1f) 親コンポーネントの幅と高さいっぱいに要素を広げます。
Modifier.width(size: Dp) / height(size: Dp) 要素の幅または高さを指定します。
Modifier.size(size: Dp) / size(width: Dp, height: Dp) 要素の幅と高さを指定します。
Modifier.background(color: Color, shape: Shape = RectangleShape) 要素の背景色と形状を設定します。
Modifier.clickable(enabled: Boolean = true, onClickLabel: String? = null, role: Role? = null, onClick: () -> Unit) 要素にクリックイベントリスナーを追加します。
Modifier.weight(weight: Float, fill: Boolean = true) Row または Column 内で、兄弟要素との相対的なスペースの占有率を指定します。
Modifier.align(alignment: Alignment) Box スコープ内で要素の配置を指定します。
Modifier.clip(shape: Shape) 指定された形状で要素をクリップします。
Modifier.border(border: BorderStroke, shape: Shape = RectangleShape) 要素の境界線を描画します。
Modifier.semantics(properties: SemanticsPropertyReceiver.() -> Unit) アクセシビリティのためのセマンティックプロパティを設定します。
Modifier.then(other: Modifier) 別のModifierを現在のModifierに連結します。
Lazy (遅延) レイアウト

画面に表示されるアイテムだけをレンダリングする効率的なリスト表示コンポーネント。

コンポーネント 説明
LazyColumn(modifier, state, contentPadding, reverseLayout, verticalArrangement, horizontalAlignment, flingBehavior, userScrollEnabled, content) 垂直方向にスクロール可能なアイテムリストを表示します (RecyclerViewの代替)。
LazyRow(modifier, state, contentPadding, reverseLayout, horizontalArrangement, verticalAlignment, flingBehavior, userScrollEnabled, content) 水平方向にスクロール可能なアイテムリストを表示します。

LazyColumn / LazyRowcontent スコープ内で使用する主な関数:

関数 説明
items(count: Int, key: ((index: Int) -> Any)?, contentType: ((index: Int) -> Any)? = { null }, itemContent: @Composable LazyItemScope.(index: Int) -> Unit) 固定数のアイテムを表示します。
items(items: List<T>, key: ((item: T) -> Any)?, contentType: ((item: T) -> Any)? = { null }, itemContent: @Composable LazyItemScope.(item: T) -> Unit) リスト内のアイテムを表示します。
itemsIndexed(items: List<T>, key: ((index: Int, item: T) -> Any)?, contentType: ((index: Int, item: T) -> Any)? = { _, _ -> null }, itemContent: @Composable LazyItemScope.(index: Int, item: T) -> Unit) インデックス付きでリスト内のアイテムを表示します。
item(key: Any? = null, contentType: Any? = null, content: @Composable LazyItemScope.() -> Unit) 単一のアイテムを表示します。

1.3.3. Material 3

Material Design 3のガイドラインに基づいたコンポーネント、テーマ設定、スタイルを提供します。

androidx.compose.material3.MaterialTheme

アプリ全体のテーマ(カラースキーム、タイポグラフィ、シェイプ)を定義し、Composableに適用します。

プロパティ 説明
MaterialTheme.colorScheme ColorScheme 現在のテーマのカラースキーム(primary, secondary, backgroundなど)。
MaterialTheme.typography Typography 現在のテーマのタイポグラフィセット(bodyLarge, titleMediumなど)。
MaterialTheme.shapes Shapes 現在のテーマのシェイプセット(small, medium, largeコンポーネント用)。
一般的なMaterial 3コンポーネント
コンポーネント (代表例) 説明
Text(text: String, modifier, color, fontSize, fontStyle, fontWeight, fontFamily, letterSpacing, textDecoration, textAlign, lineHeight, overflow, softWrap, maxLines, onTextLayout, style) テキストを表示します。
Button(onClick, modifier, enabled, shape, colors, elevation, border, contentPadding, interactionSource, content) 標準的な塗りつぶしボタン。
OutlinedButton(onClick, ...) アウトライン付きのボタン。
TextButton(onClick, ...) テキストのみのボタン。背景や枠線がありません。
FilledTonalButton(onClick, ...) 塗りつぶしボタンの一種で、より控えめな強調度を持ちます。
ElevatedButton(onClick, ...) 影付きで浮き上がって見えるボタン。
Icon(imageVector: ImageVector, contentDescription: String?, modifier, tint) ImageVector からアイコンを描画します。
Icon(painter: Painter, contentDescription: String?, modifier, tint) Painter からアイコンを描画します。
IconButton(onClick, modifier, enabled, interactionSource, content) アイコン専用のボタン。
TextField(value: String, onValueChange: (String) -> Unit, modifier, enabled, readOnly, textStyle, label, placeholder, leadingIcon, trailingIcon, ...) 1行のテキスト入力フィールド。
OutlinedTextField(value: String, onValueChange: (String) -> Unit, ...) アウトライン付きのテキスト入力フィールド。
Scaffold(modifier, topBar, bottomBar, snackbarHost, floatingActionButton, floatingActionButtonPosition, containerColor, contentColor, contentWindowInsets, content) Material Designの基本的な画面構造(トップバー、ボトムバー、FABなど)を簡単に実装するためのレイアウト。
TopAppBar(title: @Composable () -> Unit, modifier, navigationIcon, actions, windowInsets, colors, scrollBehavior) 画面上部に表示されるアプリバー。
NavigationBar(modifier, containerColor, contentColor, tonalElevation, windowInsets, content: @Composable RowScope.() -> Unit) 画面下部に表示されるナビゲーションバー(旧BottomNavigation)。
NavigationBarItem(selected: Boolean, onClick: () -> Unit, icon: @Composable () -> Unit, modifier, enabled, label, alwaysShowLabel, colors, interactionSource) NavigationBar 内の各ナビゲーションアイテム。
Card(modifier, shape, colors, elevation, border, content) 情報をグループ化して表示するためのカードコンポーネント。
ElevatedCard(modifier, shape, colors, elevation, content) 影付きで浮き上がって見えるカード。
OutlinedCard(modifier, shape, colors, border, content) アウトライン付きのカード。
CircularProgressIndicator(modifier, color, strokeWidth, trackColor, strokeCap) 円形の進行状況インジケータ。不定のローディング状態を示します。
LinearProgressIndicator(progress: Float, modifier, color, trackColor, strokeCap) 線形の進行状況インジケータ。特定の進捗度を示します。
SnackbarHost(hostState: SnackbarHostState, modifier, snackbar: @Composable (SnackbarData) -> Unit) スナックバー(短いメッセージ)を表示するためのホスト。
SnackbarHostState スナックバーの表示を制御するための状態オブジェクト。showSnackbarメソッドを持ちます。
AlertDialog(onDismissRequest: () -> Unit, confirmButton: @Composable () -> Unit, modifier, dismissButton, icon, title, text, shape, containerColor, iconContentColor, titleContentColor, textContentColor, tonalElevation, properties) アラートダイアログを表示します。
Checkbox(checked: Boolean, onCheckedChange: ((Boolean) -> Unit)?, modifier, enabled, colors, interactionSource) チェックボックス。
RadioButton(selected: Boolean, onClick: (() -> Unit)?, modifier, enabled, colors, interactionSource) ラジオボタン。
Switch(checked: Boolean, onCheckedChange: ((Boolean) -> Unit)?, modifier, thumbContent, enabled, colors, interactionSource) スイッチ(トグル)。
Slider(value: Float, onValueChange: (Float) -> Unit, modifier, enabled, valueRange, steps, onValueChangeFinished, colors, interactionSource) 値の範囲から選択するためのスライダー。

1.4. Navigation

アプリ内の画面遷移(ナビゲーション)を管理するためのコンポーネント。Jetpack Composeでは Navigation-Compose ライブラリを使用します。

androidx.navigation.NavController

画面遷移の実行、バックスタックの管理など、ナビゲーション操作の中心となるクラス。

メソッド/プロパティ 説明
navigate(route: String, builder: NavOptionsBuilder.() -> Unit = {}) 指定されたルート(画面の識別子)へ遷移します。NavOptionsBuilderで遷移オプション(アニメーション、スタック操作など)を指定できます。
navigate(route: String, navOptions: NavOptions? = null, navigatorExtras: Navigator.Extras? = null) 同上(別オーバーロード)。
popBackStack(): Boolean バックスタックから現在のデスティネーションを取り除き、前の画面に戻ります。成功すればtrue
popBackStack(route: String, inclusive: Boolean, saveState: Boolean = false): Boolean 指定されたルートまでバックスタックを遡ります。inclusivetrueなら指定ルートも取り除きます。
clearBackStack(route: String): Boolean 指定されたルートまでのバックスタックエントリを全てクリアします。
currentDestination: NavDestination? 現在表示されているデスティネーション。
currentBackStackEntryAsState(): State<NavBackStackEntry?> 現在のバックスタックエントリをComposeのStateとして取得します。これにより、ルートの変更を監視できます。
graph: NavGraph このNavControllerが使用するナビゲーショングラフ。

androidx.navigation.compose.NavHost

ナビゲーショングラフのコンテナとなるComposable関数。遷移可能なデスティネーション(Composable画面)を定義します。

パラメータ 説明
navController: NavHostController NavHostを制御するNavControllerのインスタンス。
startDestination: String アプリ起動時に最初に表示されるデスティネーションのルート。
modifier: Modifier NavHostに適用するModifier。
route: String? (オプション) ネストされたグラフの場合のルート。
builder: NavGraphBuilder.() -> Unit ナビゲーショングラフを構築するためのラムダ。ここでcomposable関数を使って各画面を定義します。

androidx.navigation.compose.rememberNavController()

NavControllerのインスタンスを作成し、rememberで記憶するComposable関数。

NavHostbuilder内で、個々のデスティネーション(画面)を定義します。

パラメータ 説明
route: String このデスティネーションの一意なルート文字列。パスパラメータ(例: "profile/{userId}")やクエリパラメータ(例: "search?query={searchTerm}")を含めることができます。
arguments: List<NamedNavArgument> このデスティネーションが受け取る引数のリスト。navArgument関数で定義します。
deepLinks: List<NavDeepLink> このデスティネーションへのディープリンクのリスト。navDeepLink関数で定義します。
content: @Composable (NavBackStackEntry) -> Unit このルートに対応するComposable UI。NavBackStackEntryから引数を取得できます。

1.5. Hilt (DI for Jetpack)

DaggerをベースにしたAndroid向けの依存性注入(DI)ライブラリ。Jetpackコンポーネントとの統合が容易です。

アノテーション/関数 説明
@HiltAndroidApp Applicationクラスに付与し、Hiltのコード生成を有効にします。アプリごとに1つ必要です。
@AndroidEntryPoint Activity, Fragment, View, Service, BroadcastReceiverなどのAndroidコンポーネントクラスに付与し、Hiltによる依存性の注入を可能にします。
@Inject constructor(...) クラスのコンストラクタに付与し、Hiltにそのクラスのインスタンス生成方法を指示します。
@Module Hiltにバインディング(依存性の提供方法)を教えるためのモジュールクラスに付与します。
@Provides @Moduleクラス内のメソッドに付与し、Hiltが直接コンストラクタインジェクションできない型(インターフェース、外部ライブラリのクラスなど)のインスタンスを提供する方法を定義します。
@Binds @Moduleクラス内の抽象メソッドに付与し、インターフェースとその実装クラスをバインドします。@Providesより効率的な場合があります。
@Singleton @Providesメソッドや @Injectコンストラクタを持つクラスに付与し、その依存性がアプリケーションスコープでシングルトンとして提供されることを示します。
@ActivityScoped, @FragmentScoped, @ViewModelScoped など 特定のスコープで依存性がシングルトンとして提供されることを示すスコープアノテーション。
hiltViewModel<VM : ViewModel>() (Composable関数) Jetpack ComposeのComposable内で、Hiltによって管理・提供されるViewModelインスタンスを取得します。
@HiltViewModel ViewModelクラスに付与し、コンストラクタに @Inject を使用して依存性を注入できるようにします。

1.6. DataStore

Kotlin CoroutinesとFlowを使用してデータを非同期に永続化するためのソリューション。SharedPreferencesの現代的な代替です。Preferences DataStoreとProto DataStoreの2種類があります。

Preferences DataStore

キーと値のペアを保存します。SharedPreferencesと同様のユースケースですが、非同期APIでメインスレッドをブロックしません。

API要素 説明
androidx.datastore.preferences.core.Preferences DataStoreから読み取られた設定値を表すインターフェース。
androidx.datastore.preferences.core.MutablePreferences edit処理ブロック内で設定値を変更するために使用します。
androidx.datastore.preferences.core.Preferences.Key<T> 特定の型の設定値にアクセスするためのキー。
stringPreferencesKey(name: String): Preferences.Key<String> String型の設定値のためのキーを作成します。同様にintPreferencesKey, booleanPreferencesKeyなどがあります。
Context.createDataStore(name: String, corruptionHandler: ReplaceFileCorruptionHandler<Preferences>? = null, produceMigrations: (Context) -> List<DataMigration<Preferences>> = { listOf() }, scope: CoroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob())): DataStore<Preferences> (非推奨、preferencesDataStoreデリゲートを使用) DataStoreインスタンスを作成します。ファイル名などを指定します。
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name: "settings") Contextの拡張プロパティとしてDataStoreインスタンスを作成・取得するための推奨される方法。
DataStore<Preferences>.data: Flow<Preferences> 保存されている設定値をFlow<Preferences>として公開します。値の変更を監視できます。
suspend DataStore<Preferences>.edit(transform: suspend (MutablePreferences) -> Unit): Preferences 設定値をアトミックに編集します。transformブロック内で値を変更します。

2. Kotlin Coroutines

非同期処理や並行処理を簡潔かつ構造的に記述するためのKotlinの機能。

2.1. Core Concepts

要素/概念 説明
suspend fun 中断可能な関数。コルーチンビルダー内または他の中断関数からのみ呼び出すことができます。長時間かかる可能性のある処理(ネットワークリクエスト、DBアクセスなど)をメインスレッドをブロックせずに実行できます。
CoroutineScope コルーチンのライフサイクルを管理するスコープ。スコープがキャンセルされると、そのスコープ内で起動された全てのコルーチンもキャンセルされます。
CoroutineContext コルーチンの振る舞いを定義する要素のセット(Job, CoroutineDispatcher, CoroutineName, CoroutineExceptionHandlerなど)。
Job コルーチンのハンドル。ライフサイクル(状態の確認、キャンセル)を管理できます。
Deferred<T> Jobを拡張し、結果 (T) を持つコルーチン(asyncで起動)のハンドル。await()で結果を待機できます。
CoroutineDispatcher コルーチンを実行するスレッド(またはスレッドプール)を決定します。
Dispatchers.Main Androidのメインスレッドでコルーチンを実行します。UI操作はここで行います。
Dispatchers.IO ディスクI/OやネットワークI/Oなどのブロッキング処理に適したスレッドプールでコルーチンを実行します。
Dispatchers.Default CPU負荷の高い計算処理に適したスレッドプールでコルーチンを実行します。
Dispatchers.Unconfined 特定のスレッドに束縛されず、呼び出し元のスレッドで開始し、最初の中断ポイントまで実行後、中断関数が実行されたスレッドで再開します(通常は避けるべき)。
CoroutineStart コルーチンの開始方法を指定します(DEFAULT, LAZY, ATOMIC, UNDISPATCHED)。

コルーチンビルダー

関数 説明
launch(context, start, block): Job 新しいコルーチンを起動し、そのJobを返します。「起動して放置」するタイプの処理に適しています。
async(context, start, block): Deferred<T> 新しいコルーチンを起動し、その結果をラップしたDeferred<T>を返します。結果が必要な非同期処理に適しています。
runBlocking(context, block): T 新しいコルーチンを起動し、それが完了するまで現在のスレッドをブロックします。主にテストコードやmain関数で使用されます。
withContext(context, block): T 指定されたコルーチンコンテキストで中断ブロックを実行し、その結果を返します。スレッドを切り替えて処理を行い、結果を元のコンテキストに戻すのによく使われます。
supervisorScope(block): R 子コルーチンの失敗が他の子や親スコープに影響を与えない特別なスコープを作成します。
coroutineScope(block): R 新しいコルーチンスコープを作成し、ブロック内の全ての子コルーチンが完了するまで中断します。

2.2. Flow API

非同期に処理されるデータストリームを表現するためのAPI。リアクティブプログラミングの概念に基づいています。

kotlinx.coroutines.flow.Flow<T>

非同期データストリーム(コールドストリーム)。collectされるまで値の発行を開始しません。

一般的なオペレータ (例) 説明
collect(collector: FlowCollector<T>) / collect(action: suspend (value: T) -> Unit) フローから値の収集を開始し、各値に対して指定されたアクションを実行します。
map(transform: suspend (value: T) -> R): Flow<R> フローの各値を指定されたtransform関数で変換します。
filter(predicate: suspend (value: T) -> Boolean): Flow<T> 指定されたpredicate条件を満たす値のみを通過させます。
onEach(action: suspend (value: T) -> Unit): Flow<T> 各値を通過させる際に副作用(指定されたaction)を実行します。デバッグやロギングに便利です。
catch(action: suspend FlowCollector<T>.(cause: Throwable) -> Unit): Flow<T> フローの上流で発生した例外を補足し、代替の値をemitしたり、例外処理を行ったりします。
flowOn(context: CoroutineContext): Flow<T> 上流のフロー(このオペレータより前)の実行コンテキストを指定します。スレッド切り替えに利用されます。
buffer(capacity: Int = BUFFERED, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND) フローの値をバッファリングします。
conflate() 新しい値が発行されたときに、まだ処理されていない古い値をドロップします。最新の値のみに関心がある場合に便利です。
debounce(timeoutMillis: Long): Flow<T> 指定された時間内に新しい値が発行されなかった場合にのみ、最後の値を発行します。
distinctUntilChanged(): Flow<T> 連続する重複した値を除去します。
combine(flow2: Flow<B>, transform: suspend (A, B) -> R): Flow<R> 複数のフローからの最新値を組み合わせて新しい値を発行します。
zip(other: Flow<R>, transform: suspend (T, R) -> V): Flow<V> 複数のフローから対応する位置の値をペアにして発行します。
flatMapConcat(transform: suspend (value: T) -> Flow<R>): Flow<R> 各値を新しいフローに変換し、それらのフローを順番に連結して発行します。
flatMapMerge(concurrency: Int = DEFAULT_CONCURRENCY, transform: suspend (value: T) -> Flow<R>): Flow<R> 各値を新しいフローに変換し、それらのフローを並行してマージして発行します。
flatMapLatest(transform: suspend (value: T) -> Flow<R>): Flow<R> 新しい値が発行されると、以前の値から生成されたフローの収集をキャンセルし、新しいフローの収集を開始します。
flow(block: suspend FlowCollector<T>.() -> Unit): Flow<T> カスタムのフローを作成するためのビルダー関数。
asFlow(): Flow<T> (Iterable, Sequence, Arrayなどに対する拡張関数) コレクションなどをFlowに変換します。

kotlinx.coroutines.flow.StateFlow<T> (再掲、詳細)

ホットストリーム。現在の状態値を持ち、値の更新を購読者に通知します。UIの状態管理に適しています。

プロパティ/メソッド 型/パラメータ 説明
value: T T StateFlowの現在の状態値。
replayCache: List<T> List<T> 最新の値をキャッシュします(StateFlowでは常にサイズ1)。
subscriptionCount: StateFlow<Int> StateFlow<Int> アクティブなコレクタ(購読者)の数を表すStateFlow
update(function: (T) -> T) (拡張関数) (T) -> T アトミックに値を更新します。競合状態を避けるのに役立ちます。
compareAndSet(expect: T, update: T): Boolean expect: T, update: T 現在の値がexpectと等しい場合にのみ、値をupdateにアトミックに設定します。成功すればtrue

kotlinx.coroutines.flow.SharedFlow<T> (再掲、詳細)

ホットストリーム。複数のコレクタで値を共有でき、リプレイキャッシュやバッファリング戦略を設定できます。イベント通知などに使用。

プロパティ/メソッド 型/パラメータ 説明
emit(value: T) value: T SharedFlowに新しい値を発行します。バッファがいっぱいの場合、サスペンドする可能性があります。
tryEmit(value: T): Boolean value: T バッファに空きがあれば値を発行し、成功した場合はtrueを返します。サスペンドしません。
replayCache: List<T> List<T> 新しいコレクタに対してリプレイされる最新の値のリスト。コンストラクタでリプレイ数を指定できます。
subscriptionCount: StateFlow<Int> StateFlow<Int> アクティブなコレクタの数を表すStateFlow
resetReplayCache() リプレイキャッシュをクリアします。
MutableSharedFlow(replay: Int = 0, extraBufferCapacity: Int = 0, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND) MutableSharedFlowのインスタンスを作成するためのコンストラクタ。

3. ネットワーク通信 (Ktor Client)

Kotlin製のマルチプラットフォーム非同期HTTPクライアント。Coroutinesとの親和性が高く、拡張性が高いのが特徴です。

io.ktor.client.HttpClient

HTTPリクエストを実行するためのメインクラス。

メソッド/プロパティ (代表例) 説明
HttpClient { engine {}; install(Feature) { ... }; ... } HttpClientインスタンスを設定して作成します。エンジン(CIO, OkHttp, Androidなど)、フィーチャー(プラグイン)を指定します。
get(urlString: String, block: HttpRequestBuilder.() -> Unit = {}): HttpResponse GETリクエストを送信します。
post(urlString: String, block: HttpRequestBuilder.() -> Unit = {}): HttpResponse POSTリクエストを送信します。
put(urlString: String, block: HttpRequestBuilder.() -> Unit = {}): HttpResponse PUTリクエストを送信します。
delete(urlString: String, block: HttpRequestBuilder.() -> Unit = {}): HttpResponse DELETEリクエストを送信します。
request(urlString: String, block: HttpRequestBuilder.() -> Unit): HttpResponse より汎用的なリクエスト送信メソッド。HTTPメソッドなどをHttpRequestBuilderで指定します。
prepareRequest(urlString: String, block: HttpRequestBuilder.() -> Unit): HttpStatement リクエストを準備しますが、すぐには実行しません。HttpStatement.execute()で実行します。
close() HTTPクライアントを閉じてリソース(スレッドプール、接続など)を解放します。
config: HttpClientConfig<out HttpClientEngineConfig> クライアントの設定。

io.ktor.client.request.HttpRequestBuilder

HTTPリクエストの詳細(URL、メソッド、ヘッダー、ボディなど)を設定するためのビルダー。

メソッド/プロパティ (代表例) 説明
url(urlString: String) / url { protocol=URLProtocol.HTTPS; host="..."; path(...) } リクエストURLを設定します。
method: HttpMethod HTTPメソッド(HttpMethod.Get, HttpMethod.Postなど)を設定します。
headers { append(name, value); ... } HTTPヘッダーを追加・設定します。
contentType(type: ContentType) リクエストボディのコンテントタイプを設定します (例: ContentType.Application.Json)。
setBody(body: Any?) リクエストボディを設定します。ContentNegotiationフィーチャーがインストールされていれば、オブジェクトは自動的にシリアライズされます。
parameter(key: String, value: Any?) URLクエリパラメータを追加します。
accept(contentType: ContentType) Acceptヘッダーを設定します。
timeout { requestTimeoutMillis = ... } リクエストのタイムアウトを設定します。 (HttpTimeoutフィーチャーが必要)

io.ktor.client.statement.HttpResponse

HTTPレスポンスを表すクラス。

プロパティ/メソッド (代表例) 型/戻り値 説明
status: HttpStatusCode HttpStatusCode HTTPステータスコード (例: HttpStatusCode.OK, HttpStatusCode.NotFound)。
version: HttpProtocolVersion HttpProtocolVersion HTTPプロトコルバージョン。
headers: Headers Headers レスポンスヘッダー。
body<T>(): T (ジェネリック拡張関数) T レスポンスボディを指定された型Tにデシリアライズして取得します。ContentNegotiationフィーチャーが必要です。
bodyAsText(charset: Charset? = null): String String レスポンスボディをテキストとして取得します。
bodyAsChannel(): ByteReadChannel ByteReadChannel レスポンスボディをバイトストリームとして取得します。
bodyAsStatement(): HttpStatement HttpStatement レスポンスボディをHttpStatementとして取得し、後で処理できるようにします。
request: HttpRequest HttpRequest このレスポンスを生成した元のリクエスト。
call: HttpClientCall HttpClientCall リクエストとレスポンスの完全なコンテキスト。

Ktor Client Features (Plugins)

HttpClientにインストールして機能を拡張するためのプラグイン。

Feature (代表例) 説明
ContentNegotiation (io.ktor.client.plugins.contentnegotiation.*) リクエスト/レスポンスボディの自動的なシリアライズ/デシリアライズ(JSON, XMLなど)をサポートします。kotlinx.serialization, Gson, Jacksonなどと連携できます。
json(serializer: JsonSerializer = ...), json(json: Json = ...) JSONコンバータを設定します。
Logging (io.ktor.client.plugins.logging.*) リクエストとレスポンスの情報をロギングします。ログレベルやロガーを指定できます。
level: LogLevel (ALL, HEADERS, BODY, INFO, NONE) ロギングレベル。
logger: Logger (Logger.DEFAULT, Logger.SIMPLEなど) 使用するロガー。
Auth (io.ktor.client.plugins.auth.*) 認証メカニズム(Basic認証、Bearer認証など)をサポートします。
basic { ... }, bearer { ... } 各認証方式の設定ブロック。
HttpTimeout (io.ktor.client.plugins.HttpTimeout) リクエスト全体のタイムアウト、接続タイムアウト、ソケットタイムアウトを設定できます。
requestTimeoutMillis, connectTimeoutMillis, socketTimeoutMillis 各タイムアウト値。
DefaultRequest (io.ktor.client.plugins.defaultrequest.DefaultRequest) 全てのリクエストに共通のヘッダーやURLパスなどを設定できます。
HttpRequestRetry (io.ktor.client.plugins.HttpRequestRetry) リクエストの自動リトライ機能を提供します。リトライ回数や条件を指定できます。

4. Google API関連

4.1. Google Sign-In

Googleアカウントを使用した認証をAndroidアプリに組み込むためのライブラリ。

com.google.android.gms.auth.api.signin.GoogleSignIn

GoogleSignInClient を取得するためのエントリーポイント。

静的メソッド 説明
getClient(activity: Activity, options: GoogleSignInOptions): GoogleSignInClient 指定されたActivityとオプションでGoogleSignInClientインスタンスを取得します。
getClient(context: Context, options: GoogleSignInOptions): GoogleSignInClient 指定されたContextとオプションでGoogleSignInClientインスタンスを取得します。
getLastSignedInAccount(context: Context): GoogleSignInAccount? アプリに最後にサインインしたユーザーのアカウント情報を取得します。サインインしていない場合はnull。即座に結果が返ります。
getSignedInAccountFromIntent(data: Intent?): Task<GoogleSignInAccount> onActivityResult (または ActivityResultLauncher の結果) で受け取ったIntentからサインイン結果を取得します。

com.google.android.gms.auth.api.signin.GoogleSignInClient

Googleサインインおよびサインアウト処理を実行するための主要クラス。

メソッド 戻り値/説明
signInIntent: Intent Googleサインインフローを開始するためのIntent。ActivityResultLauncherで起動します。
signOut(): Task<Void> 現在のユーザーをサインアウトさせます。
revokeAccess(): Task<Void> 現在のユーザーがアプリに与えた権限(スコープ)を取り消します。再認証が必要になります。
silentSignIn(): Task<GoogleSignInAccount> UIを表示せずにバックグラウンドでサインインを試みます。以前にサインインしており、権限が有効な場合に成功します。

com.google.android.gms.auth.api.signin.GoogleSignInOptions

Googleサインイン時の動作やリクエストする情報を設定するためのクラス。Builderパターンで構築します。

Builderメソッド (代表例) 説明
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) デフォルトオプション(ユーザーID、プロファイル情報、メールアドレスをリクエスト)でビルダーを初期化します。
requestId(): Builder ユーザーIDのリクエストを明示的に指定します(デフォルトで有効)。
requestEmail(): Builder ユーザーのメールアドレスのリクエストを明示的に指定します(デフォルトで有効)。
requestProfile(): Builder ユーザーの基本的なプロファイル情報(表示名、写真URLなど)のリクエストを明示的に指定します(デフォルトで有効)。
requestIdToken(serverClientId: String): Builder バックエンドサーバーでユーザーを認証するためのIDトークンをリクエストします。WebアプリのクライアントIDを指定します。
requestServerAuthCode(serverClientId: String): Builder バックエンドサーバーがオフラインアクセス(リフレッシュトークン取得)するための認証コードをリクエストします。
requestScopes(scope: Scope, vararg scopes: Scope): Builder 追加のOAuthスコープ(例: Gmail APIのスコープ)をリクエストします。

com.google.android.gms.auth.api.signin.GoogleSignInAccount

サインインしたGoogleユーザーのアカウント情報を保持するクラス。

プロパティ/メソッド 型/戻り値 説明
id: String? String? ユーザーの一意なGoogle ID。
idToken: String? String? IDトークン(requestIdTokenでリクエストした場合)。バックエンドでの認証に使用。
email: String? String? ユーザーのメールアドレス(requestEmailでリクエストした場合)。
displayName: String? String? ユーザーの表示名(requestProfileでリクエストした場合)。
givenName: String? String? ユーザーの名。
familyName: String? String? ユーザーの姓。
photoUrl: Uri? Uri? ユーザーのプロフィール写真のURL(requestProfileでリクエストした場合)。
serverAuthCode: String? String? サーバー認証コード(requestServerAuthCodeでリクエストした場合)。
account: Account? Account? AndroidのAccountManagerで使用できるAccountオブジェクト。
grantedScopes: Set<Scope> Set<Scope> このアカウントに対して許可されたスコープのセット。
isExpired(): Boolean Boolean アカウント情報(特にIDトークン)が期限切れかどうか。

4.2. Gmail API (Client Library)

Gmailのメールデータへのアクセスを提供します。通常はバックエンドで使用されますが、Androidクライアントライブラリも存在します。
Androidから直接利用する場合、GoogleAccountCredential を使用して認証情報を設定し、com.google.api.services.gmail.Gmailサービスクラスを利用します。

com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential

AndroidでGoogle APIのOAuth 2.0認証情報を管理するためのクラス。

メソッド 説明
usingOAuth2(context: Context, scopes: Collection<String>): GoogleAccountCredential 指定されたスコープで認証情報オブジェクトを作成します。
setSelectedAccountName(accountName: String): GoogleAccountCredential 使用するGoogleアカウント名を設定します。
setSelectedAccount(account: Account): GoogleAccountCredential 使用するGoogleアカウントをAccountオブジェクトで設定します。
token: String? (プロパティ) 現在のアクセストークン。

com.google.api.services.gmail.Gmail

Gmail APIサービスのメインクラス。Gmail.Builderでインスタンスを構築します。

Builderメソッド 説明
Gmail.Builder(httpTransport: HttpTransport, jsonFactory: JsonFactory, credential: HttpRequestInitializer?) Gmailサービスビルダーを初期化します。credentialにはGoogleAccountCredentialを渡します。
setApplicationName(applicationName: String): Builder アプリケーション名を設定します。

Gmailインスタンスの主なメソッド:

メソッド 戻り値の型 説明
users() Gmail.Users ユーザー固有のデータ(メール、ラベル、設定など)にアクセスするためのリソースを取得します。

com.google.api.services.gmail.Gmail.Users

ユーザー関連のリソースへのアクセスメソッドを提供します。

メソッド 戻り値の型 説明
messages() Gmail.Users.Messages メッセージ関連の操作(取得、一覧表示、送信など)を行うためのリソースを取得します。
labels() Gmail.Users.Labels ラベル関連の操作を行うためのリソースを取得します。
threads() Gmail.Users.Threads スレッド関連の操作を行うためのリソースを取得します。
history() Gmail.Users.History メールボックスの変更履歴を取得するためのリソースを取得します。
drafts() Gmail.Users.Drafts 下書き関連の操作を行うためのリソースを取得します。
getProfile(userId: String): Gmail.Users.GetProfile 指定されたユーザーのプロフィール情報を取得するリクエストを作成します。
watch(userId: String, content: WatchRequest): Gmail.Users.Watch メールボックスの変更通知を設定するリクエストを作成します。

com.google.api.services.gmail.Gmail.Users.Messages

メールメッセージに対する操作を提供します。

メソッド 説明
list(userId: String): Gmail.Users.Messages.List 指定されたユーザーのメッセージ一覧を取得するリクエストを作成します。userIdは通常"me"
setMaxResults(maxResults: Long) 一度に取得する最大メッセージ数を設定します。
setQ(q: String) Gmailの検索クエリ構文でメッセージをフィルタリングします。
setPageToken(pageToken: String) 次のページの結果を取得するためのトークンを設定します。
setLabelIds(labelIds: List<String>) 特定のラベルが付いたメッセージのみを取得します。
get(userId: String, id: String): Gmail.Users.Messages.Get 指定されたIDのメッセージを取得するリクエストを作成します。
setFormat(format: String) メッセージの返却形式を指定します ("full", "metadata", "raw", "minimal")。
send(userId: String, content: Message): Gmail.Users.Messages.Send メッセージを送信するリクエストを作成します。contentにはBase64URLエンコードされたメール本文を含むMessageオブジェクトを指定します。
modify(userId: String, id: String, content: ModifyMessageRequest): Gmail.Users.Messages.Modify メッセージのラベルを変更するリクエストを作成します。
trash(userId: String, id: String): Gmail.Users.Messages.Trash メッセージをゴミ箱に移動するリクエストを作成します。
batchDelete(userId: String, content: BatchDeleteMessagesRequest): Gmail.Users.Messages.BatchDelete 複数のメッセージを一度に削除するリクエストを作成します。

com.google.api.services.gmail.model.Message

メールメッセージのデータを表すモデルクラス。

プロパティ (代表例) 説明
id: String String メッセージの一意なID。
threadId: String String このメッセージが属するスレッドのID。
labelIds: List<String> List<String> このメッセージに適用されているラベルIDのリスト。
snippet: String String メッセージ本文の短いスニペット。
historyId: Long Long このメッセージがメールボックスに追加されたときの履歴ID。
internalDate: Long Long メッセージが最初に受信された内部的な日時 (Unixタイムスタンプミリ秒)。
payload: MessagePart MessagePart メッセージのペイロード情報(ヘッダー、本文、添付ファイルなど)。
raw: String String RFC 2822形式でBase64URLエンコードされたメール全体。format="raw"で取得時。
sizeEstimate: Integer Integer メッセージのおおよそのサイズ(バイト単位)。

com.google.api.services.gmail.model.MessagePart

メッセージの一部(本文、添付ファイル、マルチパートの各パートなど)を表すモデルクラス。

プロパティ (代表例) 説明
partId: String String マルチパートメッセージ内でのパートの一意なID。
mimeType: String String このパートのMIMEタイプ (例: "text/plain", "image/jpeg")。
filename: String String 添付ファイルの場合のファイル名。
headers: List<MessagePartHeader> List<MessagePartHeader> このパートのヘッダーリスト (例: Content-Type, Content-Disposition)。
body: MessagePartBody MessagePartBody このパートの本文データ。
parts: List<MessagePart> List<MessagePart> このパートがマルチパートの場合、そのサブパートのリスト。

com.google.api.services.gmail.model.MessagePartBody

メッセージパートの本文データを表すモデルクラス。

プロパティ (代表例) 説明
attachmentId: String String 本文が添付ファイルとして保存されている場合の添付ファイルID。
data: String String Base64URLエンコードされた本文データ。
size: Integer Integer 本文データのサイズ(バイト単位)。

4.3. Gemini API (Google AI SDK)

Googleの生成AIモデル (Gemini) を利用するためのSDK。メールの重要度判定などに活用できます。
Android用のSDK (com.google.ai.client.generativeai.*) が提供されています。

com.google.ai.client.generativeai.GenerativeModel

Geminiモデルとの対話を行うための主要クラス。

メソッド/プロパティ (代表例) 説明
GenerativeModel(modelName: String, apiKey: String, generationConfig: GenerationConfig? = null, safetySettings: List<SafetySetting>? = null, requestOptions: RequestOptions = RequestOptions(), tools: List<Tool>? = null, toolConfig: ToolConfig? = null, systemInstruction: Content? = null) GenerativeModelインスタンスを作成します。modelName (例: "gemini-1.5-flash") と apiKey が必須です。
suspend generateContent(vararg content: Content): GenerateContentResponse プロンプト(Contentオブジェクト)をモデルに送信し、生成されたコンテンツを含むレスポンスを返します。
generateContentStream(vararg content: Content): Flow<GenerateContentResponse> プロンプトをモデルに送信し、生成されたコンテンツをストリーミング形式でFlowとして返します。
startChat(history: List<Content> = emptyList()): Chat 会話(チャット)セッションを開始します。過去の会話履歴を渡すことができます。
countTokens(vararg content: Content): CountTokensResponse 指定されたコンテンツのトークン数を計算します。

com.google.ai.client.generativeai.type.Content

モデルへの入力(プロンプト)やモデルからの出力(レスポンスの一部)を表すクラス。contentビルダー関数で作成します。

ビルダー関数内プロパティ/メソッド (代表例) 説明
role: String? (例: "user", "model") このコンテンツの役割。チャット形式の場合に重要です。
text(text: String) テキストパートを追加します。
image(image: Bitmap) 画像パートを追加します(マルチモーダルプロンプト)。
blob(mimeType: String, blob: ByteArray) 任意のバイナリデータパートを追加します。
parts: List<Part> コンテンツを構成するパートのリスト。

com.google.ai.client.generativeai.type.GenerateContentResponse

generateContentメソッドからのレスポンス。

プロパティ (代表例) 説明
text: String? (拡張プロパティ) String? レスポンスのテキスト部分を簡単に取得するためのショートカット。最初の候補の最初のテキストパートを返します。
candidates: List<Candidate> List<Candidate> モデルによって生成された候補のリスト。通常は1つですが、複数要求することも可能です。
promptFeedback: PromptFeedback? PromptFeedback? プロンプトに関するフィードバック(ブロック理由など)。
functionCalls: List<FunctionCall> (拡張プロパティ) List<FunctionCall> モデルが実行を要求した関数呼び出しのリスト。

com.google.ai.client.generativeai.type.Candidate

モデルによって生成された単一の候補。

プロパティ (代表例) 説明
content: Content Content この候補の生成されたコンテンツ。
finishReason: FinishReason? FinishReason? 生成が終了した理由(STOP, MAX_TOKENS, SAFETY, RECITATION, OTHERなど)。
safetyRatings: List<SafetyRating> List<SafetyRating> この候補の安全性評価のリスト。
citationMetadata: CitationMetadata? CitationMetadata? 引用メタデータ(生成されたコンテンツが特定のソースから引用されている場合)。
tokenCount: Int Int この候補のトークン数。

com.google.ai.client.generativeai.Chat

GenerativeModel.startChat() で開始される会話セッションを管理するクラス。

メソッド (代表例) 説明
suspend sendMessage(prompt: String): GenerateContentResponse 会話に新しいユーザーメッセージ(プロンプト文字列)を送信し、モデルのレスポンスを待ちます。
suspend sendMessage(prompt: Content): GenerateContentResponse 会話に新しいユーザーメッセージ(Contentオブジェクト)を送信し、モデルのレスポンスを待ちます。
sendMessageStream(prompt: String): Flow<GenerateContentResponse> 会話に新しいユーザーメッセージを送信し、モデルのレスポンスをストリーミングで受け取ります。
sendMessageStream(prompt: Content): Flow<GenerateContentResponse> 同上。
history: List<Content> (プロパティ) 現在の会話履歴(ユーザーとモデルのやり取り)。

5. Android標準API

Androidフレームワークの基本的なクラス群。

5.1. Context

アプリケーション環境に関するグローバル情報へのアクセスを提供します。ActivityやApplicationクラスはContextのサブクラスです。

メソッド/プロパティ (代表例) 説明
resources: Resources アプリのリソース(文字列、色、Drawableなど)にアクセスするためのResourcesオブジェクトを取得します。
assets: AssetManager assetsフォルダ内の元ファイルにアクセスするためのAssetManagerを取得します。
getSystemService(name: String): Any? システムレベルのサービスを取得します (例: Context.CONNECTIVITY_SERVICE, Context.NOTIFICATION_SERVICE)。
getSystemService(serviceClass: Class<T>): T? 型を指定してシステムサービスを取得します。
getSharedPreferences(name: String, mode: Int): SharedPreferences 指定された名前のSharedPreferencesインスタンスを取得します (DataStoreの使用が推奨されます)。
startActivity(intent: Intent) 新しいActivityを起動します。
startService(service: Intent): ComponentName? Serviceを開始します。
sendBroadcast(intent: Intent) ブロードキャストIntentを送信します。
checkSelfPermission(permission: String): Int 特定のパーミッションがアプリに許可されているか確認します (PackageManager.PERMISSION_GRANTED または PackageManager.PERMISSION_DENIED)。
packageName: String アプリのパッケージ名を取得します。
applicationContext: Context アプリケーション全体のライフサイクルに紐づいたContextを取得します。
cacheDir: File アプリ固有のキャッシュディレクトリへのパスを取得します。
filesDir: File アプリ固有の内部ストレージファイルディレクトリへのパスを取得します。

5.2. Intent

コンポーネント間の非同期メッセージングオブジェクト。Activityの起動、Serviceの開始、Broadcastの送信などに使用されます。

コンストラクタ/メソッド (代表例) 説明
Intent() 空のIntentを作成します。
Intent(action: String?) 指定されたアクションでIntentを作成します (例: Intent.ACTION_VIEW)。
Intent(action: String?, uri: Uri?) アクションとURIでIntentを作成します。
Intent(packageContext: Context, cls: Class<*>) 特定のコンポーネント(Activity、Serviceなど)を明示的に指定してIntentを作成します。
setAction(action: String?): Intent Intentのアクションを設定します。
setData(data: Uri?): Intent Intentが作用するデータをURIで設定します。
setType(type: String?): Intent Intentが扱うデータのMIMEタイプを設定します。
setDataAndType(data: Uri?, type: String?): Intent データとMIMEタイプを同時に設定します。
addCategory(category: String): Intent Intentにカテゴリを追加します (例: Intent.CATEGORY_LAUNCHER)。
putExtra(name: String, value: T) (各種オーバーロードあり) Intentに拡張データを追加します(キーと値のペア)。
getStringExtra(name: String): String? (各種get<Type>Extraあり) Intentから拡張データを取得します。
getParcelableExtra(name: String): T? (APIレベル依存) IntentからParcelableオブジェクトを取得します。
getSerializableExtra(name: String): T? (APIレベル依存) IntentからSerializableオブジェクトを取得します。
putExtras(bundle: Bundle): Intent Bundleオブジェクトで複数の拡張データを一度に追加します。
extras: Bundle? Intentの全ての拡張データをBundleとして取得します。
addFlags(flags: Int): Intent Intentの動作を変更するためのフラグを追加します (例: Intent.FLAG_ACTIVITY_NEW_TASK)。
component: ComponentName? Intentが明示的にターゲットとするコンポーネント名。

5.3. Log

Logcatにログメッセージを出力するためのクラス。デバッグに不可欠です。

静的メソッド 説明
Log.v(tag: String?, msg: String) Verboseレベルのログを出力します。
Log.v(tag: String?, msg: String, tr: Throwable) Verboseレベルのログと例外情報を出力します。
Log.d(tag: String?, msg: String) Debugレベルのログを出力します。
Log.d(tag: String?, msg: String, tr: Throwable) Debugレベルのログと例外情報を出力します。
Log.i(tag: String?, msg: String) Infoレベルのログを出力します。
Log.i(tag: String?, msg: String, tr: Throwable) Infoレベルのログと例外情報を出力します。
Log.w(tag: String?, msg: String) Warningレベルのログを出力します。
Log.w(tag: String?, tr: Throwable) Warningレベルのログ(メッセージなし)と例外情報を出力します。
Log.w(tag: String?, msg: String, tr: Throwable) Warningレベルのログと例外情報を出力します。
Log.e(tag: String?, msg: String) Errorレベルのログを出力します。
Log.e(tag: String?, msg: String, tr: Throwable) Errorレベルのログと例外情報を出力します。
Log.wtf(tag: String?, msg: String) What a Terrible Failureレベルのログを出力します(致命的なエラー)。
Log.isLoggable(tag: String?, level: Int): Boolean 指定されたタグとレベルでログが出力可能かどうかを判定します。

5.4. Resources

アプリケーションのリソース(文字列、Drawable、色、寸法、レイアウトなど)へのアクセスを提供します。Context.getResources()で取得します。

メソッド (代表例) 説明
getString(id: Int): String 指定されたIDの文字列リソースを取得します。
getString(id: Int, vararg formatArgs: Any): String フォーマット引数付きで文字列リソースを取得します。
getText(id: Int): CharSequence 指定されたIDのスタイル付きテキストリソースを取得します。
getColor(id: Int, theme: Resources.Theme?): Int 指定されたIDの色リソースを取得します (API 23以降。Composeでは colorResource())。
getDrawable(id: Int, theme: Resources.Theme?): Drawable? 指定されたIDのDrawableリソースを取得します (API 21以降。Composeでは painterResource())。
getDimension(id: Int): Float 指定されたIDの寸法リソースをピクセル単位で取得します (Composeでは dimensionResource())。
getDimensionPixelSize(id: Int): Int 寸法リソースを最も近いピクセル整数値で取得します。
getDimensionPixelOffset(id: Int): Int 寸法リソースを切り捨てたピクセル整数値で取得します。
getInteger(id: Int): Int 指定されたIDの整数リソースを取得します。
getBoolean(id: Int): Boolean 指定されたIDのブール値リソースを取得します。
openRawResource(id: Int): InputStream res/rawフォルダ内のリソースファイルを開くためのInputStreamを取得します。
getIdentifier(name: String, defType: String, defPackage: String): Int リソース名、タイプ、パッケージからリソースIDを取得します。動的にIDを取得する場合に使用しますが、パフォーマンス上の理由から多用は避けるべきです。
configuration: Configuration 現在のデバイス設定(画面サイズ、向き、ロケールなど)を表すConfigurationオブジェクト。
displayMetrics: DisplayMetrics 画面のメトリクス(密度、解像度など)を表すDisplayMetricsオブジェクト。

Discussion