概要
- Blueskyアプリ の投稿スクリーンショットにロゴが表示される仕組みの考察
- iOSのAPI を活用したロゴ表示のトリックの解説
- GrowthHack.tsx および expo-privacy-sensitive パッケージの役割
- セキュリティ機能 を応用した他サービスでの類似事例
- APIの意図的な用途外利用 かどうかの議論紹介
Blueskyのロゴがスクリーンショットにだけ現れる仕組み
- Blueskyアプリの投稿画面で、通常時は 「Follow」ボタン が表示
- スクリーンショットを撮ると、 Blueskyロゴ が右上に現れる現象
- iOSアプリでは、 UITextFieldのisSecureTextEntry プロパティを利用
- このプロパティを true に設定したUITextFieldを作成
- 実際のボタンなどのコンテンツをその.layer上にレンダリング
- iOSでスクリーンショットを撮る際、 セキュアなUITextFieldは自動的に内容が隠される
- その隠された部分にロゴを描画することで、 ロゴだけが浮かび上がる演出
- 他のプラットフォーム(Android等)では 通常通りボタンを表示 し、マスキング処理は行わない
GrowthHack.tsxとexpo-privacy-sensitiveの役割
- この仕組みは GrowthHack.tsx ファイルで導入
- 2026年1月に mozzius によって追加
- 実際の処理は expo-privacy-sensitive パッケージに依存
- 同じく mozzius による開発
- パッケージの仕組み: isSecureTextEntry=trueのUITextField を利用し、 スクリーンショット時に内容を隠すAPI を活用
- iOSの仕様により、 ユーザーがスクリーンショットを撮るときだけ このトリックが発動
スクリーンショットとアプリ切り替え時の挙動
- アプリ切り替え中にスクリーンショットを撮ると 「Follow」ボタンが写る
- iOSは 切り替え開始時点 でウィンドウのスナップショットを撮影
- そのため、 リアルタイムのUITextFieldインスタンスが存在しない
- 通常のスクリーンショット時のみ UITextFieldのセキュア機能が有効
類似事例とAPI利用の是非
- TelegramやSignal の「シークレットチャット」でも同様の技術を応用
- Appleによる対策やパッチ は現時点で予定されていない
- API本来の用途外利用 (abuse)かどうかは議論が分かれる
- 一部ユーザーからは 否定的な意見 もあり、スレッドはロック
- 投稿者は「 可愛いトリック」と評価
まとめ
- iOSのセキュリティAPI を創造的に活用したUI演出
- Blueskyアプリ のオープンソース性により仕組みが可視化
- 技術的な裏技 として他サービスでも認知されている現状