オーシャンドライブ(ininc)開発チームのブログ -2ページ目
今回iPhoneアプリでプロジェクトAチームで「ここでキスして」を完成させたが、Appleがなかなか審査を通さないので、無駄な時間が過ぎるのもなんだしなって軽い気持ちでAndroidへ移植を始めました。
iPhoneをアンドロイドに移植する際の注意点をまとめてます。

7)SDカードの保存先がばらばら
以前のブログでSDカードの保存先がばらばらと書きましたが例えばGalaxyS では、SDカードのパスとして、以下の二つが用意されているおります。

内蔵SDカード: /sdcard
外部マイクロSD: /sdcard/external_sd


Environment.getExternalStorageState()

で取得するのが基本と書かれているのですが、GalaxySは内蔵SDカードのアドレスを返します。詳しくはこっち見てください。
http://www.tenshodo.org/tdiary/?date=20101211#p02

ちなみに弊社でもGalaxySは検証端末ではあったのですが、内蔵SDカードの容量に余裕があったので気が付きませんでした。お客さんからの問い合わせで判明しました。

んで、結果的にここに正解が書いてありました。
http://inujirushi123.blog.fc2.com/blog-entry-30.html

取得する方法が違うのは、内部SDカードと外部SDカードの2つを持っているサムスン製(GALAXY Tab他)等の一部の携帯です。

Sumsung GALAXY Tab SC-01C
Sumsung GALAXY SⅡ SC-02C
Sumsung GALAXY Note SC-05D
・データフォルダ /data
・内部SDカード /mnt/sdcard
・外部SDカード /mnt/sdcard/external_sd

MOTOROLA Photon ISW11M
・データフォルダ /data
・内部SDカード /mnt/sdcard
・外部SDカード /mnt/sdcard-ext

(追記)
※GALAXY Tab SC-02D(Android 3.2) は内部と外部にわかれていませんでした。
SDカードのパスは /mnt/sdcard です

これらの携帯は先に述べた方法だと内部SDカードのパスを取得してしまい、ユーザーが挿した(外部)SDカードのパスは取得できません。

Android APIには取得する術がないので環境変数からパスを取得します。
環境変数を呼び出すには System#getenv(String name) を使用します。

// SDカードのパスを取得
public static String getExternalStoragePath() {
String path;
// Sumsung GALAXY Tab SC-01C 対応
path = System.getenv("EXTERNAL_STORAGE2");
if (path != null) return path;
// MOTOROLA Photon ISW11M 対応
path = System.getenv("EXTERNAL_ALT_STORAGE");
if (path != null) return path;
// その他機種
return System.getenv("EXTERNAL_STORAGE");
}

おそらくこの事実はあまり知られていないので、同様のエラーで困るかもしれません。しかも新機種で出てきていて、内蔵SDの容量がいっぱいにならなければ発覚しないのでそろそろここで迷子になっている人も多いかと思います。

今回は引用多数で手抜きしましたが、なぜなら現在アプリ内課金の実装でぱつぱつなんです。
じゃあ、次回はアプリ内課金の注意点でも見つかったら書きましょうかね。




にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!


ここでキスして」というアプリを作成してiPhoneに審査を通しましたが、ピコリとも通る気配がしません。その戦いの過程を綴って行きます。

この間の続きでむかつくイントネーションで「ダメダヨコンナアプリ」と言われた後のこと。

で、まあ当然のことこう聞きます。「済みません。どのあたりが具体的にだめなんですか?」

「ゼンブデス」

って言われた瞬間に「ああ、こいつは激しく当たって問題ない野郎だ」と判断したので

「自分、結構似たアプリがすでにAPPストアに上がっていたので、それがOKだと思って開発始めたんですよ。それとどこが違うんですか?具体的に教えてください。」

「イイヤ、ソウイウアプリモホントウハダメナノネ」

「じゃあ、お前チェンジで、そういうアプリを許容した奴に審査変えてもらえないですかね。アップルはアンフェアな理由でリジェクトしないと聞いたので前例を見た上で資金や歳月も投資したうえで参入しているんですよ?」

