兵どもが鍋の跡

お残しは許しまへんで。

対戦オフ運営用のKP集計ソフトを製作・改良した話(日記)

2024/3/2追記:4/6に広島県で開催予定の三矢オフにて、当ツールを採用いただけることとなりました。

 

 

 

こんばんは、おでんです。今日は構築記事でも単体考察でも、ましてキャンプ記事ですらない話をします。タイトルにある通り、オフ運営用のソフトの話です。日記だと思って読んでもらえれば幸いです。

 


・はじめに

ご存知の方もいらっしゃるかと思いますが、私おでんは広島でポケモンの対戦オフ「うみオフ」の主催をやっています。オフと言っても関東関西でやるような大規模なものではなく、去年からのオフ再開の流れに乗ってようやく人が集まり始めたくらいの、どちらかと言えば交流に寄せた小~中規模オフです。

とはいえ、個人的には多くの人に遊びに来て欲しいですし、それを受け入れられるだけの規模のオフにしたいと考えています。目標としては、オフとしては「皆の遊び場」、対戦オフとしては「来た時よりも強くなる場所」をイメージしています。

・製作の経緯

そんなオフで困ったことが1つ、あります。それは「色々足りない!!!」ことです。

昨今は公式大会と見紛うほどの超大規模オフの登場や、スポンサーがつくような格のあるオフの存在が目立ちますが、うみオフのような規模のオフでは必然的にお金が足りなくなります。足りないというか、赤字です。他のオフがどのような体制かは存じませんが、うみオフではスタッフ全員で赤字を被ります。ですので経費削減は参加者募集と並んで運営上の重要課題なのであります。特にうみオフはサイドイベントで大量のコピーを必要とするので、ペーパーレス化等の合理化を積極的に推進中です。

また、うみオフ固有の問題として、運営が主催のおでん1人しか居ない点が挙げられます。仕事量が問題なのではありません。対戦オフとして必ず行う「KPチェック」「パーティチェック」を、対戦参加と同時に行うことが不可能なことが問題なのです。このおでん、そもそもオフの遠征費を節約するためにうみオフを立ち上げるくらいにはオフを楽しんでいます。運営に回ったとしても対戦はしたいし勝ちたい。しかしながら、身一つでは両方はできません。仮にできたとしても、従来の方式では「KPチェックに時間がかかる」「パーティチェックの際に他のパーティを見てしまう」という問題を避けられません。

以上のような問題を解消し、運営1人で捌ける規模を限界まで拡大する施策が求められるようになりました。これに関して、幸いにも私は去年、ある勉強をしていました。それはプログラミングです。これを学び始めた理由も色々あるのですが…ともかく効率化にうってつけな手段を手に入れていたので、学習の成果を試す意味合いも含めてソフト製作に取りかかるのでした。

・機能の説明

ソフトウェアの紹介は初めてなのでどう書けばいいのやら…とりあえず書けるだけ書いときます。

ソフト名:VirtualStaff(ぼっちちゃんと呼んでます)
対象バージョン:SV藍の円盤
使った言語:Python
使ったライブラリ:openpyxl,PySimpleGUI,glob,
備考:ポケモンのリストを格納するファイルと、関数を格納するファイルを、本体のファイルと別に作成。importにより呼び出すことで使用。

ソフトを起動する前段階として、付属のエクセルファイルにオフの参加者を登録しておきます。うみオフはGoogleフォームで参加申請してるので都合がいいんです。「エクセルファイルなんてねえよ!」という方は、先にソフトを起動します。すると空のファイルが作成されるので、それに参加者を登録します。ソフトの方は一旦落として、改めて起動します。

前段階を終えて起動すると、HN欄は参加者一覧を、ポケモン欄はポケモン名を選択できるようになっているはずです。実際はオフ名欄もファイルの中にあるオフごとのシート一覧を選択できるのですが…初回起動時はそういうのがないので。

ウインドウ真ん中にあるボタンで各種操作をしていきます。例えばオフ名欄に任意のオフ名(例…第9回うみオフ)を記入して「シート作成」を押すと、エクセルファイル内に「第9回うみオフ」のシートが作成されます。この状態でHN欄からHNを選び、更にポケモン名とレンタルIDを記入して「パーティ登録」を押すとパーティがファイルに入力されます。間違えて登録した~という時はHN欄とオフ名欄で「パーティ削除」を押します。各種入力はこれでできます。

入力の次は出力です。HN欄とオフ名欄で「パーティ開示」を押すと、ポケモン欄とレンタルID欄の入力内容を引っ張り出せます。これによりパーティチェックができます。引っ張り出した内容を消したいな~という時は「入力欄クリア」を押せばいいです。これはパーティ登録の途中で消したい時にも使えます。

入力、出力と来たので、最後は集計です。オフ名欄と「提出チェック」により、何人が提出していないかを確認できます。ある程度減ったら、提出してないHNを直接教えてくれます。全員提出してたらこれも教えてくれます。そうしたら最後にオフ名欄と「KP集計」により、KPをまとめたテキストファイルを出力してくれます。

こいつの便利な点として、「運営が中を見ずに済む」「参加者に操作を任せられる程度には単純」を挙げときます。前者は、特にKP集計に関してはボタン1個で終わるため、これのために他参加者のパーティを目に入れる必要がなくなります。後者に関しても、予選で同じブロックだった人にパーティチェックをお願いできるようになることで運営の手間が省け、参加者のパーティを見なくて済みます。運営、つまり私が対戦参加するための条件を満たせるのです。更にペーパーレス化、参加費徴収の際についでにやってもらうことで未提出者の減少にも貢献します(ポケモンの選択にちょっと時間がかかるのですが、その分待っている参加者とお話をする時間に充てています)

・手間取ったこと

第一に、ポケモン名を格納してるファイルの作成にとても時間がかかった点が挙げられます。何分文字列や数値の処理ばかりお勉強してきたので、スクレイピング等の実践的な技術を何も知らなかったものですから。ファイル自体は実は以前から用意できていたのですが、よりによって50音順に並び替えしてあったのが良くなかった。元のファイルは全国図鑑順に並べて、必要に応じて別の並び替えをする形式にしたほうが将来的に便利と判断し、並べ直しました。

他にはテストプレイで1個ずつ不具合を潰してくのがまあまあ手間でした。1個潰して別のところで不具合が出てきて、趣味でソフトウェア作る人ってすげーなと感じた次第です。

・おわりに

以上です。最後までご覧いただきありがとうございました。

あくまでうみオフでの使用を想定したソフトですが、もし自分のオフでも使いたい!という方がいらっしゃいましたら、Twitterにてお声かけください。お送りします(Mac環境で使えるファイルも用意できますが、自分の環境ではテストプレイできないので、Mac環境の方はご注意ください)