Android開発 主要ライブラリ・クラス リファレンス
Android開発 主要ライブラリ・クラス リファレンス
目次
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
/ LazyRow
の content
スコープ内で使用する主な関数:
関数 | 説明 |
---|---|
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 |
指定されたルートまでバックスタックを遡ります。inclusive がtrue なら指定ルートも取り除きます。 |
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関数。
NavGraphBuilder.composable(route: String, arguments: List<NamedNavArgument> = emptyList(), deepLinks: List<NavDeepLink> = emptyList(), content: @Composable (NavBackStackEntry) -> Unit)
NavHost
のbuilder
内で、個々のデスティネーション(画面)を定義します。
パラメータ | 説明 |
---|---|
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