「デモシンサインカエテモソウイウアプリハモウダメニナル」

「いや、過去に通して今通さないはアンフェアでしょ。もう会社が一旦通したんだったら責任とって会社の名に懸けて通してよ」

「カコノハマチガエデス。ゴメンナサイ」

「あなたが安い頭下げたところでしょうがないんですよ。こっちも通らない限りは無駄な経費だし。それとも、そういうやつを参入させてディベロッパーを増やすようなサクラ行為を行っているのですかね?それであれば本当に卑劣だと思います。」

「ソンナコトハアリマセン。ホントウハムカシカラトオシチャイケナカッタノデス。ナニカノテチガイデトオッチャッタンデス」

「んじゃ、許す。もう一回間違えてくれ。」

「ダメデス。ドウシタラナットクシテクレンデスカ?」

「アップルがどうしてそのような足並みがそろわなかったミスをしたのか、報告書を作って俺宛に国際便で書類を送ってくれ。それを見てちょっと考えるよ。」

「カイシャノキギョウヒミツデス。ソレハデキマセン。」

と以上のやり取りを40分位しました。まあ、とりあえず面倒だというイメージを植え付けたので修正点を具体的に聞き出す。

「わかった。納得いくまで作り直すから、通すまで一生付き合ってください。デートシミュレーションが悪いのは分かったんで、ヒーリングということにします。あと、動画についてはどうなの?」

「ドウガハスコシデモセクシャルナカンジガシタラダメデス」

「?あなたの股間のBC.RICHがどれほどの角度になるかなんかはその人の性癖によるからわからないでしょ?女の子が水を飲んでいるだけで興奮する人もいるんだから。じゃあ、具体的にあなたの性癖教えてください。そこを外します。」

「ソウイウコトジャナイデス。objectifying a girlがダメナンデス」

「それもとらえ方でしょ?あまりにもラインが不明確すぎる。具体的にあなたがセクシャルにとらえたものを教えてくれ」

「キスシーントカダメデス」

「アプリに向かってキスするゲームなんか山ほどあるのに何でいけないんだよ。そっちの方がよっぽどobjectifying a girlでしょ。」

そろそろ自分も面倒になってきたのでこう切り出した。

「じゃあさ、とりあえず自分の中で見直してもう一度編集しなおすんでまた見てね。」

「ハイダイジョウブデス。デモトオルノハソウトウカワラナイトムズカシイトオモイマス」

「はい、長い付き合いになると思いますが今後ともよろしくお願いします。」

「ア、、ハイ、、、」

という感じで電話を切りました。で、次の日に相当画像、映像、コメントも修正して再アップロード。

この続きはまた次回。



にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!

GooglePlayをPC版で見ると右側にインストール数というものがあります。お客さんが見る指標の中で総インストール数や、レビューの数は重要みたいで、お客さんより
「インストール数少ないけど釣りじゃなかったよ」って書かれていたのがありました。もうこの文章を書いている時点で「これこそすげー自作自演っぽい」って自分で思ったのですが(笑)。まあ、信じる人だけ信じてください。信じられない人はもはやダウンロードしてみてください。「ここでキスして
で、そのインストール数のグラフがあって気になっているのですが、おそらく自分がディベロッパーの立場なんで気になっているだけかもしれませんが、これについての考察。

っていうのは「昨日そんなにDL数無かったのになんで、山が最後に上向きで終わっているの?」って疑問が結構ありました。ここ最近勢いに乗っていると思わせたいのはおそらく誰もが一緒。

結果から言います。たぶん2日前のデータまでが反映されてます。なんで、2日前に上り調子だったら、上向きの折れ線になってます。で、ディベロッパーコンソールにある一日のインストール数(ユーザー数)には近しい数字なのですが、山の感じが微妙に違います。なので、締めの時間がGooglePlayとディベロッパーコンソールで違うと思います。

グラフの下に過去30日間とありますが、この言葉はインストール数の数字にはかかっておりません。おそらく。(ここでキスしてはリリースして40日しかたっていないので確証がない。)グラフはここ30日間のダウンロードされている数で問題なく、縦軸のメモリのスケールはパーセントとみなしてください。絶対数字ではないのでほかのアプリ同士を比較することはできません。あくまでここ一か月で最近売れてきているとか、一時的に爆発した日があったとかしかわかりません。

