VS Codeのエージェントモードを拡張するには、を試してください!

ノートブックの成人式

2021年8月5日 by Chris Dias, @chrisdias

開発を行うための (それほど) 新しくない方法

ノートブックは、テキスト、実行可能なコード、そしてそのコードの出力を含むドキュメントであり、開発を行うための興味深くエキサイティングな新しい方法です。

An image of a notebook that analyzes data from the Titanic shipwreck

いえ、完全に新しいわけではありません。Donald Knuth 氏は 1984 年に文芸的プログラミングの概念を導入し、Wolfram Mathematica は 1988 年にカーネルを搭載したノートブック UIを導入しました。

過去 10 年間で、特にデータサイエンスの台頭とともに、ノートブックの利用が爆発的に増加しました。Jupyter Notebooks のようなツールは、データサイエンスコミュニティにおいて事実上の標準ツールとなっています。これらは、仮想的なスクラッチパッドから、データ準備タスク、複雑な機械学習モデルの開発まで、あらゆる用途で利用され、愛されています。

私たちが見てきた興味深い傾向の 1 つは、データサイエンスと機械学習がチームスポーツになりつつあることです。開発者は、モデルトレーニング用のデータセットの準備、探索的コードの製品用リファクタリング、モデル推論のコア製品への統合などにおいて、データサイエンティストとの協力をますます深めています。私たち自身のチームも、毎日膨大な量の利用状況データを分析し、Jupyter Notebooks を使って仮説の追跡、分析、検証を行っています。私たちは、ドメイン固有のノートブック (GitHub Issues) を使用して、GitHub リポジトリ全体の issue や作業項目を追跡し、毎月の VS Code のリリース準備状況を把握しています。今やノートブックは、私たちが VS Code プロジェクトを運営する上で不可欠なものとなっています。

新しい UI、予告なし

私たちは、ノートブックをより速く、より安全にするために、そしてお気に入りの VS Code 拡張機能がその中で動作するように、VS Code のコアにノートブックのサポートを組み込む作業に懸命に取り組んできました。この取り組みの一環として、ノートブックが以前のようなアドオンではなく、ツールに不可欠な部分であると感じられるように、ユーザーエクスペリエンスにも変更を加えています。

Insiders ビルドをお使いの方は、私たちがエクスペリエンスを進化させていく過程を追いかけることができたはずです。Stable 版では、40% のユーザーが新しいノートブックエクスペリエンスを利用していました。フィードバックは概ね好意的でした。そこで、私たちは Nigel Tufnel のように、音量を 11 まで上げることにして、全員を新しい実装に移行させました。

残念ながら、皆様からすぐにご指摘いただいたように、私たちはほとんど、あるいはまったく予告なしに移行を行ってしまいました。皆さんが Jupyter Notebooks を使って仕事をし、宇宙の膨張をモデル化するために巨大なデータセットをクリーンアップし分析していたところに、私たちは皆さんの世界をひっくり返してしまったのです。コーヒーを手に取り、VS Code を起動すると、「ドン」と、あなたのノートブックエクスペリエンスは…別物になっていました。

私たちは VS Code に新しいエクスペリエンスを導入することに興奮していますが、このようなサプライズは、朝ツールを起動するときに期待するものではありません。この点について、お詫び申し上げます。変更を展開し、何が、なぜ、いつ起こるのかを全員に知らせ続けるための、より良い方法があります。

でも、違うんです!

VS Code のノートブックの初期バージョンは、従来の Jupyter Notebooks のエクスペリエンスに非常に近く、見た目も動作もほぼ同じでした。それは妥当な出発点であり、温かく、心地よく、慣れ親しんだエクスペリエンスでした。しかし、VS Code ユーザーがノートブックとツールの他の部分の両方をどのように使っているかを学ぶにつれて、私たちは 2 つのエクスペリエンスが異なる点よりも似ている点が多くあるべきだと気づきました。

VS Code のノートブックは自然に感じられるべきです。そうすれば、コードファイルの作成と、Python で宇宙をモデル化するノートブックとの間をシームレスに行き来できます。これは、VS Code のノートブックが、組み込みのメタファーや使い慣れたキーボードショートカットを可能な限り活用することを意味します。

たとえば、コードセルでの記述は、使用する言語に関係なく、本格的なテキストエディターでコードを書くのと同じように感じられるべきです。設定はノートブックに固有のものであるべきではありません。クイックフィックス、アウトライン、ソースアクション、リファクタリング、マルチカーソル、折り返し、選択範囲の縮小・拡大、矩形選択モード、大文字・小文字の変更、その他のエディターエクスペリエンスはすべて同じであるべきです。Bracket Pair Colorizer やスニペットのようなお気に入りのエディター拡張機能は、そのまま動作するべきです。ソースファイルで行うのと同じように、ノートブックをグラフィカルに並べて比較できるべきです。

エコシステム

さらに、私たちはノートブックのための豊かな拡張機能エコシステムを構想しています。テーマや新しい言語サポートを発見するのと同じように、Marketplace でカーネルやカスタムビジュアライザーを検索できるべきです。私たちの API は、新しいドメインのためのカスタム (Jupyter ではない) ノートブックの作成もサポートしています。たとえば、REST Book 拡張機能を使えば、出力用のカスタムビジュアライゼーション (JSON、HTML、カスタムドキュメントなど) を使って REST コールを記述し、永続化できます。前述の通り、GitHub Issues Notebooks は、私たちがしているように、リポジトリのさまざまな issue クエリのノートブックを作成してプロジェクトを管理することを可能にします。

未来は明るい

比喩を完成させると、VS Code のノートブックは、あのぎこちないティーンエイジャーの時代を経て、自信と力強さを備え、明るい未来を持つ (若い) 大人へと成熟しました。Jupyter から移行する場合、VS Code ノートブックでの作業には少し慣れが必要かもしれませんが、最終的にはその価値があることを願っています。そして、私たちが常に心がけているように、設定 (設定エディターで @tag:notebookLayout を検索) を通じてエクスペリエンスをカスタマイズできます。

VS Code の豊富なコーディングエクスペリエンスとエコシステムを拡張し、包括的な Jupyter Notebook のサポートを含めることは、日々の開発に強力で新しい洞察をもたらす素晴らしいツールになると信じています。7 月のリリースにはいくつかの素晴らしい新しいエクスペリエンスがありますので、ぜひ試してみて、ご意見 (良い点も悪い点も!) をお聞かせください。皆様のフィードバックは、私たちが可能な限り最高の製品を構築する上で不可欠です。

ありがとうございます!

Jim、Joe、Kai、Chris、そして VS Code チーム

Happy Notebooking!