2015年12月31日木曜日

タスクキラーを見切れ!の巻

今回も Android アプリにおけるメモリリークだとかアクティビティーのライフサイクルだとか、そういう話です。 「アタックダンジョンMMF」は12月10日リリース予定でしたが、案の定のびのびとなっています。

先に結論を書いて、そのあとに解説していくというスタイルで今回はいきたいと思います。 まずは、これから。 これは開発途中で棚上げしたマイアプリなんですが、単一のアクティビティーで作られている単純な代物です。 で、右上に 3 という数字が見えます。 これは、3回転したという意味なので、アプリを少しばかり稼働させたという証明です。 で、これを中断から再開します。 中断・再開の間に10時間以上は経過しており、その間にスマホのブラウザでインターネットを50分くらいしています。 つまり、デバイスに負荷を与えてからの再開です。

で、どうなるか。 開いてみたら右上のカウンターが 0 になっています。 これは、初期状態であることを意味します。 中断した後にすぐ再開した場合は、カウンターの値を引き継ぐのですが、今回はデバイス(Android の OS)のメモリ管理でキルされたみたいです。

はい、この単一アクティビティーアプリと同時刻にスタートして中断した別のアプリがあります。 こちらのアプリは3つのアクティビティーを持っており、わざと初期立ち上げのアクティビティー(メインアクティビティー)以外のソレで中断しています。 条件は先ほどと同じです。 中断・再開の間に10時間以上は経過しており、その間にスマホのブラウザでインターネットを50分くらいしています。 改造前は、これで開くとエラーが起きて強制終了でした。 OS のタスクキラーで初期化されているので、参照する変数が null になっていてバグが発生します。 しかし、気を付けて欲しいのは中断時に launching じゃない Activity が前面に出ている場合に限ってこういう事態になるということです。 確かにさっきの単一アクティビティーのアプリでは再開時に何事もなかったかのように初期化されており、 エラーは発生しませんでした。

このエラーってやつが発生するとユーザー様は怒り絶頂になるので、エラーは根こそぎ解決してからリリースしたいとマジで今回は思っています。 結局のところ、メモリの都合上、それなりの時間が経過するとアプリは初期化されるようです。 で、今回仕込んだ解決策は、これを根本的に解決するというものではなく、 (中断再開時に null になった場合はアプリ側の処理で初期化してスタートするだけのこと) ―――エラーが発生するかどうかって違いしかありません。 しかし、こうやってエラーを蛇蝎(だかつ)のように嫌い、斬って斬って斬りまくる姿勢を徹底することは素晴らしい…ハズ。 ユーザー様からの評価を、三次元的広角領域から得られるものだと確信しております。

moveTaskToBack(boolean nonRoot) という処理を行い、 OS側でアプリをデストロイしてもらうようにしました。 もちろん、デバイスがメモリ不足になった場合のお話ですけどね。 破壊を適正に行うためにバックグラウンドで待機する仕様みたいです。 つまり、仮死状態で待ちながら本体であるアンドロイドOSさんが 「なんかメモリのやりくりきつくなってきたんですけど」ということになれば、自らを破壊することで端末の負担を軽くするみたいですね。

仕組みとしては、イリーガルな中断の場合に必ずメインアクティビティーにバックさせるようにしています。 で、メインの onResume() で、他のアクティビティーから数値を初期化せずに戻ってきたかを判別して、 初期化されていなかった場合は moveTaskToBack(boolean nonRoot) という処理を行います。 しかし問題があった。なぜかゲームの流れでメイン→マップ→バトル→メイン→マップというアクティビティー遷移のサイクルを行うと、 突然アプリが終了してしまうという不具合が発生してしまう。 これの解決は、moveTaskToBack(boolean nonRoot) という処理を行う際にわざと0.5秒の待機時間を 発生させることで解決できました。 これは、なぜそうなるのか? には踏み込まず、対処療法でまあいいかと華麗にスルーしていきたいところです。

ちなみに、中断してすぐ再開した場合はフツーに中断地点からの再開となります。 BGMだけは頭に戻りますが、その他の状況は中断したときと同じです。 変数の初期化を onCreate() onResume() onStart() などで行わないようにすれば、これは可能です。 スマホなんで、どうしてもプレイしている状況が多岐にわたります。 家でガッツリとマジでやっている可能性は低いので、 職場の休憩時間でやっていて「ちょっとおお!」と呼ばれてゴニョゴニョしないといけない様な不安定なシチュエーションを想定するしかありません。

余談ですが、マシンの性能は日々向上しているのだから、メモリ不足はスペック改善によって解決されるのではないかね? と考えたいのですが、 実際は Android5.0 以降で新機能を実装したが故にメモリ関係のクラッシュを連発したりするようで…やれやれです。 Windows7 より後発の Windows8 が無駄機能がゴテゴテしすぎて遅いやないか、とユーザーから不評だったのと似ています。 やはり人間は業の深い生き物です。 それが現状なので、アプリ作成者は「いつ何時、どんな風にでも」終了できるようにアプリを設計すべきなのでしょうね。

終了といえば今年も終わりです。 「アタックダンジョンMMF」は12月10日リリース予定でしたが、その辺までは割と真面目に作業に励んでおりました。 逆に12月10日以降はほとんど手を付けなくなって本日に至ります。端的に申してやる気の問題です。 来年になったら頑張ろう。

2015年11月23日月曜日

いまさら、だけど Activity の遷移と終了について

ツールでもゲームでも複数の土台を持ちたい場合がありますよね。 土台というと分かりにくいけれども、例えば単純なゲームであるインベーダーやテトリスなら、 タイトル画面とメイン画面だけ用意すればいいですよね? でも、 Wiz(3D迷宮RPG) なんかだとタイトル画面、街滞在中の画面、3Dダンジョンの画面、戦闘画面、といくつか必要になりそうです。 Android でアプリを作る際には、 画面のデザインが異なる場合は、そのデザインパターンの数だけアクティビティーを作ります。 これが面倒なら、一つのアクティビティーで複数のレイアウトを使い回すこともできます。

アプリを複数のアクティビティーで分割管理することにはいくつかのメリットがあります。 まず、プログラムの構成がアカデミックな感じになります。 インデックスといいますか、大分類>小分類みたいな感じで、大量に発生してしまう Class(特定の役割を担ったプログラムの塊)を、 上手に仕分けることができます。 上手に整理すれば、どこに何があるのか分かりやすいし、機能を変更・追加する場合にしたって最小限の労力で作業を終わらせることができます。 整理がきっちりされている方が、バグや不具合が発生しにくいという側面だってあります。 それに、実際に使う部分だけのリソース(画像ファイルとか)を読み込ませることで、 マシーンの負担を軽減させることだってできる。 メリットはたくさんあります。

で、結局のところ、ある程度以上プログラムの規模がでっかくなりそうなときは、 素直にアクティビティーを複数作って、作業を分業化する方が効率的です。 複数のアクティビティーがあるということは、 アクティビティーの遷移と呼ばれる行為が必要となります。 これは、要するにアクティビティーAからアクティビティーBにジャンプするという行為です。 これによってAは後ろに下がり、Bが表に出てくるということになります。 これは、Android でプログラミングする際の超基本なんですが、ちょっとちょっと今さらながら、理解を深める必要があると思っている次第です。

finish() で現在、進行中の Activity を終わらせる。そう思っていた時期がオレにもありました。 と、いうか今まで当然のようにコレを行っていた。 が、しかし、Activity の終了を明示的に行わない方がいいらしい。 どういうことか? つまり、Activity の遷移だけ指示して、あとの終了過程はお任せしてしまうのである。

Activity には3つの状態がある。
実行中:表に出てきていてアクティブな状態
一時停止:表に出ていないが、一部が見えているケースもある
停止:バックグラウンドであり、見えない。システムによって終了させられやすい
一時停止と停止のときは、まだ完全には死に絶えておらず、変数なども破棄されていない。 メモリの余裕がなくなってきた場合は、停止状態のアクティビティーが優先的に廃棄される。 一時停止状態も場合によっては強制停止される。 つまり、メモリが不足してきた際に、自動的にアクティビティーを強制終了させるという 便利システムをアンドロイドさんが搭載しているので、終了過程は端末にお任せすればよいということみたい。 現に携帯は、ブラウザ、電話、メール、Playストア、YouTube、ゲームA、ゲームB、ゲームC、電卓、メモ帳…みたいな感じでいろいろなアプリを 同時並行的に使いますからね。こういう乱立状態の中で上手にメモリをやりくりしようという Google さんの知恵がシステムに反映されているようです。

で、Android のプログラミングをやってみようという入門書に必ず書かれているライフサイクルというものがある。 特定のタイミングで自動的に呼び出されるメソッドがあるから、そこで初期化とか終了処理とかするといいぜ、という奴である。 一発目の初回に起動させた時は、 onCreate()→onResume()の順で呼び出される。 終了するときは、onPasuse()→onStop()の順で呼び出されるし、 再開時は、onResume()のみが呼び出される。 アクティビティーを強制終了させない限りは、onCreate() の部分はショートカットされるようだ。 また、本当に強制終了されたときは、onDestroy()が呼び出され、 この状態からアプリを開いたらご丁寧に onCreate() からスタートするみたいだ。

onCreate() に記述する内容は最低限にしておかないと、 onCreate() の中身がスルーされてしまうかもしれない。 onResume() に記述しておけば、確実に実行されるだろう。 onCreate() や onResume() で変数の初期化を行うと、再開時に微秒なことが起こるので気を付けないといけない。 このあたりは、よくよく注意してプログラミングしないとバグを引き起こす元となりますよ。

再開時は、最後に開いていたアクティビティーから復活するのが基本です。 例えば、MainActivity→FieldActivity→BattleActivity という具合に遷移していって、 最後のバトルアクティビティーをやっている最中にホームボタンで中断したとしましょう。 このとき、BattleActivity から再開しようとするが、ここが finish() されていたら、一つ前の FieldActivity から再開されてしまう。 とにかく、 finish() を使ってアクティビティーを強制終了させると逆に混乱を産んでしまうので使わない方がよいだろう。

