Web

GitHub 上の Jupyter Notebooks を Binder で(実行可能な状態で)共有する

投稿日:2020年4月7日 更新日:

1. Binder とは?

JupyterLab と Notebooks

Web上でプログラムを書いて実行することができる JupyterLab という ツールがあります。このツールを使うと、プログラムコード(Python)・テキスト・画像などを1つの画面内に記述することができ、しかもプログラムコードを実行してその出力結果も画面上に表示させることができます。そのため、プログラムコードを使って何かを説明する場合にとても便利です。

このプログラムコード・テキスト・画像などは、Notebooks と呼ばれるファイル (拡張子 .ipynb) にまとめて保存されます。JSONフォーマットなので、テキストエディタで開くことができます。

JupyterLab の画面

Binder

既に書いたように、JupyterLab は Webページとして利用するツールですが、基本的にはローカルで実行して使います。これをインターネット上に公開できるサービスが Binder です。

Binder はいろいろなリポジトリサービスに対応していますが、GitHub を使った例で、簡単に動作を説明すると、

  1. GitHub で管理しているリポジトリに .ipynb ファイルを含めておく(ローカル上で JupyterLab を使って作成したファイル)。
  2. Binder 側から、GitHub上のそのファイルのURLを指定する。
  3. 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.ymlrequirements.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 を自分が見る・試すという使い方が適しています。

5. 参考

📂-Web

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Chrome

Chrome で拡張機能を使わずにスクリーンショットを撮る方法

Chrome で拡張機能を使わずにスクリーンショットを撮る方法について説明します。

Web Vitals

highlight.js のハイライト処理を Web Workers で実行する

highlight.js のハイライト処理を Web Workers で実行する方法を紹介します。

Web

テンプレートを使って無料でペラサイトが作成できる Strikingly

本ページでは、Strikingly というサービスを紹介します。 主に取り上げているのは 無料プラン です。 目次1. Strikingly とは?2. ウェブページの作成テンプレートを選ぶ雛形として …

Firefox

Firefox の 強化型トラッキング防止機能

目次1. Firefox の強化型トラッキング防止機能2. 用語トラッカー (Trackers)ソーシャルメディアトラッカートラッキングコンテンツサードパーティのクッキー クロスサイトのトラッキングク …

WordPress

WordPress の推奨環境

WordPress を動作させるための推奨環境については、以下のページに載っています。 About » Requirements — WordPress 最初に、 To run WordPress w …