Pluto.jl 1.0 release notes / what's new

Pluto.jl 1.0 は、Julia プログラミング言語のためのリアクティブなノートブック環境の安定版リリースです。このバージョンは、再現性、アクセシビリティ、そしてシームレスなインタラクティブ体験に焦点を当て、ツールが本番環境や教育用途に利用可能であることを象徴しています。

Core Philosophy: Reactive and Reproducible

Pluto.jl は、スプレッドシートのようにセルがリアクティブである、ノートブック・プログラミングのためのインタラクティブな環境として設計されています。つまり、あるセルでの変更が、依存するすべてのセルに即座に伝播します。このアプローチにより、従来のノートブックでよく見られる隠れた状態(hidden state)の問題を排除できます。

Reproducibility and Reliability

Pluto 1.0 は、UI駆動のブラウザテストを含む約 2,500 件の自動テストケースを通じて、高い信頼性を確保しています。主な機能は以下の通りです:

  • Automatic Package Management: 各ノートブックは、隔離された環境を維持します。パッケージは必要に応じて自動的に追加・削除され、他のユーザーと共有されたノートブックが、全く同じパッケージバージョンで実行されることを保証します。
  • GracefulPkg.jl: このユーティリティは、異なる Julia バージョンを混在させる際の再現性を向上させます。
  • Project.toml Editor: 新しいエディタは、パッケージバージョンを精密に制御でき、再現可能な GitHub パッケージ統合をサポートする Julia の [sources] フィーチャーをサポートしています。

Reactivity Controls

長時間実行される計算を管理するために、Pluto 1.0 は、偶発的な実行チェーンを防ぐためのツールを導入しています:

  • Cell Disabling: ユーザーはセルを無効化(disable)して、リアクティブな実行を防ぐことができます。システムがリアクティブであるため、無効化されたセルに依存するセルも自動的に無効化されます。
  • Runtime Confirmation: Pluto は、以前の実行時間に基づき、実行に時間がかかると予測されるリアクティブ・チェーンの実行前に、確認を求めるプロンプトを表示します。

Interactivity and UI Enhancements

Pluto 1.0 は、PlutoUI.jl の機能を拡張し、カスタムウィジェット開発のためのより堅牢な API を提供します。

New Interactive Elements

PlutoUI.jl には、スライダー、スイッチ、ボタン、ドロップダウン、マルチセレクト、テキストフィールドを含む、包括的な入力ウィジェット・スイートが含まれています。また、2D レイアウト・ツール、マージン・セル、および「クリックして詳細を表示」ウィジェットも備えています。

Advanced Widgets API

開発者は、高レベルの統合 API を使用して、カスタムウィジェットを作成できます。この API は、JavaScript ランタイム、高性能な Julia-JS 接続、および特化された表示システムを公開しています。これにより、Pluto に依存しない既存のパッケージに、Pluto 特有のウィジェットを追加することが可能になります。

Education and Accessibility

Pluto は、初心者や学生を主な対象として開発されており、そのことは教育用ツールとの統合に顕著に現れています。

Improved Error Handling

新しいプログラマーの摩擦を減らすため、Pluto 1.0 は、以下の方法でエラーメッセージを最適化しています:

  • ユーザーのコードのミニ・プレビューを表示する。
  • スタックトレース内の内部 Julia 関数をフェードアウトさせ、ノイズを減らす。
  • スタックフレームや長い型注釈(type annotations)に対して、「クリックして表示」オプションを提供する。

Educational Ecosystem

  • PlutoTurtles.jl: タートル(亀)を操作して線を描くことで、プログラミングを学ぶためのインタラクティブな方法。
  • Computational Thinking Template: MIT の「Computational Thinking」コースに基づいたコース・ウェブサイトを構築するためのリポジトリ・テンプレート。
  • PlutoTeachingTools.jl: インタラクティブな講義やライブ・ホームワーク(宿題)を作成するためのライブラリ。

Editor and Ecosystem Tools

Pluto エディタは、CodeMirror 6 で動作する新しい Julia パーサーによって再構築され、より高性能な構文パターン・マッチングが可能になりました。

Editor Features

  • Autocomplete: 静的 JS 分析、スコープ分析、および Julia REPL の結果を組み合わせて、入力中に最適化された候補を提示するシステム。
  • Rich Object Viewer: HTML, LaTeX, SVG, PNG の高機能表示、およびベクトル、タプル、辞書などの複雑なデータ構造のためのインタラクティブなツリー・ビューアー。
  • Language Support: エディタは現在、ロギング(例:@info)、ANSI カラー・レンダリング、および Julia 内での Python, SQL, HTML の混合言語解析をサポートしています。

Distribution and Sharing

  • HTML Export: ノートブックは、エクスポート時と全く同じように表示される、自己完結型の HTML ファイルとしてエクスポートできます。2025 年から、これらのアセットは自己完結型となり、インターネット接続なしでも開くことができます。
  • pluto.land: Pluto の HTML エクスポートを共有するための無料ウェブ・サービス。
  • PlutoSliderServer.jl: インタラクティブ性を維持したまま、Pluto ベースのウェブサイトを公開するためのツール。

Community Insights and Counterpoints

Pluto 1.0 はそのリアクティビティ(反応性)で広く称賛されていますが、一部のユーザーは、ワークフローに影響を与える可能性のある特定の設計上の選択について指摘しています:

"I would love to Pluto, but am completely put off by the output of a command being shown above the command that creates it... I still see Pluto as producing something close to a document or web page, which I want to read from top to bottom."

他のユーザーは、ブラウザベースの体験を超えて、既存のパッケージ環境や VS Code サポートの強化の必要性を強調しています。

さらに、一部のユーザーは Pluto のリアクティビティを Marimo (Python) や Wolfram Notebooks と比較し、Jupyter よりも優れた改善である一方で、セル出力の配置場所や、複数ステートメント・セルにおける begin...end ブロックの使用に関するメンタル・モデルの転換が必要であることを指摘しています。

Sources