dnekblog

”でぃーねっく”と読みます。スマホのアプリを作ってます。

良い広告と悪い広告に関する考察

こんにちは、DNEKです。

以下のAdvent Calendarを書いた直後なのですが、どうしても記事を改めてから主張したい私見があるので、こちらで書かせていただきます。

……長くなりそうだから分けた、という理由もあります。

私見

私は、広告というものは基本的に良き文化であり、広告産業は真っ当な産業であると思っています。

おそらく広告が嫌いな人結構居ると思うのですが、私も広告全肯定ではなく嫌いな広告もあるので、その辺を聞いてよく考えてみて欲しいなと思います。

これには、自分のアプリの広告で収益を上げたいという目論見が勿論あるのですが、単純に広告を毛嫌いする人たちに対して違和感があるので、ちょっとこちらの考えを聞いてみて欲しいなと思う次第です。

広告とは

とりあえず広告 - Wikipediaから一定義を引用します。

「広告とは、非人的メッセージの中に明示された広告主が所定の人々を対象にし、広告目的を達成するために行なう商品・サービスさらにはアイデア(考え方、方針、意見などを意味する)についての情報伝播活動であり、その情報は広告主の管理可能な広告媒体を通じて広告市場に流されるものである。広告には企業の広告目的の遂行はもとより、消費者または利用者の満足化、さらには社会的・経済的福祉の増大化などの機能をも伴うことになる。企業の他に、非営利機関、個人などが広告主となる場合もある。」

つまり、砕いて言えば、

  • 「そこのお兄さん、これほしくない?」というように人対人で直接訴えかけるのではなく、紙や画像・音声・動画などの媒体を使っている
  • 新聞やテレビ番組の企画として取り上げられるのではなく、あくまで広告主が自分で管理し責任を持って作っている
  • 自分の商品や主張をただ伝えるだけでなく、それを見た人に満足してもらうことも狙っている

という感じだと思います。

で、個人的には最後の部分が大事だと思っています。

そして私は更に言い換えて、

「見た人に満足してもらう」=「商品を、その利用価値をもって選択してもらう」

ということが大事だと主張します。

つまり、先程の良い悪いで言うならば、

  • 「商品の価値に基づく選択行動をさせる」のが良い広告
  • 「商品の価値を無視している」のが悪い広告

というわけです。

良い広告と悪い広告

ここでは、色々な広告の例を挙げて、その良し悪しについて考えていきたいと思います。

ネイティブ広告

ネイティブ広告というのは、デザインや内容、レイアウトがその媒体のメインコンテンツと一体化していて、違和感を感じさせない広告のことです。

有名な例としてはTwitterなどがありますね。

ちょっとボカシが入っていて分かりにくいかもしれませんが、アイコンやメッセージが他のツイートと同じようなレイアウトで表示されています。

正直、タイムラインをスクロールしている時に、幅いっぱいに文字が並んでおり背景色や枠の形も全然違う何かがいきなり流れてきたらちょっとビックリすると思います。 そういう意味で、ネイティブ広告は自然でユーザーに優しい広告だと思います。

ただ、一歩間違えると悪い広告になってしまう大事な要素が、広告であることの標示です。

Twitter広告の場合、ちゃんと「プロモーション」と標示されていますね。

この標示が無いと、ユーザーはそれが広告であると知らずにタップしてしまい、「騙したな!」と思われてしまうことがあるのです。

せこいやり方でタップさせたところで、ユーザーはその商品自体にまで嫌な印象を持つし、広告主も顧客が減って損をします。

仲介者であるにも関わらず、ユーザーと広告主の双方に嫌な思いをさせる広告プラットフォーマーは本当に嫌なヤツです。

大事なのは、仲介者は広告が"正しく"ユーザーの選択肢まで運ばれる場を設けるべきで、その"正しい"流れを邪魔してはいけないということです。

バナー広告

面積自体が小さいバナー広告などでも、例えばGoogle AdMobのようなちゃんとしたサービスでは、小さく「i」と標示がされています。

また、そもそもバナー広告というのはそもそもネイティブ広告のように自然ではなく、かつほとんどの場合位置が固定されていてユーザーをビックリさせることも少ないので、ネイティブ広告ほどその標示に気を付ける必要はないのです。

ただし、どこからともなく現れてスーッと動くやつは最悪です。

もうボカシとモザイクで訳が分からないかもしれませんが、赤い矢印で挟んでいる部分です。

これはFC2ホームページの無料版で作られたホームページで、利用者も多いはずです。

FC2ホームページは、PCでは問題無いのにモバイルで見ると、スクロールをやめて少し経ったタイミングで真ん中から薄っすらと現れて、下にゆっくり降りながらスーッとその姿を現して来るのです。

これはもう完全に誤タップを狙っていますよね。 私はこういうの嫌いです。

が、実は知らずにFC2ホームページで作ってしまったページがあり、今も動いているので、正直頑張って移行しようかなぁと思っているところです(移行自体は大したことないけどそれを各所に伝えるのが面倒)。 自分で言っておいて申し訳ないです🙇

動画リワード広告と"リワード広告"

さて、今回新作アプリに初めて導入した動画リワード広告は、個人的に合理的な広告だと思っています。

画像は多分意味無いので載せませんが、動画リワード広告は、一定時間の動画広告を"見てくれたら"報酬(ポイント・ヒント・リプレイ権など)をあげるよ、という広告です。

ユーザーのアプリ体験を不自然に妨げることなく選択的に"広告を見てもらう"という実にユーザーフレンドリーな手法だと思います。

でも、"リワード広告"ってPlayStoreやAppStoreから駆逐対象にされてるんじゃ無かったっけ?

そう、これは俗に言う"リワード広告"であって動画リワード広告とは違うのです。

もっと的確な言葉で言うと、「ブースト広告」です。

