ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Kotlin は、JetBrains(IntelliJ IDEA を作っている会社)が 2011 年 7 月に発表し、2016 年 2 月に 1.0 をリリースした静的型付けプログラミング言語です。「Java の良さを残しつつ、Java の不満点を解決する」という設計思想で生まれ、JVM バイトコードにコンパイルされ Java と 100% 相互運用できることが最大の特徴です。Java のクラスを Kotlin から呼べますし、その逆もできます。さらに JS(Kotlin/JS)・ネイティブ(Kotlin/Native)・WASM 出力にも対応するマルチプラットフォーム言語に発展しました。
普及の決定打は 2017 年 5 月、Google I/O で Android の公式言語に認定されたことです。さらに 2019 年には Google が「Android development is now Kotlin first」と宣言し、新規 Android アプリは Kotlin で書くのが標準となりました。サーバーサイドでも Spring Boot が公式に Kotlin をサポートし、Ktor(JetBrains 製の Web フレームワーク)と並んで採用が拡大しています。
ファイル拡張子は通常のソースが .kt、スクリプトモードのソースが .kts です。.kts は Gradle の Kotlin DSL(build.gradle.kts)として広く使われており、Java プロジェクトでも「ビルド設定だけは Kotlin で書く」というスタイルが定着しつつあります。
Kotlin の核心機能は Null Safetyです。型レベルで String(null 不可)と String?(null 許容)を区別し、null 許容型を呼び出す際は ?.(セーフコール)や ?:(エルビス演算子)を使うことを強制します。これにより、Java で頻発する NullPointerException がコンパイル時にほぼ撲滅されます。他にもデータクラス(equals / hashCode / toString / copy 自動生成)・拡張関数・コルーチン(軽量非同期)・シールクラス・スマートキャストなど、現代的な機能が揃っています。
ファイル種類とビルド成果物
| 拡張子 | 役割 |
|---|---|
.kt | Kotlin 通常ソース |
.kts | Kotlin スクリプト(main 関数不要、トップレベル文が直接実行可) |
.class | kotlinc でコンパイルされた JVM バイトコード |
.jar | 配布用 JAR(Java と同じ ZIP 形式) |
build.gradle.kts | Gradle ビルド定義(Kotlin DSL) |
settings.gradle.kts | Gradle プロジェクト設定 |
ビルドフロー: main.kt → kotlinc → .class ファイル群 → .jar → JVM 実行。Android 向けは追加で D8 / R8 が .class を Dalvik バイトコード(.dex)に変換します。
「Hello, World」
// Hello.kt
fun main() {
println("Hello, World")
// Null Safety
val name: String? = null
println(name?.length ?: "name is null")
// データクラス
data class User(val name: String, val age: Int)
val u = User("Kotlin", 13)
val u2 = u.copy(age = 14)
println(u2) // User(name=Kotlin, age=14)
// コレクションとジェネリクス
val nums: List<Int> = listOf(1, 2, 3)
val doubled = nums.map { it * 2 }
println(doubled) // [2, 4, 6]
}
$ kotlinc Hello.kt -include-runtime -d hello.jar
$ java -jar hello.jar
Hello, World
# スクリプトとして直接実行(.kts)
$ kotlinc -script script.kts
パッケージ管理・ビルドツール
Kotlin プロジェクトのビルドは Gradle(Kotlin DSL 推奨)か Maven を使います。依存は Maven Central や JetBrains の自社リポジトリから取得します。Android 開発では Android Studio に統合された Gradle が標準です。
// build.gradle.kts
plugins {
kotlin("jvm") version "1.9.22"
application
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
testImplementation(kotlin("test"))
}
application {
mainClass.set("HelloKt")
}
gradle build # ビルド
gradle run # 実行
gradle test # テスト
関連言語との比較
| 項目 | Kotlin | Java | Swift | Scala |
|---|---|---|---|---|
| Null 安全 | あり(String?) | なし | あり(String?) | あり(Option) |
| 実行環境 | JVM / JS / Native | JVM | iOS / macOS ネイティブ | JVM / JS |
| 非同期 | コルーチン(suspend) | Virtual Thread (21+) | async / await | Future / ZIO / cats-effect |
| 記述量 | 少ない | 多い | 少ない | 少ない |
| 主用途 | Android / サーバー | エンタープライズ | iOS / macOS | ビッグデータ / 関数型 |
注意点・落とし穴
- プラットフォーム型:Java から呼ばれる型は null 許容かどうか不明な「プラットフォーム型」
String!になる。Kotlin 側で安全側に明示する必要がある。 - コンパイル速度:Java よりも遅め。大規模 Android プロジェクトでは Gradle ビルドが分単位になることもある。
- 型消去の継承:JVM 上で動く以上、ジェネリクスは Java 同様に型消去(
inline fun+reifiedで部分的に回避可)。 - コルーチンのキャンセル伝播:構造化並行性(structured concurrency)を理解しないとリーク・取りこぼしが起きる。
- data class の継承不可:データクラスは
final相当で継承できない(設計意図ではあるが初学者が驚く点)。
関連リンク
- プログラミング・スクリプト(親カテゴリ)
- ファイル拡張子とは(概論)
- プログラミング言語(カテゴリ)
- Java(.java / .class / .jar)
- Swift(.swift)
- アーカイブ・圧縮形式(.jar は ZIP)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?