マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Jupyter Notebook

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Jupyter Notebook」とは
概要
Jupyter Notebook(ジュピターノートブック)とは、インタラクティブコンピューティング用Webベースノートブック環境です。
ノートブック形式で段階的にプログラムを実行し、データ分析作業を行える対話型ブラウザ実行環境として利用できます。
基本説明
Jupyter Notebookは、コンソールベースアプローチをインタラクティブコンピューティングに拡張し、「コード開発」「文書化」「実行」「結果伝達」など、計算プロセス全体をキャプチャするのに適したWebベースのアプリケーションを提供します。
「ノートブック」と呼ばれるドキュメントを作成し、「プログラムの記述/実行/共有」や「メモの作成/保存/共有」が可能で、セルと呼ばれるスペースにコードを入力し実行します。
ユースケース
■共同研究
Jupyter Notebookは「プログラム」「実行結果」「メモ」を簡単に作成し保存できるため、「過去作業内容の振り返り」「チームメンバーへの作業結果共有」「スクール形式での授業/研修」など、共同研究での利用に向いています。
■データ分析タスク
Jupyter Notebookは、特に、結果の保存や共有に重きを置くデータ分析タスクでも活用できます。
「データの消去/変換」「数値シミュレーション」「統計モデリング」「データ視覚化」「機械学習」などに利用できます。
経緯
「Jupyter」の名称は、対応している主要言語「Julia」+「Python」+「R」の頭文字をつなげて名付けられました。
「Jupyter Notebook」はかつて、Python専用のNotebook「IPython Notebook」という名称でしたが、Python以外でも活用できることから改名されました。
オフィシャルサイト情報
■オフィシャルサイト
■主要開発元
Jupyter Notebookは、Jupyterプロジェクトが中心となり開発が進められています。
Jupyterプロジェクトは、数十ものプログラミング言語でのインタラクティブコンピューティングのための「オープンソースソフトウェア」「オープン標準」「サービス」を開発するために活動しています。
■ライセンス情報
Jupyter Notebookのライセンスは「修正BSDライセンス」です。
詳細について、こちらを参照ください。
→GitHub →jupyter/notebook →COPYING.md
■ダウンロード
→Project Jupyter →Installing the Jupyter Software
同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Spyder」「IPython」など。
主要コンポーネント
Jupyter Notebookは、以下の2つのコンポーネントを組み合わせて構成されています。
■Webアプリケーション
概要
Webアプリケーションコンポーネントは、「説明テキスト」「数学」「計算」「リッチメディア出力」を組み合わせたドキュメントのインタラクティブオーサリングのためのブラウザベースのツールです。
主な機能
・ブラウザー内コード編集機能—自動構文強調表示、インデント、タブ補完、イントロスペクション
・コード実行機能
・リッチメディア表現による計算結果表示機能—HTML、LaTeX、PNG、SVG
・Markdownマークアップ言語サポート
・数学表記機能—LaTeX
・ネイティブレンダリング機能—MathJax など
■ノートブックドキュメント
ノートブックドキュメントは完全な計算記録として機能し、「計算の入力と出力」「説明テキスト」「数学」「画像」「オブジェクトのリッチメディア表現」など、Webアプリケーションで表示されるすべてのコンテンツの表現が含まれます。
「インタラクティブセッションの入力と出力」「コードに付属しているが実行を目的としていない追加テキスト」も含まれます。
これらのドキュメントは内部的にはプレーンテキスト形式のJSONファイルであるため、バージョン管理により共有できます。
非言語依存
Jupyter Notebookは、Project Jupyter用の言語に依存しないHTMLノートブックアプリケーションです。
オープンスタンダード
Jupyter Notebookは、インタラクティブコンピューティング用の一連のオープンスタンダードに基づいています。
開発者は「HTML」「CSS」「JSON」などのオープンスタンダードを活用して、組み込みのインタラクティブコンピューティングでカスタマイズされたアプリケーションを構築できます。
■オープンドキュメント形式
Jupyter Notebookは、JSONに基づいたオープンドキュメント形式です。
これらには、「コード」「説明テキスト」「方程式」「豊富な出力」など、ユーザーセッションの完全な記録が含まれています。
■ネットワークプロトコル「Interactive Computing Protocol」
Jupyter Notebookは、「ZMQ」および「WebSocket」を介したJSONデータに基づいたオープンネットワークプロトコル「Interactive Computing Protocol」を使用して、Jupyterカーネルと通信します。
■Jupyterカーネル
Jupyterカーネルは、特定のプログラミング言語でインタラクティブコードを実行し、ユーザーに出力を返すプロセスです。
カーネルは「タブ補完」や「イントロスペクション」などのリクエストにも応答します。
サポート言語
Jupyter Notebookは、「Python」「R言語」「Julia」「Scala」を含む、40以上のプログラミング言語に対応しています。
「Jupyter Notebook」のセルコーディング
概要
Jupyter Notebookにおいて、プログラムやメモは、すべて「セル」と呼ばれる単位で記述します。
セルは複数行のテキスト入力フィールドであり、セル単位で実行できます。
セルの実行動作はセルのタイプによって決まり、「コードセル」「マークダウンセル」「生セル」の3種類があります。すべてのセルはコードセルから始まり、利用したいセルタイプに変更して使用します。
コードセル
コードセルではプログラムを記述し実行できます。構文の強調表示やタブ補完が可能で、新しいコードの追記も可能です。
コードセルが実行されると、セルに含まれるコードがノートブックに関連付けられたカーネルに送信されます。このカーネルから返された結果は、セルの出力としてノートブックに表示されます。
出力はテキストに限定されず、「matplotlib図」「HTMLテーブル」など、多くの形式に対応しています。
マークダウンセル
マークダウンセルでは、テキストマークアップを実行する簡単な方法を提供する「マークダウン形式」でメモを記述できます。
リッチテキストを使用して、記述テキストとコードを交互に使用して、計算プロセスを文学的方法で文書化できます。
任意のHTMLコードを使用でき、「LaTeX表記法による数式」「リスト」「テーブル」「図」「リンク」なども表記できます。
マークダウンセルが実行されると、マークダウンコードは対応するフォーマットのリッチテキストに変換されます。
生セル
生セルは、出力を直接書き込むことができる場所を提供します。
生セルはノートブックによって評価されず、nbconvertを通過すると、未加工のセルは変更されずに宛先形式で表示されます。
「Jupyter Notebook」の主な機能
ノートブック共有機能
Jupyter Notebookでは、「メール」「Dropbox」「GitHub」「Jupyter Notebook Viewer」などを通じて他のユーザーと共有できます。
■Jupyter Notebook Viewer
「Jupyter Notebook Viewer」は、Jupyter NotebookファイルのURLを入力すると、そのノートブックを静的なHTML Webページとしてレンダリングし、他のユーザーと共有できるWebアプリケーションです。
「GitHubリポジトリなどのノートブックのコレクション参照」「スライド」「スクリプト」などのレンダリングもサポートしています。
「Jupyter Notebook Viewer」を利用すると、Jupyter Notebookをインストールしていない他のユーザーと簡単に共有できるメリットがあります。
→nbviewer(nbviewer.jupyter.org)
インタラクティブ出力機能
Jupyter Notebookでは、各言語のライブラリを利用して、プログラムの出力結果をさまざまな形で表現できます。
・マークダウン
・HTML
・PDF
・画像
・ビデオ
・LaTeX
・カスタムMIME
・pyファイル(Pythonソースコード部分のみ) など
nbconvertコマンドを使用することで、さまざまな静的形式にエクスポートできます。
ビッグデータ統合機能
Jupyter Notebookを大規模データ処理ツールと連携することで、効率的なデータ解析を実行できます。
・Python
・R言語
・Scala
・Apache Spark
・Pandas
・scikit-learn
・ggplot2
・TensorFlow など
「Jupyter Notebook」の関連プロジェクト
Webベースインタラクティブ開発環境「JupyterLab」
JupyterLabは、「Jupyter Notebook」「各種コード」「各種データ」をサポートするインタラクティブな開発環境です。
JupyterLabはモジュール式であるため、柔軟な拡張性を備えています。
「データサイエンス」「サイエンスコンピューティング」「機械学習」などの幅広いワークフローをサポートするために、自由にユーザーインターフェースを配置できます。
→jupyterlab.readthedocs.io →Docs →JupyterLab Documentation
Jupyterノートブック用マルチユーザーサーバ「JupyterHub」
JupyterHubは、Jupyter Notebookサーバの複数インスタンスを生成しプロキシするマルチユーザーハブとして、複数のユーザーにJupyter Notebook環境を提供します。
「学生のクラス」「企業のデータサイエンスグループ」「科学研究プロジェクトグループ」などで活用できます。
→jupyterlab.readthedocs.io →Docs →JupyterHub
参考元サイト
- Project Jupyter
- jupyter-notebook.readthedocs.io →Docs →The Jupyter Notebook
- GitHub →jupyter/notebook
- Wikipedia →Project Jupyter
- Python でデータサイエンス →Jupyter Notebook を使ってみよう
- DeepAge →データ分析の必需品「Jupyter Notebook」の魅力とは
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
おすすめの記事

デジタル寺田の3分用語解説
2025.03.11
【デジタル寺田の3分用語解説】 「 AIエージェント 」は、人間の管理職の代わりになるか?
「 AIエージェント 」は営業マネージャーの業務をどこまで代行できるのか?「データ分析」「フィードバック」「自動日程調整」の可能性を探り、未来の管理職のあり方を考察します。AIが進化する中で、人間の役割はどう変わるのか詳しく解説します。