こいつは何をやっていたのか、また、動画リワード広告と何が違うのかと言うと、報酬を与える代わりに"アプリのインストール"をさせていたのです。

この仕組みを利用することで、ユーザーはアプリを(利用するかどうかは置いといて)とにかく大量にインストールしまくって報酬を貰い、広告主は大量のインストール数を獲得し、一気にランキング上位の座を得ることが出来ていたのです。

この行為を、「ブースト」と呼びます。

でも、これって本質的じゃないですよね。

インストールされまくったアプリはどうなるかというと、そもそも内容なんか見向きもされずに入れられる物が多くただ容量を圧迫するだけで邪魔なので、即アンインストールされるのです。

確かにユーザーは地道にポイントを稼げるし、広告主はランキング上位に行けるかもしれない。

でも今度はアプリプラットフォーム本来のアプリユーザーが迷惑します。

どういうことかと言うと、ブーストされただけのゴミアプリにランキングが占領され、まともにアプリを探しに来た人が困惑するのです。 そしてアプリプラットフォーム自体の信用が失われていきます。

これはもう「商品の価値を完全に無視している」という最悪な方法なのです。

だからこそ、GoogleAppleは駆逐対象にしたわけですね。

もう一度違いを確認しておくと、動画リワード広告は動画広告の視聴を条件とし、リワード改めブースト広告はアプリのインストールを条件としているのです。

これは小さな違いのようで、実は「アプリの価値」を著しく左右する大きな違いなのです。

全画面広告

これは単純に全画面で広告を出すだけの広告です。インタースティシャル広告とも言います。

正直何とも言えない広告で、確かに邪魔という気持ちは分かりますが、何かのプレイが終わったときなどなるべく分かりやすいタイミングで使わせてもらっています。

私が使っているGoogle AdMobの全画面広告は、広告を表示した直後にはタップ出来ないようになっており、またタップできる領域が制限されているので、誤タップすることは少ないかと思います。

全画面だけあって広告の訴求力自体は高いので、誤タップさせたりあまりにも頻繁に表示させたりしなければ、まあ使って良い広告だろうと思っています。

まとめ

ここまで広告の良し悪しを述べてきましたが、正直"悪い"広告に騙された記憶が強く残って広告を毛嫌いしている人は多かったんじゃないかと思います。

私自身、ユーザーとして広告を見て、クリックやタップをすることが多いわけではありません。

そもそも、広告というものは実際にクリックやタップをしなくても機能するようになっています。

例えばテレビのCMってクリックは出来ないですよね?

でもあれは、例えばそのCMを見た人がお店に行って商品を買うことを促しているわけです。

また、その人自身がすぐには買わなくても、何回か見るうちにその印象が強くなり、ふとお店で見掛けたときに買ってみたり、あるいは何気なく友達にその話をしてその友達が買ったりするわけです。 つまり、商品の存在感を上げる効果があるのです。

アプリなどの広告も同じです。 広告をクリックすること自体には抵抗があっても、他の場面で遭遇したときに何となく思い出し、あるいは友だちの間で話題になっているのを聞き知って商品をインストールするということに、案外なっているものです。

逆にこのようにちゃんと宣伝しないと、他人には全く届きもしないですからね。 特に私のような駆け出しの開発者の場合は。

そういうわけで、自分のアプリを宣伝したい側としても、手近だけでユーザーを増やすのは難しいところがあり、ここぞという時には広告を使うべきだろうなぁと思って実際に使ったりもしています。

とにかく、広告自体は別に悪いものではなく、ユーザーにとっても広告主にとっても役に立つものなので、どうか毛嫌いしないで欲しいところです。

そして勿論、その両者を仲立ちするアプリプラットフォーム(つまり広告代理業者とか広告付きアプリとか)も立派な役に立つ存在であると分かっていただけるとありがたいです。

こんなところです。

最後に

また思ってたより長文になってしまいましたが、最後まで読んでくださった方、ありがとうございます。

というわけで、是非以下のアプリをよろしくお願いします。

運ゲー排除マインスイーパ - UnambiSweeper

以下の紹介ページで両方まとめていますのでもし宣伝して頂ける場合にはこちらをお願いします。

UnambiSweeper|DNEK

二字熟語穴埋めパズル ~ニジウメ~

二字熟語穴埋めパズル 〜ニジウメ〜を App Store で

両方まとめたページはこちら。

NijiUme|DNEK

よろしくお願いします。

Unityで漢字パズルアプリを作ったよ(Android/iOS)

この記事は KMC Advent Calendar 2017 - Adventar の6日目(12/6)の記事です。このカレンダーの内容はkyp(id:kypa)さんの尽力によって下の記事に逐一まとめられる(予定な)ので、良ければ参照してください。 kyp(id:kypa)さん、がんばってくださいね。

5日目の記事は、nna774さんのいい旅行 わるい旅行 - /dev/nona (いっと☆わーくす!)でした。

dnek_さんずっとアプリ作っててすごいですね。

ずっとと言っても年に一本しか新作を出していないのです……。

京都-大阪間を別の交通手段で行き来しているみたいですが、私は毎月箕面へけん玉をしに行くのに普通に阪急の土休日回数券を使ってしまっています。 まあ毎回ふらっと観光するまでも無く疲れるんだけど。

でも温泉にはそのうち行きたい!!

はじめに

過去にKMC会長をしていた記憶が怪しいdamaです。 Twitter名はDNEK(でぃーねっく) (@dnek_) | Twitterアプリ開発に使っている名前もDNEKです。 今は京大文学研究科のM1ですが、本当に院生なのか怪しい生活をしています。

また1年経ってみて

今年で3年目ですが、毎年12/6にKMCのAdventCalendarで記事を書いています(そもそもこれしか書いていないぞ)。 去年はこんな感じでした。

このアプリについて書いています。

