計算ノートブック
2020年11月18日
計算ノートブックとは、散文形式のドキュメントを作成するための環境であり、著者はコードを埋め込むことができ、そのコードは簡単に実行され、結果もドキュメントに組み込まれます。これは、特にデータサイエンスの作業に適したプラットフォームです。このような環境には、Jupyter Notebook、R Markdown、Mathematica、Emacsのorg-modeなどがあります。
データを探索する際には、メモを探索を実行するコードの近くに置いておくことが役立ちます。コードを試してみて、結果を見て、その実行から得られた観察結果をメモしておきたいと考えています。計算ノートブックを使用すると、これらを1つのドキュメントに簡単にまとめることができます。
これはその例で、martinfowler.comのGoogleアナリティクスデータの分析を見ています。これは、R Markdown形式を使用するR Studioで行っています。

ここでの例はグラフです。ノートブックはさまざまなチャートをプロットするのに適しているためです。しかし、コードにさまざまなデータ操作を埋め込み、ドキュメントにデータをテーブルとして表示するのにも同様に役立ちます。
計算ノートブックに初めて出会ったのは、1980年代後半のMathematicaでした。大学の学位を取得している間にそのようなツールにアクセスできればよかったのにと思っていましたが、データサイエンス界での使用が増加した近年まで、計算ノートブックを再び使用することはありませんでした。最もよく耳にするノートブックソフトウェアは、Pythonコミュニティで人気のあるJupyter Notebookですが、Rでデータ処理を行うため、通常はR Studio内でR Markdownを使用しています。また、Emacsの一部である、かなりニッチなノートブックであるorg-modeも使用しています。
Mathematicaに埋め込まれたコードは、数学を表現するために設計された独自のプログラミング言語です。JupyterはPythonの世界で始まりましたが、R Markdownと同様に、幅広いプログラミング言語をサポートしています。Mathematicaは商用ツールですが、JupyterとR Markdownはオープンソースです。JupyterはファイルをJSONに保存し、R Markdownはコードブロックに特別なマークアップが施されたマークダウンファイルを使用します。ドキュメントにテキスト形式を使用することで、通常のバージョン管理ツールに保存することができ、マークアップ言語を使用することで差分が容易になります。マークアップ言語を使用すると、他のエディターでドキュメントを編集することができますが、コードブロックを実行するための適切な環境が必要です。
計算ノートブックは、データセットに対するさまざまな形式の分析を試みるなど、問題を探索する際に役立ちます。ドキュメントは、試行された内容と、研究者が試行した際に得られたすべての観察結果の記録として機能します。コードと結果をまとめておくことで、作成者は自分が何をしたのか、そしてそれがどのような結果を生み出したのかを正確に確認できます。このコードと結果の結合は、説明的プログラミングの一種であり、初心者プログラマーにとって魅力的な環境となっています。ただし、データベースの内容など、外部環境要因によって結果が変化する場合は注意が必要です。データセットがそれほど大きくない場合は、エクスポートしてバージョン管理システムに保存できますが、多くの場合、そのサイズが大きすぎて不可能です。
ノートブックは、通常、PDF、HTML、またはその他の形式でドキュメントを生成することにより、レポートを作成するのにも役立ちます。著者に記事のトラフィックについて報告する場合、最後に作成したレポートを取得し、対象のURLを変更し、すべてのコードを再実行し、適切と思われる散文の解説を調整します。十分なモチベーションがあれば、数か月ごとにそのようなレポートを自動生成できます。このようなレポートには、結果を生成するために使用されたコードを簡単に含めることができるため、読者は表示される数値の背後にあるロジックを正確に理解できることが気に入っています。
ただし、ノートブックは本番システムのコンポーネントとして使用しないでください。 IO、計算、UIが混在したノートブック構造は、対話性を促進するためのものであり、より広範なコードベースの一部として使用されるコードに必要なモジュール性には反します。ノートブックはロジックを探索する方法と考えるのが最善です。パスが見つかったら、そのロジックは本番環境で使用するために設計されたライブラリに複製する必要があります。