favgif: SlackでGIFを検索、お気に入り登録、投稿
favgifは、チームがGIFをSlack内で直接検索し、お気に入りに登録し、チャンネルに投稿できるSlackアプリです。チャットを離れる必要はありません。
メッセージ入力欄から /favgif スラッシュコマンドで起動
担当した役割
ソロプロジェクト — プロダクト、Slack連携、そしてバックエンド全体。
favgifでできること
- 検索 — スラッシュコマンドまたはグローバルショートカットから。トレンドのGIF(Klipy)や、キーワードによる検索(Klipy、Tenor)が可能
- 投稿 — 選択したGIFを、選択画面を開いたチャンネルにそのまま投稿
- お気に入り — ユーザーごと、ワークスペースごとに保存して呼び出し
- リンク挿入 — GIFの直接URLやGiphyのページを、自動的にGIFファイルへ正規化
- ページネーション — 検索結果を「次へ/前へ」で切り替え
モーダル内でGIFを選択 —「Post」でチャンネルに直接投稿
お気に入りをすばやく選択、またはリンクで挿入
技術的な課題
- バックエンドを単一のEdge Functionで — Slackとのやり取りのロジック全体(スラッシュコマンド、ショートカット、モーダル、Block Actions)を、単一のSupabase Edge Function(Deno)で処理し、ユーザーごとのお気に入りはPostgresに保存。
- 複数のGIFプロバイダー — Klipy、Tenor、Giphyを統一されたインターフェースの裏側にまとめ、Giphyのページ URLを直接のGIFファイルへ正規化する処理も含む。
- Slackのインタラクションモデル — モーダル、ページネーション、そして正しいチャンネルコンテキストでの投稿を、Slackのインタラクションペイロードを通じて的確に表現。
技術スタック
- バックエンド: Supabase Edge Function(Deno)、Postgres
- 連携: Slack API(スラッシュコマンド、ショートカット、モーダル、Block Kit)
- GIFソース: Klipy、Tenor、Giphy
- 言語: TypeScript
セルフホスティング
各ワークスペースは、独自のSupabaseインスタンス、Slackアプリ、GIFプロバイダーのAPIキーを運用します。ワークスペース間で共有されるものは一切ありません。