以下の紹介ページで両方まとめていますのでもし宣伝して頂ける場合にはこちらをお願いします。

UnambiSweeper|DNEK

今回の記事では、タイトル通り新作アプリの紹介をしてから、このアプリについて補足もします。

ニジウメ

これです。

二字熟語穴埋めパズル 〜ニジウメ〜を App Store で

さっきリリースしたばかりだからなのか、何故かiOSの方が上手くカード表示されないので普通にリンクを貼っておきます。

両方まとめたページはこちら。

NijiUme|DNEK

ちなみに「にじよめ」は関係ないです。

どんなアプリか

こういうやつです(雑)。

おそらくほとんどの方が解いたことがあると思われる定番の漢字パズルです。

ちなみに「和同開珎」という名前が付いているそうですが、勝手に「二字熟語穴埋めパズル」、略して「ニジウメ」という名前を付けてしまいました。 だってこの方が分かりやすいもん。

一応知らない人のために説明しておくと、十字に並んだ漢字四字それぞれと組み合わせて二字熟語になる漢字1字を当てはめるパズルです。 例えば上の問題では、「平?」「電?」「?海」「?砂」がそれぞれ二字熟語になるように「?」に入る漢字を考えます。

文字の並び方と真ん中の穴が似ているから和同開珎なんですね。 ちなみにアプリアイコンの「ニジウメ」の文字配置もちゃんとこれに合わせています。

Wadogin.jpg
By As6022014 - As6022014が撮影, CC 表示 3.0, Link

wikipedia:和同開珎より

さらにどうでも良いことですが、この真ん中に当てはまる漢字は無さそうですね……。

このアプリの良いところ

和同開珎は、日本人しか作らないという理由もあるとは思いますが、マインスイーパーに比べて競合アプリが少ないです。

そして今回の僕のアプリも運ゲー排除ほど目立った特徴は無いです。

しかしそれでも主張したい差別化ポイントは幾つかあるので一応挙げていきたいと思います。

  • ちゃんと考えて問題を作った

実はこれ、一番主張したい部分です。

既存のアプリだと、個人的には物足りない問題が多いです。

例えばこれ。

おそらくほとんどの人が、「遷」を見れば真っ先に「遷移」を思い付くでしょう。 「遷都」派も居そうだけど、これを思い付く人はきっとその次の瞬間くらいに「遷移」も思い付きますよね。

個人的に、こういう問題はあまり面白くないと思います。 瞬発力を鍛えるのには良いかも知れませんが。

敢えて答えは言いませんが、コレなんか露骨ですよね。

そしてもっと良くないのがコレ(別のアプリです)。

この問題、私はよく考えた結果、「正解は「意」だ!」と思い喜んで入力して判定してもらったのですが、この通りGAME OVERになりました。 いや、「来意」「同意」「意味」「意趣」って完全に合ってるじゃん。何それ?

モザイクが薄いのでおそらく目の良い方なら分かると思いますが、なんと正解は「旨」だったのです! 「来旨」とか「同旨」とか確かにあるけどさぁ、「旨趣」もまぁ「趣旨」と微妙に使い分けることもあるし……。 でもこれが正解で「意」が間違いなのはおかしいだろ!!

とまぁこのように、いわゆる"重解"が発生しないように意識して作らないと、解く人がとてもガッカリすることになるのです。

こういうどちらかというとマイナーな漢字で被ることは珍しいのですが、「上」「中」「下」「人」「日」「水」あたりはかなり被りがちなので特に注意が必要です。

ちなみに、PlayStoreやAppStoreを眺めていると、問題の自動生成を謳っているものが幾つか見受けられます。 マインスイーパーであれば自動生成で結構なのですが、この漢字パズルを適当に自動生成してしまうのは良くないと思います。 上記2つの問題が発生しがちですからね。

まあ数歩譲って二字熟語の辞書データを全部突っ込んでおき、重解チェックをしながら出題するのであればある程度マシにはなるかもしれませんが、私はこの手のパズルは作者の言葉選びのセンスが光るものだと思っているので、よく考えて作っています。

じゃあお前はセンスあんのか?となるかと思いますが、実際に解いてみて判断して下さい(宣伝)。 一応私が漢検準1級であり、京大の言語学専修で学んでいるということと、問題は多少難しめに作っているということは言っておきます。

……1級じゃないんかい。

ただ私の問題も100%重解が無いとは限らないので、もし発見してしまった場合はこっそりメールかTwitterのDMで教えて下さい……。

  • ヒント機能

これは上の方のスクショを見たときに気付かれるだろうと思うのですが、左上と右下に、1つずつ「ヒントをみる」ボタンが付いています。 察しの良い方はこの位置で気付くと思うのですが、このボタンを押すと、ボタンが消えて代わりに漢字が追加で表示されます。

このタイプのヒントの出し方は他では見たことがなく、我ながら良い方法を思い付いたなと思っています。 もし他で見掛けたら教えて欲しいです。

ちなみに、このヒントは使える熟語が足りなかった所為でヒントらしく簡単に解けるよう配慮したために、露骨に分かりやすくなっているものも時々あります。 そういうものだと思って適宜使っていただけるとありがたいです。

ついでに実装の話を少しすると、最近(?)流行りの動画リワード広告というものをここで使っており、動画広告を見る対価としてヒントが見られるようになっています。 完全に慈善事業で作っているわけではないので、この辺は許してください🙏

また、ちょっと前に問題になってストアからの駆逐対象となっている”リワード広告”は似て非なるものですのでご留意下さい。 私の使っている動画リワード広告はGoogle AdMob提供のちゃんとした広告です。

この辺りは別に記事を用意したのでそちらを参照して下さい。

dnek.hatenablog.com

  • 各問の未既読・正答済みかどうかを表示

