ISHはあなたのマシン上で動いて7種類のAPIのふりをする。Google、GitHub、Twilio、Discord、SendGrid、Home AssistantのSDKを本物のサービスではなくlocalhost:9000に向けるだけで、コードは違いを察知できない。APIクォータを消費せず、OAuth認証情報の管理も不要で、ネットワーク接続も必要ない。Goバイナリ1本、SQLiteファイル1本、エンドポイント50本以上。
インストール
go build -o ish ./cmd/ish
またはリリースページからビルド済みバイナリをダウンロード。
次にテストデータを投入してサーバーを起動:
./ish seed
./ish serve --port 9000
何をするのか
Google APIs — Gmail(メッセージ、スレッド、ラベル、添付ファイル、is:unreadやin:inboxなどの検索構文)、Calendar(イベント、時間フィルタリング、同期トークン)、People(連絡先、検索、ページネーション)、Tasks(リスト、CRUD、完了トラッキング)。
GitHub — リポジトリ、Issue、プルリクエスト、コメント、レビュー、REST v3 APIによるSSRF保護付きWebhook。
Twilio — 非同期Webhook配信付きのSMSおよび音声API、電話番号、通話、メッセージ。
Discord — Webhook API v10: embedとコンポーネントサポートを含むメッセージの実行・編集・削除。
SendGrid — メール送信API v3、APIキー管理、サプレッションリスト。
Home Assistant — エンティティの状態、サービス呼び出し、トークン認証。
OAuth 2.0 — 認可コードフロー、トークンリフレッシュ、失効をシミュレートするモックOAuthプロバイダー(任意のプラグイン向け)。
これらはすべて公式SDKと連携する。変更はベースURLだけ:
export GOOGLE_API_BASE_URL=http://localhost:9000
ISHは/adminに管理UIも搭載している — スキーマ駆動のWebインターフェースで、すべてのリソースを閲覧し、テストデータを管理し、サーバーに届いたすべてのリクエストを調査できる。
OPENAI_API_KEYを設定すると、ish seedコマンドがAIを使ってリアルなメール、カレンダーイベント、連絡先、タスクを生成する。設定しない場合はセンスのある静的データが使われる。
仕組み
各APIはプラグインだ。プラグインは標準インターフェース — ルート、スキーマ、シードデータ — を実装して起動時に自身を登録する。管理UIはプラグインスキーマを読んでUIを自動生成するので、新しいモックAPIを追加してもコアコードに触れる必要はない。
データは単一のSQLiteファイル(デフォルトは~/.local/share/ish/ish.db)に格納される。すべてのリクエストはプラグイン帰属、メソッド、パス、ステータス、タイミングとともにログに記録される。認証レイヤーはBearer user:USERNAMEトークンを受け付ける — 本物のクレデンシャルは不要。
必要要件
- Go 1.21以上(ソースからビルドする場合)
- オプション: AIによるテストデータ生成に
OPENAI_API_KEY
