Ghostty 1.0が登場します
約2年にわたる開発と非公開ベータテスト1を経て、Ghostty 1.0を2024年12月に、MITライセンスのオープンソースプロジェクトとして一般公開することをお知らせできるのを嬉しく思います。
このブログ記事では、Ghosttyプロジェクトのより大きな目標を改めて説明し、1.0リリースに向けた具体的な目標をまとめます。Ghosttyには野心的な計画がありますが、初日から期待できることと、将来実現することについて、明確な見通しも示したいと思います。
要するに、Ghostty 1.0はmacOSとLinuxにおいて、現在使っているターミナルエミュレーターをそのまま置き換えられる、最高の選択肢を目指しています。Ghosttyは高速で、豊富な機能を備え、プラットフォームネイティブなGUIを持ちながら、現存するターミナルエミュレーターの中で最も標準に準拠したものになります。
最高の既存ターミナルエミュレーター
2023年9月に行ったZig Showtimeの講演で使ったこのスライドが、新しいターミナルエミュレーターの開発を始めた理由を最もよく表しています。

比較したターミナルエミュレーターの数が限られているのは、主にスライドのデザイン上の都合です。しかし、より大きなポイントは変わりません。既存のターミナルエミュレーターは、速度、機能、プラットフォームネイティブなGUIの間で、不必要な選択を迫っているように感じたのです。2
Ghosttyでは、高速で、豊富な機能を備え、プラットフォームネイティブなGUIを持ちながら、クロスプラットフォームでもあるターミナルエミュレーターを作ろうとしました。Ghostty 1.0は、これらすべての目標を達成していると考えています。
この目標で重視しているのは、既存のターミナルエミュレーターとして最高のものになることです。Ghostty 1.0は、ターミナルでできること自体に新機軸を打ち出そうとしているのではありません。むしろ、現在macOSとLinuxで利用できる、単体のターミナルエミュレーターとして最高の体験を提供しようとしています3。
もちろん、Ghosttyは完璧でも完成しているわけでもありません。すべてのターミナルエミュレーターのすべての機能を実装したわけではないため、Ghosttyにない機能はまだたくさんあります。それでも、今後も改善を続けていけば、大多数のユーザーに満足してもらえると考えています。
高速で、機能が豊富で、プラットフォームネイティブ
Ghosttyを使う前に寄せられる最も多い反応は、これらの違いが本当に意味を持つのかという懐疑です。Ghosttyを使った後に最も多く聞くのは、これほど大きな違いがあるとは気づかなかった、もう元には戻れない、という反応です。
Ghosttyが高速で、機能が豊富で、プラットフォームネイティブであるとは、具体的にどういうことでしょうか。どれも大きく複雑なテーマなので、ここではそれぞれについて重要な点をいくつか取り上げるだけにします。
「高速」については、最近、Systems Distributed 2024で『ターミナルエミュレーターを本当に、本当に高速にする:Ghostty』という5分間のライトニングトークを行いました。動画はこちら(50分15秒から再生)。Ghosttyの性能についてどのような考えをもとに開発してきたかを知るにはよい内容ですが、ライトニングトークなので網羅的なものではありません。
「機能が豊富」という点で、Ghosttyがまず目指しているのは、可能な限り幅広いターミナルアプリケーションをサポートすることです。そのため、Ghosttyはxterm自体を除けば、ほかのどのターミナルエミュレーターよりも多くのxtermエスケープシーケンスに対応しています。スタイル付き下線、Kittyキーボードプロトコル、グラフィックスプロトコルなど、現代的なターミナル仕様のほぼすべてにも対応しています。(ターミナルのエスケープシーケンスではありませんが、Ghosttyはリガチャにも対応しています!)
「プラットフォームネイティブ」という点では、GhosttyはmacOSでネイティブのGUIツールキットを、LinuxではGTK(利用可能な場合はlibadwaitaも)を使っています。つまり、どちらのプラットフォームでも、Ghosttyは見た目も操作感も、そして実際に動作も、ネイティブアプリケーションそのものです。これは、ネイティブのGUIツールキットをウィンドウの作成にしか使わない、多くのターミナルエミュレーターとは対照的です。
プラットフォームネイティブであることの利点を示す例として、Ghosttyにはネイティブのタブ、分割表示、右クリックメニュー、メニューバー、Dockとの統合、入力メソッドのサポート(絵文字キーボードや音声入力など)、確認ウィンドウ、デスクトップ通知、macOSのセキュア入力モードなどがあります。
以下は、macOSとLinuxで動作するGhosttyのスクリーンショットです(どちらもテーマを設定していますが、おそらく設定は数行だけです)。プラットフォームネイティブなGUIがどのように見えるかが分かります。


