ノートブックの本格化
2021年8月5日 Chris Dias、@chrisdias
(それほど)新しくない開発手法
ノートブック――テキスト、実行可能なコード、そしてそのコードの出力を含むドキュメント――は、開発を行うための興味深く、刺激的な新しい方法です。
確かに、完全に新しいものではありません。ドナルド・クヌースは1984年にリテラシープログラミングの概念を導入し、Wolfram Mathematicaは1988年にカーネル駆動のノートブックUIを導入しました。
過去10年間で、特にデータサイエンスの台頭により、ノートブックの使用が爆発的に増加しました。Jupyter Notebooksのようなツールは、データサイエンスコミュニティで事実上の標準ツールとなっています。それらは仮想のメモ帳からデータ準備タスク、複雑な機械学習モデル開発まで、あらゆる用途で利用され、愛されています。
私たちが目にしてきた興味深いトレンドの1つは、データサイエンスと機械学習がチームスポーツになりつつあることです。開発者は、モデルトレーニング用のデータセットを準備したり、本番環境で使用するために探索的コードをリファクタリングしたり、モデルの推論をコア製品に統合したりするために、データサイエンティストと連携を深めています。私たち自身のチームも毎日膨大な量の使用データを分析し、仮説を追跡、分析、検証するためにJupyter Notebooksを使用しています。私たちはドメイン固有のノートブック(GitHub Issues)を使用して、GitHubリポジトリ全体の問題と作業項目を追跡し、毎月のVS Codeリリースの準備状況に関する洞察を得ています。ノートブックは、VS Codeプロジェクトを運営する上で今や不可欠なものとなっています。
新しいUI、予告なし
私たちはノートブックのサポートをVS Codeのコアに組み込む作業に懸命に取り組んできました。これにより、ノートブックはより高速で安全になり、お気に入りのVS Code拡張機能がその中で動作できるようになります。この取り組みの一環として、ノートブックが以前の試みでアドオンのように感じられたものから、ツールの不可欠な一部であるように感じられるよう、ユーザーエクスペリエンスに変更を加えています。
もしあなたがInsidersビルドを使用されているなら、私たちがエクスペリエンスを進化させる様子を追っていただくことができました。Stable版では、新しいノートブックエクスペリエンスを使用しているユーザーが40%いました。フィードバックは概ね良好でした。そこで、ナイジェル・タフネルのように、私たちはボリュームを11に上げることを決定し、全員を新しい実装に移行させました。
残念ながら、皆様からすぐにご連絡いただいたように、私たちはほとんど、あるいはまったく予告なしに移行を行いました。皆様はJupyter Notebooksを使って、宇宙の膨張をモデル化するためにその膨大なデータセットをクリーニングし分析する作業をしていたのに、私たちは皆様の世界をひっくり返してしまいました。コーヒーを手にし、VS Codeを起動したら、「ドーン」とノートブックエクスペリエンスが…以前と変わってしまった、というわけです。
私たちはVS Codeに新しいエクスペリエンスを導入することに興奮していますが、このようなサプライズは、朝ツールを起動したときに期待するものではありません。この点について、深くお詫び申し上げます。変更を展開する際には、何が、なぜ、いつ起こるのかを全員に周知するためのより良い方法があります。
でも、以前とは違うんです!
VS Codeのノートブックのオリジナルバージョンは、従来のJupyter Notebooksのエクスペリエンスと非常に近く、見た目も動作もほとんど同じでした。それは、暖かく、居心地が良く、親しみやすいエクスペリエンスであり、妥当な出発点でした。しかし、VS Codeユーザーがノートブックとその他のツールをどのように使用しているかについて学ぶにつれて、2つのエクスペリエンスは異なるよりも似ている必要があると認識しました。
VS Codeのノートブックは自然に感じられるべきであり、Pythonでコードファイルを作成する作業と、宇宙をモデリングするノートブックの作業をシームレスに行き来できるようにすべきです。これは、VS Codeのノートブックが組み込みの比喩表現や慣れ親しんだキーボードショートカットを可能な限り活用することを意味します。
例えば、コードセルに記述することは、使用する言語に関係なく、本格的なテキストエディターでコードを記述するのと同じように感じられるべきです。設定はノートブックに固有であるべきではありません。クイックフィックス、アウトライン、ソースアクション、リファクタリング、複数カーソル、単語の折り返し、選択範囲の縮小と拡張、カラム選択モード、大文字・小文字の変更、その他のエディターエクスペリエンスは同じであるべきです。お気に入りのエディター拡張機能であるBracket Pair ColorizerやSnippetsは、そのまま動作するはずです。ソースファイルで行うように、ノートブックをグラフィカルに並べて比較できるべきです。
エコシステム
さらに、私たちはノートブックのための豊かな拡張機能エコシステムを構想しています。テーマや新しい言語サポートを発見するのと同じように、Marketplaceでカーネルやカスタムビジュアライザーを検索できるべきです。私たちのAPIは、新しいドメイン向けにカスタム(Jupyter以外)のノートブックを作成することもサポートしています。例えば、REST Book拡張機能を使用すると、カスタムの出力ビジュアライゼーション(例:JSON、HTML、カスタムドキュメント)でRESTコールを記述および永続化できます。前述のとおり、GitHub Issues Notebooksを使用すると、私たちが行っているように、リポジトリの異なるissueクエリのノートブックを作成してプロジェクトを管理できます。
未来は明るい
この比喩を完成させるために言えば、VS Codeのノートブックは、あのぎこちない思春期から、(若い)成人へと成熟し、自信に満ち、力強く、明るい未来を携えています。Jupyterから移行される場合、VS Codeのノートブックでの作業には多少の慣れが必要かもしれませんが、最終的にはその価値があると信じています。そして、私たちが常にそう努めているように、設定(設定エディターで@tag:notebookLayout
を検索)を通じてエクスペリエンスをカスタマイズできます。
VS Codeの豊かなコーディングエクスペリエンスとエコシステムを拡張し、包括的なJupyter Notebookサポートを含めることで、日々の開発に強力な新しい洞察をもたらす素晴らしいツールになると信じています。7月のリリースには素晴らしい新機能がいくつかありますので、ぜひお試しいただき、ご意見(良い点、悪い点ともに!)をお聞かせください。皆様からのフィードバックは、最高の製品を構築するために不可欠です。
ありがとうございます!
ジム、ジョー、カイ、クリス、そしてVS Codeチームより
ハッピーノートブック!