また、バックキー押したときの対応だが、一つ前のアクティビティーに戻るものの、 変数の初期化に失敗してチグハグなことになりがちなので、特にゲームではバックキーそのものを無効化してしまうのが最も簡単な解決策となるでしょう。

セーブと一時保存

ここまで書いているのは、あくまで一時保存からの再開です。 一時保存なので、保存の信用性はそれほど高くありません。 スマホの使い方によって個人差が著しくあるでしょうが、1ヵ月の間に1、2回程度はデータが消失するリスクがあります。 クリアまでに1時間以上かかるようなゲームであれば、セーブ機能を付けるしかないでしょう。 特に今の時代ともなれば、オートセーブが必須でしょう。

ただし、何でもかんでもオートセーブを小刻みにすればよいわけではありません。 例えばRPGで、絶対に勝てない状態から再スタートしたならば、プレイヤーは対策がないまま全滅を繰り返すしかありません。 将棋でいう「詰みの状態に入るより前」から再開できないと、やり直しようがないのです。 もし、20時間もプレイしたところでこの手の「セーブハマリ」に直面したら、プレイヤーの落胆は深く苦しいものになるでしょう。 哀しみは怒りへと変わり、「二度とやるかボケッ!」と吐き捨てて、アンイストールするにちがいありません。

あらゆる変数が、どのタイミングで初期化され、どのタイミングで更新され、どのタイミングで保存されるのか? と そこまで考えた上で設計するのが理想的なのだろうが、そんな細かいことできるわけねぇっ、と思わずにはいられません。

メモリーとヒープ

元々「男男女ダンジョン物語」の頃は、Activity の finish() をやりまくっていた。 これによって、オートセーブが実施される拠点にいるとき以外(ダンジョン探索中、会話イベント中、戦闘中)に 中断してしまうと、また拠点からやり直しというコトになっていた。 一回の旅路が5~10分程度で終わるものだから、それでもいいやと考えていたが、 いざ、中断復帰システム(アクティビティーを強制終了しないやり方)に切り替えたら、中断→再開がサクッとできるのはスゴイし便利だと思った。

finish() しまくるやり方は、プログラム技術が未熟なため、そうしていた面が大きいが、 メモリの解放という意味合いも無いわけではなかった。 メモリが不足してきた際に、自動的にアクティビティーを強制終了させると先ほど書きましたが、 これって「Aのアプリを実行中に、Bアプリの(そんなにいらない)アクティビティーを終了させる」ということではありません。 いや、そういうケースもあるのかもしれませんが、 「Aのアプリを実行中に、メモリが不足したのでAのアプリが強制終了する」ということが起こりうるのです。 いわゆる "out of memory" ですね。 これは、一般ユーザーの方も多くが経験をしていることでしょう。 一般ユーザーはエラーで落ちた場合、何が原因なのかまでは把握することはできませんが、 間違いなく「アプリがバグる原因BEST3」に入っている因子です。

今回、「アタックダンジョン MMF」では臨機応変に中断→再開ができる仕様を目指して、アクティビティーを殺さない「不殺」主義を貫きました。 しかし、開発が進展してテストでプレイする量が長くなってくると、、、早くも「アウトオブメモリー」による強制終了が出たあぁ! 困ったぁ。 largeHeap という技を使えば解決できるのですが、メモリの使用量を自力で抑える努力も必要だとのことで、なるほど、なるほど。 秘奥義「羅味曾父(らあじひいぷ)」を使わずに、現場の技術で何とかなるまいか? こんな開発半ばで秘奥義に頼るようでは、今後必ず追いつめられる…。
で…。
結局、アクティビティーが遷移するタイミングで用済みのアクティビティーをキッチリ終了させてやった方がメモリは解放できそうです。 実際にテストしたところ、finish() を多様するほど「アウトオブメモリー」を回避できるという結果が得られました。 というわけで「不殺」の誓いを早くも破る方向で、アクティビティーを殺しにかかります。

「ちょっと待てよ!」と、心の中から反論が飛んできます。 臨機応変に中断→再開ができる仕様を目指してたんじゃないのかと? そう、そうなんだけど…。 ただ、これは意外と簡単に解決できまして。 要するに onPause() 内で、特定の条件を満たした場合だけ finish() するように if で分岐させます。 特定の条件とは、正常なルーチンの流れでアクティビティーが遷移するときです。 だから、ホームキーを押して強制的に中断した場合などは onPause() が呼び出されても、finish() は実行されません。 あくまで、次のアクティビティーに切り替わったときだけ、finish() させるという構造です。 これによって「アウトオブメモリー」を回避しつつ、中断→再開も自由自在という無敵仕様が完成しました。 やればできるじゃん。

2015年11月19日木曜日

Wow... アイツが殺されたワケを知りたいって?

今回の記事は個人開発者である私が、 将来しくじらないように自戒の意味を込めて執筆します。
for me

最近、何が流行っているのかまったく理解していないんですけどね。 ネットで「君の目的は僕を殺すこと。」というアプリの記事を読んだので、 アプリダウンロードのページ(GooglePlay)に飛ぶボタンを押したら…
接続されない。
ちなみに、GooglePlay の検索で「君」と入力するだけで「君の目的は僕を殺すこと」と 出てきます。 これは、検索ワードとして有力であるという証…。 で、作者自身が「私はGoogleに嫌われたようだ」的なことを発言されていますので、 どうも消されたみたいですね。

以下に記す内容はすべて推測ですので、話半分で読んでください。

上記の人気アプリが Google から削除された理由は、 グーグルのガイドラインに抵触したからだと思われる。 キミボクiPhone版の記事がいくらでも見つかるので、そこからヒントを探したところ、 何が神の逆鱗に触れたのかは容易に推測できた。

広告を見ることに対して見返りを与えた

ゲームのメインキャラである魔人さんが「他の面白いアプリのビデオがあるんだけど、見ないですか?」 みたいなことを発言します。 で、CMを見たら本来は30分に1度訪れるフィーバータイムがすぐに訪れます。 30秒の広告動画視聴の対価がフィーバータイム獲得なのです。 フィーバータイムとは放置ゲームでよく使われますが、いつもより大量にゴニョゴニョをゲットできるぜ! というタイムサービス(サービスタイム?)のことです。 業界用語で言えば、リワード広告の一種であるとカテゴライズできますね。

レビューに対して見返りを与えた

魔人さんが「あなたにお願いなんですけど、ゴニョゴニョフガフガってレビューに書いてくれないかな? お礼はさせてもらうよ」みたいなことも発言します。 実際は、ユーザーがレビューを本当に書いたのかを追跡するのは技術的に困難なので、 レビューページに進んだら「レビューを書いたという扱い」になると思います。 つまり、ボタンを押してリンク先に移動した時点で報酬が発生します。 それはさておき、お礼が欲しくてレビューを書くユーザーはいくらでも存在することでしょう。 お礼は定番のコイン(ゲーム内通貨)みたいですね。

放置ゲームの収益性が高いと言われる理由はよく分かります。 放置ゲームの基本は何もしなくても、進行すること。 だから、やることがないから広告をタッチしやすい! こんな単純な理論で終わるつもりは毛頭ありません。

放置ゲームでは世界観が重要。 ユーザーは続きや先が気になって、進行を早めるために操作します。タップだとかスワイプだとか、連打であるとか。 タップやスワイプによって、何もしなければ1分かかるところがググッと短縮されて、10秒とか5秒になります。 この、何らかの介入を行うことによって時間を早めている錯覚を起こさせるところが、放置ゲームの妙技と言えましょう。 要するに、広告を見るのも、レビューを書くのも、介入の一種なわけです。 ゲーム感覚で広告を見るのです。 レビューを書くのです。 介入によって時間を圧縮するのです。 「誰にでも平等であるはずの時間」、これを意図的に操作するという神の気分を味わえるのが魅力なのです。

(割とどうでもいい内容の)ビデオやDVDを見るときに、「早送りできるかできないか」というのは超重要です。 早送りができなければ、見るのが苦痛で途中でやめてしまうレベルのものでも、早送りができれば興味のあるところまで進めればいいだけなので、ぜんぜん楽しめます。 おもいっきりエロビデオの話ですが。

脱線しすぎたので、話を元に戻しますが、Google さんは「報酬をあげるからチョメチョメしてよね」というやり方を嫌います。 まずは、「広告を見ることに対して報酬を与えた」の件ですが、 「水着で鬼ごっこ~ポロリもあるよ~」などの広告を見ることでゲームが有利になるタイプのアプリが無事であることから考えるにセーフなのではないかと。 2015年11月現在、インタースティシャル広告に関しては細かくメスを入れてきているみたいですが、 エサをぶらさげて広告を視聴させることはグーグルさんは容認している。 その一方でレビューを誘導する方の問題はどうなのでしょうか? 以下は Google Play デベロッパー プログラムポリシーからの引用です。

● デベロッパーは、不正なインストール、レビューや評価に対する報酬やレビューや評価の捏造といった不正な手段や~(中略)~よって、 ストア内でのプロダクトの掲載順位を変更しようとしたり、プロダクトの評価やレビューを操作しようしたりしてはいけません。

レビューや評価に対して報酬を与えることにはレッドカードのようです。 つまり、「このアプリのレビューをしてくれませんか?(報酬は何もなし)」なら問題ないのでしょうが、 「このアプリをレビューをしてコインをゲットしませんか?」だとポリシーに引っかかるということです。 これが、「君の目的は僕を殺すこと。」のAndroid版が惜しむらくもプレイストアから削除された顛末です。

2015年11月15日日曜日

Android アタックダンジョン MMF 開発記<起・参>

(タテ)と(ヨコ)の操作性を考える