書いた通りの内容で、僕のアプリでは、メニューから問題を選んで解くようになっており、そのメニューの各問の右下に、「まだ」とか「とけた」という標示がされるようになっています。

問題を解く画面でも、右上に正答済みであることが表示されます。

  • 300問ある

300問あります。

かなり時間掛けてます。 多分1問10分くらい。

同じかそれ以上の時間を掛けて楽しんでいただけると幸いです。

1000問を目指して頑張っています。

常用漢字だけでも2000字以上はあるし、ストックは問題ないはず。

プライバシーポリシー

実は今回初めて、プライバシーポリシーというものを書きました。

以下に全文が載ってます。

Privacy Policy|DNEK

ちゃんと英語版も書きました。

最近のGoogle翻訳は賢いので、Google翻訳で英語にした後、不自然な部分を自分でちょちょっと修正することによりとても素早く良い訳が出来上がります(それを判断する英語力は必要です)。

ちなみに何故今になって書いたのかというと、たまたまプライバシーポリシーが必要であることに気付いたからです。

そもそもプライバシーポリシーって何かと言うと、「私はあなたのこういう個人情報をこういう方法で使おうと思ってるんですが、いいですか?」という契約文書です。 日本語だと個人情報保護方針というやつですね。

法的な話もありますが、とりあえずPlayStoreやAppStoreでは、「アプリが個人情報を扱うならそれについてポリシーを示せ」と決められているのです。

正直広告はその形態によって微妙なところがあるようですが、少なくとも私はFirebase Analyticsというものを使って匿名化されたユーザーデータ(プレイ時間とかどんな操作をしたかとか)を集めているので、書かないといけなかったわけです。

実はUnambiSweeperの方も既にFirebase Analyticsを使っているので、早い内にポリシーを示すように更新するつもりです。

あと、Googleが今年の8月になってプライバシーポリシーの示し方を明確化してきていまして、こちらに分かりやすく書いてあります。

特に重要そうなのが、

  • アプリ内で開示しなければなりません。Play の掲載情報やウェブサイトでの開示だけでは不十分です。

という部分と、

  • 同意を求めるダイアログを明確に表示する必要があります。

という所です。

私がこれのために何時間かを費やし、完成させたものがこちらです。

まあ最初の1回だけになることかと思いますが、是非ともご確認下さい。

ちなみにですが、市場に出回っているアプリの大半、特に個人開発っぽいアプリのほとんどにはプライバシーポリシーの記載がありません。 初回起動時に同意を求めているものとなると本当に僅かです。

いつ削除祭りがあるのか分からないので、自分のためにもユーザーのためにも先んじて対応しておこうと思います。

運ゲー排除マインスイーパ

こちらも1年の間に多少変わったことがあったので、補足しておきます。 ここは技術的な話しか無いです。

Metalの件

前回の記事を書いた時点で、iPhoneの一部機種においてMetalというCGAPIを使うと描画がおかしくなるバグがありました。

その後……

Metal: Fixed a crash on startup on some iOS devices. (857032)

この通りUnity5.5.1で修正されたらしいので今は普通にMetalも使っています。

ブラーエフェクトの変更

使ってくれている人はご存知かと思いますが、UnambiSweeperでは画面の上に画面を出すときに、手前を半透明にして奥にブラーを掛けています。

これを以前はImage EffectというアセットのBlur (Optimized) というのを使っていました。

詳しい説明は省くのですが、これをブラーが掛かっていない状態から程よく掛かっている状態まで一様に変化させるために、何故か複数のパラメータをいじる必要があったのです。

まあ、それはそれとして、Unityが2017にバージョンアップすると、なんとこのImageEffectが使えなくなっていたのです(自分で無理やり持ってくれば使えないことはない)。

で、UnityがPost Processing Stackという代わりのものを用意してくれていたのですが、これの2Dでの使い方がよく分からず、面倒くさいなぁと思い、良いサードパーティプラグインが無いかなぁと思って探していたら、ありました。

これです。

こいつは使い方がシンプルで分かりやすい上に、なんと1つのパラメータをいじるだけで、一様にブラー度を変化させることが出来るのです!(元々そうあって欲しかった……)

ちなみにモバイルの場合はSuperBlurFastの方を使え、とか書いてありますが、実際に使ってみると変化させた過程がすごく汚い感じになったので要注意です。 僕が何かミスってるだけかもしれないけど。

なんか他にもあった気がするけど、かなり長くなってしまった気がするしこの辺にしときます。

現状&まとめ

さて、現状なんですが、出したばかりのニジウメはまだとして、UnambiSweeperの方はAndroidは総インストール数12,000を超えております。 評価は現時点で☆4.231(総評価数: 121)となっています。 皆さんありがとうございます。 iOSの方は1,000インストールに少し足りないくらいという感じで、もうちょっと頑張って欲しいなぁと思います。

で、前回通り、最近の広告収入もぶっちゃけると、今年の3月から今までの9ヶ月くらいは大体月1万円くらい入っています。 行く行くはこれで生活出来るくらいになれば良いなぁと夢想しております。

そのためにもこれからもっとアプリを出していく予定です。 また、こういうアプリを作って欲しい等のご意見がありましたら、Twitterとかで教えて下さい。

twitter.com

終わりに

今年も長々と失礼致しました。

最後にもう一度アプリへのリンクを載せておきます。

UnambiSweeper|DNEK

二字熟語穴埋めパズル 〜ニジウメ〜を App Store で

NijiUme|DNEK

さて、明日はnojimaさんです!

nojimaさんは僕がKMCに入った年にOBになられた、6代上の元会長さんなのですが、どういう記事を書いてくださるのか楽しみですね!

KMC Advent Calendar 2017 - Adventarの他の記事はこちらからどうぞ。

運ゲー排除マインスイーパーをiOSにも対応させた話とか

