Launch HN: Haystack (YC S24) – 無限キャンバス上でコードを可視化・編集する技術
(github.com/haystackeditor)- Haystack Editor は、コードエディタのシンプルさとキャンバスUIを組み合わせ、コードをひと目で理解しやすくする製品であり、このリポジトリでコミュニティとともに開発されている
- リポジトリではコードやイシューだけでなく ロードマップ も公開しており、ソースコードは PolyForm Strict License 1.0.0 の下で提供される
- 製品ディストリビューションはリポジトリをベースに特定のカスタマイズを加えた形で、別個の 利用規約 の下で提供される
- 機能例として Canvas Workspaces、Explorer View、Keyboard Navigation、Generate Function があり、総合的なコード編集・探索・理解支援と軽量なデバッグ、拡張モデル、既存ツールとの軽量な統合を含む
- Haystack は毎週、新機能とバグ修正で更新されており、Windows、macOS、Linux 向けにダウンロードできる
Haystack Editor リポジトリの役割
- このリポジトリは、Haystack Software がコミュニティとともに Haystack Editor 製品を開発する場である
- コードやイシュー対応だけでなく、roadmap も公開している
- ソースコードは PolyForm Strict License 1.0.0 の下で提供される
Haystack Editor 製品
- Haystack Editor は
Haystack Editorリポジトリのディストリビューションであり、特定のカスタマイズが含まれる - ディストリビューションは別個の terms of service の下でリリースされる
- 製品はコードエディタのシンプルさと キャンバスUI を組み合わせ、コードをひと目で理解しやすくする
- 対応範囲には以下が含まれる
- 総合的な コード編集
- コード探索
- コード理解の支援
- 軽量なデバッグ
- 豊富な拡張モデル
- 既存ツールとの軽量な統合
- Haystack は毎週、新機能とバグ修正で更新される
- Windows、macOS、Linux 向けのダウンロードは Haystack ウェブサイト から可能
機能プレビュー
- Canvas Workspaces 機能を提供する
- Explorer View 機能を提供する
- Keyboard Navigation 機能を提供する
- Generate Function 機能を提供する
貢献とフィードバックの経路
- プロジェクトへの参加方法は複数ある
- バグと機能リクエストの提出
- チェックインされた変更の検証支援
- ソースコード変更 のレビュー
- ドキュメント のレビューと、誤字修正または新しいコンテンツ追加のPR
- コードベースに直接貢献するには、How to Contribute 文書を参照する
- ソースからビルドして実行する方法
- デバッグとテスト実行を含む開発ワークフロー
- PR の提出
- 取り組むイシューの探し方
- フィードバックチャネルは以下のとおり
- Discord で質問する
- イシュー登録
- @AkshaySubr42403 をフォローして意見を送る
関連プロジェクトとバンドル拡張
- Haystack の複数の中核コンポーネントと拡張機能は、GitHub 上の別リポジトリにある
- 例として node debug adapter と mono debug adapter は、それぞれ別リポジトリである
- 別の例として Pixi repository がある
- Haystack は
extensionsフォルダに複数の 組み込み拡張 を含んでいる- 複数言語向けの文法とスニペットが含まれる
- コード補完や Go to Definition のような豊富な言語サポートを提供する拡張は
language-features接尾辞を使用する - たとえば
json拡張はJSONのカラーリングを提供し、json-language-features拡張はJSONに対する豊富な言語サポートを提供する
1件のコメント
Hacker Newsのコメント
このアイデアは数十年前から素晴らしかった。Haystackも過去の多くの試みと同じように成功してほしいし、初期の実装は有望に見える
ただ、呼び出し元/呼び出し先を把握しにくかったり、開発者ごとにUXの好みが分かれたりと、課題は多そうだ。2D画面よりはるかに広い空間、たとえばVRヘッドセットのような環境では、さらに強力になるのではとずっと思ってきた
とてもクールだ。組織全体のコードベースがこうしてマッピングされ、複数のフレームワークや言語をまたいで見える様子を想像した
動画で見落としたのか、まだ不可能なのかは分からないが、ノードを手でつなぐのは作業量が多すぎるので、リポジトリのフォルダで実行して可視化を自動化するシンプルなボットがあるといい。関心リストに追加した
自分なら、デジタル変革を進めている、あるいは計画中の大企業組織や地方自治体のITグループを狙う。レガシー作業と新規作業のあいだで、道筋や意味を把握する必要があるからだ
うまくいけば1年以内にSalesforceが来るかもしれない。彼らのビジョンや製品群ともかなり相性がよさそうだ
その状態で実際に使い物になるかは分からないが、試してみたら面白そうだ。コードベース全体を表したUML図のように、何千本もの矢印があるイメージだ
そうなれば、同僚に修正すべきファイルが右上のどこかにあると伝えられるし、Gitの差分も視覚的に見えるので、あちこちの変更箇所を拡大して見られる
たとえば「購読ボタンをマウスで押した瞬間からバックエンドまで何が起きるのか」といった質問を扱うイメージだ
このプロジェクトがLight Tableから着想を得たのか気になる
機能要望としては、可視化を2Dの先へ拡張してほしい。本当に複雑なシステムはたいてい精巧なグラフ、よく言えば毛糸玉のような構造なので、2D平面の可視化だけでは足りないと感じたことがある
外側の層に境界サービス、内側の層にコア/ドメインサービスを置くような、同心球の可視化のようなものがあるとよさそうだ
もっと3Dに近いビューという指摘は興味深い。このアイデアは考えたことがあるが、ユーザーが理解できる形でうまく作るのは本当に難しい。それでも将来のビジョンには確実に入っている
修正: Light Tableに関する推測は事実ではなかったので削除した
かなり脇道の質問だが、代表的で実用的なオープンソースの無限キャンバスはあるだろうか? カードゲームを作っていて、マルチプレイヤー対応の無限キャンバスが必要だ。おすすめがあれば知りたい
VSCode拡張だったら使っていたと思う。試してみたいが、最近はCursorの中で生活している
なぜ拡張として作れないのか気になる。アイデアは本当に素晴らしくて、エディタ領域のタブの中に収まっている姿が完璧に想像できる
そうすればHaystackタブを複数持てるので、コンテキストスイッチがずっと楽になりそうだ。VSCodeベースだとしても、別のIDEをまたインストールしなければならないのは少し残念だ。それでもこのまま頑張ってほしい
Selfプログラミング言語のKansas環境を思い出した。Sunが1995年に作った動画がある
https://www.youtube.com/watch?v=Ox5P7QyL774
この動画の後で、さらに面白い検索機能が追加された
すばらしい。大きなコードベースを見るときに自分がやっている流れとほぼ同じだが、ずっときれいに整理されている
普段は複数のソースファイルを指すターミナルを5、6個開いて、頭の中で地図を作ろうとしている。最終的には感覚がつかめるが大変な作業なので、こういうツールがあればものすごく助かるだろう。あとはウルトラワイドモニターと組み合わせるだけだ
頭の中に保持しなければならないものが減るので助かりそうだが、今のUIはマウス依存が強すぎる。ショートカットを用意して、ウィンドウマネージャのdwmのように「タイリング」されるようになれば、ウィンドウサイズを手動で調整しなくて済むといい
手動のサイズ調整については、ビューポート内でのタイリングを試している。どんな理由でサイズ調整したくなるのか教えてもらえれば改善できそうだ
開発者がコードを2次元空間に広く展開してマッピングする便利なアプローチに見える。これは場所法[1]に似ていて、開発者がコード片とそのつながりを空間的に精密に符号化し、記憶を強化して理解も高めるやり方だ
そこで、大胆に提案したいのは、邪魔にならず少しだけ情報を与える背景パターンのオプションを追加することだ。具体的なパターンは思いつかないが、背景が世界地図なら、ユーザーは探したい位置をより早く記憶し、自分の位置もより早く把握できるはずだ
同じ発想の延長として、タブ枠の色をユーザー定義にしたり、タブごとに異なるノイズを加えたりできるようにするのも検討に値する。ノイズはズームレベルやビューポート中心からの距離に応じて薄くなればよい
https://en.wikipedia.org/wiki/Method_of_loci
ほのかな色の違いや音を使うというアイデアも面白い。考えてみる