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?

「ニッチを狙え」は正しいか。同じ開発者の44アプリを実測したら、絞るほど桁が落ちていた

0
Last updated at Posted at 2026-08-14

個人開発の定石に「大手と正面からぶつかるな、ニッチを狙え」がある。自分もそう信じて1年やった。

信じたまま68案を検証して、68案とも自分で殺した。その途中で、この定石を直接検証できるデータに行き当たったので書く。

結論から言うと、少なくともApp Storeでは逆だった。題材を絞るほど、レビュー数は桁で落ちる。

数字は全部 iTunes Search API で自分で取った。取得日は2026-08-09。叩き方も書くので、読んだ人が自分で再現できる。

なぜ普通の比較では答えが出ないのか

「ニッチは儲かるか」を比べるのは本来かなり難しい。アプリAとアプリBのレビュー数を比べても、差の原因が題材なのか、UIの出来なのか、ASOなのか、リリース時期なのか、開発者の実力なのか分離できない。他の要因が混ざって分からなくなる。

だから、こう考えた。

同じ開発者が、同じ時期に、同じ作りで、同じ価格で出した複数のアプリを比べれば、題材以外の条件がほぼ揃う。

条件をそろえた比較になる。そしてApp Storeには、これを満たす開発者が実在する。数十本のカタログを持つ量産型の開発者だ。

iTunes Search API で開発者のカタログを丸ごと引く

Apple は認証不要の公開APIを出している。キーもトークンも要らない。

まず、気になるアプリを検索して artistId を取る。

import json, urllib.request, urllib.parse

def api(path, **params):
    url = f"https://itunes.apple.com/{path}?{urllib.parse.urlencode(params)}"
    with urllib.request.urlopen(url) as r:
        return json.load(r)

# キーワードで検索
res = api("search", term="生徒管理 メモ", country="jp", entity="software", limit=10)
for a in res["results"]:
    print(a.get("userRatingCount", 0), a.get("artistId"), a["trackName"])

ここで見るべきは userRatingCount(レビュー件数)と artistId(開発者ID)の両方だ。DL数は公開されていないが、レビュー数は公開されている。実際に使われた量の代理指標として使える。

次に、その artistId で同じ開発者のアプリを全部引く。

res = api("lookup", id=ARTIST_ID, country="jp", entity="software", limit=200)  # 上で取れた artistId
apps = [r for r in res["results"] if r.get("wrapperType") == "software"]

for a in sorted(apps, key=lambda x: -x.get("userRatingCount", 0)):
    print(f'{a.get("userRatingCount",0):>7}件 | {a.get("formattedPrice","-"):>6} | {a["trackName"]}')

lookupentity=software を付けると、その開発者の公開アプリが一覧で返ってくる。これが名寄せになる。1本だけ見ていると分からないことが、カタログ全体を見ると見えてくる。

同一開発者44本の分布

ある開発者のカタログを引いたら、44本あった。全部無料で、全部同じ系統のシンプルな記録アプリだった。UIの作りも価格も揃っている。

レビュー件数の分布はこうなった(アプリ名は伏せて、題材の性質だけ書く)。

題材の性質 レビュー件数
ダイエット記録(消費者・巨大テーマ) 18,402
貯金箱・目標貯金 7,729
ギャンブル収支メモ 7,141
タイムシート 4,626
体重管理 2,064
筋トレ日記 1,277
顧客管理帳(汎用) 1,100
FX / 投資の収支記録 1,059 / 944
ペット日記 755
副業の収支管理 696
フリマ収支メモ 584
勉強の計画・復習管理 88
生徒管理メモ(業種を指名) 40
御朱印帳 9
パーソナルトレーナー向け管理(職種を指名) 3
履歴書作成・管理 0

44本の合計は70,301件。うち0件は2本だけだった。

中盤の3行を見てほしい。どれも「顧客を管理する」という同じジョブだ。

  • 汎用の「顧客管理帳」→ 1,100件
  • 業種を指名した「生徒管理」→ 40件(27分の1)
  • 職種を指名した「パーソナルトレーナー向け」→ 3件(さらに13分の1)