この記事は KMC Advent Calendar 2016 - Adventar 6日目(12/6)の記事です。

www.adventar.org

5日目の記事は、id:tyageさんの嘘つきPHP ZipArchive::addGlobと壊れたファイルパス – 弱いでした。

blog.tyage.net

はじめに

過去にKMCで会長をしていたのか今となっては怪しいdama*1です。 今は4回生なので一応卒論を書いているのですが、一緒にKMCに入った仲間たちがほとんど留年してしまっていて寂しい感じです。

1年経ってみて

ちょうど1年前の12/6に同じくKMCのAdventCalendarでこんな記事を書きました。

dnek.hatenablog.com

このアプリについて書いています(iOS版は後述)。

play.google.com

長ったるいまともなブログ記事を書いたのは確か初めてだったのですが、予想よりもかなり多くの方々に閲覧・反応していただけたようで良かったです。 それから1年経つ間に色々とやったことややっていないことがあるので適当にその辺の話をしようと思います。

KMC効果

実はこのアプリを初めてリリースしたのは1年前に記事を書いた日の数週間前だったのですが、記事を書いてからDL数が桁違い*2に増えた記憶があります。

総DL数は数百程度だったものの、おかげさまで新着無料ゲーム総合で200位以内に入ることができました。

KMCの知名度のおかげだと思います。感謝。

「五億円ゲット」

正月早々2本目のアプリをリリースしました。

「五億円」という経済指標は、日本人の平均生涯賃金とされる2億円の2倍を超えており、手に入れれば一生余裕を持って過ごすことができる額となっています。 2015年の京都大学11月祭では京都大学五億円同好会のブースも出展され、その人気は今も揺らぐことはありません。

そんな中、年末に唐突に思い立ち大晦日まで作業をし2016年元日にリリースしてしまったものがこちらです。

play.google.com

1円玉から500円玉までの硬貨が並んでおり、タップする毎に溜まっていくというクソゲーです。

同じくクソゲーでありながら何故か大ヒットした「100万の○〇〇」*3というアプリがあるのですが、500円玉を100万回タップすればぴったり5億円だし難易度的に丁度良いだろうと思い、作ってしまいました。

1硬貨あたり3種類の硬貨効果音を心を込めて録音したので、その音を聴いて楽しむのがオススメです。

当然流行ることはなく未だにDL数は2桁しかありません。 それでも何故かずっと続けている知人が二人も居りしかも電車内で無音でプレイしているらしく、正直意味が分からないです(遊び方は自由です)。

当然全く期待していないので一度もアプデしていないしiOSに対応する気も無いですが、もし万が一流行ることがあったら考えてみようと思います。

ユニバーサルアプリキャンペーン

良いものを作りたいと思ってUnambiSweeperを作ったのは本当で、特に手を抜いたつもりもありません。 それでもお金が欲しいという気持ちは割りとあるので、アプリ内に広告を表示させていただいており、多少の宣伝もしています。

最初はお金をかけずに宣伝したいと考えてレビューサイトにお願いしまくったのですが、案の定全く載せてもらえませんでした。 Twitterでは主にKMCの力によりそれなりの宣伝ができたのですが、やはり限度があるといった感じです。

