Sageでもjupyterのnotebookがスタンダードになり、Sageだけでなく、 Pandasやtheano等のpythonパッケージを使ったnotebookが増えてくると思います。
Vagrantを使って仮想マシンに構築したSageの紹介とこれまで作成したnotebookをjupyterに移植し、 紹介して行きます。また、必要なパッケージのインストール方法についても適宜説明します。
今回使用するVagrantの仮想マシン(Vagrantではboxと呼びます)の作成方法については、 以下のリンクで紹介しています。
環境構築に必要なアプリケーションは、以下の2つです。
#ref(): File not found: "vbox'''logo2'''gradient.png "VirtualBox Logo"" at page "https://www.virtualbox.org/graphics"
VirtualBoxは、以下のダウンロードサイトからお使いの環境に合わせてダウンロードし、インストールしてください。
Vagrant(ベイグラント)は、以下のダウンロードサイトからお使いの環境に合わせてダウンロードし、インストールしてください。
準備ができましたので、SageMathをVirtualBoxの仮想マシンで動くようにします。
Githubの以下のURLからjupyter用のnotebookとvagrant環境構築用ファイルをダウンロードします。
ターミナルソフトを起動し、以下のGitコマンドを使って必要なファイルをダウンロードします。 ```bash $ git clone https://github.com/take-pwave/jupyter.git ``` Gitでcloneを作った場合、ブランチを作成しておくと追加されたnotebookの取り込みが楽になります。
```bash $ cd jupyter $ git branch develop $ git checkout develop ```
gitコマンドが使えない場合には、以下のURLの「Clone or download」をクリックし、Download ZIPを選択してください。
Vagrantには、自分の作成した仮想マシンをからboxファイルを作成するpackage機能が提供されています。 Ubuntu14.04にSageMathをインストールして、以下のパッケージを追加したboxを私の公開しているSage サーバ(www15191ue.sakura.ne.jp)にアップしました。
私の公開しているSageMath環境には、以下のパッケージをインストールしています。
jupyterをダウンロードしたディレクトリをDOWNLOAD_DIRとします。 ターミナルソフトを起動して、以下のコマンドを入力してください($ の後のコマンドを入力)。
```bash $ cd DOWNLOAD_DIR/MySageMath $ vagrant up ```
Sageサーバからboxファイルがダウンロードされ、仮想マシンが起動します。
boxをダウンロードしている途中にtime outでエラーになった場合には、再度vagrant upを実行すると 以前ダウンロードしたファイルに追加して処理します。
3.81GBのファイルをダウンロードするため、完了するまでかなり時間が掛かります。
ダウンロードが終わり、仮想マシンが起動すると以下の様な画面が表示されます。 ``` ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 8888 (guest) => 8888 (host) (adapter 1) default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations... ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... ==> default: Mounting shared folders...
default: /vagrant => /Users/take/proj/jupyter/MySageMath
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. ```
仮想マシンを終了するには、以下のコマンドを入力してください($ の後のコマンドを入力)。
```bash $ vagrant halt ```
ブラウザーで以下のURLを開きます。 ``` http://localhost:8888/ ```
jupyterの初期画面が表示されます。
#ref(): File not found: "jupyter_screen.png" at page "images"
新しくノートブックを作成する場合には、ここで表示されているnotebookディレクトリ中で作成してください。
ブラウザーに表示された「notebook」をクリックし、その中の「GettingStart.ipynb」をクリックしてください。
以下の様に「GettingStart」ノートブックの内容が表示されます。
#ref(): File not found: "GettingStart_nb.png" at page "images"
File, Edit等のメニューが並んでいる右端には、現在実行しているカーネル(ここではSageMath 7.2)の種類が表示されます。 もしも現在稼働中のカーネルが異なっている場合には、「Kernel」→「Change kernel」メニューから「SageMath 7.2」を選択してください。
jupyterのnotebook内に作成されたファイルは、vagrantのファイル共有機能を使って仮想マシンを実行しているマシン(ホストマシン)のDOWNLOAD_DIR/MySageMath/notebookに保存されます。
作成したノートブックのバックアップやファイルの追加・削除もホストマシンで簡単にできます。
#ref(): File not found: "notebook_dir.png" at page "images"
これまで作成したSageのノートブックをjupyterに移植するため、Githubの内容は日々更新されます。
gitコマンドを使って安全にGithubの更新情報を取り込む方法を説明します。
最初に作業中のブランチがdevelopであることを確認します。 developに*が付いており、作業中のブランチがdevelopであることを確認できました。 ```bash $ git branch
master``` 次に、現在の作業をコミットします。ここではコミットのコメントを'temp snap'としました。 ```bash $ git add . $ git commit -m 'temp snap' ```
ブランチをmasterに変更し、Githubの更新を取り込みます。 ```bash $ git checkout master $ git pull ```
再度、ブランチをdevelopに切換、masterへの変更をdevelopに取り込みます。 ```bash $ git checkout develop $ git rebase master ```
複数のマシンでSageMathを使いたい場合、毎回boxファイルのダウンロードに時間が掛かってしまい大変です。
自分の環境のMySageMath仮想マシンからboxファイルを作成し、他のマシンで使用する方法を紹介します。
以下のコマンドで現在使用しているMySageMath仮想マシンのboxファイルを作成します。 ```bash $ cd DOWNLOAD_DIR/MySageMath $ vagrant package ==> default: Clearing any previously set forwarded ports... ==> default: Exporting VM... ==> default: Compressing package to: /Users/take/proj/jupyter/MySageMath/package.box
```
これで、package.boxファイル(3.81GB)が出来上がります。 USBメモリ等でpackage.boxを他のマシンにコピーし、以下のコマンドを使って取り込みます。 作業が完了すれば、package.boxは不要なので削除します。 ```bash $ vagrant box add MySageMath package.box $ rm package.box ```
MySageMathのboxにインストールされている(あるいはしたい)パッケージは、 以下のページを参照してください。