考察とは名ばかりで感想?

最近は主にプログラミング(AIコーディング)と資産運用(FXで食ってくぞ!)

ZedでPython! Anaconda環境とREPL活用の手引き

話題の高速エディタZedを試してみたところ、Python(Anaconda)環境との相性が想像以上に良好でした。現状Jupyter Notebookの.ipynbファイルは直接扱えないものの、REPL機能を活用すれば.pyファイルのままセル分割実行・インライン表示ができ、ノートブック感覚でスムーズにコードを試行錯誤できます

本記事では、ZedでAnaconda環境を利用する際のポイントと、REPLの使い方やメリットを解説します

エディタをZedに乗り換えた

これまで開発環境としてAntigravity IDEを利用していたのですが、そのバグによってChromiumのサンドボックス機能に不具合が生じ、普段愛用しているウェブブラウザの動作に支障をきたしてしまいました。修復のためWindows自体のリカバリを行う羽目になってしまい、余計で多大な手間にムカついたので、Antigravity IDEを捨てて別のエディタへ乗り換えることにしました

そこで白羽の矢を立てたのがZedです。動作が非常に軽量・高速で、AI連携の機能も充実していると評判が良かったため、実際に試してみることにしました

Anaconda環境を使いPythonスクリプトを実行する

自分はAnacondaを使っているのですが、ZedではこれらのPython環境をとてもスムーズに扱うことができます

自動でJupyterカーネルが読み込まれる

Pythonファイルを開くと、自動的に環境内のJupyterカーネルが検出されて読み込まれます(読み込まれたカーネルが編集タブの右上に表示されています)

ここからPython環境やJupyterカーネルを選択することもできます(グレーアウトされたPython環境はJupyterカーネルがインストールされていないもの)

ウィンドウ右下に表示されているPython実行環境の情報にも、この設定が連動して反映されます

エディタ内ターミナルとAnaconda環境の連携

Zedの内蔵ターミナルを開いた際も、デフォルトでは自動的にAnaconda環境がアクティベートされる仕組みになっています

ただし、自分の場合はすでにAnaconda環境のPythonへのPATHを通しているため、ターミナル起動時の自動アクティベート機能は不要と感じ、オフに設定しました。このあたりの挙動はsettings.jsonから柔軟に設定可能です(詳細は公式ドキュメントのAll Settings - Terminal: Detect Virtual Environmentsを参照してください)

一方で、プロジェクトごとにAnacondaのどの仮想環境を使うかを明示的に指定することもできます。特定の環境を適用したいプロジェクトがある場合は、ワークスペースのローカル設定(.zed/settings.jsonなど)に次のように記載します

{
  "terminal": {
    "detect_venv": {
      "on": {
        "directories": ["C:\\Users\\<ユーザー名>\\anaconda3\\envs\\<環境名>"],
        "activate_script": "default"
      }
    }
  }
}

Jupyter Notebookを使えないのでREPLを活用する

Zedは執筆時点で.ipynbファイル形式のJupyter Notebookを編集*1・実行することには対応していません。その代わりとして有力なのがREPL (Read Eval Print Loop) 機能です

zed.dev

セル単位での実行と出力の確認

通常の.pyファイルを「セル」に分けて、セル単位で順番に実行できます。セルは# %%から始まるコメント行によって分割されます

実行結果はコードの直下にインラインで表示されるため、Jupyter Notebookと同じような感覚で試行錯誤が可能です

ただし、いくつか割り切りが必要な点もあります。

  • エディタ (Zed) を閉じると実行結果の出力は保存されず、クリアされます
  • マークダウンセルを用いたドキュメント混在型の記述には対応していません

実行結果やグラフをファイルとして永続化して残したい場合や、マークダウンを多用したノートブックを作成したい場合は、Zed以外のエディタで素直にJupyter Notebookを扱うのが良いでしょう

柔軟な実行方法

編集タブの右上にあるボタンを押すかCtrl+Shift+Enterの同時押しで、カーソル位置のセルが実行されます

この操作を複数のセルを選択した状態で行うと、任意のコード範囲をまとめて一気に実行できます

ちなみに単純にスクリプト全体を実行したい場合は、main関数部分に表示されるUIからワンクリックで実行可能です

シンプルな記述でAIと相性が良い

Jupyter Notebook (.ipynb) の実体は複雑なJSON形式になっており、Gitでの差分管理が難しかったり、AIツールにコードを読み書きさせる際にノイズが多かったりするのが難点でした

それに対してZedのREPLであれば、プレーンなPythonスクリプト (.py) のままノートブックのような対話型実行が完結します。記述が極めてシンプルであるため、人間にとってもAIにとっても非常に扱いやすい、AIフレンドリーである点が大きな魅力です

(ちなみに似たようなソリューションとしてmarimoやPython Interactive Windowなどがあり、後者はVS Codeにも採用されています)

まとめ

本記事ではZedの次のような特徴を紹介しました

  • Anaconda環境とのスムーズな連携
    • Pythonファイルを開くだけでJupyterカーネルが自動検出され、環境の切り替えも容易
    • 内蔵ターミナルでの自動アクティベートやプロジェクトごとの仮想環境指定など、設定も柔軟に行える
  • REPL機能によるノートブック的な対話型実行
    • .ipynb形式には非対応なものの、# %%でセル分割することで.pyファイルのままセル単位実行&結果のインライン表示が可能
    • プレーンなPythonスクリプトで完結するため、Git管理やAIツールとの親和性が非常に高い
    • 実行結果の永続化やマークダウン混在はできないため、必要に応じて本家Jupyter Notebookと使い分けるのがおすすめ

*1:現状のZedではただのJSONファイルとして開かれます