しかも、リリースから30日以内であれば横軸のスケールも異なるのでご注意を。

インストール数については、いくつかの段階があります。そんなに細かくないです。これは売り上げなどを特定できなくするようなものかもしれません。でも、たとえば、昨日まで100~500って表示されていたのに、今日見たら500~1000になったという場合は、2日前に500DLになったのであろうと予測できます。ただし、これは有料アプリではキャンセルになった客も含みます。インストールされた数なので確かに意味としては間違ってません。

逆に100円で売っている有料アプリが1000~5000というものであれば、10万円~50万円の売り上げなんだろうと予測がつきます。

ちなみにAndroidは自由価格設定ですが、最少価格は99円です。以前10円のセールをしてランキング上がんねえかなって思ったのでしたが無理でした。Androidは設定価格が高いイメージなのはそこもあるかもしれません。元々、高くしておいて値段下げるもあるでしょうし、逆に言うといきなり価格上げるもありなのかもしれません。それを考えると値下げセールもiPhoneほど効果がないのも頷けます。経済学的にいうと値段は市場が決めてくれるのでしょう。

次回は、無料ランキング入るのってどのくらいのDL必要なの?を記載予定。


にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!



自分がアプリ開発を始めた理由のひとつが広告費の使いようがないというところです。面白いものが口コミを伝ってランキングを純粋に駆け上がるという構図に非常に興味惹かれました。
決定的に重要な媒体はアンドロイドならGooglePlayで、iPhoneであればAppStoreで間違いないかと思います。逆にGooglePlayに乗っていないアプリは存在していないも同様かと思います。

今回「ここでキスして」をリリースしたのが2012年5月25日となるのですが、無料版と有料版を両方同時リリースしました。当然、無料版がDLされた数が多かったので、いつランキングに載るかをチェックしていたのですが、載らん。なんでじゃ?って思っていたら、有料版の方が載っているじゃないですか。ちなみにDL数は1です。エンタメ総合ランキングで483位くらいで、新着のエンタメで200位くらいだったかと思います。そしてそのまま10日後にはエンタメ総合で23位(PCで見ると1ページ目になる)新着エンタメで5位という状態になりました。

で、その後1ページ目はキープしていたのですが、如実にDL数が落ちたときがありました。2012年6月25日です。その前日に新着エンタメランキングから外されたのです。1ヶ月で新着とみなされなくなったのだと思います。

じゃあ、新着期間は1ヶ月かって思ったのですが引っかかる点が1点。というのは、無料版も有料版がランキングを駆け上がるにつれて、DL数が増えて、エンタメ総合ランキングに載るようになりました。しかし、エンタメ新着ランキングには結局載りませんでした。ということは無料版は1ヶ月ではないのではと思ってちょいと調査。

無料版がエンタメ総合に載り始めたのが2012年6月11日なので、リリースから15日は経過しているので、少なくとも新着有効期限は15日以内なんだろうとも思ったのですが、調べていたらありました。公開日2012年6月4日ですが、2012年7月1日現在にエンタメ新着無料ランキングに載っているものが。(マジック種明かし付動画まとめってアプリです。)

ランダムに調べただけなので、絶対ではないですが、1ヶ月前以上が公開日で載っているアプリはなかったので、おそらく1ヶ月以上はありえないでしょう。ちなみに一番古いのは5月30日のものがありました。(ヤフーメールのショートカットというアプリです。)あした新着から除かれているかどうか調べてみます。(7月2日18時にに確認したとき消えていました。おそらく7月1日22時の更新に削除されたかと思います。)非常に参考になる記事。

また、調べた限りですが、更新をすると再び新着になるというのも都市伝説かと思います。Initial Releaseの日も調べてます。ちなみにGooglePlayに載っている更新日はリリース日ではなく、最終更新日です。なので、それでこの都市伝説が生まれたかと思います。

