Jupyter
binder
JupyterDay 10

binder の紹介

binderとは

binder とは

  • GitHub の repository から(使い捨ての)Jupyter Notebook の環境を構築し
  • その(計算)環境を誰もが利用できる形で提供してくれる

ウェブアプリケーションです。

binder を使うと Dockerfile や requirements.txt といった環境構築設定ファイルに基づいた(使い捨てのクラウド)計算環境をウェブブラウザから利用できます。
またbinderは無償で利用できます。

2日目の Jupyter Advent Calender では Azure Notebooks を紹介しました。
binder と Azure Notebooks はクラウドの計算環境(Jupyter Notebook)を無償で利用できる,という点は同じですが

  • 計算環境を Dockerfile (など)で自由に構築できる
  • ただしその計算環境は永続的な利用を目的としたものではない
  • あくまで「計算環境再現の保証」と「誰もが試用できる計算環境の提供」を目的としている

という点で異なっています。

なぜ binder が生まれたのか

最近では科学技術計算系のリポジトリが GitHub に数多く公開されています。
しかしこれらのリポジトリの動作確認や再利用のためには下記のような困難が付きまといます。

  1. インストールが難しい場合がある。また手間がかかる。
  2. 自前で計算機を用意する必要がある。計算の再現がリポジトリ作者の環境に依存している可能性がある。

1.2. が様々な場で繰り返され(また,失敗に終わ)ることが時間の無駄であることは明白です。
binder はそういった無駄を無くすことを目的(の一つ)として生まれました。

また「科学研究成果の再現性に対する問題意識」も背景にあります。
科学研究だからといって再現性がすべてにおいて確認されているわけではありません。
binder のようなソフトウェア試用のハードルを下げる仕組みがあれば

  • より多くの人がより素早く動作の確認ができるようになり
  • 再現性の改善に大きく寄与するだろう

というわけです。

とりあえず binder の活用例を見る

まずは binder を体感してみましょう。

https://github.com/QuantStack/xeus-cling

の README.md 内 に launch binder というバッジがあります。
これをクリックしてみてください。

下記画像のように binder のサイトに jump した後,しばらく待つと この repository (Xeus という C++ をJupyter Notebook で interactive に実行するための project です) の Jupyter Notebook 環境に到達するはずです。

image.png

ここで binder が行うことは

というものです。
binder が build した Jupyter Notebook 環境はあくまで試用目的のものであって永続的なものではありません。その点ご注意ください。
またこの例では環境構築用の設定 file として environment.yml が用いられていますが,Dockerfile も利用できます。
(repository にこれらが両方ある場合は Dockerfile の内容が優先して使われます。)

まとめ

是非みなさんの repository でも binder による Jupyter Notebook 環境のbuildが可能か試してみてください。
またそれによって

  • ソフトウェアが果たす機能の再現性の確保
  • ユーザがすばやく試用できる環境の提供

といった効用が得られるかどうか試してみてください。