プロジェクト

全般

プロフィール

Hello Kotlin

はじめに

IntelliJ IDEA Community EditionでKotlinのHello worldプログラムを作って動かすまでの流れを紹介します。
Kotlinは、JavaVM上で実行可能なJavaバイトコードにコンパイルされます。開発環境としては、Kotlin開発機能を標準で備えるIntelliJ IDEAを使います。
本記事のIntelliJ IDEAに関する操作および画面は、Pleiadesで日本語化したもので記述しています。

環境

  • Windows 10 Home 64bit 日本語版OS
  • IntelliJ IDEA 2018.1 Community Edition
  • JDK 10(Kotlinプログラムのコンパイルと実行に使う)
    • IntelliJ 自体は、内蔵のJRE 1.8 で動いています。

HelloWorldプロジェクト

IntelliJ IDEAのプロジェクト

IntelliJ IDEAを起動します。プログラムを作成するには、まずプロジェクトを作成します。IntelliJ IDEAのプロジェクトは、モジュールを束ねるまとまりとなるので、プロジェクトには1つ以上のモジュールが含まれます。ソースファイルを保持し、プログラムをビルドし成果物を生成する単位はモジュールとなります。

プロジェクトの作成

  • [ファイル] > [新規] > [プロジェクト]を選択すると、「新規プロジェクト」画面が表示されます。
  • 左側ペインで[Kotlin]を選択、右側ペインで[Kotlin/JVM]を選択、[次へ]ボタンを押下します(次に画面を示します)。

newProject-1.png

  • プロジェクト名とプロジェクトのロケーションを指定します(次に画面を示します)。
    プロジェクト名とプロジェクトのロケーションの末尾のディレクトリ名は一致させておくと分かり易いでしょう。
    プロジェクトJDKには、

newProject-2.png

  • 同画面の左下にある[詳細設定]をクリックします(次に画面を示します)。

newProject-3.png

  • すると、モジュールの作成情報が表示されます。デフォルトではプロジェクトと同じ名前のモジュールが、プロジェクトと同じ場所に生成されています。次に画面を示します。

newProject-4.png

  • [完了]ボタンを押します。作成したプロジェクトを開くと次の画面になります。
    左側ペインのトップのHelloWorldは、モジュールとなっています。srcの下は空です。

StartProject-1.png

HelloWorldソースファイルを作成

srcの下にコンテンツ(Kotlinソースファイル)を作成するには、左側ペインで[src]を選択してから[ファイル]メニュー > [新規] > [Kotlinファイル/クラス]を選択します。「新規Kotlinファイル/クラス」画面が表示されます。

このときのメニュー表示を次に示します。

new_kotlinfile-1.png

左側ペインで、[src]ではなく[HelloWorld]を選択した状態で、[ファイル]メニュー > [新規]を選択したときのメニューを次に示します。

new_from_module-1.png

Kotlinファイルがメニューに存在しません。このあたりの違いは慣れないと戸惑いますね。

「新規Kotlinファイル/クラス」画面で、名前(HelloWorld)を入れます。

StartProject-4.png

srcディレクトリの下にHelloWorld.ktファイルが生成されます。

StartProject-5.png

HelloWorldコードの記述

Kotlin/JVM プログラムはコンパイルするとJavaバイトコードに変換されます。Javaバイトコードでは、プログラムを実行するときの入口となるのはmainメソッドです。このmainメソッドは、static メソッドです。

一方、Kotlinではクラスのメソッドはすべてインスタンスメソッドとなります。JavaバイトコードでstaticなメソッドとなるのはKotlinではトップレベル関数です。そこでHelloWorldソースファイルのトップレベルにmain関数を定義します。

programming-1.png

簡単な文法説明

fun main(args: Array<String>) = println("Hello, Kotlin world!")
  • Kotlinは、トップレベル関数およびクラスのメソッドを定義する際、funキーワードを先頭に指定します。
  • funキーワードに続いて関数/メソッド名を記述します。戻り値型は引数の定義の後になりますが、戻り値がない(Unit型)場合は省略できます。
  • 引数は、名前を先に、型を後に記述します。
  • 配列はArray型(クラス)で表します。文字列型の配列はArrayの型パラメータにStringを指定します。
  • 関数/メソッドの本体が式1つのみであれば、ブロック本体ではなく式本体で記述できます。式本体で記述するときは、波括弧とreturn文を省略し、=記号に続いて式を記述します。
  • printlnはKotlinの関数で、JavaのSystem.out.printlnをラップしています。
  • セミコロンは不要です。