では、自分のアプリは何が悪かったのか?
ひとつだけ有料と無料で違うことをしている心当たりが、登録する際に無料だけ「マーケティングの除外」というところによく意味がわからないうちにチェックをつけてます。果たしてこれが原因なのか?

考えうることがこれくらいなので、ここにはチェックをつけないことをお勧めいたします。

ランキングの更新はおそらく毎日1回のみ、日本時間夜22時となります。
ディベロッパーズコンソールも基本的にこの時間に更新されるのですが、たまに夜中25時とかにされる場合もあります。

次回は、GooglePlayに表示されるインストール数についての考察を書く予定です。

にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!
今回iPhoneアプリでプロジェクトAチームで「ここでキスして」を完成させたが、Appleがなかなか審査を通さないので、無駄な時間が過ぎるのもなんだしなって軽い気持ちでAndroidへ移植を始めました。
iPhoneをアンドロイドに移植する際の注意点をまとめてます。

5)タッチイベントが遅い。
ここでキスして」はゲームをクリアすると次の動画に進めるというスタイルなのですが、そのゲームがタイミングゲームになってます。音に合わせて、画面にタッチ、オフするタイミングを合わせるとハートが膨らんでいくゲームです。その際にどのくらいをタイミング内としてマージンを持たせるかで、ゲームの難易度を決めてます。
IPHONEでは、タイマーを2つ走らせていて、メインのBPMと、マージンを図るためのBPMのタイマーです。
しかし同じ仕様でアンドロイドで組んだところ、全くタイミングがずれます。
限りなく処理を軽くするために画像の軽量化はもとより、本来アニメーションで組んでいたハートの動きもパラパラアニメに変更、タイマーも最小限のタイマーのみなどに変更。
もう完全に設計変更です。

で、BPMが遅いうちはタイミングがある程度合う。しかし早くなるとちょいと後乗りでタップしないと合わない。原因として、タッチイベントが遅く、処理が10msレベルの遅延が発生していることが判明。

これは、自分の実機の可能性もありますし、ひょっとして回すプログラムをもう少し軽量化することで回避できるかもしれませんが、それを探すよりも、必要以上のマージンを持たすほうがよいと判断。
で、アンドロイド版はIPHONE版に比べて相当簡単になってます。
具体的にいうと、IPHONE版はマージンが20%までOKにしてますが、アンドロイドは、40%くらいまでずれても正常と判断するようにしてます。あまり、ゲームの難易度を上げて次に進めないのも微妙ですし、機種依存で簡単な端末と難しい端末が出るのも好ましくないのでそのようにしました。遅れのタイミングもおそらく機種によって違うと思います。

しかし、「太鼓の達人」みたいなゲームもあると思うので、その辺がクレームも少なくやっているかと思うのでその辺にヒントはあるのでしょう。それくらいシビアなゲームを作る際にはもう少し検証する必要があると思います。


6)メーカーごと、いや機種ごとに仕様が違います。
これですが、今回有料版でお客さんにも協力いただいて判明したものです。
具体的にはSDカードのアドレスが違います。有料版の「ここでキスして」は動画の容量が80Mを超えるので、一部の動画をゲーム初めに別でSDカードにダウンロードするようにしてます。しかし、ふたを開けてみるとSDカードのアドレスが結構ばらばら。
Environment.getExternalStorageDirectory()
で、アドレスを取得しちゃだめです。90%以上の参考資料ではこれで書いてますが、
System.getenv("EXTERNAL_STORAGE2")
または、
System.getenv("EXTERNAL_STORAGE")
が正解。気になる詳細ですがここはじらすこと次回。

にほんブログ村 IT技術ブログ Androidアプリ開発へ
↑ここを激しくクリック!

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ
↑もっと強くクリック!
ここでキスして」というアプリを作成してiPhoneに審査を通しましたが、ピコリとも通る気配がしません。その戦いの過程を綴って行きます。
では、前回の続き。
2,3日したら電話するとのことでしたが、電話がまったく来ない。。
ちょいと不安になったので、Resolution Centerに問い合わせ。

「2,3日で電話するとARBからメールを受けたけど、3日過ぎた今でも電話ないです。番号間違って伝えていないよね?こっちは日本で時差があるけどいつでも電話してくれて構いません。早く電話して頂戴。」

