Data Science Early Access Program IntelliJ IDEA Releases

Kotlin Notebook のご紹介

Read this post in other languages:

IntelliJ IDEA 用 Kotlin Notebook プラグインの初の実験的バージョンが公開されました! この記事ではこのプラグインの機能とユースケースをご紹介しますが、その前にプラグインの動作をご覧ください。



Kotlin Notebook プラグインとは?

ノートブックはコード、視覚表示、およびテキストを 1 つのドキュメントにまとめられる対話型ツールです。 ノートブックではコードスニペット(セル)を記述して実行したり、その結果を表示したり、開発者の思考プロセスを 1 か所でドキュメント化したりできます。

ノートブックはすでに広く採用されており、迅速なプロトタイピング、解析、およびデータサイエンスにおいて信頼を得ています。 Kotlin Notebook プラグインは IntelliJ IDEA に対話型開発機能を追加し、多用途性に優れたブラウザーの視覚表示機能と合わせて IDE の Kotlin 言語サポートの全機能を補完します。

このプラグインで実現できることと、その機能を技術的な側面から説明します。

インストール

プラグインを取得するには、IntelliJ IDEA Ultimate の Settings(設定)| Plugins(プラグイン) タブにある Marketplace からインストールする必要があります。 IntelliJ IDEA はバージョン 2023.1.2 以上を使用してください。 以前のバージョンでもプラグインをインストールすることは可能かもしれませんが、動作は不安定になります。

インストールプロセスでは Python プラグインをインストールするように提案されます。この提案を受け入れてください。 お使いのワークステーションに Python がインストールされるわけではないので、ご心配いりません。 Kotlin Notebook には Python プラグインに含まれる UI コンポーネントにいくつかの依存関係があるだけです。 この依存関係は近いうちに削除する予定です。

Kotlin Notebook プラグインは現在、IntelliJ IDEA Ultimate でのみ動作することにご注意ください。

Kotlin Notebook の操作

プラグインをインストールしたら、最初のノートブックを作成できるようになります。 基本的にノートブックはディスク上のファイルでしかないため、New(新規)| Kotlin Notebook(Kotlin ノートブック) アクションを使って Project(プロジェクト)ビューの任意の場所に作成できます。

.ipynb 拡張子のファイルが作成されます。 この拡張子は Jupyter ノートブックをすでにご存知の方にはおなじみでしょう。 Kotlin ノートブック内部の構造、フォーマット、およびプロトコルには同じものが使用されているため、このファイルは GitHub や Jupyter ノートブックまたは Kotlin カーネルがインストールされた JupyterLab で表示可能です。 

作成されたノートブックには最初の空のセルのみが含まれています。 セルはノートブックのメインのビルディングブロックであり、コードまたはテキストのいずれかを含めることができます。 コードセルを実行するには、それを選択して Run(実行)ボタンをクリックするか、Shift + Enter ショートカットを使用できます。 コードが実行され、そのセルの下に出力またはエラーが表示されます。

Markdown セルにテキストを記述することも可能です。ヘッダー、リスト、リンク、LaTeX、画像などの豊富な書式設定オプションがサポートされています。 Markdown セルをレンダリングして書式設定されたテキストを見るには、コードセルの実行と同じ方法でセルを実行します。

ノートブックには対話型の反復処理ワークフローが備わっています。 セルは任意の順序で実行可能で、コードまたはテキストを変更したり、変数を宣言して宣言し直したり、セルを再実行したりして更新された結果を確認できます。 このため、作業の実験、プロトタイピング、およびドキュメント化が楽になります。

コードの説明とドキュメント用にノートブックを使用するメリットを直接体験するため、こちらのノートブックをダウンロードして試すことをお勧めします。 このブログ記事で説明した Kotlin ノートブックのすべての側面を実際に体験できるため、理論と実践を融合できます。

サンプルノートブック

 

ノートブックに慣れるには、ノートブックを使用するのが一番です! ;-)

出力

ノートブックの際だった特徴は、サポートされている出力形式が豊富である点です。

  • テキスト: 最も単純な出力形式で、コードから出力されたステートメント、変数の値、またはテキストベースの出力が含まれます。 セルの結果が他の形式に当てはまらない場合、toString() メソッドによってテキストとして出力されます。
  • HTML: Jupyter ノートブックは HTML を直接レンダリングできるため、リッチテキスト書式設定、テーブルの使用、またはウェブサイトの埋め込みも可能です。
  • 画像: 静的画像を PNG、JPEG、および SVG などの形式で表示できます。 BufferedImage 型の結果もサポートされています。 これらの画像はすべて、ファイル、生成されたグラフ、またはその他のビジュアルメディアからの画像となります。
  • リッチテキスト: Markdown セルはリスト、フォントスタイル、コードブロックなどをサポートしているため、リッチテキスト HTML 出力を生成します。
  • LaTeX: 学術機関で広く使用されている LaTeX という組版システムを使用して数式や方程式を見栄え良くレンダリングできます。
  • エラーとトレースバック: コードにエラーが含まれる場合、ノートブックはエラーメッセージとトレースバックを表示するため、デバッグに必要な詳細情報を得られます。