オリジナルの「男男女ダンジョン物語」は横固定画面(landscape)でした。 横固定画面だと、(床に置いていない限り)両手で持つしかないので、 デザインは楽です。 スマホを横向きで両手で持ったら分かると思いますが、 右手の親指と左手の親指でスクリーン上の全領域をカバーできます。 つまり、どこにボタンを配置しようが「押しにくい」ということはないのです。 タブレットまで考えると、レイアウトはなめちゃいけないんですが。

↑ Landscape

横画面両手持ちは、サッカーのゴールにキーパーが2人いるようなものです。 2人いるだけに、すべての領域をまんべんなくカバーできます。

で、今作っている「アタックダンジョン MMF」は縦画面固定(portrait)です。 縦画面の操作は次の2パターンがあると思います。
・片手で持って、反対の手で操作する
・片手で持って、持ち手で操作する
どうせ縦画面にするのなら、後者でしょう。 右手にコーヒー、左手にスマホ。 左手にタバコ、右手にスマホ。 右手が吊革、左手がスマホ。 人生には、片手しか使えない場面も多々あります。 ただし、片手で持って操作するためにはボタン配置を寄せないとダメです。 押さないといけない場所がスクリーン全領域に点在していたら、 縦画面である魅力は半減し、マイナスばかりが目立つようになります。

↑ Portrait

普通片手でスマホをタテに持てば、デバイスの下の方を持つ形になります。 その際にフリーになるのは親指でしょう。 で、親指が無理なく楽に動かせる範囲というのは、画面下半分の領域と言えましょう。 文字入力する際にテンキーみたいな疑似キーボードがでてくるでしょう。 アレの範囲っていうのがだいたい画面下半分ですからね。

縦と横のどちらにもメリットとデメリットがあるので、一長一短です。 ですが、ゲームの場合はカテゴリによってどちらを選ぶ方が無難か? という傾向はありそうです。 アクションやシューティングの場合はスクロール方向が縦・横どっちなのかという方が重要になりそうなので、ここでは割愛します。 RPG の場合は、縦横両方ありますが、縦の方が主流の気がします。 やはり時代は気軽に、手軽に、ポチポチ系なのか??? ソシャゲも一周回って古くなってきた感がありますが…。

でも今回、わざわざレイアウトをいじる手間を犯してまで縦画面に変更した私である。 何だかんだいってタテの方がいい理由があるんじゃないの?
 ああ、そうだ…。
タテ型だと画面底部にちょうどいい「広告枠」がある。

デザインっていうのは「見る枠」「操作する枠」「遊びの枠」「広告の枠」、すべてを見据えて行わなければならない。

2015年11月7日土曜日

Android アタックダンジョン MMF 開発記<起・弐>

「アタックダンジョン MMF」製作中です。 公開は目指せ2015年12月10日。

徐々に製作中のアレやコレやを小出しに見せていくことで、 アプリの宣伝になればええなぁ、という淡い期待を抱いて年内は開発記を続けてみたい。 どの色好きなの? ということで、キャラクターの紹介です。

白の魔女「スノー」
氷の魔法を極めた熟女。欧米人は老けて見えるから、意外と若いかもしれないが…。 メンバーとして連れて行けば頼もしい味方として大活躍してくれることだろう。 初期装備はマナの帽子。
黒の魔女「バリ・バラ」
エキゾチックな呪術師。魔法使いは基本的に魔抵抗の値が高いが、彼女は最大値を持ち、敵の特殊攻撃を受け付けない。 初期装備は魔除けの帽子。
赤の魔女「スコーピオン」
悪魔族の魔法使い。デビルレディーですね。赤LV7魔法、エナジーフレアは超強力。しかし、青LV1のシールドを受け付けない体を持つので、 ガードが弱いという欠点を持つ。角が生えているが、これが頭装備扱いとなる。もちろん、換装はできない。
青の魔女「ローティー」
青枠はエルフの設定です。スコーピオンと同じくエナジーフレアを使えるが、下位の赤魔法をほとんど習得していないというお茶目な一面も。治療系の青魔法は得意。初期装備は月光の鉢巻き。
黄の魔女「ヒョウ」
黄枠はダンマスでいうところのイアイドー枠ですね。タランティーノとかリュック・ベッソンが描くデタラメなジャパニーズ・ニンジャ・ゲイシャ・スパイス・ガールに仕上がりました。 ただし、刀を持っているのは伊達ではなく、魔女の中では唯一物理攻撃で敵を切り刻める。肝心の魔力はふつう。舞踏会の仮面によって素早さが激アップしているが、消耗アイテムを装着することができない。
緑の魔女「アピ」
マレー語で炎を意味する、だったと思う、アピさん。最初の予定では、緑枠はアース・サンダー、アース・ウインド、アース・ファイアの3人にするつもりだったのですが、名前短い方がいいよね、欧米系の命名体系は半分までに抑えた方がいいよね、などの考えから「雷」「風」「炎」をマレー語に変換する作戦に変更しました。頭の形が人間と異なるので、専用装備です。

6人もそろえばお祭り騒ぎ。ハロウィンっぽくていいですね。えっ? 何か既視感のあるキャラがいるって? き、気のせいじゃないのかなあ…。

2015年12月XX日(予定)まで待てないよ、という人はこのアプリで長い夜を過ごしてみてはいかがでしょうか? 「アタックダンジョン MMF」 の元になっている作品です。
「*男男女・ダンジョン物語*」

2015年11月3日火曜日

Android アタックダンジョン MMF 開発記<起・壱>

性懲りもなく、また新作アプリの作成を始めました。 が、しかし、まったく新しいのをゼロから…という気力も時間もないので(時間はあるけども)、 よくあるリフォームというか、リユースというか、画像やプログラムといった過去資源をこれでもかっ、と使い回します。

パクリ元は自作品なので問題ないのですが、「男男女ダンジョン物語」というRPGです。 この作品の欠点である「長い・複雑・バグりやすい」、少なくともこの3つを徹底的に改善します。 ゲーム性というかゲームジャンルすら別物になるわけですが、まあ、これで行こう! というアイデアが閃いたものですから。

簡単に言うと、パズドラスタイルの簡単ダンジョンBOSSを「18人いる勇士から3人を選んで倒そうね」というゲームです。 そう、この任意に3人を選ぶという部分でこのゲームの(戦術性の)およそ大部分が説明できます。 プレイヤーに求めるものが何なのか? が、明確かつシンプルなのが特徴です。

例えば巨漢で体力のあるBOSSと対峙する場合、さっさと倒したいので攻撃力を重視してメンツを選びます。 状態異常技を得意とするBOSSと戦う場合は、そういった攻撃に耐えられそうなメンツを選びます。 また、道中の雑魚が非常に激しい物理攻撃を喰らわしてくる一方、BOSSが即死攻撃メインである場合は 「防御力」+「即死攻撃対策」の両輪でメンツを選ばなければなりません。

よくある属性のアレとは違います。 アレだとBOSSと相性の悪い属性を選んでしまうと、まったく勝ち目がありませんから。 必然的に、BOSSに対してアドバンテージを取れる属性を選ぶことが「誰の目にも明白な最適解」となります。 これだと、「○○ダンジョンはグー属性のBOSSだから、我々はパー属性の戦士でいこうか」ってな具合で、単純すぎて考える余地がありません。 だいたい、火属性が水属性攻撃に弱いといっても、 現実世界の火事ありますね。 電気火災や油火災の場合は水を使うな、というのが常識ですからね。だから、何? っていう…。

1枠(白の勇者/スタンダード)総合力が高く、欠点がない。無難な感じ。装備はイカスが、消耗品を所持していない。
2枠(黒の勇者/エキゾチック)ハードでタフな防御・耐久性重視の勇者。火力はやや低めか。
3枠(赤の勇者/悪魔族の亜人)最大の攻撃力を誇り、かつ吸血剣も持つが、防御魔法をかけることができないという欠点を持つ。
4枠(青の勇者/エルフ枠)高い魔力と独自の秘薬を持つ。
5枠(黄の勇者/ニンジャ芸者枠)特殊装備の補正によって意外と能力に優れるが、アイテムの使用・装着ができないという欠点を持つ。
6枠(緑の勇者/獣人枠)能力が低く使いにくいが、アイテムを過剰に所持しているため、アイデア次第で爆発力を持つかも。
と、いう感じで1~6枠まで特色があります。1枠に近いほど、単純に基本能力の合算値は高くなります。

1回、BOSSと戦えば「このBOSSは短期決戦で倒さないとこちらが不利になるみたいだから、1-3-5あたりかなあ」とプレイヤーが考えてくれれば助かります。 で、だいたいその予想は大きくは外れてはおらず、最終的に微調整が起こりますが、1-5-3あたりでBOSSを仕留めるはずです。 慣れてくれば、メンバー編成だけでなく戦闘中の戦い方にも工夫をこらしたものになるでしょう。

で、普通の遊び方としては各ステージBOSSをメンバー編成を考慮しながら撃破していく、というものになります。 BOSSのステータスや攻撃パターンを踏まえたうえで、最も有利に戦える編成を考えます。 いわゆる監督の仕事ですね。 勇者枠・戦士枠・魔女枠というのが決まっており、同色のメンバーは重複できませんので 6x5x4=120 通りのパターンがあります。 いわゆる競艇の3連単ですね。 各キャラクターに成長の要素はありません。 パズル的と言えばパズル的ですね。

しかし、変態的な考え方で行くと 「○○ステージを6-5-2」とかで突破できんかな? とも思いを馳せます。 つまり、奇をてらったメンバー編成による強硬突破作戦です。 基本的にボートレース(競艇)の3連単を意識してもらえばよいと思いますが、4~6枠は入りにくいです。 そりゃ、1-3-4 とか 2-5-3 とか 5-1-2 とかはありますけど、6-4-5 とかは絶望的にないですよね。反対に、2-1-3 あたりは低配当ガッチガチですが。 そこは逆にあえて高オッズ、高配当となるような組み合わせで「冒険してみる」のもこのゲームの粋な遊び方です。