と明らかに催促のメールを送信。すると翌日
Thank you for your feedback.

Apple representative have attempted to reach you by phone but you were not available.

We will reschedule a call with Apple representative.

Thank you for your continued patience.

要はかけたけど電話がつながらなかったよってことでした。これテンプレです。おそらく、催促がきたらこれを返しなさいという事だと思います。ちょっとカチンと来たんで。

「金も時間も多くのものが浪費されている。早く連絡してくれ。」

と催促したらノーレス。次の日にARBの方に、同様に催促をしたがそっちもノーレス。

「昨日ARBの方にもメールしたんですが、連絡なしですが、メール届いてますか?」

と催促してもさらにノーレス。ちょっと督促がしつこいと思ったので、1週間メールをしなかったらそれでさらにノーレス。で、初台のアップルに電話しました。

「メールを何度も、Resolution CenterやARBに送っても連絡来ません。2,3日で連絡するって言われたのにそろそろ2週間経つんですが、仕事拒否ですか?」

初台アップルは

「ARBはこっちではわからないので、一応、報告は上げておきますが、お客様のようなケースも結構報告受けてます。」

って返答。報告受けているんだったら、対応しようよって思ったのですが他人の会社なんで、また待つことに。そしたら翌日来ました。電話が。しかも向こうに合わせて深夜起きていたのですが、日本時間お昼の13時に(向こうの時間の21頃)。さらにカタコトの日本語で。

確かに日本にこれだけディベロッパーがいれば、日本担当の人は日本語しゃべるしかないし、日本時間にあわせるよな。って納得しました。で、向こうのヒトコト目。

「ダメダヨ。コンナアプリ。」

ってカタコトで言われましたw。このカタコト具合がとても腹立ちます。その後1時間ほどこいつに激しく絡んだんですが、その内容はまた次回。
今回iPhoneアプリでプロジェクトAチームで「ここでキスして」を完成させたが、Appleがなかなか審査を通さないので、無駄な時間が過ぎるのもなんだしなって軽い気持ちでAndroidへ移植を始めました。
iPhoneをアンドロイドに移植する際の注意点をまとめてます。

3)戻るボタンがAndroidは付いてます。

これについてですが「だからどうした」って思うかもしれませんが、結構重要。iPhoneアプリではプログラム的に出口がなくなったりすると、フリーズしたままホームボタンすら利かなくなります。そうなると電源を強制的に落とすという、きわめてPCではご法度な行為を行わざるを得ません。しかしアンドロイドではおそらく全機種だと思うのですが、ブラウザの戻るボタンに近しいものが付いていて、その場合は戻るボタンを押すことで強制再起動を回避できます。裏を返すと、iPhoneアプリはプログラマーレベルで99点位の自信がないとリリースが難しいですが、アンドロイドは80点くらいでリリースしても良いと思います。しかも、間違いが見つかったらすぐアップデートをかければ30分前後でマーケットに反映されます。

プログラマーとしてはデバッグ作業はうまく付き合っていかないといけないもので、今までバグがひとつも体験したことがないプログラマーは存在しないはずです。100点を取ることは不可能という認識をすること、自分がどういうところでミスをするのかがすぐ見つけられることが経験則でなんとなくわかって育っていくものかと思います。

完成度として80点のクオリティーでOKとすれば、99点のクオリティーでのリリースの半分以下の納期でリリースできます。出してからはしんどいのですが、クラッシュレポートなどを読み進めたりお客さんと連絡を取りながら原因解明をしていけば自分ひとりで99点にするよりもトータルで早い段階で99点レベルの作品になるでしょう。

4)戻るボタンがAndroidは付いちゃってます。

