はじめに
この記事はand factory.inc Advent Calendar 2021 2日目の記事です。
はじめまして!
and factory Androidエンジニアの久住です。
確か何回かポケモンのネタを擦って記事を上げていたのですが、今回はアドベントカレンダー。
お祭りということで思い切ったやついってみます。
※ 注意!!
超独断と偏見、ポエム、偉そうな断定が多数入っている上に、技術的な話はほとんどしません。
苦手な方は読まないでください。
Qiitaの人に怒られたら消します。
ポケモン対戦とソフトウェア開発の3つの共通点
全世界で大人気のポケットモンスター。
最近は11月に発売したリメイクで話題持ちきりとなっていますね。
僕も例に漏れずポケモン大好き星人の一人なのですが、長年オンライン対戦をして思っていたことがあります。
「あれ...?これ仕事でやってることと同じじゃないか...?」
そう。
ポケモン対戦には、アプリ開発、もといソフトウェア開発に必要なことがたくさん詰まっていたのです!!
この記事では、万年ランキング3桁止まりの僕が、ポケモン対戦から学ぶべきソフトウェア開発に活きる力3つについてお話しします。
1. 市場(環境)調査がめちゃくちゃ大事
ポケモン対戦は、オンラインで対戦相手とマッチングする前から既に始まっていて、事前の調査が勝敗を大きく左右します。
現在スマートフォンでも使用できるポケモンHOMEというアプリでは、オンライン対戦でどんなポケモンが、どのような持ち物を持ち、どんな技を覚えていて、どのポケモンと組み合わせて、どれくらい使われているのかを見ることができます。
ランキング上位に入るようなプレイヤーは、そういった公開されている情報と自らが実際に対戦して集めた情報を合わせて分析して、どんなパーティを使うかを決めています。
つまり、勝てる人間は対戦が始まってからどう動くか決めるのではなく、対戦が始まる前にこういう状況になったらこうすると、あらかじめ動きを想定しておけるくらい環境調査をしているのです。
あれ?と思った方、ご察しの通りです。
これ、開発も同じなはずです。
市場にある競合アプリの情報を調査し、自分のアプリでイベントを計測し、分析する。
今勝っている、売り上げを上げているアプリは必ずこの過程を踏んでいると思います。
市場調査がイマイチうまくいかずに悩んでいる人は、今すぐポケモン対戦を始めてみてください。
見えてくるものがあるはずです。
2. 適切な改善をした人間が勝つ
ポケモン対戦は現在1シーズン1ヶ月の区切りで行われていて、毎月1日9:00の時点でのレートが、そのシーズンの自分の順位となります。
それまでの期間、プレイヤーは6匹のパーティをああでもない、こうでもないと言いながら少しずつ改善していってるのです。
この改善の方法ですが、実はコツが必要で、特に対戦を始めたばかりの頃は**「勝率を上げるために変えたはずなのに、逆に勝率が落ちてしまった」**なんてこともざらにあります。
一つ、その例を紹介します。
現在のルールで使用できる、環境トップのポケモンの1匹であるザシアンを軸にしたパーティを、自分が使っていたとします。
対して、マッチングした相手は、一般的にザシアンに強いと言われている日蝕ネクロズマを軸としたパーティ。
ザシアン側からは日蝕ネクロズマに対する有効打が乏しく、手酷い敗北を喫してしまいます。
対戦を始めたばかりだとこういう場合、「日蝕ネクロズマにボロ負けした!次は勝つために、ザシアンをイベルタルに変えよう!」というような思考になってしまいがちです。
イベルタルは日蝕ネクロズマに比較的強気に出していけるポケモンの一匹で、確かにこのポケモンを採用すれば日蝕ネクロズマには勝てるかもしれません。
ここで、少し立ち止まって考える必要があります。
自分のパーティはあくまで「ザシアンを軸にして作られた」パーティです。
その軸であるザシアンを簡単に変えてしまうと、他のポケモンとのシナジーや強みは失われ、今度はもっとたくさんの他のポケモンに負けてしまう可能性が非常に高くなります。
おそらくこの変更を加えたパーティは、変更前よりも勝率が低くなってしまうでしょう。
そうならないためには、まずは試行回数を稼ぎ、全体の勝率を落とさない範囲での改善をしていくべきです。
目的は「全体勝率を上げること」であり、「日蝕ネクロズマをボコボコにすること」ではありません。
ソフトウェア開発の話に戻ります。
先ほど挙げた例と同じような経験をしたことがある方も、もしかしたらいらっしゃるのではないでしょうか。
小さい最適化のために、アプリの軸となる部分に変更を加えてしまい、結果的に売り上げが下がってしまうということ、あると思います。
改善案を取り入れる時、まずは立ち止まり、**「今自分は日蝕ネクロズマをボコボコにしようとしていないか?」**と自問自答してみてください。
きっと「全体の売り上げを伸ばす」という目標を忘れずに、より良いソフトウェアを作ることができるはずです。
3. 決断力が必要
ポケモン対戦ではしばしば、その時の自分の決断一つで、それまで積み上げてきたものが崩れるかどうかが左右される状況になることがあります。
時は遡り2015年のある日深夜2時。
あと一戦だけ勝ったら寝ると言ってオンラインに潜って30分。勝負も大詰めという状況。
相手は環境でも最強の攻撃力を誇るメガクチート。
おそらく、敵が攻撃技を繰り出していた場合のみ先制で攻撃できる、ふいうちを持っているはずです。
対してこちらはギャラドス。
強力な攻撃力と、クチートを上回る素早さを持っていますが、先制で攻撃できる技を覚えません。
この時、こちらが攻撃技を選んでいて、相手がふいうちを選んでいた場合は、相手からの先制攻撃を受けて負けてしまいます。
こちらが補助技を選んでいて、相手がふいうちを選んでいた場合は、状況継続となります。
こちらが攻撃技を選んでいて、相手もふいうち以外の攻撃技を選んでいた場合は、こちらの素早さが上なので先に攻撃して勝ちとなります。
こちらが勝つためには相手のふいうちを8回使わせるか、相手が痺れを切らしてふいうち以外の攻撃技を選んだタイミングでこちらも攻撃技を選ぶ必要があります。
表にまとめてみました。
絶望的ではあるものの、まだ勝ちを捨てるには早い。そんな状況です。
この1回〜8回の選択次第で、削った睡眠時間、パーティ構築に費やした時間、積み上げたレートの全てが報われるか、水疱に帰すか決まってしまいます。
あなたならどちらの技を選ぶでしょうか?
この時、例えば滝登りを選び、ふいうちを打たれて負けてしまったとします。
失ったものは大きいですが、誰のせいにもできません。全ては選択した自分の責任です。
ポケモン対戦では、こういったギリギリの状況で、自分の選択に自分で責任を持つ、という力が培われます。
開発の話に戻します。
先程の例と同じように、自分の裁量で決定しなければいけないことがあり、かつその責任を自分で負わなければならない時、あると思います。
そういう時に、この決断力が活きてきます。
選択する責任から逃げ出したくなる衝動をグッと堪え、これでいく!と素早く決めて実行できる力は、ここで培うことができます。
自分の裁量が大きく、その責任から逃げ出したくなっちゃう人は、ぜひこのふいうち択を深夜にやってみてください。
自分の選択が成功した時の震えるほどの喜びと、失敗した時の喪失感両方を味わうことができるので、きっと仕事でもバッチリ決断できるようになると思います!
最後に
いかがでしたか。
なんとなくでも伝わりましたでしょうか。
僕としては一応真っ当なことを書いているつもりではいるので、温かい目で読んでいただけたら嬉しいです。
これを機に、ポケモン対戦のソフトウェア開発要素を感じてくれる方が増えたらいいなと思っています。
おわり。