DNEK's blog

Sounds like "dee-neck". 「でぃーねっく」と読みます。

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

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

www.adventar.org

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

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

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

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

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

はじめに

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

また1年経ってみて

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

blog.dnek.net

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

dnek.net

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

ニジウメ

これです。

dnek.net

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

どんなアプリか

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

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

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

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

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

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

wikipedia:和同開珎より

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

このアプリの良いところ

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

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

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

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

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

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

例えばこれ。

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ヒント機能

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

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

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

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

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

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

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

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

  • 300問ある

300問あります。

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

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

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

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

プライバシーポリシー

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

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

http://dnek.cf/privacy_policy.html

(2019/6/12追記)こちらに以降しました。

dnek.net

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

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

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

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

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

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

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

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

https://play.google.com/intl/ja_ALL/about/privacy-security-deception/personal-sensitive/

(2019/6/12追記)こちらに移動していました。

play.google.com

特に重要そうなのが、

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

という部分と、

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

という所です。

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

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

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

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

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

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

Metalの件

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

answers.unity3d.com

その後……

unity3d.com

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での使い方がよく分からず、面倒くさいなぁと思い、良いサードパーティのプラグインが無いかなぁと思って探していたら、ありました。

これです。

github.com

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

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

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

現状&まとめ

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

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

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

twitter.com

終わりに

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

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

dnek.net

dnek.net

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

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

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

www.adventar.org