目次
1. Binder とは?
JupyterLab と Notebooks
Web上でプログラムを書いて実行することができる JupyterLab という ツールがあります。このツールを使うと、プログラムコード(Python)・テキスト・画像などを1つの画面内に記述することができ、しかもプログラムコードを実行してその出力結果も画面上に表示させることができます。そのため、プログラムコードを使って何かを説明する場合にとても便利です。
このプログラムコード・テキスト・画像などは、Notebooks と呼ばれるファイル (拡張子 .ipynb
) にまとめて保存されます。JSONフォーマットなので、テキストエディタで開くことができます。
Binder
既に書いたように、JupyterLab は Webページとして利用するツールですが、基本的にはローカルで実行して使います。これをインターネット上に公開できるサービスが Binder です。
Binder はいろいろなリポジトリサービスに対応していますが、GitHub を使った例で、簡単に動作を説明すると、
- GitHub で管理しているリポジトリに
.ipynb
ファイルを含めておく(ローカル上で JupyterLab を使って作成したファイル)。 - Binder 側から、GitHub上のそのファイルのURLを指定する。
- Binder はそのファイルを取得し、内部で仮想マシンを起動して環境を整え、1の
.pynb
ファイル(Notebook)を実行可能な状態で公開してくれる。
ということをやってくれるサービスが Binder です。Binder 側でアカウントを作るわけではありません。
また、上記の動作は BinderHubと呼ばれるオープンソースなツールにより実現されているのですが、この BinderHub は以下の2つのツールを利用しています。
- JupyterHub:ユーザー認証機能を備え、ユーザー毎に環境を構築して Jupyter Notebook を提供するツール
- Repo2Docker:インターネット上の Git リポジトリを使って Docker イメージを生成するツール
2. Binder 利用の流れ
ここでは GitHub を例に、Binder を使う流れについて説明します。詳細については省きますが、該当する公式マニュアルへのリンクを貼っておきます。
※ あくまで一例です。
(1) ローカル上で Jupyter Notebook を作成する
まずローカル上で、JupyterLab を導入し、Jupyter Notebook を作成します。
JupyterLab 導入の詳細については、Installation — JupyterLab documentation を参照してください。いろいろな導入方法があります。
導入できたら、JupyterLab を起動して Notebook を作成します(詳細は、Starting JupyterLab — JupyterLab documentation を参照してください)。
作成した Notebook は .ipynb
ファイルとして保存されます。
パッケージを使っている場合には、environment.yml や requirements.txtといった設定ファイルも必要になります。
(2) Jupyter Notebook を含むリポジトリをGitHubで管理する
(1) で作成したファイル群を、GitHub を使ったリポジトリで管理します。
(3) Binder上で Jupyter Notebook のURLなどを指定する
Binder にアクセスし、各項目を入力します。
リポジトリのURLを入力します。
ブランチ名もしくはタグ名を入力します。
Notebook ファイルへの相対パスを入力します(任意)。
このボタンを押すと、仮想マシンの作成が開始されます。
作成されるページのURLです。
作成されるページURLへのリンクを持ったバッジです。GitHub側の
README.md
に貼り付けておくと、そのバッジから Binder のページを開くことができ便利です。
(4) Jupyter Notebook のウェブページが生成される
しばらく待つと、仮想マシンが作成され、指定したリポジトリ(のNotebook)が実行可能な状態で表示されます。
(3) で「Notebook ファイルへの相対パス」を入力していなかった場合は、以下のようにファイル一覧が表示されます。
使い方は、ローカルとだいたい同じです。
(5) 出力部分をクリアする
コードの実行結果をすべてクリアしたい場合は、[Cell]メニュー – [All Output] – [Clear] を選択します。
3. その他
Bind側でのURLについて
2-(3) で、Bind 側に生成されたページのURLが表示されていましたが、実際にこのURLにアクセスすると、その場で仮想マシンが立ち上がり、別のURLにリダイレクトされます。つまり、利用者1人1人に、別の仮想マシンが作成されるということです。2-(3) のURLは、その Notebook への入り口のようなものです。
そのため、既に誰かがアクセスしているページのURLに、別の環境からアクセスすると、以下のようなエラーになります。2-(3) で表示されたURLにアクセスしてくださいということです。
メモリについて
1GBのメモリが保証されます(最大2GB)。もし2GBを超えた場合は、仮想マシンが再起動するそうです。少しこわいですね。
参考:Frequently Asked Questions — Binder documentation [リンク切れ]
稼働時間について
ブラウザのウィンドウを閉じてから10分が過ぎると、仮想マシンはシャットダウンします。
参考:Frequently Asked Questions — Binder documentation [リンク切れ]
4. おわりに
ページを開いて内容を理解したりコードを試したりするのに、あまり長い時間が掛かるようなものには適していないようです。
あくまで、自分(もしくは第三者)の作成した少なめの内容の Notebook を誰かにさっと見て貰う・試して貰う、もしくは誰かの Notebook を自分が見る・試すという使い方が適しています。