Tinycast:100 MB未満のネイティブ・オープンソースmacOSランチャー

Tinycastは、ファジー検索、クリップボード履歴、ホットキー、スニペット、ウィンドウ管理、Raycast拡張機能を組み合わせたネイティブmacOSランチャーです。

Tinycast:100 MB未満のネイティブ・オープンソースmacOSランチャー

現代のmacOSランチャーは、ますます小さなオペレーティングシステムのようになっています。アプリケーションのインデックス作成、ウィンドウ管理、スニペットの展開、クリップボード履歴の保存、外部サービスとの接続などを行うためです。Tinycastは異なるアプローチを取ります。ElectronではなくSwiftUIとAppKitを使用し、小型で完全にネイティブなmacOSアプリケーションでありながら、同じようなコマンドセンター型のワークフローを提供することを目指しています。

このプロジェクトは、RAM使用量を100 MB未満に抑えたランチャー、ホットキー・ユーティリティ、クリップボード履歴マネージャーを自称しています。サードパーティ製ランタイムへの依存、テレメトリーはなく、AGPL-3.0ライセンスで公開されています。

Tinycastが興味深い理由

ランチャーが役立つのは、メニューやFinderウィンドウ、システム設定を手動で操作するよりも速い場合だけです。Tinycastでは、これらの操作を1つのグローバルショートカットと検索可能なコマンドパレットの背後にまとめています。そこから、現在のワークフローを離れることなく、アプリケーションの起動、ファイル検索、過去のクリップボード内容の貼り付け、シェルコマンドの実行、ウィンドウ管理、システム操作を行えます。

ネイティブ実装が重要なのは、ブランドイメージのためだけではありません。SwiftUIとAppKitにより、TinycastはSpotlight、グローバルショートカット、アクセシビリティサービス、ウィンドウ管理、メニューバーの動作など、macOS APIと直接統合できます。Electronを避けることで、ブラウザーランタイムの同梱に伴うメモリ使用量やパッケージのオーバーヘッドもなくなります。

主な機能

アプリケーションランチャー

Tinycastはインストール済みアプリケーションをファジー検索し、頻繁に使う項目をピン留めできます。現在実行中のアプリケーションを表示したり、1つのアプリケーションを終了したり、すべてのアプリケーションを一度に終了したりすることもできます。

通常のワークフローは意図的にシンプルです。

  1. 設定したグローバルショートカットを押します。
  2. アプリケーション名またはコマンド名の一部を入力します。
  3. Enterキーを押して起動します。
  4. Escapeキーを押してパレットを閉じます。

グローバルおよびアプリケーションごとのホットキー

グローバルショートカットを使うと、macOSのどこからでもパレットを呼び出せます。アプリケーションやカスタムコマンドに個別のグローバルショートカットを割り当てることもできます。アプリケーションの場合、そのショートカットを押すとフォーカスの切り替えまたは非表示が行われるため、ターミナル、エディター、コミュニケーションアプリなどに便利です。

ショートカットは 設定 → ショートカット で設定できます。ここでアプリケーションまたはカスタムコマンドを検索し、キーの組み合わせを記録します。

クリップボード履歴

Tinycastは、検索可能なテキストおよび画像のクリップボード項目を保存します。クリップボードインターフェースにはパレットから直接アクセスでき、選択した項目を使用中のアプリケーションに貼り付けられます。

パレットでは、アプリケーションとクリップボードの内容がタブに分けられています。Tabキーで切り替え、矢印キーで移動し、Enterキーで項目を選択します。

Spotlightを利用したファイル検索

Tinycastは、独自のアプリケーションインデックスを保持するのではなく、Spotlightを通じて指定したディレクトリ内のファイルやフォルダーを検索します。この設計により、macOSのインデックス作成処理を重複させず、ファイルの検索、ファイルを開く、フォルダーへ移動するという機能に集中できます。

計算と単位変換

インライン計算では、通常の算術演算、単位変換、リアルタイムの通貨換算、暗号資産の換算に対応しています。電卓がコマンドパレット内にあるため、別のアプリケーションやブラウザータブを開かずに利用できます。

クイックリンク、スニペット、カスタムコマンド

クイックリンクを使うと、URL、検索、ファイル、ディープリンクを再利用可能なコマンドに変換できます。入力内容、クリップボードの内容、現在の日付をプレースホルダーで受け取ることもできます。

スニペットは、次の機能に対応した再利用可能なMarkdownテンプレートです。

  • 動的なプレースホルダー
  • 引数
  • ネストされた参照
  • オプションのキーワード展開

カスタムコマンドは、名前付きシェルコマンドを検索できるインターフェースを提供します。コマンドには独自のグローバルホットキーも設定できるため、Tinycastを軽量な個人用自動化レイヤーとして利用できます。

たとえば、カスタムコマンドでプロジェクトのタスクをラップできます。

cd ~/Code/my-project && ./scripts/test.sh

その後、ターミナルを開いて同じ手順を繰り返し入力する代わりに、ファジー検索からコマンドを呼び出せます。

別のユーティリティを使わないウィンドウ管理

Tinycastには、Rectangle風のウィンドウ操作が34種類含まれています。一般的なレイアウトから高度なディスプレイ操作まで、次のような機能をカバーします。

  • 2分割、4分割、3分割
  • ウィンドウのサイズ変更と微調整
  • ディスプレイ間でのウィンドウ移動
  • フルスクリーン
  • Spaces操作

これにより、複数の小さなユーティリティを実用的に置き換えられます。複数のエディター、ターミナル、ブラウザー、テストデバイスを使う開発者は、頻繁に利用するレイアウトをコマンドやショートカットに割り当てられます。

システム操作、メモ、会議、絵文字

