Skip to content

コードスニペットの実行

Kotlinコードは通常、IDE、テキストエディタ、またはその他のツールで作業するプロジェクトとして構成されています。しかし、関数の動作を素早く確認したり、式の結果を調べたりしたい場合、新しいプロジェクトを作成してビルドする必要はありません。さまざまな環境でKotlinコードを即座に実行できる3つの便利な方法を見てみましょう。

IDE: スクラッチファイルとワークシート

IntelliJ IDEAとAndroid Studioは、Kotlinのスクラッチファイルとワークシートをサポートしています。

  • スクラッチファイル (または単に_スクラッチ_) を使用すると、プロジェクトと同じIDEウィンドウでコードのドラフトを作成し、その場で実行できます。 スクラッチファイルはプロジェクトに縛られません。OS上の任意のIntelliJ IDEAウィンドウから、すべてのスクラッチファイルにアクセスして実行できます。

    Kotlinスクラッチファイルを作成するには、File | New | Scratch Fileをクリックし、Kotlinタイプを選択します。

  • _ワークシート_はプロジェクトファイルです。プロジェクトディレクトリに保存され、プロジェクトモジュールに紐付けられます。 ワークシートは、ソフトウェアの単位を構成しないものの、教育用やデモ用資料のようにプロジェクト内でまとめて保存すべきコードの断片を作成するのに役立ちます。

    プロジェクトディレクトリ内にKotlinワークシートを作成するには、プロジェクトツリーでそのディレクトリを右クリックし、New | Kotlin Class/File | Kotlin Worksheetを選択します。

    DANGER

    KotlinワークシートはK2モードではサポートされていません。同様の機能を持つ代替手段を提供するよう取り組んでいます。

構文ハイライト、自動補完、その他のIntelliJ IDEAコード編集機能は、スクラッチファイルとワークシートでサポートされています。main()関数を宣言する必要はありません。記述したすべてのコードは、main()の本体内にあるかのように実行されます。

スクラッチファイルまたはワークシートにコードを書き終えたら、Runをクリックします。実行結果はコードの反対側の行に表示されます。

Run scratch

インタラクティブモード

IDEは、スクラッチファイルとワークシートからコードを自動的に実行できます。入力を停止するとすぐに実行結果を得るには、Interactive modeをオンに切り替えます。

Scratch interactive mode

モジュールの使用

Kotlinプロジェクトのクラスや関数をスクラッチファイルやワークシートで使用できます。

ワークシートは、自身が配置されているモジュールのクラスや関数に自動的にアクセスできます。

プロジェクトのクラスや関数をスクラッチファイルで使用するには、通常通りimportステートメントでスクラッチファイルにインポートします。その後、コードを記述し、Use classpath of moduleリストで適切なモジュールを選択して実行します。

スクラッチファイルとワークシートはどちらも、接続されているモジュールのコンパイル済みバージョンを使用します。そのため、モジュールのソースファイルを変更した場合、モジュールを再ビルドすると変更がスクラッチファイルやワークシートに反映されます。スクラッチファイルまたはワークシートを実行する前にモジュールを自動的に再ビルドするには、Make module before Runを選択します。

Scratch select module

REPLとして実行

スクラッチファイルまたはワークシート内の特定の式を個別に評価するには、Use REPLを選択して実行します。コード行は順次実行され、それぞれの呼び出し結果が提供されます。後で、自動生成されたres*の名前(対応する行に表示されます)を参照することで、同じファイル内でその結果を使用できます。

Scratch REPL

ブラウザ: Kotlin Playground

Kotlin Playgroundは、ブラウザでKotlinコードを記述、実行、共有するためのオンラインアプリケーションです。

コードの記述と編集

Playgroundのエディタ領域では、ソースファイルに書くのと同じようにコードを記述できます。

  • 任意の順序で独自のクラス、関数、トップレベル宣言を追加できます。
  • 実行可能部分はmain()関数の本体に記述します。

通常のKotlinプロジェクトと同様に、Playgroundのmain()関数はargsパラメータを持つことも、まったくパラメータを持たないこともできます。実行時にプログラム引数を渡すには、Program argumentsフィールドに記述します。

Playground: code completion

Playgroundはコードをハイライト表示し、入力時にコード補完オプションを表示します。標準ライブラリとkotlinx.coroutinesからの宣言を自動的にインポートします。

実行環境の選択

Playgroundは実行環境をカスタマイズする方法を提供します。

Playground: environment setup

JSバックエンドの場合、生成されたJSコードも確認できます。

Playground: generated JS

コードをオンラインで共有

Playgroundを使ってコードを他の人と共有できます。Copy linkをクリックして、コードを見せたい人に送信してください。

また、Playgroundからコードスニペットを他のウェブサイトに埋め込んだり、実行可能にしたりすることもできます。Share codeをクリックすると、サンプルを任意のウェブページやMedium記事に埋め込むことができます。

Playground: share code

コマンドライン: ki shell

ki shell (Kotlin Interactive Shell) は、ターミナルでKotlinコードを実行するためのコマンドラインユーティリティです。Linux、macOS、Windowsで利用可能です。

ki shellは基本的なコード評価機能に加えて、以下のような高度な機能を提供します。

  • コード補完
  • 型チェック
  • 外部依存関係
  • コードスニペット用のペーストモード
  • スクリプトサポート

詳細については、ki shell GitHubリポジトリを参照してください。

ki shellのインストールと実行

ki shellをインストールするには、GitHubから最新バージョンをダウンロードし、任意のディレクトリに解凍します。

macOSでは、以下のコマンドを実行してHomebrewでki shellをインストールすることもできます。

shell
brew install ki

ki shellを起動するには、LinuxおよびmacOSではbin/ki.sh (Homebrewでki shellをインストールした場合はkiのみ) を、Windowsではbin\ki.batを実行します。

シェルが実行されたら、すぐにターミナルでKotlinコードを記述し始めることができます。:help (または:h) と入力すると、ki shellで利用可能なコマンドが表示されます。

コード補完とハイライト

ki shellはTabを押すとコード補完オプションを表示します。また、入力時に構文ハイライトも提供します。:syntax offと入力することでこの機能を無効にできます。

ki shell highlighting and completion

Enterを押すと、ki shellは入力された行を評価し、結果を出力します。式の値は、res*のような自動生成された名前を持つ変数として出力されます。後で、実行するコード内でそのような変数を使用できます。入力された構文が不完全な場合(例えば、条件はあるが本体のないif文など)、シェルは3つのドットを出力し、残りの部分を待ちます。

ki shell results

式の型の確認

複雑な式やよく知らないAPIの場合、ki shellは式の型を表示する:type (または:t) コマンドを提供します。

ki shell type

コードの読み込み

必要なコードが別の場所に保存されている場合、ki shellに読み込んで使用する方法は2つあります。

  • :load (または:l) コマンドでソースファイルを読み込む。
  • :paste (または:p) コマンドでペーストモードでコードスニペットをコピー&ペーストする。

ki shell load file

lsコマンドは利用可能なシンボル(変数と関数)を表示します。

外部依存関係の追加

標準ライブラリに加えて、ki shellは外部依存関係もサポートしています。これにより、プロジェクト全体を作成することなく、サードパーティライブラリを試すことができます。

ki shellでサードパーティライブラリを追加するには、:dependsOnコマンドを使用します。デフォルトでは、ki shellはMaven Centralで動作しますが、:repositoryコマンドを使用して接続すれば他のリポジトリも使用できます。

ki shell external dependency