Ghosttyの豆知識

![表紙](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3967621/41177b22-ceef-b8a4-de38-cbbdc8b80b1c.png)

このクリスマス休暇中、Mitchell Hashimotoは[Ghostty](https://x.com/mitchellh/status/1872377299250880524)を発表しました。

Ghosttyが公開されると、Mitchell Hashimotoの名声（HashiCorpの創設者）だけでなく、Ghostty自体の品質が注目されました。このターミナルエミュレータの世界に新風を巻き起こしました。

「Build in Public」の代表例として、Mitchellは最近Changelogのポッドキャストに出演しました。[100分のエピソード](https://changelog.com/podcast/622)では、Ghosttyプロジェクトの誕生、目的、開発過程について多くの興味深い話を共有しました。

ポッドキャストで紹介されたGhosttyに関する面白い事実をいくつか紹介します。

## Ghosttyの誕生

HashiCorpの創設者であるMitchellは、2023年に同社を退職する前はサーバーサイドの開発に従事していました。

彼はずっとコーディングが好きで、HashiCorpを離れた後、これまでの仕事とは異なる新しいことを探求したいと考えていました。彼にとって、それは「インフラでない」、「サーバーサイドでない」、「デスクトップソフトウェア」に取り組むことを意味し、その結果、Ghosttyが生まれました。

## すでにTerminal.appがあるのに、なぜGhosttyを作ったのか？

ターミナルの可能性はまだ十分に探求されていません。市場にはターミナルエミュレータは数少なく、ブラウザは数百種類も存在します（その数は増え続けています！）。

Mitchellは、あらゆる面で優れたターミナルを作りたかったのです。

## Ghosttyの主要な特徴

- 高速
- クロスプラットフォーム
- ネイティブ

![比較](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3967621/2c8f207e-7b50-88f2-9d93-9ea99307f524.png)

## 高速なターミナルを定義するものは？

- **ファイル読み込み速度**: ターミナルがファイルをどれだけ速く読み込むか？
- **入力遅延**: キーを押してから、文字がターミナルに現れるまでの速さは？
- **描画速度**: 大きなファイルをスクロールする際のフレームレートはどれほど高いか？

## なぜGhosttyは高速なのか？

Ghosttyはネイティブアプリケーションとして開発され、各プラットフォームに特化した最適化が施されています。命令レベルのアーキテクチャに至るまで、各プラットフォームに合わせた最適化が行われています。

たとえば、Apple Siliconでは独自のARM命令を使用し、IntelではSIMD命令を使用します。

描画については、macOSではMetalフレームワーク、LinuxではOpenGLを使用しています。

## ターミナルの未来を想像する

ターミナルの機能を拡張できるのか？

HTMLやPDFファイルをターミナル内で直接開けるようにすることは可能か？ターミナル環境から出る必要はないのでは？

## Ghosttyの目標は？

影響を与えること。

ターミナルの改善に注力した者はこれまでいなかったので、Ghosttyはその役割を果たし、エコシステム全体に何らかの影響を与え、持続可能なコミュニティを育てることができます。

そのため、`libghostty`が重要です。Mitchellは、Ghosttyが唯一のターミナルプログラムになってほしくないと考えています。将来的には、誰もが自分のターミナルプログラムを開発できるようにしたいのです。iOSやAndroid、その他のプラットフォーム用でも、コアを再発明することなく開発できるように。

## なぜもっと早く公開しなかったのか？

Mitchellは、当時数ヶ月だった娘ともっと時間を過ごしたかったからです。

娘が寝ている時にしかコードを書く時間を確保できませんでした。

## なぜGhosttyにZigを選んだのか？

Zigは楽しく作業できる言語だからです。Rustも素晴らしい言語ですが、あまり楽しさを感じません。

## GhosttyはZigにどう影響を与えたか？

- ZigチームはGhosttyを使って、Zigの反復がコンパイラの安定性にどのように影響するかを確認しています。
- パッケージマネージャー機能は、AndrewにMitchellが提案したもので、LinuxでのGhosttyの配布が容易になりました。

## Ghostty開発で最も難しかった部分は？

フォントです。

開発の約70％はフォントのレンダリングに費やされました。

残りの30％はターミナルエミュレータの構築と、満足できるデフォルトフォントの選定に使われました。

## Ghosttyの特長は？

> 「それは、Appleが出したRetinaディスプレイのようなもので、使ってみるまではどれほど素晴らしいものか気づかないんです。」 -- Mitchell Hashimoto

## 最後に

ポッドキャスト全編を聞いてみると、Mitchellの情熱と限界を押し広げようとする意欲が伝わってきます：なぜターミナルは今のような形であるべきなのか？なぜもっと良くできないのか？

最後に、Mitchellに感謝します！

---

Ghosttyでローカル開発が完了したら、[Leapcell](https://leapcell.io/?lc_t=q_gstty)でプロジェクトをクラウドにデプロイしてみませんか？

[![Leapcell](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3967621/202b8b3d-ebb1-2f9e-1b08-a2b040143c3a.png)](https://leapcell.io/?lc_t=q_gstty)

[Leapcell](https://leapcell.io/?lc_t=q_gstty)は、Webホスティング、非同期タスク、Redis向けの次世代サーバーレスプラットフォームです：

1. **複数言語サポート**

- JavaScript、Python、Go、Rustで開発できます。

2. **無制限のプロジェクトデプロイ**

- 使用量に応じて料金を支払い、リクエストがなければ料金は発生しません。

3. **比類のないコスト効率**

- 使用量に応じた支払い、アイドル時間は課金されません。
- 例: $25で6.94Mリクエスト、平均応答時間60ms。

4. **洗練された開発者体験**

- 直感的なUIで簡単に設定できます。
  - 完全自動化されたCI/CDパイプラインとGitOps統合。
  - 実行可能なインサイトのためのリアルタイムのメトリクスとログ。

5. **簡単なスケーラビリティと高パフォーマンス**

- 高い同時実行性を容易に処理するためのオートスケーリング。
- ゼロ運用オーバーヘッド — 構築に集中できます。

[ドキュメントで詳細を確認！](https://docs.leapcell.io/)

Xでフォローする：[@LeapcellHQ](https://x.com/LeapcellHQ)