ノートブックの依存関係

ノートブックにどんな依存関係が生じるかを考慮することも重要です。 標準のライブラリが初期状態で使用できるのは明らかですが、それでは不十分な場合もよくあります。 以下のようにさまざまなオプションが提供されています。

  • プロジェクトの依存関係を利用してノートブックが確実に同じクラスにアクセスできるようにします。
  • ノートブック内でプロジェクト自体のクラスとその他のエンティティを使用することができます。 ただし、このような場合には各セルの実行前に必要に応じてプロジェクトの変更がチェックされ、再コンパイルされます。
  • Gradle スタイルの構文を使って任意のセルにライブラリのパスを指定すると、Maven リポジトリからそのライブラリを読み込むことができます。
USE {
  repositories {
  maven {
    url = "https://my.secret.repo/maven/"
    credentials {
      username = USER
      password = TOKEN
    } 
  }
  dependencies {
    val ktorVersion = "2.0.3"
    implementation("my.secret:artifact:1.0-beta")
    implementation("io.ktor:ktor-client-core-jvm:$ktorVersion")
    implementation("io.ktor:ktor-client-apache-jvm:$ktorVersion")
  }
}
  • または、DependsOn アノテーションによる短縮形式を使用できます。
@file:DependsOn(“io.ktor:ktor-client-core-jvm:$ktorVersion“)
  • Maven のパスを記憶して場所を指定するのは面倒です。 この作業を単純化するため、よりスマートで便利な方法で一般的なライブラリを読み込めるようにしました。 %use マジックコマンドの後に 1 つ以上のライブラリ名を続けるだけで読み込めます。

%use ステートメントが実行されると、ライブラリ依存関係がダウンロードされるだけでなく、デフォルトのインポートもノートブックに追加されます。 また、ライブラリの型のレンダラーが登録され、次のセクションで説明するさまざまな機能が含まれます。

ライブラリの統合

Kotlin ノートブックには豊富なライブラリ統合オプションが用意されています。

ユーザーは以下の 1 行のコードを追加するだけで、それらのオプションを使用できます。

%use libraryName

ライブラリ作成者は同じコマンドを足がかりにして以下を行うことができます。

  • Maven リポジトリからライブラリのバイナリをダウンロードする。
  • 最初のインポートを含める。
  • 初期化中にコードを除外する。
  • 各セルの実行前後にコードを実行する。
  • 各セルのコードを前処理する。
  • 特定の型の変数を作成する際にコールバックを呼び出す。
  • ライブラリで定義されているさまざまな型のカスタムレンダラーを作成する。
  • その他多くの操作。

これらをまとめれば、対話型ユーザーエクスペリエンスをほぼ無制限に作り出すことができます。 Kotlin の static 型や AOT 型を考えた場合、オンザフライ式の自動コード生成機能によってさらなる柔軟性と拡張性を得ることができます。

全体を網羅するドキュメントはこちらからご覧ください。 私たちはすべてのライブラリ作成者にその統合を共通のレジストリで共有し、すべての Kotlin ノートブックユーザーが使用できるようにすることを推奨しています。 特に、一部のライブラリ(WebTauRoboquant Kaliningraph など)ですでにこのアプローチが活用されていることは素晴らしいことです。

共有

チーム内外に限らず、ノートブックを他のユーザーと共有したいことはよくあります。 Kotlin ノートブックは汎用の Jupyter 形式に準拠しているため、任意のノートブックウェブビューアーを使って簡単に配布できます。 特に、GitHub にはこれらをネイティブにレンダリングする機能が備わっています。

また、JetBrains には Kotlin ノートブックをシームレスにサポートする Datalore プラットフォームがあります。 Datalore は機能を共有するだけではありません。ノートブックの実行と編集を可能にし、対話型レポートなどの高度な機能やノートブックの実行をスケジュール設定するオプションが含まれているため、利便性と柔軟性を向上させます。

要点

Kotlin Notebook プラグインの最初の実験的バージョンは IntelliJ IDEA Ultimate のプロジェクトでお試しいただけます!

Kotlin ノートブックの基本をハンズオン形式で学習できるサンプルノートブックをこちらでダウンロードできます。

ライブラリ作成者の方は Kotlin ノートブックとの統合の追加をご検討ください。

問題やバグに遭遇した場合は、プロジェクトの課題トラッカーでチケットを提出してお知らせください。 また、Kotlin Slack の #notebook チャンネルにぜひフィードバックをお寄せください。

Kotlin Notebook をお楽しみください!

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Roman Belov

image description

Discover more