省略(簡潔な記述)をせずにべたに記述すると、次のようになります。

fun main(args: Array<String>): Unit {
    println("Hello, Kotlin world!")
}

Kotlinのコーディング規約の適用

Coding Conventions - Kotling Programming Language に記載されているコーディング規約でこのHelloWorldプログラムに適用している事項を列挙します。
https://kotlinlang.org/docs/reference/coding-conventions.html

  • ファイル名はアッパーキャメルケース
  • 関数名はローワーキャメルケース
  • 開き波括弧は開始行の行末、閉じ波括弧は独立した行に置く
  • インデントは空白4個
  • 関数定義、関数呼び出しの開き丸括弧の前に空白は入れない
  • 開き丸括弧の後には空白は入れない
  • 閉じ丸括弧の前には空白は入れない
  • 型パラメータの三角括弧の前後には空白は入れない
  • 定義名と型名の間に置くコロン(:)の前には空白は入れない
  • コロン(:)の後には空白を1つ入れる
  • 関数の本体が1つの式で構成されるときは、式本体(expression body)を使うべし

注) 開き波括弧の前に空白を入れる記載が見当たらない

ビルド(クラスファイルの生成)

[ビルド]メニュー > [プロジェクトのビルド]を選択するとビルドが開始します。ビルド結果は次のように生成されます。

build-1.png

実行

最初[実行]メニュー を選択すると、サブメニューの[実行]が非活性化になっており、選択できません。

runmenu-1.png

最初に[構成の編集]をする必要があります。一番お手軽な方法は、main関数の定義行の行番号のすぐ後ろにある三角アイコンをクリックします。
すると、そのmain関数が定義されるファイル(コンパイル後main関数が定義されるクラスになる)を実行するメニューが表示されます。

runmenu-2.png

この実行をクリックするとプログラムが実行されます。

runmenu-3.png

一度実行するファイル(クラス)が選択されると、[実行]メニューの[実行]が活性化されます。次からは[実行]メニューからも実行できるようになります。

runmenu-4.png

ビルド(実行可能JARファイルの生成)

作ったプログラムを配布して別なマシンで実行する方法にはいくつかありますが、実行可能JARファイルを用意するのがよいでしょう。
IntelliJ IDEAのプロジェクト設定で実行可能JARファイルを生成するように指定します。

  • [ファイル]メニュー > [プロジェクト構造] を選択し、「プロジェクト構造」画面を開きます。
  • 「プロジェクト構造」画面の左側ペインの [成果物]を選択、中側ペインの[+]をクリックします。

executablejar-1.png

  • クリックするとポップアップメニューが表示されます。[JAR] > [依存関係を持つモジュールから]を選択します。

executablejar-2.png

  • 「モジュールからJAR作成」画面で、メイン・クラス欄の右端の[...]をクリックします。

executablejar-3.png

  • 「メイン・クラスを選択」画面で、HelloWorldKtを選択し[OK]ボタンを押します。

executablejar-4.png

  • 「モジュールからJAR作成」画面で、メインクラスの指定、[ターゲットJARに抽出]するを選択し[OK]ボタンを押します。
    ライブラリーからのJARファイルをターゲットJARに抽出するを選択すると、プロジェクトで作成するプログラムと依存ライブラリのクラスが1つのJARファイルにまとめられる、いわゆるFAT JARファイルが生成されます。

executablejar-5.png

  • 「プロジェクト構造」画面に設定結果が表示されます。

executablejar-6.png

  • [ビルド]メニュー > [成果物のビルド]を選択すると、定義したJARファイルのビルドメニューが表示されます。

executablejar-7.png

  • [Build]を選択すると、出力ディレクトリ(out)の下にartifacts/HelloWorld_jarディレクトリが生成、その中にHelloWorld.jarが生成されます。

executablejar-8.png

このJARファイルはKotlinのランタイムも含まれているので、そのままJavaVM上で実行することができます。