酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

#一人GWハッカソン 2019 でポケカデッキ構築アプリ「ポケカノート(ptcgnote)」を作った

2019年のGWは10連休でした。3月・4月に色々とお金が入り用だったので無一文ですし、どこかへ旅行するお金もなくて用事を作らなかったので10連休まるっと暇していました。

マツダンパー(@matsudamper)さんが、Twitterで「#一人GWハッカソン」のハッシュタグをつけて、その日のアプリ開発の成果をツイートしていました。長い連休の暇をつぶすのに、一人GWハッカソンは面白い取り組みだと思ったので乗っかることにしました。

最初に作ったのは基本エネルギーカードの画像でした。これに2時間くらいかかりました…… Sketchをチマチマいじって作ったんですよ!

ポケカデッキ構築アプリを作ってた

ブログに何度も書いていますが、トレーディングカードゲームはボッチには厳しい遊戯です*1

対面に対戦相手がいないと楽しむことができません。高校・大学で対戦相手に事欠かない環境であれば、デッキ構築しながら対戦して調整も楽しめると思います。

既婚社会人になるとデッキ構築する余裕がなく、ましてや対戦相手が確保できない問題に行き当たります。対戦相手がいないボッチが練習するには「ひとり回し」していくしかありません。ひとり二役で対戦していきます。やってみるとわかるのですがこれも限界があります。

f:id:ch3cooh393:20190506154342p:plain

カードショップへ行くのは頑張って時間を作るとして、デッキを構築してひとり回しまでする部分をITの力でなんとかできないかと考えました。

カード情報を準備するのが大変だった

アプリを作成するにあたって必要なのは、たくさんあるカード情報をどうやって集めるかです。

日本国内でポケモンカードゲームのカード情報をまとめたサイトはありません。ここでいう「カード情報をまとめたサイト」はカード情報の構造化データを公開しているサイトを指します。カードそのもののレビュー情報に関しては、「たいあたりジム」や「ポケカタクティクス!」などでポケカ界のトップランカーたちが記事を書いています。

海外であれば有志がカード情報をjson形式で公開しています。ただし英語ですし、拡張パックの名前も日本語版とアメリカ版とで異なっています。

ポケカはたしか日本・韓国・アメリカで商品展開が異なっていて、それ以外の言語(フランス語、ドイツ語、イタリア語、スペイン語、ポルトガル語、ロシア語)に関してはアメリカ版準拠になってるんでしたっけ*2

愚直にhtmlをダウンロードしてスクレイピングしてjsonファイルを作成しました。ファイルサイズにして2MB。とても大きいです…… 作成したフォーマットは pokemon-tcg-data 形式に準拠させました。

[
  {
    "id": "sm8-047",
    "convertedRetreatCost": 1,
    "series": "サン&ムーン",
    "retreatCost": [
      "Colorless"
    ],
    "setCode": "sm8",
    "type": [
      "Psychic"
    ],
    "attacks": [
      {
        "text": "ウラになっている自分のサイドのオモテをすべて見てから、もとにもどす。",
        "name": "アイオープナー",
        "convertedEnergyCost": 1,
        "cost": [
          "Colorless"
        ]
      },
      {
        "text": "",
        "damage": "20",
        "name": "つつく",
        "convertedEnergyCost": 2,
        "cost": [
          "Colorless",
          "Colorless"
        ]
      }
    ],
    "weaknesses": [
      {
        "type": "Psychic",
        "value": "×2"
      }
    ],
    "number": "047",
    "supertype": "pokemon",
    "hp": "70",
    "artist": "Hitoshi Ariga",
    "subtype": "basic_pokemon",
    "name": "ベベノム"
  }
]

ポケモン以外にもトレーナー・スタジアムと、約3,300枚分のjsonデータを作りました。

エクストラ?殿堂?聞いたことがないですね……

カード一覧機能

カード一覧機能では、カードの検索とカードの詳細画面を提供しています。

f:id:ch3cooh393:20190506141443p:plainf:id:ch3cooh393:20190506141447p:plain
カードリストとカード詳細画面

カード詳細画面から直接そのカードのFAQページに飛べるようにしました。この機能はとても便利で個人的に一番使っている機能になっています。各カードの画像については、ユーザーが任意で登録してもらう方針です。

デッキリスト機能

デッキリスト機能では、自分が作成したデッキ一覧画面とデッキの詳細画面を提供しています。

f:id:ch3cooh393:20190506145546p:plainf:id:ch3cooh393:20190506145552p:plain
デッキリストとデッキ詳細画面

デッキテスト機能

デッキテスト機能は、デッキをシャッフルして、最初の手札と山札を確認できます。

f:id:ch3cooh393:20190506150346p:plainf:id:ch3cooh393:20190506150350p:plain
デッキテスト機能。デッキをシャッフルして最初の手札と山札を確認することができる

僕がよく使っているクワガノン軸デッキは、速攻でクワガノンを立てる必要があります。初期手札からクワガノンを如何に早く立てるのかイメージトレーニングできます。上図の例ではクワガノンとデンジが手札にいるので、デンジで山札から「ふしぎなアメ」をサーチすれば、2ターン目にクワガノンを立てることができます。

シミュレート機能では、マリガンになった回数とテテフスタートになった回数をチェックすることができます。

「カプ・テテフGX」は手札からベンチに出すと「特性:ワンダータッチ」を使うことができます。山札からサポートカードを1枚サーチすることができるのでとても強力なのですが、カプ・テテフGXスタートになるとワンダータッチが使えずとても弱いです。デッキを見直すために実装しました。

デッキビルド機能

デッキビルド機能は、名前の通りデッキを構築する画面を提供しています。

f:id:ch3cooh393:20190506152010p:plainf:id:ch3cooh393:20190506152015p:plain
デッキを作成する画面

この画面のできが悪くて少し頭を抱えています。

解決できていない問題

デッキ構築するのが難しい問題が残ったままです。

原因としてはカードをピックアップする画面とデッキリストの画面が別々なので、前画面の情報を頭にいれておかないといけない部分にあると考えています。

この問題についてあまり考えずに全機能実装を優先させたのも幸いして、GW中に必要な機能が一通り実装完了できました。ただ、現時点でこのアプリでデッキを構築するのが苦痛なので、適切なUIを考えていかないといけません。

当初の目的だったひとり回し画面も未実装です。

デッキ構築画面が機能していないので、ひとり回し機能の実装に取りかかれるのはまた随分先になりそうです。理想としてはめがいさんの作ってたコンソールアプリみたいな感じ。

まとめ

機能としてまだまだ詰めないといけない部分はたくさんあるので、現時点でのアプリリリースはしませんが、一人GWハッカソンのおかげでコア部分が整いました。

デッキ構築画面が整い次第、飽きる前にアプリリリースしたいと思います。最低限自分で使うようになってから……

(2019/05/16追記)リリースしました!

審査はずいぶん前に通っていましたが、細かい不具合の修正や改善に時間がかかってしまったので、リリースまで時間がかかってしまいました。

デッキビルダー ptcgnote

デッキビルダー ptcgnote

  • KENJI WADA
  • 仕事効率化
  • 無料

*1:結果として、スプラトゥーンやフォートナイトのように空いた時間に雑にマッチングして雑に遊ぶことができるゲームに手が伸びてしまいがちです

*2:噂に聞いた話によると、ミラクルツイン以降で商品展開をグローバルで統一する動きがあるとかなんとか。登場から20年経っても統一できてないのに本当に統一できるものなのでしょうか……