1. 概要
2024年の1月24日にZedがOpen source化しました! ということで、Zedとは何か、実際に使ってみてどうだったかというのを簡単にご紹介できればと思います。
2. Zed とは何か?
AtomとTree-sitterのクリエイターによる、Rust製のコードエディターで、OSS (オープンソースソフトウェア) であり、 Githubのリポジトリ こちらで公開されています。
公式サイトから一部抜粋すると下記のような特徴があるようです。
2.1 パフォーマンスを重視した設計
2.2 インテリジェンス系のサポート
- Github Copilotのサポート
- GPT-4 を使用して、自然言語のプロンプトを入力することで、コードを生成したりリファクタリング可能
2.3 言語対応
- 入力時にすべてのバッファの完全な構文ツリーを維持し、正確なコードハイライト、自動インデント、検索可能なアウトラインビューなどに対応
- 特定の言語でファイルを最初に開いたタイミングで、適切な言語サーバーがサポートされている場合、それをダウンロードして起動するようです
- 現在複数の言語をサポートしていそうですが、一部列挙します
- Rust
- TypeScript
- Python
- Ruby
- PHP
- Go
- lua など
- その他の言語対応はこちらをご確認ください
- 現在複数の言語をサポートしていそうですが、一部列挙します
2.4 チャンネルによるチーム内の連携強化
- 現時点ではプライベートベータ版なようですが、コラボレーション機能(Collaboration)の新しいバージョンという扱いで、チームの連携を強化できる機能を開発中のようです
- 機能としては、共同編集、カーソルの追尾(フォロー)、メモやチャットに関する機能などがありそうです
- 公式サイトはこちら
2.5 コラボレーション機能による複数人での共同編集
- Zedユーザー同士である必要はありますが、ゲストはファイルを開いたり、編集したり、保存したり、検索を実行したり、言語サーバーとやりとりしたりすることができるようです
- チャンネルの機能はこの機能の新しいバージョンという扱いのようです
- 公式サイトはこちら
2.6 その他機能など
-
Vimモードの搭載
- ただし公式サイトを見る限りVimモードはいまだ開発中のようで、体験の基本的な部分ですらまだできていなさそうです
-
ターミナルの内蔵
-
テーマに関する機能
3. どのOSで対応している?
現在はMacOS(10.15以上)のみに対応しています。
現在(2024年2月22日時点)のロードマップを見る限り、LinuxとWebのサポートは検討されてそうです。また、関連したissueは公開されていますが、ロックされています。
4. OSSという話だったけどライセンスはどうなっている?
リポジトリのトップから見たライセンスファイルは下記の3つのようです。
ドキュメントを見るに zed/script/generate-licenses で使用しているサードパーティーのクレートのライセンスなどを確認しているようでした。 generate-licenses
ではテーマに関するライセンスと、 コードに関するライセンスを分けているので、それぞれ確認してみます。
4.1 テーマに関するライセンス
テーマに関するライセンスは下記に記載があります。
4.2 コードに関するライセンス
zed/script/generate-licenses を見る限り、コードに関するライセンスはcargo-aboutを用いて作成されているようです(下記は一部抜粋)。
echo -e "# ###### CODE LICENSES ######\n" >> $OUTPUT_FILE
[[ "$(cargo about --version)" == "cargo-about 0.5.2" ]] || cargo install cargo-about --locked --git https://github.com/zed-industries/cargo-about --branch error-code-on-warn
echo "Generating cargo licenses"
cargo about generate --fail-on-missing-license -c script/licenses/zed-licenses.toml script/licenses/template.hbs.md >> $OUTPUT_FILE
手元で実行して、作成された assets/licenses.md でコードに関するライセンスを見ると下記のようでした。
## Overview of licenses:
* MIT License (142)
* Apache License 2.0 (80)
* ISC License (10)
* BSD 3-Clause "New" or "Revised" License (7)
* BSD 2-Clause "Simplified" License (3)
* Creative Commons Zero v1.0 Universal (3)
* Mozilla Public License 2.0 (3)
* zlib License (3)
* OpenSSL License (2)
* Unicode License Agreement - Data Files and Software (2016) (1)
ただし実行時に下記でエラーとワーニングが出ていたため、下記も合わせて確認が必要です
2024-02-22 2:07:36.947431 +00:00:00 [WARN] crate 'ring 0.17.7' doesn't have a license field
2024-02-22 2:07:41.608886 +00:00:00 [WARN] crate 'tree-sitter-clojure 0.0.9' doesn't have a license field
2024-02-22 2:07:45.577073 +00:00:00 [ERROR] unable to parse license expression for 'tree-sitter-hcl 0.0.1': Apache
また、 cargo-about を実行する際に受け入れるライセンスリストは zed/script/licenses
/zed-licenses.toml を見る限り下記のようです。
accepted = [
"Apache-2.0",
"MIT",
"Apache-2.0 WITH LLVM-exception",
"MPL-2.0",
"BSD-3-Clause",
"BSD-2-Clause",
"ISC",
"CC0-1.0",
"Unicode-DFS-2016",
"OpenSSL",
"Zlib",
]
5. 実際に試してみる
実際に試すには下記の2つの方法が手っ取り早そうです。
- 公式サイトのダウンロード用のページからダウンロード
- Brewでインストール
brew install zed
今回は前者の公式サイトから バージョン 0.123.2 をダウンロードしてきます。
ディスクイメージをダウンロードできたのでこれを実行してみます。下記のように規約の確認画面があるので、確認して同意します。
もろもろ終了すると下記のように アプリケーションが確認できるので、 Applications の中に移動させて起動します。
開いてみた感じ、下記のようなシンプルなエディターが開きました。
初期表示には下記のチェックボックスがあり、各種設定を有効化・無効化できそうです。
- Vim モードの有効化 (Enable vim mode)
- 公式サイトではVimモードはまだ開発中のようなので、現時点では有効にしないほうがいいかもしれません。
- 公式サイトではVimモードはまだ開発中のようなので、現時点では有効にしないほうがいいかもしれません。
- アノニマスデータの送信 (Send anonymous usage data)
- これはインストール時に表示された規約の
3.3.1.1. Telemetry Data
に記載のあるテレメトリデータではないかと思います。
- これはインストール時に表示された規約の
- クラッシュレポートの送信 (Send crash reports)
てきとうにMacのターミナルなどからディレクトリやファイルを作成します。
$ mkdir hello_test
$ cd hello_test
$ touch test.rs
メニューバーのアプリメニューから、Openを選んで開いてみます。
5.1 ターミナルなどからの直接起動
勿論 VScode などと同じようにMacであれば、ターミナルなどから直接起動することもできます。
$ open hello_test -a Zed
5.2 言語対応の確認
どんな感じに実際のファイルが見えるかを確認するために、Zedのソースコードを落として確認してみます。
$ git clone git@github.com:zed-industries/zed.git
$ open zed -a Zed
開いたZedから crates/zed/src/main.rs
のファイルを開いてみると下記のような画面になり、ハイライトなどは適切に効いていそうに見えます。またよくあるパンくずリストも表示されています。
5.3 コードアクション
またカーソルを特定の位置に合わせた際に 雷マーク が表示される場合は、コードアクションを実行可能です。
例えば下記のようにuse文をつかって書き換えるかどうか選択できます。
これを選択した場合は、下記のように自動でuse文を使った形に変更され、
use文自体も自動で追加されます。
もっとシンプルな例だと、下記なようにブロックコメントに変更するかなどもあります。
5.4 Github Copilotの挙動を確認
ではGithub Copilotの動きも見ていきます。
下記のように Sign in か Copilot の無効化 の選択肢が出てくるので、サインインしてみます。
Sign in を押すと、下記のようなアクティベーションコードが表示されるのでコピーし、Connect to Github を押すと、ブラウザでGithubのページへ移動します。
Githubのページでは先ほどのアクティベーションコードの確認があるので、これを入力して Continue を押します。
下記のように、立地・IP・アクセス時間や、プラグインの振る舞いを確認し、 Authroize Github Copilot Pluginを押します。
Zedの方では下記のような表示がでて有効化していることがわかります。
また、先程の表示にもあったように有効化すると、セッティングやサインアウトなどがボタンから選択できるようになっていました。
適当に書いてみるに、確かにGithub Copilotが動いていそうです。
6. VSCodeのリポジトリと簡単に比較
類似製品として私が使っているVSCodeと簡単に比較してみてみます。
ですが、VSCode自体はOSSではないため、Microsoftがコミュニティと一緒にVSCodeを開発するためのリポジトリである Visual Studio Code - Open Source ("Code - OSS")と簡単に比較していきます。
Zed | Visual Studio Code - Open Source | |
---|---|---|
Star | 24.6k | 156k |
Fork | 858 | 27.2k |
Watch | 109 | 3.3k |
Issue(Open) | 1461 | 7342 |
Issue(Close) | 2466 | 164470 |
Pull Request(Open) | 50 | 396 |
Pull Request(Close) | 3815 | 27335 |
※ 2024年2月23日時点での参考程度の比較です。
7. 後書き
個人的なイメージで言うと、パフォーマンス面とメモリの面ではVSCodeより若干優位性があるように見えておりまして、今はまだ拡張や機能が揃っていませんが、時間とともに充実していけば実用の選択肢に入るのではないかと思っています。
今回の記事では目玉機能である、チャンネルやコラボレーションなどは試せなかったので時間のある時にそれらも試して共有できればと思います。
この記事がどなたかの参考になれば幸いです。