さっきと何が違うのかというと、プログラマー的にはマイナス要素の戻るボタンです。iPhoneであれば、基本的な割り込みはホームボタンを押すという行為での割り込みしかないと思います。(電話、メールの割り込みは除く)しかし、Androidでは、戻るボタンが付いているために、そのとき行われている作業を強制終了させて次に進むということが有り得ます。具体的にいうと、「ここでキスして有料版」では、容量の問題で、はじめにSDカードに動画を取り込んでからゲームや動画がスタートするという手順をとります。アンドロイドでは、ダウンロード途中でキャンセルも可能で、キャンセル後に次に行く処理も可能となります。なので、それぞれの対策をとらないといけないので、iPhone用のプログラム仕様とは違うものになります。このあたりの細かい対応はiPhoneとAndroidではまったく別物なので、クロスプラットフォームなどの利用で資産の共有化は図れると思いますが、横着は物理的にできないので結果iPhoneとAndroidのそれぞれの開発は必要になります。

とりあえずここまで。次回は「メーカーごと、いや、同一メーカーでも機種ごとに仕様が違います」予定。

アップル審査における戦い日記の続きです。
返信にて「objectifying a girl」というキーワードがあってきっと重要なんだろうなと思い調べました。翻訳ツールで見るとちょいと近い文例が。

Pornography objectifies women ポルノは女性を客観化する

客観化?ん?よくわからん。ってことで「アップルは難しい単語を使って俺らを煙に巻こうとしている」と考えるのが早いのでそう結論付ける(多分きれいに対応する日本語が無いのでしょう)。戦いの基本は自分がされて嫌に思うことを率先して実行というごく当たり前のセオリーに基づいて返答しました。

「似たようなアプリがいっぱいあるし、何で自分だけNGなんだよ?きちんと納得いくように説明してくれ。objectifying a boyとかだったらいいのかよ?そうだとしたら性別批判だよね。有名大企業がそんなことしていいのかな?」

って感じで完全宣戦布告しました。この辺から敬語が自分の中で解除されました。これだったらきっと「こいつ面倒くさい」と思ってくれるはず。そうしたら案の定、翌日返答が。

Thank you for your reply.

If you would like to appeal this review, please submit a request to the App Review Board at http://developer.apple.com/appstore/resources/approval/contact.html.

とありました。要はきちんと審査するARBというところに申請してくれということです。クレームの基本は最短で上役に取り次いで交渉というのがベスト。お互い時間かからないし。ってなわけで成功。そんなわけでARBにすぐ投稿しました。

内容としては、「似たようなアプリがいっぱいあるし、何で自分だけNGなんだよ?きちんと納得いくように説明してくれ。」との内容。


ここで重要な事項としては基本的に人間心理として完全に投げきったと思ってしまう事項はそのまま放置してしまう傾向があるので、次の日にResolution Centerにすぐ次のように書き込む。

昨日ARBにおっしゃるとおり投稿したんですが、どれほどの期間待てばよいのかね?

次の返信が

Thank you for your reply.

Your appeal has been received by the ARB and is being evaluated. When the evaluation has been completed, the ARB will contact you directly with the decision. We appreciate your patience.

で、このまま放置していたら1週間連絡無かったです。ちょっと揺さぶりをかけてやろうと思ってResolution Centerに次のように書き込む。

もう一週間たっているんだよね。なのに何の連絡も無し。いつまで待てばいいのかね?

そうしたらARBからメールがすぐ来ました。この辺りが「こいつらせっつかないと仕事しないな」って判断したところ。

Dear Developer,

I would like to contact you at your earliest convenience regarding your application submission.

Please provide me with the preferred number and appropriate person to contact regarding this application.

Once I receive your phone number, I will contact you at my next available opportunity. While I may not be able to call you immediately upon receiving your email - and in some cases, it may take a few days - I will get back to you as quickly as I can.

I look forward to speaking with you.

え、電話かけてくるの?英語で?ってちょっと怯みました笑。とりあえず自分の携帯番号を書いて自分、英語が不慣れなんで話すときはゆっくりね!ってメールでARBに返信したのち、その夜字幕なしで映画見ました笑。たまたまゾンビ映画だったので、意味のある言葉がほとんど出てきませんでしたが。

この時に電話番号の書き方を注意。
090から始まる電話は
+81-90-xxxx-xxxx
080から始まる電話は
+81-80-xxxx-xxxx
で書いてください。「知ってるよ。んなことは!」って人が多数かと思いますが、自分少数派だったもので。