で、もし、「○○ステージを6-5-2」でクリアしたのはあなたが世界で一番最初です、おめでとう、記念品を贈呈します。 とでもしたら、熱くなりますね。 ちょっとだけソーシャル要素を入れてみようと思います。せっかくのスマホゲーですからね。 サーバーで、○○ステージはどんな組み合わせで攻める人が多いのか? 等も集計できます。 その集計結果をふまえて、予想屋(ゲーム内キャラ)に「そのメンツで行くのかい。 あなた意外と堅実だね」とか 「そのメンツで行くのかい? あなた、ぶっ飛んでるね」とか喋らせるのも面白そうですね。

新作はオリジナルの「長い・複雑・バグりやすい」の3点を改善できたかと思います (まだ楽勝で完成していないんですけどね)。 最近ちょっとAndroidアプリのゲームなんかをちょくちょくやってみましたが、クリアするまでの時間は1~5時間くらいが適正な気がしますね。 で、1度クリアして満足サヨウナラ、の人もいれば、納得いくまで何回も、という人もいる。 そんなバランスが理想的な気がします。 とりあえずBOSSofBOSS(ラスボス)のダンジョンが解放されるまでに6ステージクリアが条件、 各ステージは5~20分程度で突破できるとして、エンディングまで計2時間。そんなボリュームを目指します。

装備の概念があるにはありますが、基本的に各キャラ固定装備です。 また、ダンジョン探索部分に関しては完全にオート。プレイヤーは操作できませんし、する必要もありません。 プログラムも当然、簡易的になってきて、 オリジナルにあったパッケージの1つをゴッソリ消去することができましたし、いくつかのクラスは不用になったのでまるごと処分できました。 これによって、処理が軽くなっていますので、バグも減るはずです。

2015年10月8日木曜日

モンティホール問題Z 最強の司会者

今回は漫画メインです。 前回の記事を読んでからの方が、楽しめるかと思います。

とりあえず、設定の説明ね。 主人公は一般市民のチャレンジャーとして、テレビ番組にゲスト出演しています。 番組の中の企画の一つで、「3つのドアから高級車を選べ」があります。 主人公は目の前にある3つのドアから好きなものを選ぶことができる。カーテンが開いた向こうに 自動車が置いてあればラッキー。高級車をゲットです。 単純な運任せのゲームだと思いますよね? ところが…

さあ、ここでワンポイント来ましたね。 なんと司会者のモンティは主人公が選んでいない残り2つのうち、1つのドアをオープンしました。 主人公は「間違いない、いまモンティがハズしたのは必然!」と考えていますが、 そりゃそうですよね。このタイミングでモンティが正解のドアをオープンしてしまったら、 (みんなが思っているよりも)ずっと早いタイミングでのチャレンジ失敗が確定します。 探偵が真犯人の推理を披露している途中に、誰かが横から「つまり犯人は○○だな」って言ったときには、盛り下がること確実です。 番組を見ている視聴者は、あっけに取られ、番組のプロデューサーは「何やっているモンティ! 番組を潰す気か!」と、激怒することでしょう。

ちなみにモンティが「どれがハズレか知った上で、ハズレのドアを選ぶ」というのは モンティホール問題の大前提です。 この部分を正しく認識できるかどうかが非常に重要です。 漫画なので色々と脚色していますが、どうかご容赦ください。

なぜ、2番から1番のドアへ変更した方が正解率が2/3にアップするのかは、 前回の記事を読んで納得してもらうとして、 今回、メインの議題にしたいのは「司会者モンティがチャレンジャーをペテンにかけることは可能なのか?」です。

漫画では主人公は「何がベストな解なのか?」を導き出したのに、それを実行できなかった 心の弱さを描いていますが、まあ理屈どおりにドアチェンジするのが最適解です。 最適解を選べば、2/3という高確率で正解できますし、 司会者モンティがどんな甘言を放ってこようが、どんな態度を見せてこようが、徹底的に無視して理論通りの選択をすればいいだけの話です。 司会者モンティはマリリン・ボス・サバント女史の導いたロジックに完全敗北するしかないのです。

… … …

…本当にそうだろうか?

だから、組み合わせの総当たりでも、確率論の計算でも、コンピューターを用いたシミュレーションでも 実証されているじゃないか。ドアチェンジで正解率2/3だっつうの!

いや、やはりダメだ。 あなたはモンティの本当の恐ろしさを分かっていない。

分からない奴だな。何年も前に決着の着いた話だぜ。

あらゆる事象、あらゆる選択が無作為に行われているのか検証する必要がある。

そんなことは分かっているぜ。

じゃあ、聞こう。最初に3つあるドアから1つを選んだとき、 どうやって選びましたか?

どうって? ただの山勘ですけど、何か?

要するにサイコロを振って出目で決めたとか、コンピューターの疑似乱数プログラムを利用してランダムに決めたとか、 そういうことではないんですね?

まあ、そこまではしていないですよ。だけど、テキトーに気分で選んだだけですよ。

あなた、2番を最初に選びましたよね? 2番とは中央のドアだ。 その10分前、あなた番組の映像を見ましたよね。 大型バスにトラックがぶつかるやつと、海上のボートに突然サメが襲いかかってくるやつ。

見ましたけど? クイズコーナーの映像だから。

大型バスには左側からトラックがぶつかりました。ボートを襲ったサメも同じく左側から現れました。 左側は怖い、左側は不吉。そんな印象を植え付けられても不思議はない。 あなた、無意識のうちに左側、つまり1番のドアですね。1番を避けるように誘導されていたんじゃないですか? 2番を選んだのは偶然だとしても、2番か3番のどちらかを選ぶように番組サイドは仕向けてきたんじゃないでしょうか?

…、おそるべし、モンティホール。 もし、番組側の巧みな誘導によってチャレンジャーが3つのドアから正解を選ぶ確率が1/2に引き上げられたとしたら…。 この場合、ドアチェンジしてもしなくても正解率は1/2、つまり、理論は破綻してしまう! そこまで考える必要があるのかって、思うけど。

2015年10月7日水曜日

モンティホール問題 1月3日じゃねえ、3分の1だ

モンティホール問題。 全米を震撼させた、確率に関するトピックスです。

テレビのクイズ番組を収録中。あなたはゲストです。 番組の最後に恒例のビッグチャンスがやって来ます。 3つの扉から正解を選べばみごと高級車をゲット。ハズレの扉を選んだ場合は山羊(ヤギ)さんとご対面。 あなたの希望と共に高級車獲得の契約書を食べられてしまいます。 あなたが扉を選んだあとに、司会者モンティは「ハズレ」の扉を一つ開けてくれます。 「ハズレ」を開けるわけですから、まだあなたが選んだ扉が「当たり」か「ハズレ」かは分かりません。 で、このときモンティさんはあなたに問いかけます。 「あなたは今、もう一つのドアに変えてもいいんですよ。どうしますか?」
モンティが開けていない残り2つのドアは「当たり」と「ハズレ」が一つずつ。これは間違いありません。 さあ、あなたはドアを変えた方がいい? 変えない方がいい? どっちを選ぼうが確率的には一緒なの? それとも違う? と、いうお話です。 もう一度繰り返します。 モンティが開けていない残り2つのドアは「当たり」と「ハズレ」が一つずつ。これは間違いありません。

あなたが、正解のドアを選んでいる場合、 残りのドアは「ハズレ」&「ハズレ」ですから、 司会者がどちらを選ぼうと関係ありません。 仮にあなたが司会者だったとして、どちらを選んだっていいんです。 ある程度ランダムに選ぶのであればね。

あなたが、不正解のドアを選んでいる場合、 残りのドアは「当たり」&「ハズレ」です。 司会者は二つをランダムに、山勘で選ぶのでしょうか? 違いますね。 ルール上、司会者は「当たり」と「ハズレ」を知っていて 「ハズレ」の方を選びます。 仮にあなたが司会者だったとしたら、何も考えずに「ハズレ」と知っている方を機械的に開けるだけです。 だから、あなたが不正解のドアを選んでいる場合、 司会者が開けなかったドア(もちろん、あなたも選んでいない)は必然的に「当たり」となります。 あなたが「ハズレ」を選び、司会者が「ハズレ」を開けたのですから、 残る一つのドアは絶対に「当たり」になりますよね。これは必然。

司会者はすごい権限を持ち、ゲストであるあなたを「もてあそんでいる」ような印象を与えますが、ここに錯誤があります。 司会者はあなたが選んでいないドアのうち、二つに一つを開けます(それはハズレなわけだが)。 つまり、司会者がどのドアを開けるか? その決定にはあなたの行動が大きく干渉します。 あなたが右のドアを選んだ時点で、司会者が開けられるのは「中」「左」に限定されますからね。 それプラス、「ハズレ」のドアを選ぶことしか許されません。 司会者は場の状況に支配されており、自由はほとんどない、というのがポイントになりそうです。 司会者は場を支配しているように見えて、その実は逆だというのが、「モンティホール問題が心理トリック」と言われる由縁ではないでしょうか?

これで状況の整理がつきました。 あなたが正解のドア(高級車)を選んだ場合は、「司会者も選ばなかった第3のドアがハズレ」となります。 あなたが不正解のドア(山羊)を選んだ場合は、「司会者も選ばなかった第3のドアが正解」となります。 言いかえると、あなたが不正解のドアを選んだ場合、「あなたも司会者も選ばなかった第3のドアが正解」となる。 これです。

では、あなたが正解のドアを選ぶ確率はどうでしょうか? 完全なノーヒント。 答えをこっそり教えてくれるスパイもいないし、「右」「右」「中」「左」「右」「右」「中」「左」みたいな法則性もありません。 主催者側としてはサイコロを振って(1、2なら左 3、4なら中 5、6なら右ということで)3つのドアのどれを正解にするのか、運任せで決めていることにします。 と、なれば3つのドアから山勘で選ぶしかありません。 正解率は33.3%(正確には1/3)となります。 つまり、ハズレを選ぶ可能性の方が高いということです、圧倒的に。 異論はないですよね?

