Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2870

JupyterにPython以外のカーネルを導入する

$
0
0
この記事の前提条件 誰でも無料で利用できる、カスタマイズ可能なJupyterであれば、自分が推している言語でカーネルを導入しない手は無いと思い、色々チャレンジしてみました。 ここでは以前投稿した下記の環境で話を進めていきます。 すでに利用可能な処理系のカーネルを導入 まずは、言語本体はすでに利用可能な状態で、カーネルさえインストールすればよいパターンから着手してみたいと思います。 【Bashカーネル編】 手始めに容易に導入出来るBashから行います。こちらカーネルはPython3で実装されているので、pipコマンドでモジュールをインストール出来ます。 Jupyterへのカーネルのインストールも、Pythonモジュールの関数を実行するだけです。 $ pip3 install --user bash_kernel $ python3 -m bash_kernel.install 後はページをリロードすればBashカーネルがLauncherに追加されます。 コンソールを起動してみました。 【JavaScriptカーネル編】 こちらはnode.jsのパッケージで提供されているIJavascriptをyarnコマンドでインストールします。 専用のフォルダにインストールすることもできますが、ホームディレクトリにインストールする方法が簡単です。 カレントディレクトリがホームディレクトリであることとして、下記のコマンドを実行します。 $ yarn add ijavascript 少し時間がかかりますが、ホームディレクトリ直下のnode_modulesディレクトリにインストールが完了します。 次はJupyterへのインストールは専用のコマンドが設けられています。仮に~/node_modules/.binが環境変数PATHに追加されていなければ、フルパスか、npxコマンドで実行しなければなりません。 $ npx ijsinstall $ ~/node_modules/.bin/ijsinstall 同じく、インストール後の設定ファイルも、PATHの設定によっては修正が必要です。 ホームディレクトリ直下の~/.local/share/jupyter/kernels/javascriptというフォルダにkernel.jsonという設定ファイルが作成されています。 もし実行ファイルijskernelにPATHが通っていないのであればこれをフルパスに書き直さなければなりません。 ホームディレクトリにインストールした場合はnpxを挿入することでも解決します。 npxコマンドを追記する例を下記に示します。なお読みやすいようにコードを整形しています。 kernel.json { "argv":[ "npx", "ijskernel", "--hide-undefined", "{connection_file}", "--protocol=5.1" ], "display_name": "Javascript (Node.js)", "language": "javascript", "interrupt_mode": "message" } ここまででページをリロードするとJavaScriptカーネルが起動可能となっています。 コンソールを起動した画面です。 【Typescriptカーネル編】 今やWeb開発において最もスタンダードな言語であるTypescriptにもカーネルが提供されています。node.jsで開発するなら、Typescriptは確実に必要になるはずなので、ぜひ導入しましょう。 こちらもnode.jsのパッケージなので、ほぼ同じ手順です。 $ yarn add itypescript $ npx its --install=local 【Goカーネル編】 GoもCloudShellには組み込み済みなので、少ないステップでカーネルを利用開始できます。Goで実装されており、Goのパッケージ管理機能でインストールします。 今回は専用のディレクトリを作成してからインストール作業を進めた後、不要になったディレクトリのクリーンアップも実施しておきます。 まず下記のコードでパッケージのインストールを行います。 $ GOPATH=~/gophernotes GOBIN=~/go/bin GO111MODULE=on go install -x github.com/gopherdata/gophernotes@latest インストール時に大量のログが出力されるのが煩わしければ-xオプションは省略できます。ビルドした実行ファイルgophernotesはホームディレクトリ直下のgo/binディレクトリに配備されるので、残しておきます。 引き続きJupyterへのインストールですが、特にインストーラーは提供されていないので、手作業です。 $ mkdir -v ~/.local/share/jupyter/kernels/gophernotes $ cp ~/go/pkg/mod/github.com/gopherdata/gophernotes@v0.7.4/kernel/* ~/.local/share/jupyter/kernels/gophernotes/ $ chmod u+w ~/.local/share/jupyter/kernels/gophernotes/kernel.json $ GOPATH=~/gophernotes go clean -x -modcache -cache; rm -rfv ~/gophernotes 後は~/go/binがPATHに含まれていなければ、やはりkernel.jsonの修正が必要です。~/.local/share/jupyter/kernels/gophernotesディレクトリに配備されます。 kernel.json { "argv": [ "gophernotes", "{connection_file}" ], "env": { "PATH": "${PATH}:${HOME}/go/bin" }, "display_name": "Go", "language": "go", "name": "go" } envプロパティで環境変数を設定しています。ページをリロードしましょう。 コンソールの起動画面です。 【Javaカーネル編】 おなじみのJavaです。Jupyterでカーネルを利用するにはバージョン9以降が必要ですが、CloudShellにはバージョン8と11が利用可能なので、大丈夫です。 カーネル本体はJavaで実装されたjarファイルになっています。 $ /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -version openjdk version "1.8.0_252" OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~deb9u1-b09) OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode) $ /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version openjdk version "11.0.13" 2021-10-19 OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb10u1) OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb10u1, mixed mode, sharing) では作業用にディレクトリを作成してダウンロードから実施します。 $ mkdir ~/IJava; cd ~/IJava $ wget https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip -O - | jar xv インストーラーはPythonスクリプトです。いくつかオプションがありますが、カーネルの応答待ち時間の上限が、既定で3秒なのがちょっと短すぎると感じたので、ここでは10秒に延長しました。 $ python ./install.py --user --timeout 10000 $ rm -rfv ~/IJava インストールが終わったら、不要になった作業用ディレクトリは、一括削除で構いません。 これで自動的に生成されるkenel.jsonをそのまま使う場合はバージョン11のほうを既定のJavaに設定しなければなりません。次のコマンドを実行しておきます。 $ sudo update-java-alternatives --set java-1.11.0-openjdk-amd64 update-alternatives: エラー: mozilla-javaplugin.so の alternatives がありません エラーが出ますが問題ありません。必要であれば、これを.bash_loginなどに追記しておきます。 自分でkernel.jsonを作成して対処することもできます。別のアカウントでも共用できるよう自作したものを掲載しておきます。 kernel.json { "argv": [ "/usr/lib/jvm/java-11-openjdk-amd64/bin/java", "-jar", "~/.local/share/jupyter/kernels/java/ijava-1.3.0.jar", "{connection_file}" ], "env": { "IJAVA_TIMEOUT": "10000" }, "display_name": "Java", "language": "java", "interrupt_mode": "message" } 終わりに 今回は比較的導入作業が容易なものを解説してみました。今後、もう少しハードルが高い言語もやってみたいと思っています。

Viewing all articles
Browse latest Browse all 2870

Trending Articles