BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Kiは、新しい、より柔軟なKotlinインタラクティブシェルである

Kiは、新しい、より柔軟なKotlinインタラクティブシェルである

原文(投稿日:2021/04/02)へのリンク

KiはKotlin向けの新しいインタラクティブシェルである。これは、開発者が使用する言語で素早く実験を行い、REPL主導の開発を活用しやすくすることを目的としている。

Kotlinで利用できるインタラクティブシェルはKiだけではない。むしろ、JetBrainsのエンジニアであるPasha Finkelshteynが説明するように、既存のKotlinインタラクティブシェルの制限を打開しようとするものである。

kotlincには、オートコンプリートや構文の強調表示はありません。Kotlin REPLは非常に強力ですが、Intelli JIDEAを開く必要があります。これは常に使いやすいものであるとは限りません。

Kiは、KotlinコレクションAPIへのアクセスをシンプルにすることを目的としたオートコンプリートをサポートしている。その1つは外部の依存関係であり、Maven Centralから依存関係をロードしてローカルで利用できるようにする特別な:dependsOn構造よるものである。もう一つは、型推論であり、任意の式の型を表示できる組み込みのtコマンドも追加で提供されている。

さらに、kiは、大きなコードスニペットをより適切に処理するための特別な貼り付けモードを提供する。このモードは、コマンド:pasteを実行することで有効化できる。これにより、REPLはコードのチャンク全体を取り込で、すぐに解釈することができ、また、後で参照することができる。

kiのもう1つの興味深い機能は、スクリプトのサポートである。これにより、セッションをディスクに保存し、:lコマンドを使ってロードし直すことができる。スクリプトをロードした後、:lsコマンドは、関数、クラス、変数などを含む、インポートされたすべてのシンボルのリストを表示する。これは特に、毎回、必要なすべての依存関係をロードする雑務から解放するための助けとなるとFinkelshteynは言っている。

@file:DependsOn("com.GitHub.kittinunf.fuel:fuel:2.3.1")
import com.GitHub.kittinunf.fuel.*
import java.net.*

fun sendGet(address: String) {
    val url = URL(address)

    with(url.openConnection() as HttpURLConnection) {
        requestMethod = "GET"  // optional default is GET

        println("Sent GET request to URL : $url; Response Code : $responseCode")

        inputStream.bufferedReader().use {
            it.lines().limit(5).forEach { line ->
                println(line)
            }
        }
    }
}

kiは、プラグインシステムの上に構築されている。そのため、特定のシナリオをカバーするように拡張可能である。実際、:l:ls:pasteなどのすべてのkiコマンドは、プラグインとして実装されている。

最後に、JetBrainsは、Apache Sparkを特別にサポートする専用バージョンのkiも作成した。その主な利点は、起動時にローカルSparkコンテキストを自動的に作成し、Apache Sparkクエリの実行を大幅に高速化することである。

kiはオープンソースであり、GitHubおよびバイナリディストリビューションで入手できる。

この記事に星をつける

おすすめ度
スタイル

BT