ピ、ピ、ピ、ピーンときたかもしれないですね? もし、あなたが正解のドアを選ぶ確率が1/2で五分五分であれば、 「あなたがドアを選び直す必要はありません」。 だって、50%の確率で当たるわけですからね。 しかし、現実にはあなたが正解のドアを選ぶ確率は1/3です。 だから、
あなたが不正解のドア(山羊)を選んだ場合は、「司会者も選ばなかった第3のドアが正解」となります。 これが生きてきます。 あなたは2/3で不正解のドアを選ぶのですから、「司会者も選ばなかった第3のドアが正解」である確率が、(同じく)2/3となります。

最後に別の言い方をしましょう。
「あなたが正解を選んだという自信があるのならドアを変えなければよい」
「あなたが自らの答えに自信がないのならドアを変えればよい」
もし、何らかの理由で自らの答えが正しい。その確率は50%以上! と、思うのなら、答えを変えない方がよいのです。 実生活では何の役にも立たないと言われるモンティホール問題ですが、こんな風に考えると生き様っぽくて素敵すぎ。 じ、実は人生の役にめっちゃ役立つような気もしてきますね。
自信があるのなら
自信があるのなら変えなくて
自信があるのなら変えなくていいんですよ。
自信っていうのは「100%うまくいく」ではないんです。そんなの出来レースですよ。ノーリスクですよ。 危ない橋を渡らずに何かを得られるものか。 自信っていうのは「5割か6割…、とにかく半分以上!」、これが自信ですよね。

2015年8月17日月曜日

Android de 高品質プレイ動画を撮るべし!!!

平成27年夏、情勢は好ましくなかった。 GW開けに行った「ゴーストたちの憂鬱」による「パキスタン制圧作戦」は、いっときは彼の国でパズル>無料で16位を獲得するまでに至った。 しかし、宣伝供給が途切れるとダウンロードはパタリと途切れ、彼の国での順位も急降下してすぐに圏外となる有様。 一時的に順位を押し上げることには成功したが、カネの切れ目が縁の切れ目であった。 物量・資金において資本家たちに対し圧倒的な劣勢である以上、「札束の殴り合い」で順位を獲得することは不可能。 アプリ開発はしばし中断、有効な宣伝方法を模索することに注力する私。 生き馬の目を射抜くかの如き嗅覚で注目したのは、プレイ動画(高品質動画 by YouTube)であった。

下記は Android の「自作アプリ宣伝動画」を作るために、ビデオキャプチャーを試みたところ、 たび重なる不運とアクシデントに見舞われ、追加追加で新しく設備を導入し、莫大な資金と労力をつぎ込んだ結果、 ようやくもって当初の目的を達成したという地獄の経緯を示す一代記である。

これはまさに、RPG で悪名高いお使いクエストである。 敵のボスを倒すのに「勇者の剣」と「勇者の鎧」があればよい、と聞いて亜空間迷宮アマゾンでこの2つを入手する。 意気揚々と討伐に向かうものの、そもそも敵の居城に侵入できない。 おかしいな、「勇者の鎧」を装着していれば底無し沼でハマらないハズなのに…。 古くなってしまった「勇者の鎧」を磨かなければ本来の効力を発揮しない、と聞いて納得。鍛冶屋のオヤジに頼んだら 「この鎧は特殊な金属だから、特殊な磨き粉が必要だ」と言われるありさま。 図書館で文献を漁ると、「勇者の鎧」を構成する金属を特定せり。そして、磨き粉もどこで入手すべきか見当がつく。 何とかして特殊な磨き粉を手に入れるも、鍛冶屋のオヤジがうつ病にかかっていて仕事にならない。 町内を徘徊して探偵のごとく情報収集、職人のスキルをコピーする技が存在することをキャッチ。 秘儀「カゲ分身」の術をどこかで覚えて鍛冶屋のオヤジのスキルをコピー、「勇者の鎧」を磨いてようやく本来の性能を取り戻す。 これでようやくラスボスの居城に侵入できるぜ。 長くてだるい道のりだった…。
上記のは比喩でありますが、 実際にネット通販+ソフマップ(電車で東へ)+ケーズデンキ(電車で西へ)というお使いをしている。 だって、何かってえと、何かが足りねえ、ときたもんだ。

Amazon de ビデオキャプチャー(注1)を購入したぜ。スマホのMHL出力を利用(注2)(注3)するからMHL→HDMI変換機器も同時に発注したぜ。抜かりはない。
とりあえず、現物が家に届いたのでTVにスマホの画面を映してみる。これは成功するものの、なんとマイパソコンの Vista では AverMedia のソフトフェアを インストールできないじゃないの(注4)。と、いうことは、PCを利用しない「単体録画モード」をやるしかない(注5)が、その場合は記録媒体としてのSDカードが必要である。 あと、異常にコードが短いので可動範囲が超狭い。
ソフマップまで出かけて、HDMIオス-オス2mコード + SDカード(SDHC 32GB CLASS10対応)を買う。 コードが長くなってTVと十分な距離をもってスマホをいじくれるようになる。そもそもTVに映す必要はないんだが、気分的にやってる感が盛り上がるのでいいと思います。 しかし、マイパソコンのSDカードスロットがSDHCを認識しない。2007年くらいより前の品だと未対応みたいですね。くそーーーーすっ
仕方がないので翌日、外付けカードリーダーをコジマまで行って買う。 カードリーダーとは何ぞや、というと、SDHCとかの大容量記憶媒体を読み込んでくれるやつ。売り方としてはデジカメのデータを高速でPCに転送、とか書いているが、 私はPCがSDHCを認識しなかったら買っただけでねえ…。 これで全ての準備はO.K! TVにスマホの画面を映し(ビデオキャプチャー経由でね)、SDカードも挿入して、録画開始ボタンぽちっと。 ところが、青色と赤色の光が交互に明滅する。 これは、エラーである。
「なぜ、エラーなのか?」 ネットで調べるとどうもコピーガード疑惑が濃厚な線のようだ。 そうはいっても、本当にコピーガードが原因なのか確証がもてない。 確証がないとHDCPごにょごにょマシーンを注文する勇気が湧いてこない。 無駄な出費を重ねてきたが、S級無駄発注(完全に的外れな品を購入)だけはできない。ほとんど仕事感覚です。つらくなってくる。 なにか、ないのか出力…。出力でテスト…。 あ、そうやそうやということで、DVDプレイヤーで動画を再生させて、DVDの出力をビデオキャプチャーの AV-IN につないでみた。 この場合、HDCPがないわけですから、録画できるはずです。 で、録画開始ボタンを押したら、……録画成功です。 SDカードを抜いて、PC側で確認したら、TSファイルが確かにできあがっている。 TSファイルを視聴できるプレイヤーをわざわざDLして、閲覧してみたら先ほどのDVDの映像が入っています。グッジョブです。 状況から察するに Android で録画ができないのはコピーガードのせいである、と考えてよさそうだ。
この期に及んで画竜点睛を欠いていたが、それもmow終わり、チェックメイトです!!! パズルの最後の1欠片(ワンピース)となるアイテム、HDMI分配器(スプリッター)を発注する(注6)。

注1)
ちなみに iPhone だと動画のキャプは簡単にできる模様。すっげえうらやましいです。
注2)
古いスマホだとデバイスにHDMI端子が付いているらしいが、だいたい2013年くらいからUSBで出力も兼用している。一つの穴を色んな用途で使えるってわけだね。
注3)
さらに最新版のAndroid4.4だと動画を容易にキャプチャーできる模様。私のは残念ながら4.2。
注4)
Windows7,Windows8,Windows8.1 あたりに対応している模様。こればかりは事前に入手することができなかった情報である。
注5)
私はAVT-C875という機種を買ったが、PCを使わないで録画+簡単な編集までできるAVT-C285という機種もある。正直こっちで良かった。
注6)
ググっていると必ず行きつく商品がある。HDMI分配器なら何でもいいというわけではない。まさにマジックボックス、魔法の箱ですね。

Amazon から送られてきた箱は妙に大きく、B4サイズくらいの大きさで高さも5~6cm、クッション材を無視すればノートPCが入っていてもおかしくない容積であった。 「えっ、こんなに大きいブツなの?」と思いつつ、箱を手に取ると妙に軽い。 段ボールを開封すると、中には小さな箱。漫画本だって入らないぜ、こんな箱だったら。 要するに Amazon では中身のサイズに応じて様々な箱を用意しているのだろうが、経費削減のために箱サイズのバリエーションが少なめなのだ。 前置きはともかく、箱を開けると1入力2出力のHDMI分配器。 配線を説明しよう。 まずはスマホ(*1)のUSB端子からMHL→HDMI変換機器(*2)に接続。 変換器の出力から普通のHDMIケーブルを接続、ケーブルのOUT側を件の分配器(*3)のINにつなげる。 分配器のOUTからHDMIケーブルを接続、これのOUT側をAVT-C875(*4:ビデオキャプチャー)のINにつなげる。 *2と*3と*4には、すべてエネルギー源の電気を供給する必要があるぞ、もうコンセントまみれだ。 これでAVT-C875にSDカードを装てんして、録画ボタンを押せばO.K。 コピーガードは解除されたぜ。 しかし、その影響なのだろうか? ビデオキャプチャーのOUTからTVにHDMI接続しても、スマホの画面はTVに表示されなくなった。 つまり、デジタルTVはHDMI接続の場合、コピーガードが付いていないと表示されないのだろうか? 何はともあれ、Androidのプレイ動画を、ビデオキャプチャーで録画することに成功した。

じゃあ最後にメンバーを紹介しよう。 まずは、元からいたオリジナルな奴らから。
@ Xperia SO-02F Android4.4.2
トップは、携帯電話から。機種変更は2013年1月。 USB端子(Micro-B)からMHL出力する機能を持つ。
@ Sony Vaioシリーズの何か メモリ2GB
ノートPCですけども、Windows Vista っていうのが何かと問題である。 今回はビデオキャプチャーボードにUSBを介して給電するという補助的な任務を承っている。
@ SHARP AQUOS LC-20DZ3
地デジ対応アクオス。購入した当時はシャープさんもまだまだ元気だったけれども、栄枯盛衰…祇園精舎の鐘の音ですね。 今回はHDMIをキャッチするモニターとしての役割を果たす。別に無くてもいいけど…。