絞るごとに桁が落ちる。開発者も実装力もUIも価格も同じ。変えたのは題材の粒度だけだ。

別の開発者でも同じ形になる

再現性を確かめるため、まったく別の開発者(21本のカタログ、こちらも全部無料)も引いた。

題材 レビュー件数
家計簿(汎用) 455,967
カレンダー(汎用) 370,582
QRコードリーダー 228,377
メモ帳 179,362
ダイエット・体重記録 129,696
歩数計 48,380
推し活管理 6,320
確定申告(青色) 4,047
白色申告 964
バーコードリーダー 544

こちらも汎用ほど多く、対象を絞るほど落ちる。同じ開発者・同じブランド・同じ無料モデルで、桁が3つ違う。

なぜこうなるのか

ニッチは競合が少ない場所であると同時に、探している人も少ない場所だからだ。

App Storeの主要な発見経路は検索(ASO)で、検索する人がいなければ発見されない。「顧客管理」で検索する人と、「パーソナルトレーナー 顧客管理」で検索する人。この2つは桁が違う。競合が少ないのは、単にそこに人がいないからだった。

定石は「競合が少ない=勝ちやすい」と読む。実測はそうなっていない。競合の少なさは、需要の少なさとほぼ同義だった。

絞ろうとすると、先客がいる

「それでも自分は特定の業種で深く刺す」という戦略はありうる。ただし、そこには先客がいる。

上の2人は、いわば善良な量産型だった。もっと徹底した例がある。ある開発者は45日で169本を投下していた。有料が55本(¥500〜¥5,800)あり、98%がレビュー0件。¥5,800の業務用帳票アプリも0件だった。

つまり「〈業種名〉×〈定型帳票〉」の形で機械的に作れる組み合わせは、既に総当たりで埋められている。空いているのではなく、全部出された上で誰も買っていない。

自分もこれを踏んだ。事業者向けを4方向から掘って、ようやく1つ「難しい計算で法令リスクもあるから残っているはず」という候補を見つけた。App Storeを調べたら、前日に他人が¥300で公開していた。レビューは0件。先を越されたというより、探す前から埋まっていた。

測定の落とし穴(自分が踏んだもの)

実測しているつもりで間違えたことが何度もある。同じ轍を踏まないように書いておく。

片方のストアしか見ていない。 iOSだけを見て「買い切りのアプリが存在しない=空白だ」と判定したことがある。Google Play を見たら、同種の¥3,800買い切りが2本実在していた。片側だけで市場を測ると空白を誤検出する。

検索語のアーティファクト。 「〇〇 互換」で検索して0件だったので空白だと思ったら、「〇〇 変換」「〇〇 調色」で調べたら既存が多数あった。ヒットしないのは、市場がないからでなく語彙が違うだけのことがある。

ランキング上位=売れている、という誤読。 有料ビジネスカテゴリの日本1位が、生涯レビュー15件だった。8位は0件、14位(¥800)も0件。順位は相対値なので、買う人が少ない棚では1位でも実売はほぼゼロになる。チャートの順位から市場規模を推定してはいけない。

評価の星より件数の絶対値。 「★4.5で高評価」より「レビューが何件あるか」のほうが情報量が多い。★4.5でレビュー5件は、高品質の証拠というより市場が存在しない証拠であることが多い。

結局この定石をどう読み直したか

同じ開発者・同じ作り・同じ価格で並べると、題材を絞るごとにレビュー数が桁で落ちた。汎用1,100 → 業種40 → 職種3。別の開発者の21本でも同じ形が出て、汎用455,967 に対して職種を指名したものは544だった。

だから「競合が少ない」は「勝ちやすい」ではなく「探している人が少ない」と読むほうが実測に合う。競合の少なさは、多くの場合そのまま需要の少なさだった。しかも「業種 × 定型業務」で書ける設計空間には既に量産開発者がいて、空白に見えたものは撃たれた跡だった。

測るときの注意は3つ。両方のストアを見る。語彙を変えて検索する。順位でなくレビュー件数の絶対値を見る。

artistId での名寄せは10行で書ける。自分の企画がこの表のどのあたりに落ちるのかは、作る前に測れる。自分は68回目でようやくやった。

参考

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?