#サービスの概要
自分はE-sports大会運営を補助するBotのサービスを公開しました。
E-sportsの大会の運営に携わったことのある人はわかるかもしれませんが、人数が多い大会であればあるほど結果の集計は地獄のような作業になります。
基本的な大会の集計作業の流れ
試合が終わり次第スプレッドシートに結果を手入力
↓
全員分記録したことを目視で確認
↓
デザイン担当にデータを渡し集計画像を作成し配信側に渡す
また、自分の経験上その作業が遅くなればなるほど配信の同接が減るとともにコメント欄荒れてきます
そこで、自分が開発したサービスはゲーム上の通話や大会の際に使われるDiscord.Inc社が開発したDiscordとGoogle社のSpread sheetを連携させ、
早さと正確性が求められる集計作業から集計画像の作成までを自動化するサービスです。
このサービスを利用するには
①大会の概要やゲームの種類をweb上で入力してもらう
②提供したゲームの種類に合ったSpreadシートのテンプレートをコピーして、サービスアカウントを追加します。
③discordのBotをサーバーに追加する
discordBotのコマンドリスト
:point <チーム番号> \ <順位>
チーム番号のスプレッドシートにチームのポイントを記録
:img
集計したポイントのランキングから順位画像を作成
:send
Botの指示に従いオプションを指定し、指定したコンテンツを指定したカテゴリのチャンネルに一斉に送信する。
以上が主要なコマンドとなっており、サブコマンドとしてdiscord上でPythonコードが実行できるもの、アラームや大会中に各VCに入り音声による連絡を行うものを実装しています。
#使用した言語、仕組み
各オプションを指定するためのwebサイトのバックエンドの開発にはJavaScript
discordのBot,Spreadシートの操作にはPython、
データベースには学生の自分サーバーでデータベースを使うのためのお金がないのでスプレッドシートを代用として使い、2週間で制作しました。
スプレッドシートをデータベースとして利用するにはいくつか利点があり、
どこからでもアクセスできること。
綺麗にまとまって見やすくデータ操作がしやすいこと
などが挙げられます
今回Botを作るために色んなモジュールに頼りました。
Pythonはライブラリが豊富で適切なモジュールを用いることで簡単に機能を実装できます。
spreadsheet操作 →
gspread
discord botの実装 →discord.py
imgの生産 →PIL
#開発にあたって
今回自分はE-sports大会の運営を務めて
空いている時間はパソコンの前に張り付き作業をする日々を経験したことをきっかけに開発に至りました、
まず、自分が苦労した作業を紙に書き出し、その中からプログラミング技術で解決できそうな作業を選びました。
プログラミングで解決できなさそうな問題に関しては諦めるのではなく、作業工程を分割して考え、ここだけなら!という部分の実装にも取り組みました。
公開直後は自分だけで行ったテストの繰り返しでは直面しなかったエラーが出て苦労しましたが、現在は安定しており大規模な大会との契約も頂けました。
##サービスを初めて公開して学んだこと
###まずは紙に書き出す!(開発プロセス設計の重要性)
自分はこれを後悔する以前に興味本位で自分の推しがライブ配信を始めるタイミングで通知を送るBotを計画していましたが、
ところどころで予測できなかった問題に直面し挫折しました。
今回は一つ一つの設計計画を丁寧に取り掛かり、データベースに用いるものも複数検討し、汚いながら紙にまとめて計画しました。
紙にまとめることで自分の頭の中で整理できなかったものを可視化することができ、新しいアイディアに繋がりました。
開発プロセスの設計はビルで例えると基礎部分にあたります。
当然基礎がしっかりしていなければ、不安定で脆いビル(サービス)となり失敗に繋がりかねないです。
###そのサービスはどのような価値を生み出すのかを考える
今回自分はそのサービスが実現するとどのような人の役に立ち、
どのような影響をもたらすのかを考えてから設計に取り掛かり、
設計の際はサービスのターゲットとなる人の立場や目線を合わせ操作性を意識したサービスを目指し、リアクション操作などを多く使わさせていただきました。
#今後の予定
契約数も増えており、特に問題なく運用できているため契約で得られたお金を使ってデータベースを使えるプランに変更し、それに対応したコードに修正をしようと考えています。
また、それと並行して今後はE-sports界隈に留まらず今回のサービス開発を通し、学べたことを活かして社会的ニーズに適したBotの開発に取り組み、高校に進学するタイミングで公開したいと考えています