次にニューカマーを紹介しよう。 値段が高い順にいってみようか。
@a : AverMedia AVT-C875
ビデオキャプチャーボード。19,000円くらい。Amazon で購入。
@b : SanDisk SDカード(SDHC 32GB CLASS10対応)
SDカード。5,000円くらい。もしも、パソコンがWindows7以上であったなら、買わずとも良かった。AVT-C875にHDDは内蔵されていない。
@c : iBUFFALO カードリーダー
パソコンが古いもので、SDHCを読み込めないので増設。2,000円くらい。マジでVistaじゃなかったら良かったノニ…。
@d : KanaaN HDMI分配器
これを経由させると、アレが???になるっていう謎の現象が発生する。要するに分配させるために買ったわけじゃない。2500円くらい。Amazon で購入。 ドイツ企業(LEICKE社)が中国工場で製造している。それを日本企業が輸入している。 分配器の中ではかなり優秀な販売実績を持つ。みんなアレ目的で買うのか?
@e : Panasonic HDMIケーブル 2mもの
キャプチャーボードなどに付属品で付いてくるコードもあるが、もっと長い方がつかいやすいんですよ。2,000円くらい。
@f : MHL→HDMI変換ケーブルセット
Android携帯から出てくるMHLをHDMIに変換するための機器。Amazon で1,000円くらい。目的を果たせればメーカーは何でもいいんじゃないでしょうか。
ハイ、30,000円を軽く超えています。重要なのはa,d,fですから。そこのところ、誤解のなきよう。

2015年6月28日日曜日

第73話 勝算

福本先生っぽい表題の付け方を今月はしてみましたが、それもこれが最後。 最強伝説黒沢の第73話が「勝算」。 マジパクリ、しかし、書かねばならなかった、どこかで…。 戦う以上、向き合わなければならない。 避けては通れない…勝敗と言う名の命運、裁き、結末…。 この勝負、勝てるのかっていう肝心な部分。 Android ゲームアプリ競争における、個人デベロッパーの「勝算」について真剣に考えてみたい。

勝ちの目は限りなく薄い
まるで薄氷を歩くかのよう

競馬ではマイペースな差し馬とか、ラスト付近まで脚を残す追い込み馬もあるが、 ボートレースではだいたい第1コーナーを曲がったくらいで大勢が決まる。 最初に一位をキープした艇がそのまま逃げ切るパターンが圧倒的。 これは、Android アプリの走り方と似ている。 リリースしてから最初の1カ月(新着扱いになる期間)を、競艇で言うところの「第1コーナー」と考えるのだ。

最初の1カ月で高順位に付けたなら、その後の展開も恵まれたものになりやすい。 逆に最初の1カ月でもたついてしまうようなら、そこからの巻き返しは厳しい。 いかに他の競合を振り切って高順位に付けるか、そこにはアプリの質を越えたテクニック、もっとあざとく言えば宣伝費が 必要となる。

DL数評価点メーカーその他のアイテム数
1100k*3.9*SQUARE ENIX Co.,Ltd.57
2100k*3.1*GameOn Co.,Ltd.8
3100k*3.8*SQUARE ENIX Co.,Ltd.57
4100k*3.9*Voltage, Inc.86
5100k*2.7*Sammy Networks Co.,Ltd.14
6100k*4.0*Goodia Inc.249
710,000k*4.4*King8
8100k*3.2*Gala Japan Inc.0
950k*4.8*tokyogame0
10100k*4.0*Hero Bubble Shooter0

新着無料で上位の10位。どうも、ある特定のアプリを運営する為だけに新規デベロッパー名義を立ち上げるというやり口があるみたいですね。 8~10位はバリバリの会社組織なのに処女作経営となっています。 あまり面白味が無いので、次は51位~60位を見てみましょう。

DL数評価点メーカーその他のアイテム数
51100k*3.8*JOYCITY Corp.4
525k*3.5*Cybergate Technology Ltd.85
535k*4.7*SpiriteK Inc.1
54100k*3.7*NHN PlayArt17
55100k*4.1*LUNOSOFT INC.11
565k*2.4*LINE Corporation66
571,000k*4.6*Miniclip.com32
585k*4.4*ArtDigic4
595k*3.9*DeNA Co., Ltd.62
601k*4.2*ESC-APE by SEEC6

星の評価点ってあんまり関係ないのかな~。と、思えてくる。ただ、それだけ。 やはり企業臭がプンプンしております。 次はだいぶん下の方までいっちゃいますよお。

DL数評価点メーカーその他のアイテム数
411100**Benesse Corporation29
412100*5.0*App-Si5
41310k*3.9*Tapinator, Inc.115
4141k*4.4*JOYCITY Corp.4
415100*5.0*Kazuya Maeda6
41650k*3.9*Titan Game Productions27
417100*5.0*pinbit8
418100k*4.4*Ketchapp31
41910k*4.3*Orizon Entertainment8
4201k*4.4*Escapegamez99

「注目すべきは411位のベネッセである」
「ベ、ベネッセってあの…?」
「ああ、あのベネッセだ。赤ペン先生の」
「大企業なのにあまりパッとしないね。過去に29作も作っているわりには」
「そこだ、その点に着目したい。おろらく、していない…売るための対策…宣伝…」
「あまりアプリに力をいれていないってこと?」
「いや、作成に関しては力を入れているだろう。業種的にもスマホとの連携は避けられぬ道だし」
「だけど、欧米の英語アプリ並。日本の個人作家並のポジションにいるけど…」
「要するにこれがネイキッドってことだ。ベネッセの質が低いのではなく、アプリ屋さんたちの狡猾な売り込みが凄すぎるということ」
「Android に適したプロモーションをしなければ、大企業が作ったアプリでも埋もれる…?」
「埋もれる。間違いなく。土俵にすら立てねえってことになりかねない」

逆に、売り方を心得ているのなら、作ればいい。湯水のごとく。セルフコピーを繰り返して似たようなものを、 低労力で量産し続ける。これはこれで、勝ちのシステムを築いたやり方。

分からない、要領のいい売り方など。 そのノウハウがないのだ。 それでも、考えるとしたら、やはり新着の1カ月。 この第1コーナーを曲がるまでにどれだけダウンロードを稼げるかが全て。 ただ、広告の力で何とかすると言ったって、例えば500人の日本人ユーザーをカネで獲得しようするならば、 15万~20万円はみとかないといけないだろう。 最低限これくらいは呼び込まないと高順位に付けようがない。 全ゲームの新着無料でベスト100に入るには最低限これくらいは見ておかないといけない。

あとは、もう…。出走の号令がなる前。リリース前に徹底的にアピールしておくという方法しかない。 映画なんかでもそうだが、今○○が製作中である。だとか、ついに○○が完成した。だとか、もうすぐ○○が公開される。だとか、 とにかく公開前にネタをばらまき続けることによって興味をもってもらおうと必死である。 そう、興業作品であれば、公開してから宣伝するなんてバカなことはしない。 もちろん、公開してからも宣伝はするが、公開する前に宣伝しないバカはいないってことだ。

が、ここまで書いて
世の中の情勢が少し変わりそうだ

私が思っている以上にリワード広告によるブーストが日本では幅を利かせていたようだ。 リワード広告によるブーストって何だい? っていうかもしれないが、簡単に言えば 「○○のアプリをDLしてくれれば、人気アプリの課金通貨をプレゼントしちゃいますよ」ということです。 人気アプリとはモンストとかそういうやつですね。

カネの流れとしては、ブーストをかけたい某企業が AppBank あたりにおカネを積んでお願いする。 AppBank では人気アプリの攻略アプリを自社で手掛けており、「○○が無料でもらえるキャンペーン」というものを展開している。 ○○を無料でもらうためには、AppBank が指定したアプリをDLしなくてはならない。 ユーザーは○○を無料でもらうために「何の興味もないすぐにアンインストールするであろう某アプリをダウンロードする」。 こうして、ブーストをかけたい某企業のアプリはたくさ~んDLされる。 DL量に応じてストア(i-Phone とか Google の公式サイト)内での順位がアップする。 ストア内で好位置に付ければ、まったく関係のない第3者的なユーザーからダウンロードしてもらえる可能性が飛躍的にアップする。 これで依頼元の某企業は宣伝効果を得られて上々。 最後に AppBank が Mixiあたりに上納金を渡せば、ブースト周辺の企業集団はみ~んな得をするということになる。

唯一得をしないのは公式ストアの方だ。 言ってみれば、アップルなんかは「うちの庭を荒らしやがってクソ野郎」ということである。 公式ストアのランキング上位が「札束の叩きあい」だけで決まってしまうのであれば、 上位にクソみたいなアプリがランキングすることだって有り得る。 これは長い目で見れば、世間一般のユーザーがアップルやグーグルの公式ストアから離れていくと考えるのが妥当だろう。 やはり面白い物、世間からの評価が高い物が上位に来るのが望ましいハズ。

6月、iOSの「モンスト攻略」から「オーブプレゼント」が消えた。 これはアップルからの要請にしぶしぶアップバンクが応えるということのようだ。 Android版でも同じことが起こるのは時間の問題であろう。 ここにきてリワード広告が粛清されるのであれば、弱小作家にとってはチャンスである。 リワード広告ではなく、通常の一般的なバナー広告(Admobとか)で宣伝すると、 一本ダウンロードしてもらうための費用がぜんぜん違うわけですよ。 少なくとも日本人に宣伝しようとしたら、DL1発を50円や100円では買えない。

この緊急事態を受けて我々に勝機はあるのか? 追い風、それもとてつもない突風…。そうであることを願いたい。