結局3月にユニバーサルアプリキャンペーンを使ってみることにしました。 ユニバーサル(ryというのは、簡単な設定をするだけで、Googleさんがアプリ内広告とかYouTubeとかGoogle検索の検索結果とかで良い感じに宣伝してくれるやつです。 課金方式はCPC(クリック毎)になっています。

とりあえず\11,000くらい突っ込んでみたのですが、割とすぐに400DLくらい行きました。 インストール単価は27円くらい。

それで広告収入がどうなったかというと、全く増えませんでした。むしろ減った。アイエエェ……

理由を考えて見るに、主に以下の3つかなと思います。

  • 主に海外のクリック単価の低い地域に向けて宣伝していたため当然収益も低い
  • Twitterやストア内検索経由でDLしたユーザーに比べてすぐにアンインストールする人が多い
  • 自然減

貧乏学生なのでインストール単価数百円の先進国に向けて宣伝するのは多少気が引けるのですが、また余裕ができたら試してみようかなと思っています。

Unity再び

去年の記事にも書いたのですが、最初のUnambiSweeperは1回生のときにWindows向けに作りました。 その後なんとなくUnityに移植し、去年になってAndroid版を作ったという感じです。

Android版はJava & AndroidStudioで開発していたのですが、ちょっと問題がありました。 何故か電力消費が激しく、また一部端末(どうも機種依存では無さそう)で動作が著しく重くなるというものです。 恐らくSurfaceViewが原因なのですが、去年の記事が完全なブーメランとなっている気がします。

何とかしようと色々考えたのですがよく分からず、面倒なのでいっそUnityに移植してついでにiOSにも対応しようという結論に至りました。

そもそも1回生のときにUnityに移植したのではと思われるかもしれないですが、当時はPCで遊ぶことしか考えていなかったため、タッチ操作・画面移動・GooglePlayゲーム・広告対応などやらないといけないことが色々あった訳です。 また、当時のUnityで作ったスマホアプリはかなり重く、最近IL2CPP*4に対応してやっとまともになったので使う気になったというのもあります。

iOS対応

Unityはマルチプラットフォーム対応ゲームエンジンでほとんどのコードを共通化できるすごいやつなのですが、多少はAndroidiOSで個別に対応しないといけないこともあります。

というのも、Android版ではランキングや実績のためにGooglePlayGamesServicesを使っていたわけですが、折角iOSにも対応しているのに実装してもAppStoreでリジェクトされてしまうらしく、iOSでは泣く泣くGamecenterを使うことにしました。 まあ個別に書くだけでそれぞれの実装は大して難しくないのですが。

ちなみにPlayGamesの方は以下のプラグインを使い、iOSはUnity標準のusing UnityEngine.SocialPlatforms;すればいけます。

github.com

もう一つ、ヴァイブレーションはHandheld.Vibrate();で鳴らせるのですが、Androidで任意の時間鳴らすにはネイティブコードを書く必要あります。 適当なプラグインを入れても良いですが、大した実装ではないのでこの辺を参考に自分で書けば良いと思います。

ameblo.jp

一方でAdMob広告やSNSでの共有、ネイティブダイアログなんかはプラグインで簡単にいけます。

GoogleMobileAdsは割りと頻繁に更新されていて、丁度今朝Version 3.1.3がリリースされていました。

github.com

SNS共有はこれが一番使い勝手が良いと思います。

github.com

ネイティブダイアログはこちら。 ただ、3つ以上の選択肢が出せないので他に良いプラグインがあれば教えて欲しいです。

github.com

Android版のバージョン管理

通常UnityでAndroid向けにビルドするとARM/x86両方のアーキテクチャに対応するapkが出力されますが、これが結構重いので、Player SettingsのDevice Filterで設定してそれぞれ専用のapkをビルドした方が良いです。Bundle Version Codeも分けておくようにしましょう。

そうすると複数のapkを同じアプリとして公開する必要が出てくるので、Developer Console上で設定をします。 当該アプリページのAPKタブ内右上にある「アドバンスモードに切り替える」ボタンを押すと、複数apkを端末によって振り分けられるようになります。

ちなみにUnambiSweeperはAndroid2.3.3以降に対応していたのですが、Google Play Games plugin for UnityがAndroid4.0以降対応だったため、今後更新はしないものの前バージョンのapkも残し、4.0未満でもインストール出来るようにしています。

HP

プレイスコアをSNSで共有するとき、末尾にハッシュタグ#UnambiSweeperとアプリURLを付けさせてもらっています。 Android版ではPlayストアのURLをGoogle URL Shortenerで短縮したものを使っていたのですが、 iOSにも対応するにあたり片方のOSのURLだけ共有されても困るので、HP内にアプリ紹介ページを作りそこから各ストアへ飛んでもらうことにしました。 ただ、当時使っていた忍者ホームページ*5だと微妙に長い上に広告も表示されてなんか嫌だったので、新しく作り直すことにしました。

最近(?)は便利なもので、Freenomというサービスで、.tk/.ml/.ga/.cf/.gqといった主にアフリカのトップレベルドメインが無料で取得できるようになっています。

Freenom - 誰でも利用できる名前

辞書登録されているようなものでなければ、最短4文字のドメインを取得することができます。 私はdnek.cfを取得しました。 今の所、最低年1回の契約更新を忘れなければ使い続けられるはずです。

後はホームページサービスですが、ウェブクロウという無料・広告無し・商用可・独自ドメイン対応の良い感じのやつがあります。

www.webcrow.jp

これらを登録したら後はネームサーバーを設定してあげれば簡単に広告無しで短いドメインのHPが手に入ります。

.htaccessもちゃんと使える*6のでリネームして.htmlを消すようにし、http://dnek.cf/unambiという短いURLが出来ました。 めでたい。

Metal

試行錯誤とサボりを繰り返しつつなんとか10月末にリリースすることができました。

しかしすぐにとある知人からバグ報告がありスクショを見せてもらったのですが、スタート画面がうまく表示されずまともに使えない状況でした。

ググってみるとこんな記事が見つかりました。

answers.unity3d.com

要はiPhone5s(他の機種もあるかも)だとUGUI*7がMetal*8で上手く描画出来ないらしいので、使わないように設定したら直りました。 一安心。バグ報告感謝。

現状&まとめ

以上のような感じで色々とやってきたわけですが、現在は総インストール数が4,400+、評価が☆4.259(総評価数: 81)といった感じです。

更にぶっちゃけてしまうと、最近の広告収入は百数十円/日、約5千円/月、総計で5万円弱といったところです。 Android : iOS = 3 : 2くらい。 多いと思う方も少ないと思う方もいると思いますが、とりあえずお小遣い程度にはなっています。

アプリの完成度はゲームとしてちゃんと遊べるくらいになっていると思いますが、まだまだ改善の余地があるので今後もアプデを続けていきたいと思います。 あとこの記事を書いている途中で気付いたのですが、Unity5.5の安定版が11/30にリリースされていたらしいので、GoogleMobileAdsの更新も兼ねて後で試してみようと思います。

他にもアプリのアイデア自体はいくつかあるのでどんどん作っていきたいです。また、こういうの作って欲しい等ありましたらTwitterとかで教えて下さい。

twitter.com

あとこちらもインストールよろしくお願いします。

play.google.com

また、宣伝していただける場合は以下の紹介ページをご利用下さい。

UnambiSweeper|DNEK

終わりに

今年も長文駄文失礼致しました。

さて、明日はid:yu3marsさんです!

KMC Advent Calendar 2016 - Adventarの他の記事はこちらからどうぞ。

www.adventar.org

*1:damaはKMC内でのID、DNEKは主にTwitterとかで使っている名前

*2:1桁/日→2桁/日

*3:筆者による伏せ字

*4:中間言語からC++に変換して良い感じにしてくれるやつ

*5:実はUnambiSweeperのパッケージ名にその名残がある

*6:忍者ホームページでは使えなかった

*7:Unity標準のGUI

*8:一部のApple製品で使われているCGAPI

運ゲー排除マインスイーパーをAndroidアプリにした話と市場に対する雑感

(2016/12/18追記) 続きです。

dnek.hatenablog.com


この記事は KMC Advent Calendar 2015 - Adventar 6日目(12/6)の記事です。

www.adventar.org

5日目の記事は、id:Pasta-KさんのWebExtension現状確認してみた - Pastalablog in はてなでした。

はじめに

最近KMCで代表*1の任期が満了となり、晴れて平部員に昇格した*2dama*3です。

github.com

ちょっと前にPietのIDEのようなものを作っていました(宣伝)が、最近Androidアプリを作ってリリースしてみた(宣伝)ので、その辺で色々思ったことを書こうと思います。 ちょっとだけ開発上の知見っぽいものも書きます(マインスイーパー以外でも役に立ちそう?)。

マインスイーパーの欠陥

さて、ある程度マインスイーパーで遊んだことがある人であればご存知だと思いますが、マインスイーパーには運ゲーという致命的欠陥(偏見?)があります。

f:id:dnek:20151202050012p:plain

例えば↑の画像では、右下の2マスのうちどちらに地雷が埋まっているのかは完全に五分五分です。 このような単純な例を含め、特に上級においては頻繁に運ゲーが発生します。

頑張って考えて解いていたゲームがいきなり非論理的要素によって中断されてしまうのは非常に理不尽なことです。 ですが私はこの運ゲーの存在によって元々論理的に解けるはずの盤面がきちんと解かれなくなることの方が問題であると思います。

つまりどういうことかというと、とても複雑であるが論理的に解ける盤面でも、絶対に運ゲーが無いという保証が無い故にその検証にかける時間を惜しまれ運任せにされてしまう場合があるのです。

ある程度プレイしている人にとってこの運ゲーの存在は当たり前のことかと思いますが、そもそも運ゲーが無いことが保証されていれば、どれだけ論理的思考に時間を使おうとする意識が高まるでしょうか。

UnambiSweeper

この理不尽とオサラバするため、私が1回生の時*4に作ったのがUnambi Sweeper*5です。 Unambiというのは"Unambiguous"*6の略です。

当時はWindows向けにVB.NET書いたり*7、なんとなくUnityに移植したり*8していました。 必ず論理的に解けるようにしたのに加え、私のようなキーボードプレイヤー*9*10のために操作性を改善*11したりしました。

そしてAndroid

実はUnambiSweeperを作った頃、Androidを触ろうとしたがEclipseでの開発に手間取って頓挫した記憶があります*12

それから時は流れてKMC春合宿2015

このAdvent Calenderの作成者でもあるid:nonyleneさんのスライド発表を見ました。

www.slideshare.net

実はそこでAndroid Studioの存在を知ったのです。 Eclipseはダメだったけどこれならイケそう、と思い、しばらく触れていなかった*13UnambiSweeperをAndroidに移植してみようと思い立ったのです。

そして半年ほど勉強しつつ頑張ってリリースしたものがこちら。

運ゲー排除マインスイーパ - UnambiSweeper - Google Play の Android アプリ

是非遊んでみてください!!!

で終わるわけではない。

UnambiSweeperの良い所

とりあえず運ゲーにならないというだけでも他のマインスイーパアプリではなくUnambiSweeperを選んでいただけることと思いますが、そもそもマインスイーパーとしての完成度が他とは違います(多分)。

UnambiSweeperの良い所

類似アプリの良くない所

というわけでここから今までよりも自信過剰な発言をしていきます。

現状、PlayStoreにて「マインスイーパー」で検索してみると、有象無象のマインスイーパーアプリが出て来ます。

gyazo.com

リリース時期にもよるでしょうが、初めの方に表示されるアプリには10万、100万DLレベルのものがいくつもあります。

ですが、これらの人気アプリでも(評価が高いものでも)実際に遊んでみると特に遊ぶ価値はない気がしますが色々と不完全な部分が見つかります。

以下、気付いたものを挙げていきます(すべて5万DL以上のアプリで確認できるものです)

  • ボタンがフィールド上に重ねて置いてあってミスタッチし易い

おそらく現状で一番まともだと思われる類似アプリ(100万DL)でほぼ唯一気になった点です。 UnambiSweeperでは、画面の上下端に半透明のカバーをしてその上にボタンなどのUIを設置しています。

  • プレイ画面が表示された瞬間にタイマーがスタートする

これはなかなか致命的な問題だと思うのですが、100万DLのものを含めいくつかのアプリで確認できます。

  • 最初に開けたマスの周囲に地雷が存在する

普通に考えれば分かることですが、最初に開いたマスの周囲8マスのいずれかに地雷が存在すれば、そこは数字マスとなり周囲のマスは自動的に開かれません。 つまり初めから運ゲー状態となるわけです。 これはおそらく半分以上の類似アプリで確認できる問題です。 由々しき状況です。 ちなみにWindows付属のマインスイーパーではVistaから改善がなされています。 特に実装上難しいものではないですし、マインスイーパーを実装する上で最低限のマナーだと私は思っています。

  • 最初に開けたマスに地雷が存在する

最初に開けたマスに地雷が存在するものもあります。論外です。

  • 周囲一気消しが出来ない

マインスイーパーでは、数字マスの周囲にその数字と同数のフラグが立っている場合、そのマスに旗立てと同等の操作*14を行うことでそれ以外のマスを一気に開けることが出来ます。 フラグを使うプレイヤー*15にとっては必須と言えるこの機能を有していないアプリも数多くあります。

  • 地雷/フラグ切り替えが出来ない

多くのアプリでは、デフォルトで「タップ = マスを開く」、「ロングタップ = 旗を立てる」という仕様になっています。 ですが、フラグを使うプレイヤーは上記の周囲一気消しを用いるため旗立ての操作をすることの方が多いし、単純に一々ロングタップするよりも操作を入れ替えてタップで旗を立てる方が速いです。 そのため、切り替えボタンがあると便利なのですが実装されていないアプリもいくらか存在します。

  • 動作が重い

SurfaceViewGLSurfaceViewで実装しましょう。あるいは画像をあらかじめcreateScaledBitmap)などでScaleしてから描画しましょう。とかそんな所だと思います。

  • タップしにくい

