// 概要
StoreRank は、App Store のキーワード検索順位を毎日計測する ASO(アプリストア最適化)ツールです。調べたいキーワードを入力すると、そのキーワードで並ぶアプリのストア内順位が取得できます。自分のアプリを「ウォッチアプリ」に登録しておけば、順位が大きく動いたとき、検索結果の圏内・圏外が入れ替わったとき、価格が変わったときに通知が届きます。
既存の ASO ツールは月 100 ドル前後の Web サービスが中心で、個人開発者や小規模チームには重すぎます。StoreRank は「アプリを開かなくても、順位が動いたら通知が来る」という一点に絞った iOS ネイティブアプリとして設計しました。検索語もウォッチアプリも端末内にのみ保存され、アカウント登録は不要です。
着手前に企画そのものを検証しています。「順位が3位動いたら通知」が成立するのは、検索順位の日内のブレが十分に小さいときだけです。そこで UI を書く前に計測用の CLI を作り、同じキーワードを1日3回×7日間観測して日内標準偏差を測り、通知の S/N 比が成立することを確かめてから実装に進みました。
// 特徴
- ▸キーワード順位の計測。検索語を入力するだけで、そのキーワードでのストア内順位を取得
- ▸国/地域を選んで、世界中の App Store ストアフロントの順位を確認
- ▸ウォッチアプリ登録。自社・競合アプリの前回比(▲上昇/▼下降/NEW)が一目でわかる
- ▸順位推移グラフ。日別の順位を直近7日分の折れ線で表示
- ▸プッシュ通知。順位の大幅変動・圏内/圏外の入れ替わり・価格変更をお知らせ
- ▸バックグラウンド更新。アプリを開かなくても、最近調べたキーワードを自動で再計測
- ▸検索履歴からワンタップで再検索。調べた国のまま計測が続く
- ▸アカウント登録なし・広告なし・トラッキングなし。データは端末内にのみ保存
// 技術的な読みどころ
実装前の実現性検証を工程に組み込んでいます。UI 非依存のコア(Swift Package)と計測用 CLI を先に作り、launchd で定期実行して実データを蓄積。日内標準偏差で「通知の閾値が成立するか」を判定してから、アプリ本体の実装に進みました。企画の最大のリスクを、最も安いフェーズで潰す進め方です。
コアはコア/CLI/アプリの3層に分け、SwiftData も SwiftUI もコアに持ち込みません。保存はコア側の SnapshotStoring プロトコルで抽象化し、CLI とテストは JSON 実装、アプリは @Model と @ModelActor による SwiftData 実装を差し替えます。取得・差分・分析のロジックはアプリと CLI が同一のものを共有するため、片方だけ直る事故が起きません。
定期取得は SwiftUI の .backgroundTask(.appRefresh:) で実装し、対象は検索履歴の直近5件を「検索したその国」で計測します。取得先の Apple 公開 API は事前に全て実測し、上限件数・ページング・レート制限(約20 call/分に合わせたトークンバケット)・旧ホストの301リダイレクトまで確認したうえで設計しました。破綻していて使えないエンドポイントも実測で切り分け、それに依存しない構成にしています。
Swift 6(strict concurrency)/SwiftUI/SwiftData/Swift Charts、iOS 26 以上。外部ライブラリ依存はゼロで、clone してそのままビルドできる状態を保っています。企画・検証・設計・実装まですべて自社で手がけています。
// スクリーンショット
スクリーンショットは準備中です。
// 規約・ポリシー
// 免責事項
※ 本アプリが表示する順位は Apple の公開検索結果に基づく参考値であり、パーソナライズや時間帯により変動する場合があります。
