App Store のキーワードは 100 バイト?それとも 100 文字?

更新 · LocalePilot

App Store Connect のキーワード欄の上限は 100……バイトか文字か、読む Apple のページによって違います。英語のリストならどちらでも同じですが、フランス語、日本語、タイ語では結果が変わります。

お急ぎですか?ブラウザでそのままキーワードのバイト数を数えられます。無料・登録不要で、何もアップロードされません。

Apple の説明(と実際の観察)

単純な質問に見えますが、Apple 自身のページの記述が食い違っています。

  • App Store Connect のリファレンスは、キーワード欄を「You can provide up to 100 bytes of content.」と説明しています。バイトです。
  • Creating Your Product Page のページでは 100 文字とされています。
  • デベロッパフォーラムでは 2022 年、Apple のスタッフが API でタイ語のキーワードを試し、100 文字は通り、106 文字は拒否されました。タイ語 100 文字は 100 バイトをはるかに超えます。

つまり、リファレンスはバイトと書いていて、少なくとも 1 つの観察では文字数で数えられていました。Apple がはっきりさせるまでは、どちらかのルールを選ぶ必要があります。

違いが重要になる理由

UTF-8 では、アクセントのないラテン文字は 1 バイト、アクセント付きの文字は 2 バイト、日本語やタイ語の文字は 3 バイトです。

キーワード文字数バイト数
shopping88
épicerie89
supermarché1112
Einkaufsliste1313
買い物リスト618
รายการ618

英語ではこの問題はまず起きません。フランス語やスペイン語では、リスト全体で数バイトの差です。日本語やタイ語では、バイトで数えると同じ欄に入るテキストが 3 分の 1 になります。100 バイトに収まる日本語は 33 文字(99 バイト)までで、カンマも 1 バイトずつ使います。どちらのルールを選ぶかで実際に差が出るのは、こうした言語です。

自分で数える

ターミナルで fastlane のファイルを数えます($(cat …) で末尾の改行が取り除かれます)。

printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -c   # bytes
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -m   # characters

wc -m はターミナルのロケールに従って文字数を数えます。UTF-8 以外のロケールでは wc -c と同じ数を返します。Dart では次のとおりです。

import 'dart:convert';

final keywords = 'courses,épicerie,liste,famille,partagée';
print(utf8.encode(keywords).length); // 41 bytes
print(keywords.runes.length);        // 39 characters

私たちが採用しているルール

バイトで数えます。リファレンスにそう書かれており、最も厳しい選択肢でもあります。100 バイトに収まる欄は必ず 100 文字にも収まるので、拒否されることはありません。LocalePilot は App Store 掲載情報画面でこのルールを採用し、入力中に「94 / 100 bytes」のように表示します。

ただし日本語、中国語、韓国語、タイ語では、使えるはずの枠を余らせているかもしれません。これらの市場が重要なら、App Store Connect で長めのリストを試してください。長すぎる欄はその場で拒否されるので、現時点で何が通るかがわかります。

単位に関係なく言えること

  • カンマで区切り、前後にスペースを入れない。カンマの後のスペースは 1 つごとに 1 バイトを無駄にします。
  • 名前とサブタイトルを繰り返さない。多くの ASO ガイドが、その 2 つの欄にすでにある語をキーワードで繰り返さないよう勧めています。
  • 言語ごとに 1 ファイル。fastlane では、ローカライズごとに fastlane/metadata/<locale>/keywords.txt があります。英語のリストを逐語訳しても、ユーザーが実際に入力する語になることはまれです。ターゲット言語での検索から始めてください。

よくある質問

日本語の文字は何バイトですか?

UTF-8 では 1 文字 3 バイトです(ひらがな、カタカナ、漢字)。アクセント付きの文字(é、è、à、ç など)は 2 バイト、アクセントのない英数字は 1 バイトです。

カンマの後にスペースを入れるべきですか?

いいえ。キーワードはスペースなしのカンマで区切ってください。スペースは 1 つごとに枠を消費します。

fastlane ではキーワードのファイルはどこにありますか?

fastlane/metadata/<locale>/keywords.txt です。言語ごとに 1 ファイルあります。