触れてから少し指を動かしただけでスクロールと見做されてしまい中々タップできないという問題です。 これはおそらくMotionEventのACTION_MOVEをそのまま使ってしまっているのが原因だと思われます。 特に複雑な実装をしようと思わないのであれば、GestureDetector.SimpleOnGestureListenerのonSingleTapUpやonScrollなどを使えば良いと思います。

但し一度タップしてからすぐに近くの場所をタップした場合これはダブルタップと見做され、onSingleTapUpでは2回目のタップを検出することが出来ません。 一応GestureDetector.OnDoubleTapListenerというものが存在するのですが、これでも何故か2回目のタップをスクロールと分けて検出することが出来ません。 そのため、私はACTION_MOVEで初期タップ位置からの距離を計算してスクロールになるかどうかを判定しています。 この距離は

ViewConfiguration.get(getContext()).getScaledTouchSlop()

などで取得することが出来ます。 ViewConfigurationでは他にも色々な値が取得できるので一度確認してみると良いと思います。

  • ピンチイン/アウトが変

いくらかのアプリではピンチ(二指ズーム)が出来ます。 しかしその多くはフィールドの中心を基準に拡縮しているため、フィールドの端の方で拡大した状態からピンチアウトしようとすると、中心に吸い寄せられるように縮小されてしまいます。 これは、ピンチ時にタッチしている2点間の中心を取得することで改善することが出来ます。

  • よく分からないUI