2015年6月14日日曜日

第72話 砂の城

最初の広告攻勢(3月末~5月頭)、これを仮に第1期と呼ぶなら、 第1期で DL数はおおよそ 40→610 という増え方をした。 第2期では、より的を絞った形で最も効率よく攻めたい。 そう思った。 第1期終了の時点で特筆すべきデータは、アプリをダウンロードした国の偏りである。 4月1日の時点でその国のDLは0だったが、5月1日の時点でその国のDLは160にまで増えた。 広告を配信した国は特に制限は無く、ただ単に言語を英語に絞っただけだった。 それなのにアジアの某国がダウンロードの1/3くらいを単独でかっさらうんだから、これは偏りと言うしかない現象。

その国とはパキスタンであった。 ご存じだろうか? インドの西側に位置し、中東への入り口ともいえる場所に位置する。 人口は日本より多い。 メインの都市として、カラチ、イスラマバードなど。 イスラム教の国だが、中東各国やアメリカとの付き合い方に悩みがち。 インドとは仲が悪い。夏は異常に熱く、国全体的にほこりっぽい。 食糧自給率が高く、人口に占める若者の割合も我が日本とは対照的に高かったりする!!!ので、インフラが整備されれば経済発展も期待できる、か? 今後に期待。 カードのカテゴリでは、アメリカが33.20%、インドが1.75%、パキスタンはたったの0.08%のシェアである。 0.08%ということは例えば10万ダウンロードのアプリの中で、パキスタンの席はたったの80ということである。 ということは、パキスタンに的をしぼって広告を出して短期間で400~500でも獲得しようものなら、パキスタン国内における ランキングで上位に上り詰めることも可能。 ずばり、ゲーム>カードのカテゴリでベスト10も夢ではない? それプラス、前述の異様な偏りである。 他の国と比べて圧倒的にパキスタンが多かったということは、パキスタン人の興味を引きやすい何かがあるということ。 このあたりを加味すると、パキスタンに集中的に広告を出す戦略はなかなか面白い結果を生みそう…そんな予感がした。

第2期は一日の予算を2,000円に設定してキャンペーン期間は6月2日までの10日間とした。短期決戦である。 そして、配信する国は思い切ってパキスタンオンリーとした。 この第2期で400弱のダウンロードが発生し、パキスタンでのダウンロードは 6月2日で552にまで増えた(全体で999DLだからpkが単独過半数)。パキスタン国内でのランキング(ゲーム>カード)はウナギ登りとなり、最高で16位となった。

日本でカード(無料トップ)16位は、「麻雀 天国牌 by Hangame」あたりである。戦闘力100万クラスである。 パキスタンでも16位付近のアプリなんてのは有名どころが多く、パキスタン単独でも毎日20~40人はインストールされている勢いであろう。 16位を維持できるかと言うと、広告を続けている限りは維持できるのだが、やめた途端にメッキが剥がれるかのごとく、急落してしまう。 たった10日ほどで450位までランキングを落としてしまった。厳しい現実である。 これだけを見ると、無料トップのランキングは過去1週間のインストール実績が決定的な要素になっているようだ。 逆に広告に頼らずに自然流入でランキングを上げてきたアプリなんかは、安定感を持って上位ランキングに食い込み続けるだろうし、 仮に落ち目になっても下り方はもっと緩やかなハズ。

資金をつぎ込んで高順位を獲得しても、資金注入をやめたが最後、すぐに順位が元に戻る。 で、あれば、意味ないじゃん。という結論になりそうであるが、 第2期の広告攻勢が終わってから、パキスタン以外の国からの自然流入が多少は確認できる。 プレイストアで検索をかけたときの掲載順位には、単純なダウンロード数も考慮されるはずである。 インストールが1,000を超えたことにより、検索で上位にでやすくなったのでは??? と考えられる。 必ずしも広告を出稿したことが無意味ではなかったと感じる…いや、感じたい。
<終>

=== === === === === === === === === === === === === === === === === === === ===

カードのカテゴリではシェアが、アメリカで33.20%、次いで日本が5.43%である。 この辺りの数字はコロコロ変わるし、統計誤差の部分も大きいと思われるので大雑把な数字として捕らえた方がよい。 が、それでも「アメリカが単独トップ」であることに変わりはない。 まさにアメリカを制する者が世界を制するという状況。

このようにそこでシェアを拡大することが大きな意味を持つ国と、そうでもない国とがある。 大きな意味のある国は、最大の影響力「ビッグ・アメリカ」、課金大国「マネー・ジャパン」、東アジアの雄「オンライン・韓国」、 ヨーロッパの中枢「英仏独」、今後の脅威(彼らは広大な国土を持ち、人口は多く、経済はまだ熟していない)「ロシア・インド・ブラジル」。 押さえておきたいのは、上記9カ国+完全別枠の「中華人民共和国」である。

チャイナは金の盾によって Google との絡みを断っている。 中国国内で Android のスマホを手に入れてもプレイストアを訪問することはできないのだ。 だから、金脈としてはすごい存在感を臭わせながらも、通常のやり方ではユーザーを得ることができない。とても特殊な国。 広告やら Google 関係の apk を全てとっぱらって(アナリティクスやゲームサービスも)、 Amazonストアで有料販売というのが、チャイナからカネを得る場合の有効な戦術となろう。 中国国内に乱立する販売ストアとコンタクトを取ることができれば、新たな販路も開拓できるのだろうが、どうにも難しい話に思える。 まあ、中国の話はここではこれ以上、ほじくらない。 大事なのは、アメリカ、日本、韓国、イギリス、フランス、ドイツ、ロシア、インド、ブラジル、これくらいと考えておけばよい。

主要な国はおそらく、広告の単価が高い(これまでの経験から)。 だから、全世界無差別に広告を出稿して「クリック単価の上限を1~2円」の低価格帯にしていると、 東南アジア、中東、アフリカ、東ヨーロッパ(旧共産圏)などで表示されることになる。 そう考えるとパキスタンで顕著にDLがあったのも、それほど不思議なことではない。 言ってみれば、取り込みやすい国々なのだ。 しかし、デメリットも多い。 まずこれらの国では、広告を表示してクリックされたとしても単価が安い。まあ1円あるかないか。 日本だったらワンクリックで10円20円だって可能である。この差は大きい。 第2のデメリットして、影響力の弱さが挙げられるだろう。 これらの国では、ブログでもフェイスブックでも何でもいいが、インターネット上でゲームの話題をあまり拡散してくれない。 「有名な奴の目にとまって、一気に知名度を上げるぜ」という夢を、そもそも見ることができない。 第3のデメリットとして、「ゲーム慣れしていない」ということも挙げられる。 はじめてゲームをする、というくらいにまで考えて設計しないと、何も理解してくれない危うさがある。 第4のデメリットとして、彼らの所有する端末が低スペックであることも挙げられる。 つまり、予想もしないエラーや不具合が発生しやすいのだ。 デメリットばかり書き連ねたが、これらの欠点を補うノウハウを持てば、これからの国をメインターゲットにして 収益を上げることも可能だろう。 第2~4のデメリットに関して言えば、「裏を返せば…ということ」と逆手に取る戦法だって無いわけじゃ無いんだし。

2015年6月13日土曜日

第71話 決済

Admob で自作アプリの宣伝をしてみたい。 そうは思っていても二の足を踏んでいる人が多いことかと思われます。 原因はいろいろありますが、例えば Admob サイドにしても熱心に広告主に営業をかける場合、 大口となりうる企業を対象にして売り込んできたはずです。 法人化すらしていない一個人、サンデーデベロッパーみたいな奴らは最初から眼中にねえ。 そういう一面もあるにはあると思います。 確かにネットでググっても Admob で有料広告を出すことに関して、情報が少ない。 あまりも少ない。

Admob のページ右上にある件の歯車のマーク。 これを押すと、核心に触れる重要な事項へとワープすることができる。 「お支払い」とは Admob からあなたへと支払われる報酬のこと。「料金」とはあなたが Admob に支払わなければならないおカネのこと。 この項では「料金」に関する内容を掲載しています。 クレジットカードの内容(カード番号とか)を記載するだけで、広告を全世界へ配信することが可能です。

情報が少ない以上、心配事が増えるのは当然。 例えば「広告代の支払いってどうするの?」あたりは、とても気になるところでしょう。 セルフスタンドでガソリンを入れる場合、二つの方法があります。 一つ目は「設定した料金分を給油する」方式。 1,000円なら1,000円分のガソリンが出てきて、1,000円分出しきったら給油されなくなるタイプです。 二つ目は「給油した量に応じて料金が決定する」方式。 ガソリンタンクいっぱいまで入れて、仮に30Lだったとするなら、それにガソリン単価を掛け合わせたものが料金として請求されるタイプです。 私は、この二つ目。 Admob 的には自動支払いと呼ばれる方法を選びました。

給料日風の言い方をするなら、締め日が18日で支払いが翌月27日というかんじです。 私は3月の下旬から利用を開始しました。 3月18日の時点では、まだ一度も利用していないので料金は0です。 4月18日の時点では、料金として10,000円が発生しています。 で、実際に5月27日のクレジットカードの支払い日に引き落としされています。 確か、Admob名義で請求が来ていたハズ。 調子に乗って広告出しまくったら、後からバンバン請求がやってくるのでご注意を。

しかし、計画的にご利用することは可能です。 なぜなら、「一日の予算」と「キャンペーン期間」というものを決められるからです。 1カ月で30,000円の有料広告を出すつもりなら一日1,000円の予算設定にして、キャンペーン期間(終了日)を1カ月後に設定すればよいでしょう。 実際は予算よりも若干使い込むケースが多発します。 「予算を1円だって超えるのは嫌だ」と言うのなら、一日の予算を90%の900円くらいに設定しておくことをお勧めします。 その他、広告導入に関するハウツーに関しては5月の記事を読んでいただければ分かりやすいかと思います。

