0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発ゲームだけを集めた紹介サイト「IndiePick」を公開しました ― ストア審査用のプライバシーポリシーも作れます

0
Posted at

はじめに

個人開発・インディーズのスマホゲームとアプリだけを集めた紹介サイト IndiePick を公開しました。

個人でゲームを作っていると、開発以外にもやることがたくさんあります。

  • リリースしても、ストアのランキングに埋もれて見つけてもらえない
  • 宣伝に回す時間がない
  • ストア審査のたびに、プライバシーポリシーやサポートページを用意しなければならない(英語版も求められる)

IndiePick は、こうした 「開発以外のめんどう」を減らして、面白いゲームづくりに集中してもらう ことを目指して作りました。

この記事では、サイトの機能と、実装で使った App Store の情報取得まわりを紹介します。

IndiePick でできること

プレイヤー向け

機能 内容
ランダムピックアップ 開くたびに違う作品が表示されます。シャッフルボタンで何度でも引き直せます
新着・盛り上がりランキング 直近24時間の新着と、掲示板が活発なアプリのランキング
検索・絞り込み アプリ名・開発者名・タグで検索。カテゴリや無料/有料で絞り込めます
アプリごとの掲示板 ログインなし・匿名でも書き込めます。攻略情報や感想、要望の交換に

ランダム表示にしているのは、評価件数が少ない作品にも表示のチャンスを作るためです。

開発者向け(すべて無料)

機能 内容
無料掲載 Google アカウントでログインし、マイページで開発者登録するだけで掲載できます
App Store 自動連携 ストアのURLを入れると、アイコン・評価・スクリーンショットを取得し、毎日自動で更新します
プライバシーポリシー作成 「広告を配信しますか?」などの質問に答えると、日本語と英語 のページが完成します。URLをストアの申請画面に貼るだけです
サポートページ作成 お問い合わせ先、動作環境、よくある質問を日英で作れます
ストアのプライバシー回答ガイド App Store の「App のプライバシー」、Google Play の「データ セーフティ」で何を選べばよいかの目安を表示します

Google Play のみのアプリや、ブラウザゲームも掲載できます(Steam は対象外です)。

作成されるプライバシーポリシーは、ストア審査に提出するページづくりを助けるものです。内容がアプリの実態と合っているかは、公開前に必ずご自身で確認してください。

掲載のしかた

  1. https://indiepick-oms.com/for-developers を開く
  2. Google アカウントでログインする
  3. マイページで開発者登録をする
  4. App Store の URL(またはアプリ情報)を入力する

詳しい手順はガイドページにまとめています。

技術的な話:App Store の情報を自動で取得する

App Store のアプリ情報は、Apple が公開している iTunes Search API の Lookup で取得できます。認証もAPIキーも不要です。

https://itunes.apple.com/lookup?id={アプリID}&country=jp

アプリIDは、ストアURL https://apps.apple.com/jp/app/xxxx/id123456789 の id に続く数字です。

レスポンスには、紹介ページに必要な情報がほぼそろっています。

フィールド 内容
trackName アプリ名
artistName 開発者名
artworkUrl512 アイコン画像
screenshotUrls スクリーンショットのURL配列
averageUserRating / userRatingCount 評価と評価件数
price / formattedPrice 価格
genres ジャンル

PHP で取得する場合は、ざっくり次のような形です。

<?php
function fetchAppStoreApp(string $storeUrl): ?array
{
    if (!preg_match('/id(\d+)/', $storeUrl, $m)) {
        return null;
    }
    $url = 'https://itunes.apple.com/lookup?id=' . $m[1] . '&country=jp';
    $json = @file_get_contents($url);
    if ($json === false) {
        return null;
    }
    $data = json_decode($json, true);
    if (empty($data['results'][0])) {
        return null;
    }
    $app = $data['results'][0];

    return [
        'name'        => $app['trackName'],
        'developer'   => $app['artistName'],
        'icon'        => $app['artworkUrl512'] ?? null,
        'screenshots' => array_slice($app['screenshotUrls'] ?? [], 0, 3),
        'rating'      => $app['averageUserRating'] ?? null,
        'ratingCount' => $app['userRatingCount'] ?? 0,
        'isFree'      => ($app['price'] ?? 0) == 0,
    ];
}

IndiePick では、これを1日1回のバッチで回して、評価やスクリーンショットを最新の状態に保っています。

一方、Google Play には同じような公式の公開APIがないため、Google Play のみのアプリは手入力で登録する形にしています。

構成

  • PHP(フレームワークなし)+ MySQL
  • レンタルサーバー(ロリポップ)で運用
  • ログインは Google アカウント(OAuth)

小さく始めたかったので、フレームワークを使わずにシンプルな構成にしています。

おわりに

IndiePick は公開したばかりで、現在は100本以上の個人開発ゲームを掲載しています。

  • 個人開発のゲームを探しているプレイヤーの方は、ぜひランダムピックアップで遊んでみてください
  • ゲームを作っている方は、作品の掲載や、ストア審査用ページの作成に使ってもらえるとうれしいです

不具合やご要望は、お問い合わせページからお寄せください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?