ズームが出来ない代わりに、タッチ位置の周囲を拡大して表示するようなUIを実装しているもの(10万DL)がありますが、正直かなり操作しにくいです。 もう少し素直なズーム機能を実装してほしいものです。

  • よく分からない盤面デザイン

フィールドのサイズは画面一杯で固定、マスのサイズを設定するとそれに応じて画面に入るだけのマスが詰められる、難易度を変えると地雷の密度が変わる、というちょっと不思議な盤面のデザインをしているものがあります(50万DL)。 これに関しては好みによるのかもしれませんが、同じ難易度でマスの数が変わりまくるというのは良くないのでは、と思います。

UnambiSweeperの良い所(再)

さて、だいぶ長々と文句を言って来ましたが、上記の問題点をすべてクリアしているのはおそらくUnambiSweeperだと思います。割りとマジで。 もしそうでないAndroidアプリがあれば教えていただけると幸いです。

さて、実は今までありそうでなかった、おそらくUnambiSweeper独自の機能があります。

  • 残りの安全なマスの数が分かる

普通は左上か左下に、「地雷の数 - 旗の数」が表示されているものと思います。 これは旗を使うプレイヤーにとっては有用なのですが、私のような旗を使わないプレイヤーにとってはあまり役に立つものではありません。 そこで、まだ開かれていない安全なマスの数を併記するようにしました。

  • ゲームオーバー時にどこが安全だったか分かる

ゲームオーバー時、論理的に考えて次に開いても問題がなかったマスをチェックマークで表示する機能を実装しています。 これは、論理的に必ず解けることが保証されているUnambiSweeperだからこそ出来るものです。

数々の問題点をクリアしている上に、上記の機能を有し運ゲーも発生しないUnambiSweeperって結構スゴイのでは?、と勝手に思ってしまいます。

お願い

これを書いている現在、UnambiSweeperのインストール数は20ちょっとしかありません。 もっとインストールして欲しいと云うのもありますが、正直他の類似アプリがこんなにDLされてしかもそれなりの高評価を得ている状況は非常にマズイと思います。

単純にプロモーションの差なのかなと思っています。

もしも私の主張に同意してくださる方がいらっしゃれば、是非とも他のアプリを駆逐してUnambiSweeperを台頭させることに協力していただければと思います。

というわけで、↓DL&レビューよろしくお願いします!!!

運ゲー排除マインスイーパ - UnambiSweeper - Google Play の Android アプリ

twitterはこちら。 DNEK@アプリ製作他色々 (@dnek_) | Twitter

(2016/12/18追記) 続きです(再掲)。

dnek.hatenablog.com

終わりに

長文駄文失礼致しました。

さて、明日の記事は、id:asRagiさんの神主講演に行った話 - らぎメモです!

KMC Advent Calendar 2015 - Adventarの他の記事はこちらからどうぞ。

www.adventar.org

*1:KMCでは前年の会長が自動的に代表に繰り上がる

*2:KMCのカースト最底辺が会長、次点が代表(要出典)

*3:damaはKMC内でのID、DNEKは主にAndroid Developerとして使っている名前

*4:2015年度現在は3回生なので2年前

*5:現状"Unambi Sweeper"と離して書いてしまうと検索にかからないので、ここだけ"Unambi Sweeper"書いておく(2015/12/10)

*6:両義的でない、の意

*7:NF2013とC85で出展した

*8:UnityなのでUnimbiSweeperと名付けた

*9:キーボードプレイは速さと正確さを兼ね備えた最強のプレイスタイル

*10:特に中級以上でオススメ

*11:Fキーで旗を立てられるようにしたりマスを開くタイミングをKeyUpからKeyDownにしたり

*12:当時、UnityからAndroid向けに出力するのもなんか嫌だと思ってた気がする、なんでかな?

*13:実はUnambiSweeperを作ってハマり過ぎたため自ら封印していた

*14:PCで云う右クリックなど

*15:ちなみに私はNF(non-flagging)プレイヤーです

初めまして。

初めまして。DNEKです。

最近Androidアプリを作っています。

とりあえず現在UnambiSweeperというものを公開しているのでよろしければ遊んで見て下さい。

簡単に云うと、運ゲーにならないマインスイーパー」です。操作性もいい感じだと思うのでよろしくお願いします。

Get it on Google Play

 

それから少し前にPietのエディタも作ったのでこちらもよろしくお願いします。

github.com