著者は、 Write for DOnations プログラムの一環として、 Apache SoftwareFoundationを選択して100ドルの寄付を受け取りました。

序章

Jupyter Notebook は、 Python R Julia 、およびScala Project Jupyterの製品であるJupyterNotebookは、コードの小さなスニペットを記述して実行し、結果を返すことができるため、反復コーディングに役立ちます。

Jupyter Notebookは、単に「ノートブック」と呼ばれるノートブックドキュメントを作成する機能を提供します。 Jupyter Notebookから作成されたノートブックは、リッチテキスト要素、方程式、コード、およびそれらの出力(図、表、インタラクティブプロット)を含む、共有可能で再現性のある調査ドキュメントです。 ノートブックは、生のコードファイル、HTMLまたはPDFドキュメントにエクスポートしたり、インタラクティブなスライドショーやWebページを作成したりするために使用することもできます。

この記事では、Ubuntu 18.04WebサーバーにJupyterNotebookアプリケーションをインストールして構成する方法と、ローカルコンピューターからアプリケーションに接続する方法について説明します。 さらに、JupyterNotebookを使用してPythonコードの例を実行する方法についても説明します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • 1つのUbuntu18.04サーバーインスタンス。 このサーバーには、sudo権限とファイアウォールが構成されたroot以外のユーザーが必要です。 初期サーバーセットアップガイドに従ってこれをセットアップします。
  • Python 3、pip、およびサーバーにインストールされているPythonvenvモジュール。 これを行うには、Python3をインストールしてUbuntu18.04にローカルプログラミング環境をセットアップする方法に関するチュートリアルのステップ1と2に従います。
  • JupyterNotebookへのアクセスに使用するローカルコンピューターで実行されている最新のWebブラウザー。

さらに、ローカルコンピューターでWindowsを実行している場合は、サーバーへのSSHトンネルを確立するために、ローカルコンピューターにPuTTYをインストールする必要があります。 WindowsでPuTTYを使用してSSHキーを作成する方法のガイドに従って、PuTTYをダウンロードしてインストールします。

ステップ1—JupyterNotebookをインストールする

ノートブックは、コードの小さなスニペットの作成、実行、および結果の表示に使用されるため、最初にプログラミング言語のサポートを設定する必要があります。 Jupyter Notebookは、言語固有の kernel を使用します。これは、コードを実行してイントロスペクトするコンピュータープログラムです。 Jupyter Notebookには、さまざまな言語の多くのカーネルがあり、デフォルトはIPythonです。 このチュートリアルでは、IPythonカーネルを介してPythonコードを実行するようにJupyterNotebookを設定します。

前提条件のセクションにリンクされているチュートリアルに従っていると仮定すると、 Python 3、pip、および仮想環境がインストールされている必要があります。 このガイドの例は、仮想環境に「my_env」という名前を付ける、Python 3のインストールに関する前提条件のチュートリアルで使用されている規則に従いますが、名前を自由に変更してください。

仮想環境をアクティブ化することから始めます。

  1. source my_env/bin/activate

これに続いて、プロンプトの前に環境の名前が付けられます。

仮想環境にいるので、先に進んでJupyterNotebookをインストールします。

  1. python3 -m pip install jupyter

インストールが成功すると、次のような出力が表示されます。

Output
. . . Successfully installed MarkupSafe-1.0 Send2Trash-1.5.0 backcall-0.1.0 bleach-2.1.3 decorator-4.3.0 entrypoints-0.2.3 html5lib-1.0.1 ipykernel-4.8.2 ipython-6.4.0 ipython-genutils-0.2.0 ipywidgets-7.2.1 jedi-0.12.0 jinja2-2.10 jsonschema-2.6.0 jupyter-1.0.0 jupyter-client-5.2.3 jupyter-console-5.2.0 jupyter-core-4.4.0 mistune-0.8.3 nbconvert-5.3.1 nbformat-4.4.0 notebook-5.5.0 pandocfilters-1.4.2 parso-0.2.0 pexpect-4.5.0 pickleshare-0.7.4 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pygments-2.2.0 python-dateutil-2.7.3 pyzmq-17.0.0 qtconsole-4.3.1 simplegeneric-0.8.1 six-1.11.0 terminado-0.8.1 testpath-0.3.1 tornado-5.0.2

これで、JupyterNotebookがサーバーにインストールされました。 次に、アプリケーションの実行方法について説明します。

ステップ2—JupyterNotebookを実行する

Jupyter Notebookは、SSHトンネルとお気に入りのWebブラウザーを使用してローカルマシンから接続できるように、VPSから実行する必要があります。

Jupyter Notebookサーバーを実行するには、次のコマンドを入力します。

  1. jupyter notebook

このコマンドを実行すると、次のような出力が表示されます。