メールにit may take a few daysと書いてあったので、とりあえずアメリカ時間に合わせて昼夜逆転させて携帯がつながらないところには入らずに待っていたのですが、電話が来ない。

この続きはまた次回。
昨今、アップルの審査が厳しくなってきている。スマホにはそれぞれのマーケットがあるのだが、一番整地されているのがアップルという認識で間違っていないかと思う。
ただし、ガイドラインが抽象的でかつ、審査する人間によって解釈の個人差があるので、ギリギリを狙いたい場合は要注意。
今回、アップルと審査に対してディスカッションが長く続いている「ここでキスして」の例をあげる。執筆現在も審査下りてません。

そもそもこのアプリケーションは2012年3月10日に完成している。
その時点で、認識が甘く実はアダルト要素も多い中、+17に引き上げず+12くらいで通るかな?って試したのがまずはじめの失敗。
基本的に少しでもやましい心当たりがある場合は+17にしたほうが良いです。
以下のようなテンプレが返ってきます。

We found that your app contains content that many audiences would find objectionable, which is not in compliance with the App Store Review Guidelines.

Specifically, we noticed your app concept was objectionable and not appropriate for the App Store..

Please see the attached screenshots for more information.

We encourage you to review your app content and evaluate whether you can modify the content to bring it into compliance with the Guidelines.

When resubmitting your revised binary, please ensure that your Application Rating is consistent with the content and nature of your app. A 17+ rating is required for apps which include content such as intense offensive language; frequent or intense cartoon, fantasy, or realistic violence; and frequent or intense mature, horror, and suggestive themes. This is also required for sexual content, nudity, alcohol, tobacco, and drugs which may not be suitable for children under the age of 17.

You can learn more about Application Ratings by reading Getting Started with Parental Controls on iPhone OS 3.0.
For app design information, check out the videos: "Getting Started video: The Ingredients of Great iPhone Apps" and "iPhone User Interface Design," available on the iOS Developer Center, and the iOS Human Interface Guidelines in particular, the sections, "Great iOS Apps Embrace the Platform and HI Design Principles" and "Human Interface Principles".

この時点は結構親切。これがだめですよって画像が添付されてきました。ただし、女の子の顔の画像が写っているだけです。「うわ、この子の母親に謝れよ。」って思いながら、その画像を差し替えて、レベルを+17にして再度送りなおしました。それが2012年3月27日。この時点でも思ったのですが、英語の手紙を読む気がない業者やちょっと気の弱い個人ディベロッパーであれば「ああ、やっぱりだめなんだ」ってあきらめるかもしれませんが、自分は「しつこく抗議していれば向こうがそのうち折れんじゃねえ?」って不確定な情報を元に戦うことを決意しておりました。

で、4月2日に返信がありました。

We found that your app contains content that many audiences would find objectionable, which is not in compliance with the App Store Review Guidelines.

Specifically, we noticed your app concept was objectionable and not appropriate for the App Store.


We encourage you to review your app content and evaluate whether you can modify the content to bring it into compliance with the Guidelines.

When resubmitting your revised binary, please ensure that your Application Rating is consistent with the content and nature of your app. A 17+ rating is required for apps which include content such as intense offensive language; frequent or intense cartoon, fantasy, or realistic violence; and frequent or intense mature, horror, and suggestive themes. This is also required for sexual content, nudity, alcohol, tobacco, and drugs which may not be suitable for children under the age of 17.

You can learn more about Application Ratings by reading Getting Started with Parental Controls on iPhone OS 3.0.
For app design information, check out the videos: "Getting Started video: The Ingredients of Great iPhone Apps" and "iPhone User Interface Design," available on the iOS Developer Center, and the iOS Human Interface Guidelines in particular, the sections, "Great iOS Apps Embrace the Platform and HI Design Principles" and "Human Interface Principles".

「てめえ、テンプレ送ってきやがったな!」って頭に相当来たんですが、
「どこが悪いか具体的に指摘してください。そこを直して再送しますよ」という返信をしました。

すると翌朝

Thank you for your reply.

Your app concept is no appropriate for the App Store.

