クラクラ(Clash of Clans)の配置を集めた無料のiOSアプリを個人開発しています。配置ごとに「ゲーム内コピー用リンク」を持っているのですが、運用していて一番ユーザー体験を損ねたのが リンク切れ でした。
何が起きていたか
- ゲームのアップデートでタウンホールのレベルが上がると、古い配置のリンクが開けなくなることがある
- 投稿元が配置を削除すると、リンクだけが残る
- ユーザーから見ると「タップしても何も起きない」ので、アプリ自体が壊れているように見える
やったこと
- 公開前チェック: 新しい配置を追加するときに、リンクの形式(スキーム・必須クエリ)をバリデーションする
- 定期チェック: 既存リンクをバッチで確認し、怪しいものはフラグを立てて一覧から一時的に外す
- 表示側の工夫: フラグ付きの配置は「確認中」と表示し、無言で失敗させない
形式チェックはこんな感じのシンプルなものです。
struct LayoutLink {
let url: URL
var isWellFormed: Bool {
guard let comps = URLComponents(url: url, resolvingAgainstBaseURL: false),
comps.scheme == "https",
let items = comps.queryItems,
items.contains(where: { $0.name == "action" }),
items.contains(where: { $0.name == "id" && !($0.value ?? "").isEmpty })
else { return false }
return true
}
}
学び
- 「データが正しいこと」はUIの細かい改善よりも信頼に効く
- 失敗を隠さず「確認中」と見せるだけで、問い合わせがかなり減った
- 完璧な検証よりも、追加時の軽いチェック+定期バッチの組み合わせで十分だった
宣伝になってしまいますが、自分のアプリです:Base Layouts: War & Farm Maps(無料・iOS)。タウンホール別に対戦・資源・トロフィー配置をまとめていて、タップでゲームに配置をコピーできます。
https://apps.apple.com/app/apple-store/id6804564319?pt=2720803&ct=qiita_ja3&mt=8
同じように外部リンクを大量に扱っている方がいれば、運用のコツをコメントで教えてもらえると嬉しいです。