Output
[I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/sammy/.local/share/jupyter/runtime/notebook_cookie_secret [I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/sammy/environments [I 19:46:22.365 NotebookApp] 0 active kernels [I 19:46:22.366 NotebookApp] The Jupyter Notebook is running at: [I 19:46:22.366 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 19:46:22.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 19:46:22.366 NotebookApp] No web browser found: could not locate runnable browser. [C 19:46:22.367 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675&tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675

No web browser found警告があることに気付くかもしれません。 アプリケーションはサーバー上で実行されており、Webブラウザーがサーバーにインストールされていない可能性があるため、これは予想されることです。 このガイドでは、次のセクションでSSHトンネリングを使用してサーバー上のノートブックに接続する方法について説明します。

今のところ、CTRL+CyENTERの順に押して、JupyterNotebookを終了します。

Output
Shutdown this notebook server (y/[n])? y [C 20:05:47.654 NotebookApp] Shutdown confirmed [I 20:05:47.654 NotebookApp] Shutting down 0 kernels

次に、exitコマンドを使用してサーバーからログアウトします。

  1. exit

サーバーでJupyterNotebookを実行しました。 ただし、アプリケーションにアクセスしてノートブックの操作を開始するには、SSHトンネリングとローカルコンピューターのWebブラウザーを使用してアプリケーションに接続する必要があります。

ステップ3—SSHトンネリングを使用したJupyterNotebookアプリケーションへの接続

SSHトンネリングは、サーバーで実行されているJupyterNotebookアプリケーションに接続するためのシンプルで高速な方法です。 セキュアシェル(より一般的には SSH として知られています)は、セキュリティで保護されていないネットワークを介してリモートサーバーに安全に接続できるようにするネットワークプロトコルです。

SSHプロトコルには、サーバー上の特定のポート番号で実行されている特定のアプリケーションをローカルコンピューター上の特定のポート番号にトンネリングできるポート転送メカニズムが含まれています。 サーバー(デフォルトではポート8888)で実行されているJupyterNotebookアプリケーションをローカルコンピューターのポートに安全に「転送」する方法を学習します。

SSHトンネルの確立に使用する方法は、ローカルコンピューターのオペレーティングシステムによって異なります。 お使いのマシンに最も関連性のある以下のサブセクションにジャンプします。

注: DigitalOcean WebConsoleを使用してJupyterNotebookをセットアップおよびインストールすることは可能ですが、SSHトンネルを介したアプリケーションへの接続は、ターミナルまたはPuTTYを使用して行う必要があります。

macOSまたはLinuxを使用したSSHトンネリング

ローカルコンピュータがLinuxまたはmacOSを実行している場合は、1つのコマンドを実行するだけでSSHトンネルを確立できます。

sshはSSH接続を開くための標準コマンドですが、-Lディレクティブと一緒に使用すると、ローカルホスト(つまり、ローカルマシン)の特定のポートがリモートホスト(この場合はサーバー)の特定のホストとポートに転送されます。 これは、リモートサーバーの指定されたポート(8888、Jupyter Notebookのデフォルトポート)で実行されているものはすべて、ローカルコンピューターの指定されたポート(コマンド例では8000)に表示されることを意味します。

独自のSSHトンネルを確立するには、次のコマンドを実行します。 たとえば、8000が別のプロセスで使用されている場合は、ポート8000を任意のポートに変更してください。 8000以上のポートを使用することをお勧めします。これらのポート番号は、他のプロセスで使用される可能性が低いためです。 自分のサーバーのIPアドレスとサーバーの非rootユーザーの名前を必ず含めてください。

  1. ssh -L 8000:localhost:8888 sammy@your_server_ip

このコマンドでエラーが発生しない場合は、リモートサーバーにログインします。 そこから、仮想環境をアクティブ化します。

  1. source ~/environments/my_env/bin/activate

次に、JupyterNotebookアプリケーションを実行します。

  1. jupyter notebook

Jupyter Notebookに接続するには、お気に入りのWebブラウザーを使用して、ローカルホストのローカルポートhttp://localhost:8000に移動します。 Jupyter Notebookに接続したので、ステップ4に進んでその使用方法を学びます。

WindowsとPuTTYを使用したSSHトンネリング

PuTTYは、サーバーへの接続に使用できるWindows用のオープンソースSSHクライアントです。 (前提条件のチュートリアルで説明されているように)WindowsマシンにPuTTYをダウンロードしてインストールした後、プログラムを開き、次に示すようにサーバーのURLまたはIPアドレスを入力します。

Enter server URL or IP into Putty

次に、左ペインの下部にある + SSH をクリックし、トンネルをクリックします。 このウィンドウで、ローカルマシンのJupyterへのアクセスに使用するポート(8000)を入力します。 8000以上のポートを使用することをお勧めします。これらのポート番号は、他のプロセスで使用される可能性が低いためです。 ただし、8000が別のプロセスで使用されている場合は、別の未使用のポート番号を選択してください。 次に、ポート8888はJupyterNotebookが実行されているポートであるため、宛先をlocalhost:8888に設定します。 次に、追加ボタンをクリックすると、ポートが転送ポートフィールドに表示されます。

Configure SSH tunnel in Putty

最後に、開くボタンをクリックします。 これにより、SSHを介してマシンがサーバーに接続され、目的のポートがトンネリングされます。 エラーが表示されない場合は、先に進んで仮想環境をアクティブ化します。

  1. source ~/environments/my_env/bin/activate

次に、JupyterNotebookを実行します。

  1. jupyter notebook

次に、お気に入りのWebブラウザのローカルポート(http://localhost:8000(または選択したポート番号))に移動して、サーバーで実行されているJupyterNotebookインスタンスに接続します。 Jupyter Notebookに接続したので、ステップ4に進んでその使用方法を学びます。

ステップ4—JupyterNotebookを使用する

Jupyter Notebookは、Webブラウザーからアクセスすると、ファイルブラウザーとして機能し、ノートブックを作成、編集、および探索するためのインターフェイスを提供するノートブックダッシュボードを提供します。 これらのノートブックは、任意の数の個別のセルを入力するドキュメント(.ipynbファイル拡張子で保存)と考えてください。 各セルには、コードの実行やレンダリングされたテキストの書き込みに使用できるインタラクティブなテキストエディタがあります。 さらに、ノートブックを使用すると、方程式を記述して実行したり、画像やインタラクティブプロットなどの他のリッチメディアを含めたり、さまざまな形式(.ipyb.pdf.py)。 これらの関数のいくつかを説明するために、ノートブックダッシュボードからノートブックファイルを作成し、方程式を使用して簡単なテキストボードを作成し、基本的なPython3コードを実行します。

この時点で、SSHトンネルを使用してサーバーに接続し、サーバーからJupyterNotebookアプリケーションを起動しているはずです。 http://localhost:8000に移動すると、ログインページが表示されます。

Jupyter Notebook login screen

サーバーからjupyter notebookを実行した後、上部のパスワードまたはトークンフィールドに、出力に表示されるトークンを入力します。

Output
[I 20:35:17.004 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 20:35:17.314 NotebookApp] Serving notebooks from local directory: /home/sammy [I 20:35:17.314 NotebookApp] 0 active kernels [I 20:35:17.315 NotebookApp] The Jupyter Notebook is running at: [I 20:35:17.315 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 20:35:17.315 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 20:35:17.315 NotebookApp] No web browser found: could not locate runnable browser. [C 20:35:17.316 NotebookApp] . . .

または、ターミナル出力からそのURLをコピーして、ブラウザのアドレスバーに貼り付けることもできます。

自動的に、Jupyter Notebookは、実行元のディレクトリに保存されているすべてのファイルとフォルダーを表示します。 ノートブックダッシュボードの右上にある新規 Python 3 の順にクリックして、新しいノートブックファイルを作成します。

Create a new Python3 notebook

この新しいノートブック内で、上部のナビゲーションバーのセル>セルタイプ>マークダウンをクリックして、マークダウン構文を受け入れるように最初のセルを変更します。 マークダウンに加えて、このセルタイプではLaTeXで方程式を書くこともできます。 たとえば、セルをマークダウンに変更した後、セルに次のように入力します。

# Simple Equation

Let us now implement the following equation in Python:
$$ y = x^2$$

where $x = 2$

マークダウンをリッチテキストに変換するには、CTRL + ENTERを押すと、次のようになります。

Turn sample equation into rich text

マークダウンセルを使用して、メモを作成し、コードを文書化できます。

それでは、簡単な方程式を実装して結果を出力してみましょう。 挿入>下にセルを挿入をクリックしてセルを挿入します。 この新しいセルに、次のコードを入力します。

x = 2
y = x*x
print(y)

コードを実行するには、CTRL + ENTERを押すと、次のようになります。

Solve sample equation

これらは、JupyterNotebookでできることの比較的簡単な例です。 ただし、これは非常に強力なアプリケーションであり、多くの潜在的なユースケースがあります。 ここから、いくつかのPythonライブラリを追加して、他のPython開発環境と同じようにノートブックを使用できます。

結論

これで、リモートサーバーで実行されているJupyter Notebookを使用して、再現可能なPythonコードとテキストを記述できるようになります。 Jupyter Notebookのクイックツアーを取得するには、上部のナビゲーションバーでヘルプをクリックし、次に示すようにユーザーインターフェイスツアーを選択します。

Finding Jupyter Notebook help tour

興味がある場合は、 Project Jupyterのドキュメントを参照して、JupyterNotebookの詳細を確認することをお勧めします。 さらに、 Python 3 でのコーディング方法を学ぶことで、このチュートリアルで学んだことを基に構築することができます。