組み込みのシステム操作では、Macのロック、スリープ、再起動、ゴミ箱を空にする、外観の切り替え、Bluetoothの操作、オーディオのミュート、隠しファイルの表示などを行えます。

Tinycastには、ワークフロー指向の機能もいくつか含まれています。

  • カレンダーと会議: 空のパレットとメニューバーに次の会議を表示し、1キーで参加したり、オプションで自動参加したりできます。
  • メモ: フローティングエディターで、無制限のプレーンMarkdownファイルを管理できます。メモはコマンドパレットから検索できます。
  • 絵文字ピッカー: 1回のキー入力で検索可能な絵文字グリッドを開きます。

プレーンMarkdownのメモは、移植性が高く、バージョン管理、バックアップ、別のツールでの編集が容易なため、特に開発者にとって魅力的です。

オプションのAIおよびRaycast互換性

TinycastにはAIチャットとクイックアクションが含まれていますが、AI機能は初期状態では無効です。ユーザーは自分のAPIキーを指定するか、インストール済みのAIアカウントを使用できます。クイックアクションでは、別のアプリケーションで選択したテキストの文法修正、書き換え、翻訳、要約を行えます。

また、既存のRaycast拡張機能をネイティブに実行し、SwiftUIとして描画することにも対応しています。これにより、Tinycast自体をブラウザベースの拡張ホストにすることなく、Raycastから移行できます。

AIの設計は意図的にオプトイン方式です。ユーザーが有効化して設定しない限り、コンテンツや認証情報がひそかに送信されることはありません。

Homebrewでのインストール

TinycastはmacOS 15以降およびSwift 6.0に対応しています。まず、サードパーティ製Homebrew tapを信頼して追加します。

brew trust --tap abue-ammar/tinycast
brew tap abue-ammar/tinycast

次に、お使いのMacに合うcaskを選択します。

# Appleシリコン、macOS 26以降
brew install --cask tinycast

# Intel、macOS 26
brew install --cask tinycast-universal

# macOS 15 Sequoia
brew install --cask tinycast-sequoia

Homebrewはプラットフォームを確認し、互換性のないパッケージのインストールを拒否します。macOS 26以降のAppleシリコン向けには、初期ビルド用チャンネルも利用できます。

brew install --cask tinycast@beta

ベータ版アプリケーションは安定版アプリケーションと同じ場所にインストールされますが、設定と権限は別になります。Homebrewはインストールおよび更新時にmacOSの隔離フラグを解除します。DMGを手動でダウンロードした場合、Tinycastは自己署名されているため、次のコマンドを一度実行して隔離属性を解除してください。

xattr -dr com.apple.quarantine "/Applications/Tinycast.app"

アクセシビリティ権限とプライバシー

Tinycastが別のアプリケーションにテキストを貼り付けたり展開したりする場合、アクセシビリティ権限が必要です。スニペットのキーワード展開に必要な権限もこれだけです。機能が初めて権限を必要とすると、macOSがアクセスを求めます。設定は システム設定 → プライバシーとセキュリティ → アクセシビリティ で管理できます。

スニペットは初期状態では無効です。キーワードの照合はローカルで行われ、キー入力が保存されたり、どこかへ送信されたりすることはありません。プロジェクト全体としても、テレメトリーやサードパーティ製依存関係はないとしています。

ビルドとコントリビューション

リポジトリは主にSwiftで構成されており、報告されている言語使用割合はSwift 90.9%、JavaScript 5.8%、TypeScript 2%、その他の言語1.3%です。Xcodeプロジェクト、テスト、スクリプト、ドキュメント、ウェブサイトのソース、CI設定が含まれています。

ソースからビルドする開発者は、ツールチェーン、ビルド、パッケージング、リリース、ウェブサイトのワークフローについて docs/development.md を確認してください。docs/ ディレクトリには、アーキテクチャ文書、エンジニアリング標準、デザインシステム、機能別ドキュメントへのインデックスもあります。

コントリビューションのルールは意図的に厳格です。コントリビューターはコードを書く前にissueを作成する必要があり、プルリクエストが受け入れられる前にissueの承認を得なければなりません。承認済みのissueを解決しないプルリクエストは、自動的にクローズされる場合があります。ドキュメントのみの変更は例外です。

また、コントリビューターには CONTRIBUTING.md を読むことが求められます。ここには、プルリクエストに必要なメモリ予算、視覚的な変更に必要な変更前後の動画、特定の機能が却下される可能性がある理由が記載されています。セキュリティ上の問題は、issueトラッカーではなく SECURITY.md を通じて報告してください。

ライセンスとプロジェクトの状況

Tinycastは無料であり、今後も無料であり続けることを意図しています。AGPL-3.0でライセンスされており、作者の居住国ではGitHub Sponsorsが利用できないため、支援は一度限りのチップで受け付けています。決済はPolar.shが処理します。

リポジトリには、3,100以上のスター、185のフォーク、41人のコントリビューター、92回のリリースが掲載されており、プロジェクトページで示されている最新リリースはバージョン0.10.23です。これらの数字は、小規模な概念実証ではなく、活発なオープンソースプロジェクトであることを示しています。

Electron、テレメトリー、複数の個別ユーティリティ群を使わずに高速なコマンドパレットを求める開発者にとって、Tinycastは魅力的なmacOSネイティブの選択肢です。最大の魅力は単一の機能ではありません。ランチャー、ホットキー、クリップボード、スニペット、ウィンドウ操作、メモ、オプションの統合機能が、1つの軽量なワークフローに収まっている点です。

ソース

abue-ammar/tinycast: Tinycast — 小さく、完全にネイティブなmacOSランチャー、ホットキー、クリップボード履歴。