Jupyter Notebook

JUPYTER NOTEBOOK
読み: ジュピターノートブック

読み: ジュピターノートブック

Jupyterとはデータ分析の定番

Jupyter Notebookは、コードの記述と実行結果、説明テキスト、グラフを1つのドキュメントに統合できる対話型のプログラミング環境である。データサイエンスと機械学習の分野で事実上の標準ツールとなっており、Pythonを中心にRやJuliaなど40以上のプログラミング言語に対応している。

かんたんに言うと

普通のプログラミングは、コードを全部書いてから一括で実行する。Jupyter Notebookは1行ずつ試しながら進められる。実験ノートのように、コードを書いて、結果を見て、メモを残して、次に進む。この「対話しながら考える」スタイルがデータ分析に合っている。

研究者の手元ツールから業界標準へ進化したJupyter Notebookの出発点

Jupyter Notebookの前身は、2001年にFernando Perezが開発したIPythonである。Pythonのインタラクティブシェルを拡張したツールで、研究者がデータを手元で触りながら分析するために作られた。
2014年にIPython Notebookから「Jupyter」プロジェクトとして独立した。名前はJulia、Python、Rの頭文字を組み合わせたもので、Python以外の言語にも対応する汎用プラットフォームを目指す意思表示だった。
現在は後継のJupyterLabが開発されているが、Jupyter Notebookも引き続き広く使われている。Google ColaboratoryやAmazon SageMaker Studioなど、主要クラウドサービスのML開発環境もJupyterベースで構築されている。

セルベースの対話型実行という独自の設計

Jupyter Notebookの核心は「セル」という単位にある。1つのノートブックが複数のセルで構成され、各セルにはコードか、Markdown形式のテキストが入る。
コードセルを実行すると、その場で結果が表示される。グラフも表も、セルの直下に描画される。データを読み込んで、集計して、可視化して、考察を書く。この一連の作業がシームレスにつながる。
従来のソフトウェア開発とは根本的に思想が違う。ソフトウェアは「完成した状態」を目指して書くが、Jupyter Notebookは「考えながら作る過程」をそのまま記録する。試行錯誤のプロセス自体が成果物になる。
ただし、この自由度が仇になることもある。セルの実行順序がバラバラになると、同じノートブックを別の人が開いても再現できない。上から順番に実行して同じ結果が出ることを保証する「再現性」の管理は、Jupyterの永遠の課題である。

データサイエンスの現場での使われ方

データサイエンティストの日常業務で、Jupyter Notebookは3つの場面で使われる。
探索的データ分析(EDA)が最も典型的な用途である。CSVやデータベースからデータを読み込み、分布を確認し、異常値を探し、仮説を立てる。pandasとmatplotlibを組み合わせた数行のコードで、データの全体像が見える。
機械学習モデルのプロトタイピングにも多用される。特徴量の選択、モデルの学習、精度の評価を繰り返す作業は対話型の環境と相性がよい。scikit-learnやPyTorchのチュートリアルの大半がJupyter Notebook形式で公開されている。
分析結果の共有と報告も重要な役割である。コードと結果とテキストが1つのファイルにまとまっているため、「このデータからこの手順でこの結論に至った」という論理の流れが第三者にも追える。社内レポートとして経営層に提出する際にも、グラフ付きの分かりやすい資料になる。

セキュリティとガバナンスの観点で見た注意点

Jupyter Notebookをビジネスで使う際に見落とされがちなのがセキュリティの問題である。
ノートブックの中にデータベースの接続情報やAPIキーをハードコードしてしまうケースが後を絶たない。そのノートブックがGitHubにpushされれば認証情報が全世界に公開される。環境変数やシークレット管理ツールの利用を徹底する必要がある。
共有サーバーでJupyterHubを運用する場合、ユーザーごとのアクセス権限管理も重要になる。デフォルト設定では他のユーザーのファイルにアクセスできてしまう場合がある。
また、ノートブックの出力セルに個人情報や機密データが含まれたまま保存されることも多い。コードを共有する際は出力をクリアするルールを設けないと、情報漏洩のリスクが残る。
便利なツールほど、運用ルールを決めずに使い始めてしまいがちである。Jupyter Notebookを組織で導入するなら、利用ガイドラインの整備を先に済ませてほしい。

VS CodeやGoogle Colabとの使い分け

Jupyter Notebookの代替や補完となる選択肢も増えている。
VS CodeにはJupyter拡張機能があり、エディタ内でノートブックを編集できる。コード補完やデバッグ機能がJupyter単体より優れているため、開発寄りの作業ではVS Codeを選ぶエンジニアが増えている。
Google Colaboratory(通称Colab)は、ブラウザだけで使えるクラウド版Jupyterである。GPUが無料で使える枠があり、ディープラーニングの学習には特に便利である。ただし、セッションが切れるとデータが消えるため、長時間の学習には向かない。
JupyterLabはJupyter Notebookの後継として開発が進んでおり、複数のノートブックやターミナルをタブで切り替えられるIDEライクなインターフェースを備えている。
どれを選ぶかは用途次第である。探索的な分析はJupyter NotebookかColab、本格的な開発はVS Code、チームでの共同作業はJupyterHubかクラウドサービス。組織の規模と目的に合わせて選定してほしい。

当社の見解

当社はツール選定において実用性を第一方針にしている。カタログスペックやベンチマークスコアではなく、実務で1週間使い倒して初めて判断する。フレームワークを増やすほど管理コストが増える経験もした。フックを増やしすぎてAIが情報過多でパニックになったこともある。足し算だけでなく、引き算の判断が選定の質を決める。検証せずに導入したツールは、ほぼ例外なく3か月以内に使わなくなった。

同じ失敗を二度としないAIエージェント

今のAIは、聞けば何でも答えてくれます。
でも、セッションが切れた瞬間に前回の失敗を忘れます。

当社が開発しているAIは、過去の経緯を念頭に置いて、
聞かれる前に「それは前回うまくいきませんでした」と声をかけます。
人間にも同じ失敗をさせず、AI自身も繰り返しません。

古参の社員が横にいるように、黙っていても気づいてくれる。
それが、当社が考える本当のAI社員です。

相談する