LoginSignup
75
61

Atom の作者達が作った Rust 製エディタ Zed (OSS)

Last updated at Posted at 2024-02-23

1. 概要

2024年の1月24日にZedがOpen source化しました! ということで、Zedとは何か、実際に使ってみてどうだったかというのを簡単にご紹介できればと思います。

2. Zed とは何か?

AtomとTree-sitterのクリエイターによる、Rust製のコードエディターで、OSS (オープンソースソフトウェア) であり、 Githubのリポジトリ こちらで公開されています。

公式サイトから一部抜粋すると下記のような特徴があるようです。

2.1 パフォーマンスを重視した設計

  • スクリーンショット 2024-02-20 17.33.06.png
  • スクリーンショット 2024-02-20 17.33.14.png
  • スクリーンショット 2024-02-20 17.33.21.png

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つの方法が手っ取り早そうです。

  1. 公式サイトのダウンロード用のページからダウンロード
  2. Brewでインストール
    • brew install zed

今回は前者の公式サイトから バージョン 0.123.2 をダウンロードしてきます。

ディスクイメージをダウンロードできたのでこれを実行してみます。下記のように規約の確認画面があるので、確認して同意します。

スクリーンショット 2024-02-20 14.14.22.png

もろもろ終了すると下記のように アプリケーションが確認できるので、 Applications の中に移動させて起動します。
スクリーンショット 2024-02-20 14.40.23.png

開いてみた感じ、下記のようなシンプルなエディターが開きました。
スクリーンショット 2024-02-20 14.43.53.png

初期表示には下記のチェックボックスがあり、各種設定を有効化・無効化できそうです。

  • Vim モードの有効化 (Enable vim mode)
    • 公式サイトでは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を選んで開いてみます。
スクリーンショット 2024-02-21 1.46.19.png

フォルダを指定して開いてみると下記のような感じでした。
スクリーンショット 2024-02-21 1.47.08.png

各種ボタンなどをざっと確認すると下記のような感じです。
スクリーンショット_2024-02-21_2_54_01.png

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 のファイルを開いてみると下記のような画面になり、ハイライトなどは適切に効いていそうに見えます。またよくあるパンくずリストも表示されています。

スクリーンショット 2024-02-21 3.12.52.png

5.3 コードアクション

またカーソルを特定の位置に合わせた際に 雷マーク が表示される場合は、コードアクションを実行可能です。

例えば下記のようにuse文をつかって書き換えるかどうか選択できます。
スクリーンショット 2024-02-21 19.25.37.png

これを選択した場合は、下記のように自動でuse文を使った形に変更され、
スクリーンショット 2024-02-21 19.37.18.png
use文自体も自動で追加されます。
スクリーンショット 2024-02-21 19.37.33.png

もっとシンプルな例だと、下記なようにブロックコメントに変更するかなどもあります。
スクリーンショット 2024-02-21 19.25.51.png

5.4 Github Copilotの挙動を確認

ではGithub Copilotの動きも見ていきます。

画面右下の下記のアイコンをクリックしてみると、
スクリーンショット_2024-02-22_11_25_40.png

下記のように Sign in か Copilot の無効化 の選択肢が出てくるので、サインインしてみます。
スクリーンショット_2024-02-22_11_27_09-2.png

Sign in を押すと、下記のようなアクティベーションコードが表示されるのでコピーし、Connect to Github を押すと、ブラウザでGithubのページへ移動します。
スクリーンショット 2024-02-22 14.16.31.png

Githubのページでは先ほどのアクティベーションコードの確認があるので、これを入力して Continue を押します。
スクリーンショット 2024-02-22 14.17.05.png

下記のように、立地・IP・アクセス時間や、プラグインの振る舞いを確認し、 Authroize Github Copilot Pluginを押します。
スクリーンショット 2024-02-22 14.17.31.png

下記のように完了画面がでると、有効化は完了です。
スクリーンショット 2024-02-22 14.18.01.png

Zedの方では下記のような表示がでて有効化していることがわかります。
スクリーンショット 2024-02-22 14.18.18.png

また、先程の表示にもあったように有効化すると、セッティングやサインアウトなどがボタンから選択できるようになっていました。
スクリーンショット 2024-02-22 14.47.41.png

適当に書いてみるに、確かにGithub Copilotが動いていそうです。
スクリーンショット 2024-02-22 16.16.14.png

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より若干優位性があるように見えておりまして、今はまだ拡張や機能が揃っていませんが、時間とともに充実していけば実用の選択肢に入るのではないかと思っています。

今回の記事では目玉機能である、チャンネルやコラボレーションなどは試せなかったので時間のある時にそれらも試して共有できればと思います。

この記事がどなたかの参考になれば幸いです。

75
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
75
61