(どちらも、GhosttyのDiscordサーバーにある公開ショーケースチャンネルでコミュニティの方が共有してくれた画像です)
最初のリリースが1.0になります
Ghosttyは約2年にわたって非公開ベータテストを続けてきました。この記事を書いている時点で、macOSとLinuxに約2,000人のテスターがいて、その大半は問題なくGhosttyを日常的に使うメインのターミナルエミュレーターにしています。
この大規模な非公開ベータテストを経て、Ghosttyの最初の一般公開版はバージョン1.0になります。ここでZeroVerを採用することはありません!4
長期間にわたる非公開ベータテストを行った主な理由は、極めて個人的なものでした。私は第一子を迎えたばかりで、機能の開発やバグ修正を求める外部からのプレッシャーよりも、家族との時間を優先したかったのです。理屈の上では、周囲の声を無視することもできたでしょう。しかし実際には、自分のことをよく分かっているので、気が散って精神的に負担になると分かっていました。
家族との事情とは別に、ソフトウェアは準備が整ったときにリリースされていた頃を懐かしく思っています。CompUSAのような店がまだ存在していたなら、Ghostty 1.0は箱に入れられ、シュリンク包装され、購入できる状態で店頭に並んでいたはずだ、と想像するのが好きです(しかも無料のオープンソースソフトウェアとして)。
非公開ベータテストがもたらしたほかの影響は、予想していなかったもの、意図していなかったものでした。たとえば、Ghosttyを排他的なものに感じさせるつもりはまったくありませんでした(そもそも、ターミナルエミュレーターにそれほど多くの人が関心を持つとは、正直思っていませんでした!)。非公開ベータによって、Ghosttyへの期待を人為的に高めるつもりもありませんでした。このことで嫌な思いをした方には申し訳なく思います。
このアプローチについて、また、私が自分の仕事や進捗を共有するのが好きだというだけで、何かを受け取る権利があると考えているような人がこれほど多くいたことについて、あれほど批判を受けたのには驚きました。一方で、私のやり方を支持し、理解してくれた、はるかに多くの方々には感謝しています。
最後に、Ghosttyを使い、素晴らしいフィードバックを提供してくれたテスターの皆さんにお礼を申し上げます。開発者のツールキットにおいて重要な位置を占めることも多いソフトウェアの初期バージョンを使うリスクを引き受けてくれた、多様なテスターの皆さんがいたからこそ、Ghosttyの安定性は実現できました。
大きなビジョン
将来に目を向けると、Ghosttyには大きく2つの領域で野心的な計画があります。libghosttyとターミナルアプリケーションの機能です。
libghosttyは、Ghosttyを支えるクロスプラットフォームのコアライブラリです。ZigおよびCのAPIとして利用でき、現在はmacOSとLinuxで動作します。専用アプリケーション、エディターなどに組み込むターミナル、Webベースのターミナル、新しいターミナルマルチプレクサなど、幅広く多様なターミナルエミュレーターアプリケーションのエコシステムが生まれることを目指しています。
libghosttyの考え方は、開発者が優れたアプリケーションを構築する難しい作業に集中し、高速で機能が豊富、かつ標準に準拠したターミナルエミュレーションを無料で利用できるようにすることです。さまざまな意味で、現在のGhosttyはlibghosttyの利用者の「リファレンス実装」だと説明できます。
Ghostty 1.0では、libghosttyは安定版とも、単独で利用できる公開APIとも見なしていません。ただし、Ghosttyは内部でlibghosttyを利用しています。Ghostty 1.0以降の目標は、libghosttyを単独のライブラリとしてリリースできる段階に到達し、macOSとLinux以外にも、特にWebAssemblyへとプラットフォームのサポートを広げることです。
libghosttyに加えて、アプリケーションが活用できる、ターミナル内部のさらなる機能も構築したいと考えています。たとえば、エスケープシーケンスの安全性を高めること、タッチジェスチャー、慣性スクロール、描画デバイスなど、より現代的な入力方法を利用できるようにすること、アプリケーションがネイティブのコンテキストメニューを提供できるようにすることなどです。
ターミナルアプリケーションの機能を拡張する目的は、開発者にとってテキストベースのアプリケーションを構築しやすく、ユーザーにとって使いやすいものにすることです。テキストベースのアプリケーションにはソフトウェアエコシステムにおける価値あるニッチがあると考えており、そのプラットフォームの現代化を手助けしたいと思っています。
これらは、Ghosttyについてより大きなビジョンを持ち、それに向けて取り組んでいることを示すための、大きく長期的な目標です。短期的には、当初からの大きな目標である「高速で、機能が豊富で、プラットフォームネイティブ」という方針に沿って、ユーザーからのフィードバックと自分自身のアイデアをもとに、Ghosttyを段階的に改善していくつもりです。1.0リリースに間に合わないのが残念な大きな機能もいくつかありますが、それらは後続のリリースで追加されます。
資金と持続可能性
このブログ記事で大きく取り上げたい話題ではありませんが、起業家としての私の経歴や、このテーマへの一般的な関心を踏まえ、混乱や憶測を避けるために、Ghosttyの資金面と持続可能性について簡単に触れておきます。
Ghosttyは私にとって情熱を注ぐプロジェクトであり、商業化を目指す計画は一切ありません。最初の段落で述べたとおり、GhosttyはMITライセンスのオープンソースプロジェクトとしてリリースされます。
個人的には、過去の成功のおかげで、経済的なプレッシャーを受けずにGhosttyのようなプロジェクトに取り組める自由があり、幸運だと思っています。私はこれまで何度も公に述べてきたように、Ghosttyに取り組むことを「技術的な慈善活動」の一種だと捉えています。自分自身の不満を解消し、楽しみながら、世の中に恩返しをする手段なのです。
同時に、Ghosttyが私なしでも長期的に存続してほしいと思っています。また、主要な貢献者の仕事に対して、将来的に報酬を支払えるようにもしたいと考えています。そのため、私と(現在は非公開の)コミュニティは、Ghosttyの長期的な持続可能性を確保するための非営利組織の形態を検討しています。ただし、これは長期的な目標であり、1.0リリース時点で整うものではありません。
12月にお会いしましょう
2024年12月のGhostty 1.0一般公開を楽しみにしています。
Ghosttyは、2年以上にわたって私が情熱を注いできた大きなプロジェクトです。最初はフルタイムの仕事と並行して、ときどき取り組むサイドプロジェクトでした。それが、仕事を辞め、第一子を迎えた後には、私の主な、ただしあくまでパートタイムの取り組みになりました。
Ghostty 1.0は完璧ではありません。しかし、その安定性と機能セットには誇りを持っていますし、世界中の人々に共有する準備は整ったと思います。何よりも、Ghosttyに注いできた愛情と配慮が伝わり、日々の仕事に喜びをもたらせたらと願っています(ターミナルエミュレーターにできる範囲で)。
👻
脚注
記事をランダムに読む