Kotlin/実行方法

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

注釈[編集]

Kotlinは、コンパイルのターゲットごとに大別すると

がある。 それぞれのターゲットで標準ライブラリの関数が存在しない場合や、シグニチャが異なる場合があるため、疑義が生じた場合はJetBrainsのマニュアルを参照のこと。

Kotlin/JVM[編集]

実行方法[編集]

hello.kt のように、ファイル名の末尾に拡張子.ktをつける。Windows版に拡張子が必要なのは当然として、Linux版kotlin用のファイルでも拡張子.kt をつける必要がある。(※ Fedora32で2020年6月に確認. Windows版kotlinも同様)


さてWindows版でもLinux版でも、コマンド

kotlinc ファイル名.kt -include-runtime -d ファイル名.jar

jar形式にコンパイルできる。


たとえば、ソースコードのファイル名が hello.kt なら

kotlinc hello.kt -include-runtime -d hello.jar

になる。

Kotlin を Java仮想マシンで動作させる場合には、Java仮想マシンが解釈できるjar形式に変換する必要がある。


hello.jar を作成してから、jarファイルを実行する。

kotlin hello.jar

で実行できる。

つまり、

kotlin ファイル名.jar

である。


まとめると、

kotlinc ファイル名.kt -include-runtime -d ファイル名.jar
kotlin ファイル名.jar

で実行することができる。

シェルスクリプトで実行する場合[編集]

コマンドラインの作業を、シェルスクリプトという技法を使うことで自動化できる。

Kotlinの作業の場合、コンパイルのコマンドが長くなるので、手打ちで毎回、コマンドを入力するのは、だいぶ面倒である。

(すべてのファイル名を「hello.kt」で使い回せば、コマンド手打ちの必要は無くなるが、しかし実務では管理上の問題を引き起こしかねない。そこで、シェルスクリプトが便利である。)

ただし、そのOSに付属したシェルスクリプト実行ツールが必要である。

GNU/Linuxの場合[編集]

GNU/Linuxの場合、メジャーなLinuxディストリビューションに Bash (バッシュ)というシェルが入っているので、シェルスクリプトでBashに命令スクリプトを与えて自動化できる。

GNU/Linuxの場合のコード例(シェルスクリプト)
#!/bin/bash
filename="hello"
kotlinc ${filename}.kt -include-runtime -d ${filename}.jar
kotlin ${filename}.jar


実行方法

コマンド

bash シェルスクリプトのファイル名.sh
解説

冒頭の1行目の

#!/bin/bash

Shebangといい、スクリプトを実行するインタープリタ(この場合は /bin/bash )の所在を指定する。 bash のプロンプトから、bash のスクリプトを実行する場合は、Shebangがなくても同じ様に bash で実行されるが、bash 以外のシェル(例えば、tcsh)からShebangのないbashのシェルスクリプトを実行しようとすると、tcsh のシェルスクリプトとして実行されてしまい、期待した結果は得られない。 このように、

次に、2行目

filename="hello"

でシェル変数「filename」に文字列「hello」を代入している。

注意点として、けっして

filename = "hello" ※ ダメな例

のようにスペースを空けてはならない(イコールの前後にスペースを空けてはいけない)。もしスペースを空けてしまうと、代入ではなくコマンド「filename」として認識してしまい、エラーメッセージ「行 2: filename: コマンドが見つかりません」のようにエラーになってしまう。

このファイル名"hello"の部分を、hello以外のファイルのコンパイルなどを自動化したい場合には、都度スクリプトファイルにハードコードされたファイル名を書き変えるのではなく、コマンドライン引数や環境変数を使ってスクリプトにファイル名を渡すべきであろう。

また、シェルスクリプトによる方法では、変更のないソースコードまでコンパイルしてしまうので、makeやantの様なビルドツールを使うことも検討に値する。

Windowsの場合[編集]

コマンドプロンプトではバッチファイルというのが使える。

バッチファイルのコード例
set filename=hello
call kotlinc %filename%.kt -include-runtime -d %filename%.jar
call kotlin %filename%.jar
解説

実は、Windowsにおけるkotlincコマンドおよびkotlinコマンドの正体はバッチファイルである

そして、Windowsのバッチファイルは、バッチファイルから他のバッチファイルを呼び出すと、そこで呼び出さされたバッチファイルを実行したら、標準の仕様では動作が終了してしまう仕様である。

この終了を回避するには、call キーワードを使って、バッチファイルを呼び出さなければいけない。

注意点

代入する文字列「hello」などに引用符はつけない。

変数の呼び出しは、「%変数名%」のように「%」で囲む。


PowerShellの方法

Windowsの場合、PowerShellというのがWindows7以降の最新バージョンには入っているので、そのPowerShellというのを使ってシェルスクリプトを書けばいいのだが、しかしセキュリティ上の理由でWindowsでは標準設定ではPowershellシェルスクリプトの実行が出来ないようになっている。

なので、バッチファイルを使うか、いっそWindowsよりもLinuxでシェルスクリプトを実行するほうが良い。


参考: Hello World[編集]

実行対象のファイルの例として、Hello World のコードを示す。(文法の単元で説明しているコードと同じ内容。)

// Hello.kt
fun main(args: Array<String>) {
    println("Hello, World!")
}