最後に有料広告の導入をお勧めするか? なんですが、私の場合は日本国内のユーザーは無視して海外100%の展開を選んだため、 あまりよきアドバイスをできないかと思います。ですので、今回はノーコメントでフィニッシュとさせていただきます。

2015年6月7日日曜日

第70話 ツモ切り

最近、MJ やって900円くらい課金したものの 頭にきてやめてしまった、ということがあったので書き連ねてみようかと思います。

最初は無料で! 人間と対戦できるぜ! ということに驚いたし、ときめいたわけです。 10級からはじまって東風戦でフリー対戦で勝つほどに級が上がっていきます。 「なんかあきらかに下手くそだなあ」という人も多いので、勝つのは難しくありません。 ただ、初期のころから気づいた問題があって通信障害でダウンしてしまう選手がかなりの確率で現れます。 通信障害になると、コンピューターが代打ちみたいな表示がされるものの実際はツモ切りです。 下家は鳴き放題だし、リーチしたら二倍ツモれるのと同じ。もう滅茶苦茶。 せめて、アガリ放棄の現物ベタ降りくらいのプログラムにできんかったのかと! それでも、まあ 通信障害が発生しないで無事に終わることができたときは楽しめました。

上記の問題があったから、「早く初段になってベテラン通しで対局したい」という気持ちに切り替わってきます。 初段まで上がれるようであれば、通信障害はそうは起きまい。 あの忌まわしい代打ちを見ないで済むだろう、と。

ようやく初段になると、有段者バトルに参加できるようになります。 こちらは場代を取られるので、一日一回しかできません。 ただし、一位を取ればフリーチケットを消費しないで済むので一日に二回以上対局することも可能。 当然一位を獲りにいく麻雀。 スキあらば満貫。親番ならば強硬ツッパ。

有段者バトルになると、渋い名勝負も生まれてくる。 四人ともアガリの全てがピンフからみ、誰も安く鳴いたりしないヒリヒリした東風戦であるとか。 露骨にソーズのホンイツを目指しながらも、リーチ者の5-8ピンズ待ちの気配を感じて5ピン単騎待ちに切り替えての流局、だとか。 ラスト無駄カンして点を釣り上げ、役牌のみ1600点で上がって300点差でトップを獲る、など痺れる展開が多発。 勝つときは展開に恵まれたと感謝したものだし、負けたときは勝負時の一手を見誤ったと反省したものだ。 面白いぜ、と思いながら二段に昇段。

が、しかし、急に歯車が狂い始める。 面白いくらいに勝てなくなる。 負けるといったって、出親が早上がりドラドラツモの無双して、3本場でバカな上家が親に振り込んで、トビで終了。 こんな展開とか。 出親が4巡目にリーチ、分からんし適当に字牌切ったら、リーチ一発ドラ3とかね。 次も早めのリーチ、一九字牌を序盤に切っているから適当に字牌切ったら、チートイツドラ2とかね。 強いけど、なんか配牌に恵まれすぎやないかあ? あと、北家のラス親。 こいつがやたらアガリトップを決める。 だから、8000点差トップでラストまで持ち込んでも油断はできない。 勝てない、勝てない、本当に勝てない。 リーチをすれば他家に振り込む、危険牌をものの見事に引いてしまう。 気がつけば、二段から初段に降格し、さらに連敗を決めて初段から一級にまで降格してしまう。 完全体から第二形態に戻ったセルのような気分に! 「ちくしょおおおおおおおおおおおお!!」

その後、Android版 MJ のレビューを読んでみたが、怒ってらっしゃる方は多いようですね。 まあ前述の通信障害の件をぶーぶー言う人と、3~10段みたいな有段者がおかしいという批判。 つまり、重課金者が優遇されているという趣旨のそれである。 確かに私自身も3~10段の早すぎる「スピード」と驚異的な得点力「パワー」を見せつけられた。 重課金者に対する何らかの優遇措置が行われている可能性がある。

ただ、私が個人的に「うっ!」と思ったのは 一見対人戦を行っているように思えるが、無双をやらかすコンピューターが混じっていても見分けがつくもんか、という趣旨の疑惑。 つまり、この無双のコンピューターは一般参加者を打ち負かし、 「ものたりねえ、場代のゴールドを購入してリベンジや!」という方向に誘導しているのではないか? どのみち、無料のフリー対局では 例の通信エラーのせいで興が削がれることが多々ある。どうせなら有段者対戦の方がいい。

確かに長考することもなくポンポン切る。 うまいのかどうか分からないほどの早いテンパイ即リー。 などをされると人間味は感じない。 今思えば、あのツモ切り…。 COMはツモ切りしかしないという印象をこちらに植え付けておいて、影武者コンピューターの偽装をより巧妙に推し進める。 印象、印象操作…。 麻雀は幻想を作り出す遊戯である。 もしかして、本当にアンドロイドと戦っていただけなのかもしれない。 真相は霧の中。
まあ、900円分くらいは楽しめたと思いますよ。それだけは、セガさんの名誉のためにも弁護しておきますが…。

2015年5月17日日曜日

不都合な真実 ざわ…ざわ…

テレ朝の古館さんならこんな風に言うかもしれない。
「我々は提示されたデータを信頼するしかないですもんね。それが、こうだっていうのは…。 ちょっと大問題だと思うんですけど。…次のニュースです」

食品偽装、耐震偽装、世の中は偽装だらけ。 偽装だらけの世の中で真実はいくつあるのだろうか? 今回、Admobさんが偽装していると断言するつもりはありません。 ええ、私だって玉虫色ですよ、都合よくカラーも主張も変えますよ。 虹色って素敵やん。 が、しかし…。 Admobさん…。 色々なデータを照らし合わせたときに、そこに整合性がないのなら、 私どもは数字を信頼することができなくなります。 しかし、私どもは数字に対して絶対の信頼を求めてしまうのです。 なぜなら、提示されるデータこそがすべてだから。 乖離…。この部分が乖離するようであれば、顧客とシステムの蜜月関係は築けやしないでしょう。 何かこう、限りなく理不尽なグレー、そういうものを見つけてしまったやるせない気分。 ネット上を検索しても、この件に関してはほとんど見つけることができません。 そもそも、Admob に有料広告の配信を依頼したという内容事態が極めて少ない。

まず、ここを読まれている方がどのくらい Admob 関係の知識があるのかが分かりませんので、 何が不満なのかっていう部分を少し丁寧に説明すると、 広告掲載に関する料金はクリック数で発生します。 上の画像の例でいくと、上段のアプリ(The Melancholy Of Ghosts)が 約460万回表示されています。これだけだとおカネは発生しません。 しかし、さすがに460万回も表示されると何回かはクリックされます。 クリック数19,303回、約2万回ですね。 つまり、19,303回、GooglePlay のダウンロードページにユーザーを誘導したということです。 このクリック数という数字を元に請求金額が確定します。 で、だいたいクリック単価の上限を1円とか2円にしているので、23,426円の請求となっています。 ちなみにコンバージョン数1,045なので約千人にダウンロードされています。 コンバージョン単価22円、つまり一人にダウンロードしてもらうための経費が22円ということです。 この22円っていうのは(すべて海外ユーザーなのだが)上出来な数字だと思います。 日本人ユーザーを獲得しようとすれば、この数倍の金額が必要となります。

広告費の請求自体はクリック数を元にしていますし、このクリック数に対して文句があるわけではありません。 つまり、請求金額自体は妥当であると認識しています。 しかし、コンバージョン数1,045という部分が問題。 なぜなら、GooglePlay のデベロッパーコンソールで確認してもこんなにDLされていませんから。 5月15日時点で610ですからね。 2か月規模くらいの話なので、数字更新の日付が1~2日間ずれているからというツッコミは無視してもいい誤差範囲です。 この610というのは、広告経由ではない自然流入も含めたトータルの数字です。 広告を始める前も、少ないながらも40くらいはDL実績があったし、 広告配信中も少ないながらも自然流入のユーザーがあったことでしょう。 なら、どう考えてもコンバージョン数1,045であれば、デベコンの総インストール数は1,100くらいはないとおかしいです。 それが、610というのであれば、実際はコンバージョンが1,045の半分である520程度だったのではないか? と思われます。 同様の出来事はもう一つの広告出稿アプリ、Daily Desperate Dungeons (DDD) でも起きています。 Admobさんで表示されているコンバージョン数よりも実際のダウンロード数は少ないじゃないかという出来事が!!!

ちなみにこの2つのアプリ以外では広告配信は行っていません。 Attack Ground 442 というアプリは私が公開した最古のアプリであり、リアルに放置アプリです。 長らくアップデートしていないので最新の基準に色々と達しておらず、現行機種ではまともに動きませんが、 (それは置いておいて)自力で640件のダウンロードを獲得したということです。 それを踏まえたうえで、上から4番目と最下段のアプリに注目してください。

仮に真のコンバージョン数が半分の520とするならば、コンバージョン単価は22円ではなく、その2倍、44円だということになります。 1DLに関する費用が22円なのか44円なのか、というのは広告を配信する者にとっては大きな違いです。 前者であれば、「一万円で500弱のインストールが得られるのなら、悪くないな。しばらく継続してみようか」ともなるだろうし、 後者であれば、「無料アプリで44円だとちょっと効率悪いな。配信やめようかな…」ともなるでしょう。 これが企業であれば桁が上がる。桁っていうのはコンバージョン単価じゃなくて、広告にかける予算がね。 だから、広告主にとってコンバージョン数、コンバージョン率、コンバージョン単価というものは非常に重要なのですが、 この大事なところでよくわからない誤差が発生しているとうのは、いかがなものか? やっぱり太古の昔から 大本営発表はあてにならないということなのでしょうか? 我々は今一度、歴史から多くを学ばないといけないのかもしれない。

一つだけ言えるのは 多角的にデータを見て、総合的に考える。 つまり、いろいろなデータを参照して、私どもにとって最も都合の悪い数字、そういったものを信頼して今後の指針を決めるべきではないか、 という…考え方を提示いたしたく候。