Kotlin チートシート — クイックリファレンス
Kotlin 2.0 の構文、null 安全、コルーチン、最もよく使う標準ライブラリをカバーするクイックリファレンス。日常の約 80% のシナリオを網羅します。
Kotlin Kotlin 2.0
JVM (kotlinc) / Multiplatform · オブジェクト指向・関数型・マルチプラットフォーム · 静的・強い型付け・型推論
おすすめの学習パス
最初に kotlinc のコンパイルと実行、fun main を学ぶ → 変数、型、制御フローを習得 → null 安全(null 許容型 ?、安全呼び出し ?.、エリビス ?:)と data class を理解 → ラムダ、拡張関数、コレクションの関数型操作を使う → クラス、インターフェース、ジェネリックを深く学ぶ → try / runCatching でエラー処理 → コルーチンと Flow で並行処理を書く → 必要に応じてネットワーク、時間、正規表現、Gradle ビルドを学ぶ。FAQ セクションは後で落とし穴を避けるのに適しています。
1.Hello World とビルド環境
Kotlin プログラムのコンパイルと実行:kotlinc ツールチェーン、スクリプト、パッケージ構成、コマンドライン引数。
最小プログラム
すべての Kotlin プログラムはトップレベルの fun main() をエントリーポイントとし、println で標準出力に書き出します。Kotlin 2.0 は引数なしの main をサポートします。
実行とビルド
kotlinc はソースを JVM バイトコードにコンパイルし、java -jar で実行します。Gradle は Kotlin プロジェクトの主流ビルドツールです。
Kotlin スクリプト
.kts ファイルは直接実行でき、小さなツールや自動化に適しています。スクリプトは main 関数が不要で、トップレベルの文が順に実行されます。
パッケージとインポート
package はファイルの所属パッケージを宣言し、import で別パッケージの型を取り込みます。Java と異なり、未使用の import はエラーになりません。
コマンドライン引数
main の Array<String> 引数がコマンドライン引数を受け取り、args[0] が最初の引数です。引数は常に文字列なので自分で変換する必要があります。
出力とフォーマット
println は出力して改行し、print は改行しません。文字列テンプレート ${} は式を埋め込み、最もよく使うフォーマット手段です。
終了コード
exitProcess は即座にプログラムを終了し、終了コードを設定します。0 が成功、それ以外は失敗です。ライブラリコードでは呼び出さないでください。
環境構築
IntelliJ IDEA コミュニティ版は Kotlin を内蔵でサポートし、Android Studio も同様です。コマンドラインでは kotlinc と Gradle を使います。
2.変数と定数
変数宣言、val/var、定数、型推論、分解宣言、スコープ。
val と var
val は読み取り専用の参照を宣言し、var は可変の参照を宣言します。val を優先し、コンパイラは val にできる var を指摘します。
型推論
コンパイラは初期化式から変数の型を推論し、明示的な型は省略可能です。推論結果は明示宣言と等価です。
明示的な型
明示的な型は可読性を高め、null 安全性とジェネリクスでしばしば必要です。型は変数名の後にコロンで区切って書きます。
コンパイル時定数
const val はコンパイル時定数を宣言します。プリミティブ型と String のみ、トップレベルまたはコンパニオンオブジェクト内でしか宣言できません。
トップレベル変数
ファイルのトップレベルで変数や関数を直接宣言でき、クラスで包む必要はありません。トップレベルの val/var はファイルレベルのグローバル状態です。
分解宣言
分解宣言はオブジェクトを複数の変数に分割します。Pair、Triple、data class がすべてサポートします。
型エイリアス
typealias は既存型に別名を付けて可読性を高めます。新しい型を作らず、元の型と完全に等価です。
スコープとブロック
変数のスコープは波括弧ブロックで決まり、内側からは外側の変数にアクセスできます。同じスコープで同名変数を再宣言できません。
3.データ型
数値、文字、真偽値、配列、範囲、data class、型変換。
数値型
Kotlin は Byte/Short/Int/Long/Float/Double の 6 種類の数値型を提供し、接尾辞 L、f、u で具体的な型を指定します。
数値演算
算術、ビット演算、数学関数。Int 同士の除算は Int で、整数除算は切り捨てられることに注意してください。
文字と真偽値
Char は単一の文字(単一引用符)を表し、Boolean は true/false のみです。文字には完全なチェックと変換メソッドがあります。
配列
Array<T> は参照型の配列、IntArray などはプリミティブ型の配列(より効率的)です。配列サイズは固定です。
範囲
範囲 a..b は閉区間、until は右側を開いた範囲です。for ループや in 判定と組み合わせてよく使います。
文字列型
String は不変の UTF-16 文字シーケンスです。文字列リテラルは二重引用符、エスケープはバックスラッシュを使います。
data class
data class は equals/hashCode/toString/copy と分解を自動生成し、データを保持する純粋な値オブジェクトに使われます。
型変換
Kotlin は暗黙的に数値型を変換しないため、明示的な toXxx() メソッドが必要です。小さい型から大きい型でもオーバーフローしうるので注意してください。
Unit と Nothing
Unit は戻り値がないことを表し(Java の void に類似)、Nothing は決して戻らないことを表し、必ず投げる関数や未実装関数に使います。
4.参照と null 安全
Kotlin には生ポインタはありません:参照意味論、null 許容型、安全呼び出し、エリビス演算子、lateinit、値クラス。
参照とオブジェクト
Kotlin には生ポインタがなく、すべての変数は参照です。JVM が自動的にライフサイクルを管理し、ポインタ演算はありません。
null 許容型
型に ? を付けると null を許容します。null 許容型は直接メソッドを呼び出せず、必ず null チェックが必要で、これが Kotlin の null 安全に重要です。
安全呼び出し
?. はオブジェクトが非 null のときメソッドを呼び出し、null のとき式全体が null になります。安全呼び出しはチェーンできます。
Elvis 演算子
?: は左辺が null のとき右辺の既定値を返します。右辺は式、早期 return、throw も可能です。
非 null 表明
!! は null 許容型を強制的に非 null に変換し、null のとき NPE を投げます。使用は避け、論理的に確実に非 null の場合のみ使ってください。
lateinit プロパティ
lateinit は後で初期化する非 null の var を宣言し、依存注入やフレームワークコールバックに使います。初期化前にアクセスすると例外が投げられます。
by lazy 委譲
by lazy は初回アクセス時に初期化を実行し、結果をキャッシュします。スレッド安全で、高価な一度きりの初期化に適しています。
コピーと等価性
== は構造的等価を比較し、=== は参照の同一性を比較します。data class の copy() はシャローコピーです。
value class
value class は単一の値をラップし実行時にインライン化され、ボクシングのオーバーヘッドを排除します。タイプセーフなカスタムラッパーのようなものです。
5.制御フロー
if、when、for、while、スマートキャスト — 式スタイルの制御フロー。
if 式
if は式であり、値を返して変数に代入できます。Kotlin には三項演算子がなく、if-else がその代わりです。
when 式
when は switch を置き換え、値、範囲、型、条件分岐をサポートします。式形式では else が必要です。
for ループ
for は範囲、コレクション、配列などの反復可能オブジェクトを走査します。Kotlin には C スタイルの三項 for はありません。
while ループ
while は判定してから実行、do-while は実行してから判定します。条件は Boolean 式でなければなりません。
break と continue
break はループを抜け、continue は現在の繰り返しをスキップします。ラベル @ はネストしたループのジャンプを制御します。
スマートキャスト
型チェックの後、コンパイラが自動的に型を変換し、明示的なキャストは不要です。null チェックや is チェックの後、安全に使用できます。
ラベルとジャンプ
ラベル @ はループやラムダに印を付け、break、continue、return と組み合わせて正確なジャンプを実現します。
takeIf と takeUnless
takeIf は条件を満たすなら元のオブジェクトを返し、そうでなければ null です。takeUnless は逆で、チェーンでの null 判定やフィルタリングによく使われます。
6.関数とラムダ
関数宣言、ラムダ、高階関数、拡張関数、スコープ関数、中置関数。
関数宣言
fun で関数を宣言し、引数は型を持ち、戻り型は引数リストの後に書きます。戻り値がないときは Unit を使います。
単一式関数
関数本体が単一の式の場合、= で簡潔に書け、return と波括弧を省略できます。
デフォルト引数と名前付き引数
引数には既定値を設定でき、呼び出し時に省略可能です。名前付き引数は任意の順で渡せ、可読性が向上します。
可変長引数
vararg は任意の数の引数を受け取り、関数内では配列として使えます。展開演算子 * で配列を渡せます。
ラムダ式
ラムダは無名関数で、波括弧で包み、-> で引数と本体を区切ります。最後の引数がラムダのときはトレイリングラムダ構文が使えます。
高階関数
高階関数は関数を引数に取ったり戻り値にしたりします。map/filter など標準ライブラリの高階関数は日々の主力です。
拡張関数
拡張関数は既存クラスにメソッドを追加し、元のクラスを変更しません。this はレシーバを指し、スコープは宣言箇所に限定されます。
中置関数
infix キーワードで関数をスペース区切りで演算子のように呼び出せます。メンバ関数または拡張関数で、引数は 1 つでなければなりません。
スコープ関数
let/run/with/apply/also はオブジェクトのコンテキストでコードを実行します。let は結果を返し、apply はレシーバを返します。
ローカル関数
関数内ではローカル関数を定義でき、外側の変数をキャプチャします。ロジックの整理や重複削減に使えます。
7.文字列
文字列の基礎、テンプレート、生文字列、メソッド、連結、フォーマット、変換。
文字列の基礎
String は不変の文字シーケンスです。二重引用符リテラル、エスケープシーケンス、インデックスアクセス、繰り返しアクセス。
文字列テンプレート
$変数 と ${式} で値を文字列に埋め込み、最もよく使う文字列構築手法です。
生文字列
三重引用符 """ の生文字列は改行と書式を保持し、エスケープしません。trimIndent で共通のインデントを除去できます。
よく使うメソッド
標準ライブラリは豊富な文字列メソッドを提供します:切り出し、置換、空判定、トリム、パディング。
連結と StringBuilder
ループでの連結は StringBuilder(または buildString)を使い、大量の中間文字列生成を避けます。
フォーマット
format メソッドは printf 風のフォーマット出力を実装し、幅、精度、型プレースホルダをサポートします。
文字列変換
文字列と数値の相互変換、Boolean への変換。toXxxOrNull 系は安全な変換で例外を回避します。
分割と結合
split は区切り文字でリストに分割し、joinToString はコレクションを文字列に結合します。複数の区切り文字もサポート。
8.コレクション
List、Set、Map、遅延シーケンス、変換操作、グループ化、ソート。
List
listOf は読み取り専用リストを作成し、elementAt と get でインデックスアクセスします。既定の List インターフェースは変更できません。
Set
setOf は重複なしのコレクションを作成し、要素は一意です。存在判定は List より高速です。
Map
mapOf はキーと値のペアを作成し、to または Pair でエントリを構築します。キーで値を取り、未知のキーは既定値を返せます。
可変コレクション
mutableListOf/mutableSetOf/mutableMapOf は可変コレクションを作成します。読み取り専用ビューは add できません。
遅延シーケンス
Sequence は遅延評価で、チェーン操作は終端操作まで要素ごとに実行されます。大量データでは中間コレクションを避けられます。
変換操作
map/filter/flatMap などはコレクション処理の主力で、手書きループを関数型スタイルに置き換えます。
グループ化と関連付け
groupBy は条件でグループ化し、associate はキーと値の関係を構築し、partition は二つに分割します。
ソート
sorted/sortedBy は新しいソート済みリストを返し、sort は可変リストをインプレースでソートします。カスタム比較子をサポートします。
コレクション間の変換
コレクション、配列、Map の相互変換。toList/toSet/toMap/toTypedArray。
9.メモリとパフォーマンス
JVM ガベージコレクション、オブジェクト参照、ボクシング、割り当て最適化、パフォーマンス分析。
JVM ガベージコレクション
Kotlin/JVM は GC でメモリを自動管理し、手動解放は不要です。到達不能になったオブジェクトは回収されます。
オブジェクト参照
Kotlin の全オブジェクトは参照経由でアクセスし、ポインタはありません。参照型が共有と到達可能性を決定します。
inline 関数
inline は呼び出し点で関数本体を展開し、ラムダオブジェクト生成のオーバーヘッドを排除します。reified ジェネリックには inline が必要です。
割り当て最適化
オブジェクト割り当ての削減は JVM パフォーマンスの鍵です。オブジェクト再利用、ボクシング回避、プリミティブ型配列の使用。
プリミティブ型のボクシング
非 null のプリミティブ型ローカル変数は生型を使い、null 許容またはジェネリックではボクシングされます。value class でラッパーを最適化できます。
パフォーマンスチューニング
測定してから最適化します。よくある最適化ポイント:データ構造、重複計算、遅延評価、アルゴリズムの計算量。
オブジェクトプール
高並行シナリオではオブジェクトを再利用し頻繁な割り当てを避けます。プールオブジェクトはスレッド安全と返却前の状態クリアが必要です。
パフォーマンス分析
JFR、VisualVM などのツールで CPU とメモリを分析します。ヒープダンプでメモリリークを特定します。
10.オブジェクト指向
クラス、コンストラクタ、プロパティ、継承、インターフェース、ジェネリック、data class、シールドクラス。
クラス定義
class でクラスを宣言し、プロパティは主コンストラクタかクラス本体に置けます。クラスは既定で final で継承できません。
コンストラクタ
主コンストラクタはクラスヘッダで宣言し、引数を直接プロパティにできます。init ブロックは主コンストラクタの後に実行されます。
プロパティ
プロパティは getter/setter を自動生成します。アクセサはカスタマイズでき、field はバッキングフィールドを指します。
継承とオーバーライド
open クラスは継承可能で、open メンバはオーバーライド可能です。override でオーバーライドをマークし、super で親クラスにアクセスします。
インターフェース
インターフェースは振る舞いの契約を定義し、デフォルト実装と抽象メンバを持てます。クラスは複数のインターフェースを実装できます。
抽象クラス
abstract class は部分実装を定義し、abstract メンバはサブクラスで実装されます。インターフェースと異なり、抽象クラスは状態を保持できます。
data class
data class は equals/hashCode/toString/copy/componentN を自動生成し、値オブジェクトに適しています。
シールドクラス
sealed class はサブクラスを同じパッケージ/モジュールに制限し、when 分岐を網羅できます。制限された階層構造を表現します。
シングルトンオブジェクト
object はシングルトンを宣言し、スレッドセーフに遅延初期化されます。プログラム全体でインスタンスは 1 つだけです。
コンパニオンオブジェクト
companion object はクラスレベルのメンバを提供し、Java の static に似ています。@JvmStatic で Java に公開できます。
ジェネリック
ジェネリックは型をパラメータ化します。in/out で共変・反変を宣言し、ジェネリック関数と型制約をサポートします。
委譲
by キーワードはインターフェース委譲とプロパティ委譲を実現します。lazy/observable でプロパティを管理し、合成を簡素化します。
11.エラー処理
try 式、カスタム例外、runCatching、Result、require/check、リソース管理。
try 式
try は式で、catch の値を返せます。catch は例外型をマッチし、finally は必ず実行されます。
例外を投げる
throw は例外オブジェクトを投げます。カスタムメッセージと例外チェーン。require/check は引数検証の慣用句です。
カスタム例外
Exception または RuntimeException を継承してカスタム例外を定義します。追加フィールドを持てます。
runCatching
runCatching は例外を捕捉して Result を返します。try-catch の関数型代替手段です。
Result 型
Result<T> は成功値または失敗例外をカプセル化し、map/onSuccess などをサポートします。関数の戻り型としてよく使われます。
リソース管理
use 拡張は Closeable/AutoCloseable リソースを自動で閉じ、Java の try-with-resources と同様です。
require と check
require は引数検証、check は状態検証、error は能動的失敗です。失敗時は例外を投げメッセージを出力します。
Nothing と失敗
Nothing は決して戻らないことを表し、todo/error などの未実装または必ず失敗するパスに使います。型システムが制御フローを理解します。
12.入出力
ファイルの読み書き、Path API、標準入出力、JSON シリアライズ、ファイル操作。
ファイル読み込み
readText はファイル全体を文字列として読み込み、readBytes はバイトを読みます。文字化け防止のため文字集合を指定します。
ファイル書き込み
writeText は上書き、appendText は追記、writeBytes はバイト書き込みです。ディレクトリは先に存在する必要があります。
行単位読み込み
readLines は全行を読み、useLines は遅延ストリームで大ファイルを行単位で処理します。forEachLine は手軽な反復です。
Path API
java.nio.file.Path はパスを扱い、Files は読み書きとディレクトリ操作を提供します。パス結合はクロスプラットフォームです。
標準入力
readln は 1 行を読み、readlnOrNull は null 許容で読みます。読み取り後に必要な型へ手動で変換します。
標準出力
println/print は標準出力に出力し、println は自動的に改行します。エラーストリームにも出力可能です。
JSON シリアライズ
kotlinx.serialization は公式のシリアライズライブラリで、@Serializable でコーデックを生成します。Jackson も代替として使用できます。
ファイル操作
存在判定、削除、名前の変更、サイズ、権限。walkTopDown でディレクトリを再帰的に走査します。
13.よくある落とし穴
日常的な Kotlin 開発で一番踏みやすい落とし穴と正しい書き方、BAD/GOOD 対比。
!! の濫用
!! は null のとき NPE を投げるため避け、安全呼び出し、Elvis、事前の検証で代替してください。
スマートキャスト失敗
可変プロパティや委譲プロパティではスマートキャストが失敗します。代入後に再チェックするかローカル変数に取り出してください。
== と ===
== は構造的等価、=== は参照の同一性を比較します。オブジェクトとプリミティブ型を区別してください。
null 許容の連結
null 許容値を文字列テンプレートに埋め込むと、null は "null" と表示されます。null を明示的に処理する必要があります。
テンプレートの null 許容トラップ
$a.b はプロパティアクセス a.b として解釈されます。null 許容オブジェクトのプロパティアクセスは ${a?.b} を使います。
配列共変のトラップ
Array<String> は Array<Any> に代入でき、実行時に ArrayStoreException が発生する可能性があります。List のほうが安全です。
lateinit 未初期化
初期化前にアクセスすると UninitializedPropertyAccessException が投げられます。アクセス前に isInitialized を確認してください。
スコープ関数の混同
let/apply/run は戻り値が異なります。誤用すると結果ではなくオブジェクトを返します。用途に応じて選んでください。
コンパニオンオブジェクトの混同
コンパニオンオブジェクトのメンバはクラスの静的フィールドではありません。Kotlin はコンパニオンオブジェクトで静的セマンティクスを実現し、Java に公開するには @JvmStatic が必要です。
読み取り専用ビューの誤解
読み取り専用 List インターフェースはビューに過ぎず、基盤の可変コレクションはまだ変更可能です。可変状態を共有するときはコピーしてください。
14.並行処理とコルーチン
スレッド、コルーチン、async/await、Channel、Flow、相互排他ロック、タイムアウト制御。
スレッドの基礎
Thread と thread{} でスレッドを作成します。join で終了を待ちます。同時並行で共有する状態は同期が必要です。
コルーチン入門
launch は軽量コルーチンを起動し、delay はスレッドを占有せずに中断します。runBlocking はコルーチンの完了を待機してブロックします。
async と await
async は並行実行して Deferred を返し、await で結果を取得します。awaitAll は複数のタスクを待ちます。
withContext
withContext はディスパッチャを切り替えてブロッキングタスクを実行します。IO タスクは Dispatchers.IO、計算は Default を使います。
Channel
Channel はコルーチン間でデータを転送し、send/receive は中断関数です。バッファリングとクローズをサポートします。
Flow データストリーム
Flow は非同期コールドストリームで、collect 時に実行されます。map/filter などの演算子と背圧をサポートします。
相互排他と同期
AtomicInteger クラスはロックなしのカウンタを提供します。コルーチン内では Mutex でクリティカルセクションを保護し、スレッド内では synchronized を使います。
タイムアウトとキャンセル
withTimeout はコルーチンの実行時間を制限します。job.cancel は協調的キャンセルで、isActive を確認する必要があります。
15.ネットワークプログラミング
HTTP リクエスト、Ktor Client、JSON 解析、TCP ソケット、HTTP サーバー、WebSocket。
URL 簡単リクエスト
URL.readText は高速な GET です。openConnection でタイムアウトを設定できます。軽量で小さなレスポンスに適しています。
JDK HttpClient
JDK 11+ には HTTP リクエスト送信用の HttpClient が内蔵されています。非同期 sendAsync とレスポンスボディ変換をサポートします。
Ktor Client
Ktor Client はクロスプラットフォームの HTTP ライブラリで、コルーチンと複数エンジンをサポートします。ネットワーク集中タスクに適しています。
レスポンス JSON 解析
HttpClient でレスポンスを取得した後、kotlinx.serialization で JSON を data class にデシリアライズします。
TCP ソケット
ServerSocket がポートを監視し、accept が接続を受け付けます。Socket はバイトストリームを読み書きします。リソースのクローズに注意してください。
HTTP サーバー
JDK 内蔵の HttpServer で軽量な HTTP サービスを作成します。createContext でルートハンドラを登録します。
REST 設計要点
REST はリソースと HTTP メソッドで操作を表現します。data class でリクエストとレスポンスを記述し、ステータスコードの意味を正確にします。
WebSocket
OkHttp は WebSocket クライアントを提供し、onOpen/onMessage コールバックで双方向メッセージを処理します。
16.日付と時刻
Instant、LocalDate、フォーマット、解析、Duration、Period、タイムゾーン付き日時。
現在のタイムスタンプ
Instant.now は瞬間を記録します。currentTimeMillis はミリ秒を取得し、nanoTime は間隔測定用です。
LocalDate
LocalDate は年月日を表し、of/now で作成します。日数の加減、判定、要素の取得。
LocalDateTime
LocalDateTime は日付と時刻を含みます。withHour でフィールド調整、plusHours で加減算。
フォーマット出力
DateTimeFormatter.ofPattern でカスタムフォーマットを定義します。yyyy-MM-dd HH:mm:ss はよく使われるパターンです。
日付の解析
LocalDate.parse が文字列を解析します。カスタムフォーマットには DateTimeFormatter が必要です。失敗時は例外が投げられます。
Duration
Duration はナノ秒ベースの時間量を表し、between で差分を計算します。経過時間の計測に適しています。
Period
Period は年/月/日の差を表し、between で年齢を計算します。ofWeeks/ofDays で周期を構築します。
タイムゾーン付き日時
ZonedDateTime はタイムゾーンを含みます。withZoneSameInstant でタイムゾーンを切り替えます。保存には UTC、表示にはローカルに変換します。
17.プロセスとシステム
コマンドライン引数、環境変数、ProcessBuilder による外部コマンド実行、システム情報、シャットダウンハック。
引数と環境
main の args がコマンドライン引数を受け取ります。System.getenv は環境変数、getProperty はシステムプロパティを読みます。
ProcessBuilder
ProcessBuilder は外部コマンドを実行し、directory で作業ディレクトリを設定します。redirectErrorStream でエラーストリームをマージします。
終了コード
waitFor は子プロセスの完了をブロック待機します。終了コード 0 が成功、exitProcess は現在のプロセスの終了コードを設定します。
子プロセスの出力を取得
inputStream を読んで子プロセスの出力を取得します。waitFor はタイムアウト付きでハングを防ぎ、destroyForcibly は強制終了します。
システム情報
JVM と OS のプロパティを読み取ります。Runtime でメモリを確認できます。ログと診断に使います。
シャットダウンハック
addShutdownHook で JVM 終了時に実行されるタスクを登録します。リソースのクリーンアップと状態の保存に使います。
リアルタイム出力読み込み
子プロセスの出力ストリームを行単位で読み、進捗をリアルタイムに処理します。useLines は自動でストリームを閉じます。
プロセス終了
destroy は穏やかな終了、destroyForcibly は強制終了です。タイムアウト内に終わらなければ強制終了します。
18.正規表現
Regex の基礎、マッチ検索、キャプチャグループ、置換・分割、よく使うパターン、フラグオプション。
Regex の基礎
Regex で正規表現オブジェクトを作成します。matches は全体マッチ、containsMatchIn は含有判定、matchEntire は文字列全体マッチです。
リテラルとオプション
Regex.escape は特殊文字をエスケープします。IGNORE_CASE は大小文字無視、MULTILINE は複数行モードです。
マッチ検索
find は最初のマッチを返し、findAll は全マッチを返します。MatchResult は値、グループ、範囲にアクセスできます。
キャプチャグループ
括弧はキャプチャグループを定義します。groupValues はインデックスで取得し、名前付きグループは groups["name"] を使います。
正規表現置換
replace はすべてのマッチを置換し、replaceFirst は最初のマッチのみ置換します。置換クロージャはキャプチャグループにアクセスできます。
正規表現分割
split(Regex) は正規表現で文字列を分割します。文字列分割より柔軟で、複数の区切り文字をサポートします。
よく使う正規表現
メール、電話番号、IPv4、中国語文字、URL のよく使う正規表現テンプレート。必要に応じて境界を調整します。
フラグオプション
RegexOption 定数はマッチ動作を制御します。インラインフラグ (?i)(?m)(?s) をパターン内に書けます。
19.ビルドと依存関係
Gradle Kotlin DSL、プラグイン、依存関係、テスト、コルーチン、シリアライズライブラリ設定。
Gradle の基礎
build.gradle.kts は Kotlin DSL でビルドを設定します。mainClass で実行エントリを指定します。
Kotlin プラグイン
kotlin("jvm") で JVM プロジェクトを宣言します。jvmToolchain で JDK バージョンを指定します。Wrapper で Gradle を固定します。
依存関係設定
implementation/testImplementation/compileOnly などの設定で依存関係のスコープを制御します。
実行と配布
application プラグインは run/installDist タスクを提供します。run --args でコマンドライン引数を渡します。
テスト
kotlin.test がアサーションを提供します。testImplementation でテストライブラリを導入します。test タスクで全テストを実行します。
コルーチン依存関係
kotlinx-coroutines-core がコルーチンコアを提供します。Android/Swing 版で対応するメインスレッドディスパッチャを提供します。
シリアライズ依存関係
kotlin plugin.serialization プラグインと kotlinx-serialization-json ライブラリで JSON エンコード/デコードを実現します。
パッケージと公開
distribution プラグインが配布可能なアーカイブを生成します。publishToMavenLocal でローカルリポジトリに公開します。
このチートシートについて
このページは Kotlin 2.0 の自己完結型クイックリファレンスで、実プロジェクトでの使用の約 80% をカバーする言語コアと最もよく使う標準ライブラリを扱います。現代的な慣用句に重点を置いています:null 安全(null 許容型 ?、安全呼び出し ?.、エリビス ?:)、data class とシールドクラス、スコープ関数、拡張関数、そしてコルーチンと Flow による非同期並行モデルです。権威あるリファレンスは公式 Kotlin ドキュメントと『Kotlin in Action』を参照してください。 19 のセクションはそれぞれ 1 つのテーマに焦点を当てています —— 最初のプログラムからコルーチン、null 安全、よくある落とし穴まで。各セクションは 8~14 のサブトピック(5~20 行)に分割され、合計約 160 トピックです。コードスニペットは意図的に短く自己説明的で、コメントは簡体字中国語です。 すべての処理はブラウザ内で行われます —— アップロードもトラッキングもありません。このページは GuruToolkit 無料開発者ツールコレクションの一部です。スニペットは自由に利用でき、いかなる保証もありません。
バージョン 2.1.0