Please revise your app and upload new binary to iTunes Connect.

とこれまた定型文が。
長期戦を覚悟したので
「なにか僕が理解にかけるようであれば理解するように努力するのでだめであるポイントを具体的に教えてください。」

と紳士的に返信。

翌朝の返信が、
Thank you for your reply.

Your app is objectifying a girl and this is not appropriate for the App Store.

In order for your application to be reconsidered for the App Store, please resolve this issue and upload your new binary to iTunes Connect.

「objectifying a girl」に今後悩まされることとなります。
続きはまた今度。日本の会社だったらアンダルシア風に「かならずいくからそこで待ってろよ!」で乗り込んで直接交渉で大抵はおさまるのですが、さすがに海外に行くのは難しい。あと、国民性で交渉の術がわからないので、あまり強攻策もどうかと。

ちなみに、アップルとの時差は向こうが16時間遅れています。
返信のペースを考えると、向こうの営業時間は月曜日から金曜日の8時から18時ごろまで。
8時から10時くらいでResolution Centerで返信をします。その後にARB(Apple review Board)の返答や、In Reviewのものの検証、返答をするかと思います。
日本時間的には返事は月曜日の24時から、金曜日の26時ごろまでと考えるのが良いかと思います。
基本、Resolution Centerに投稿された文章は翌営業日の8~10時に返すという仕事割りになっているかと思います。

今回iPhoneアプリでプロジェクトAチームで「ここでキスして」を完成させたが、Appleがなかなか審査を通さないので、無駄な時間が過ぎるのもなんだしなって軽い気持ちでAndroidへ移植を始めました。
感想としては、言語が違うっていうけどそれほどちがわなくねえ?って感じでした。
東北弁と九州弁くらいの違いだと思います。自分はそもそもオブジェクト指向初心者でしたが、1週間くらいで出来ました。先入観がないので判っていないもの勝ちです。
その雑な感覚の中で、「うわ、この違いめんどくせーなー」って思ったものを書き連ねます。

1)Android用の画像は限りなく軽くせよ
最近は、iPhone4に対抗して、解像度720x1280みたいなものも出ているのですが、それ用に高解像度の画像を用意するとメモリが足りなくなって落ちる端末が出てきます。
基本、AndroidはARCのようにメモリの開放が自動なんですが、裏を返せば、取り込んだ画像を開放するタイミングが運任せになります。明示的に開放すれば良いことかもしれませんが、その労力が売り上げUPにつながり、かつ、未知の端末で起こすかもしれない致命的なエラーの可能性を凌駕するかというと、ちょいと微妙なので却下。
普通にJPEGでサイズを落とすなりをすれば大丈夫です。DPIによって読み出す画像を変えられるのですが、低解像度(120dpi)、普通解像度用(160dpi)のフォルダしか活用してません。それ以上も対応しようとしたのですが、自分の目では判別不能。じゃあ、いいかって感じで。あまり親切に対応しすぎてもDLファイルの容量も増えちゃうし。

2)240x320の端末に注意
結構致命的なんですが、画像のサイズが240x320の端末があります。iPhoneのデザイン設計にあわせると320x427くらいの大きさです。
基本、縦幅480でデザインを設計しているので、この端末で見ると下のボタンが表示されないとか完全に不具合が出来上がります。じゃあ、この端末への対応は切っちゃいましょうっても思うのですが、海外や、プリベート携帯として結構出てます。これくらいだったら良いのですが、Andoridでは480x854というサイズの携帯が結構多く出てます。これはiPhone用のデザインの設計をしていると相当下が余って気持ち悪いんです。結局きちんとデザインをしてもサイズどおりにいかない。つまり、紙のデザインではなく、WEBのデザインとして考えないといけません。
だとすると、240x320をIE6的な立場で、480x854をSAFARI的な立場でと割り切るしかありません。
なので、Androidへの移植を考える場合は、デザインに関してはAndoridを先行して考える、もしくは、それぞれ用で2つ考えるが正解でしょう。自分はどうしようもないので後者で辻褄合わせました。

今回はここまで。次回は戻るボタンがあるメリットなどを書きます。