BEMANI PRO LEAGUE SEASON3(IIDX)タイムス 編集後記

こんにちは。"観るe"あでりーです。今このリード文を書いているのは7月上旬、BPLS3が開幕した直後です。
BPLS2から引き続き毎週の放送を観て感想記事を書いてきました。ここでは、BPLS3で記事を書くにあたり苦労・試行錯誤した点を、リアルタイムで残していきます。

※AI関連のタグからいらっしゃった方へ
このnoteは、eスポーツプロリーグ"BEMANI PRO LEAGUE"の観戦記を毎週書くにあたって、ChatGPTをメインとしたAIを活用した記録です。観戦記はこちらのマガジンにまとめてあります。


ChatGPT登場

2023/2月ごろから、ChatGPT Plusが世間で騒がれるようになりました。
この噂を聞きつけた私は「今回のBPL順位予想はAIにやらせたら面白いのではないか。。。?」と思い調査を始めました。軽く調べた結果、過去の大会データや楽曲データのスクレイピング、Twitter(X)等での評判のクロールなどクリアするハードルが高すぎてAI予想自体は断念しました。しかしながらBPLとは関係なく、AI関連のツールは諸々触って遊んでいました。

BPLS3開幕直前

BPLS3の開幕にあたり、今回も毎週記事を書くのかちょっと悩んでいました。
実はBPLS2タイムスを毎週書いていた時の裏テーマは『自分の文章生成ペースを測る』でした。ここでは結果として1,000文字/hを週刊で生成できるという値が得られ、その後記事を書く際の基礎値として役立ちました。(一方でプロライターと比較するとペースが遅く、仮に他分野で仕事としてライターをやろうとしても割に合わないことも分かりました)
BPLS3でも毎週記事を書くとして、概ね記事が2,000文字なので毎週2hかかる。この負担感を減らせないかと考えるうちに『AIを活用する』ことを思いつき、これをBPLS3タイムスの裏テーマに据えて記事執筆とともにスキルアップに挑むことにしました。結局AIの勉強とか試行錯誤で時間かかりそうだけどまあいいか。
なかなかこれだけのこと、ただただ好きだけではできない、やるなら何か持って帰らなくちゃね。

第1節(1~4試合)

戦況の執筆

正直なところ自分の記事で最も書きたいところは2章以降になっており、BPLS2でも1章の戦況に関する記事は執筆にあたり実は若干負担に感じていました。まずはここからAIを使ってみるか。

  • BPLS2で書いた戦況の文章を読み込ませ、クセを覚えさせる

  • 試合の結果と3~4点の感想を箇条書きしたものを与えて記事を生成させる

結果として、かなり負担感が減りました。頭から文章を書いて道中行きつ戻りつしながら直すタイプだったので最終的にミス確認が欠かせなかったのですが、細かい煩雑な"てにをは"のチェックや重複表現の監視から解放され、執筆時間そのものよりも負担感が大いに軽減されました。また、細かいところでは両チームと得点だけ書くと勝敗を勝手に判定してくれるので、コピペからの勝利チーム記載の部分が省略できたのも案外良い感じです。
確かに、表現にはまだ人間の感性が足りないぎこちなさが残っていますが、その結果は概ね満足のいくものでした。2周目ではAIによる文章生成を複数パターン試すことで、表現の不満点をカバー。
あと、課題は固有名詞の明示を忘れないこと。チーム名は試合結果より判断してくれるし選手はXX選手と書けばOKですが、『明鏡止水』を曲だと言わずに読み込ませたときに挙動が怪しくなりました。ここは注意しないと。

シャレの生成

Twitter投稿用の文章をAIに頼るつもりは無かったのですが、第2週で「みんなでBPL観てクレオパトラ」という衝撃的なシャレがでてきたため、対抗できる表現をChatGPTに相談してみました。
が、あまりにわからんちんなのでブチギレw。

勝敗や3賞の集計

さて第1週で3賞の発表がありませんでした。当時、ChatGPTではCode Interpreter(後のAdvanced Data Analysis、ですが本記事中はCode Interpreterで通します)…Pythonで書けちゃうことは概ねなんでもできる機能…がリリースされ盛り上がっていたため、これを使った集計と発表画像の生成に挑戦してみることにしました。

  • データを手作りする
    本当はデータ構造もAIに考えさせるのが面白いかもしれないですが、まずここは自分で作ることにしました。(注:当時のデータ構造は課題曲が被ったときに対応できない、同じ曲のANOTHERとLEGENDARIAが分けられない点で不完全なことご承知おきください)
    このとき、データに記載する情報を最小限にすることを心掛けました。

    • TEAMテーブル PLAYER/TEAM

    • GAMEテーブル GAME/MATCH/PLAYER/MUSIC/SCORE/SELF(自選か否か、カウンター賞用)

    • MUSICテーブル MUSIC/MAXSCORE

  • データをアップロードして、集計ルールを覚えさせる
    データには敢えて各曲の勝敗や試合全体の勝敗を記載せず、集計ルールを覚えさせて勝敗等は生成させることにしました。

  • 試合全体の勝敗や各賞を算出させる

これはうまくいきました。

トップスコア賞画像の生成

続いて、トップスコア賞の結果をBPLS2の発表画像に流し込むことができないかやってみました。

  • BPLS2の動画からトップスコア賞の発表画像をキャプチャ

  • 画像をアップロードしつつ書かれていることをインプットし、結果を読み取らせる

  • 新しい結果(先ほどのトップスコア賞集計結果)を与え、同じ画像で結果だけ挿げ替えたものを出力してもらう

画像からの読み取りはかなりの精度でした。これは使えそうですが、ChatGPT以外のAIも結構得意としているようで、後日比較をしてみたいです。
一方で結果の挿げ替えまではできませんでした。画像を保存していなくて申し訳ないですが、まあできてきたものはExcelのセルに下線・背景色をつけた程度のものです。これは得意領域ではなかったらしい。

第2節(5~8試合)

戦況の執筆

ChatGPTの生成結果は決して悪いものではなかったですが、ここでBing AIとGoogle Bardにも同じプロンプト用いて第5試合を執筆してもらいました。
結果としてChatGPTがまず1行目に試合結果を記述するフォーマットを守ってくれること、また言い換えのテクニックが他2つについて優れていたため、ChatGPTの利用を継続することにしました。
ところでHumanizeプラグイン使いたかったけど登録要だったので断念。これを使えばより人間臭くできそう。

メガネ戦績の集計

第7,第8試合の記事でメガネを掛けている人とメガネを掛けていない人の集計を試みました。
まずBPLS2の選手一覧を作るのが面倒なので、Webpilotプラグインを利用しWikipediaから一覧を拾って整形させました。
その後メガネON/OFFのデータ(これは各選手の試合を目視)とBPLS2の戦績をスプレッドシート入力(さすがにここはスクレイピングをどうやっていいかわからず手入力)して集計に入りましたが、ここで前節のトップスコア賞の集計経験が活きました。CodeInterpreterを使って集計ルールを教え込ませると、なんと[GLASSESシートのON/OFFの値]を勝手にメガネをかけている・かけていないと判断したうえで計算してくれました。

第3節(9~12試合)

戦況の執筆2

今まで戦況の執筆はうまくいっていましたが、ここで2つ新しい要素を導入してみることにしました。
1.試合ルールの理解
WebPilotプラグインを用いてレギュラーステージのルールを覚えさせてみました。残念ながら結果の再現性がなく、かなり良い結果になるときもあれば全く理解してくれないケースもありました。
2.試合動画の読み込み
VoxScriptプラグインを使って試合動画を読み込み、試合の内容を理解させようとしました。しかし、おそらくBPLが他スポーツと異なるものであるためか、そもそもこの試合がどんなものかを外形的に説明するだけに留まりました。
結果的に両方ともうまくいかないと判断し、試合ルールの理解でうまくいった時の内容だけをコピーして利用することにしました。

セカンドステージの展望

第9・10試合の記事でセカンドステージの展望を記載しました。ここでは各チームへの寸評は真面目に書きつつ、最終的に『全チーム同点』というオチにしましたが、ここで全チーム勝ち点・ポイントが全て並ぶ組み合わせを算出するためにChatGPT/Code Interpreterを使ってみました。
結果は失敗。以下のようなデータを使ったのですが

残念ながら勝ち点9で並ぶような仮定すらできませんでした。今後試合予定でPOINTが入っていない=NaNになっている列の評価がうまくできないようです。また、組み合わせを算出する戦略が極端、ひとまず12-0として置いてから考えるため、ゴールまでが遠かったようです。

第4節以降(13試合~)

3賞の集計

9月に入り仕事が忙しくなること、またここから先書きたいネタがかなり詰まっていたので、しばらくは戦況の記載はChatGPTに助けてもらいつつ新しいことを行うのはしばらくお休みとしました。
しかしながらレギュラーステージ最終週の前の週(最終週からは"贈る言葉"の予定、今回は最終週前に脱落チームが決まったため贈る言葉を一週繰り上げ)にはBPLS2に引き続き3賞の発表を行うことは決めており、まずは今回の3賞を
PUCスター : FULL COMBOが一番多い人
ベストバディ賞 : 1試合中で2タテを同時に決めた回数が多い2人
EXCEED GEAR賞 : メガネをかけている人の中で、メガネをかけていない人から最も勝利した人
に定め、しばらくはデータ整理(試合結果とBPLS3選手のメガネ着用or非着用、FULL COMBOか否か)に努めました。
9月末、レギュラーステージの全試合が終わったところで満を持してCodeInterpreterで集計に入りました。結果として3賞共に集計に成功し、タイムスの執筆間隔を遅らせることなく発表することができました。
実はExcelやAccessの関数、VBAはそこそこできるので手集計もできなくはないのですが、第1節と同様データの入力を極力絞り、勝敗とか獲得pointは記載せずルールを覚えさせて算出することにしたため、道中のデータ入力の手間や当日の集計の負担はそこそこ減ったのではないかと思います。

校正の依頼

前述のとおり戦況はChatGPTに助けてもらっていたのですが、時には「自分で書いた方がいい文章では?」と思う時も増えました。
そこで文章を自分で書いてしまい、校正を依頼するスタイルも取り入れてみました。

画像生成(2023/7)

結局没にしましたが、なぜか"可愛くてごめん"の替え歌"Chu!強すぎてごめん"を作ろうとしていました。(誰で作ろうとしていたかは伏せますが、S2からずっと強すぎるあの人です。アイドルみもあるでしょ?)
Leonardo.aiでAI canvasがリリースされたばっかりで、これを用いて原曲の背景を延長することはできましたが、

背景を延長したもの

肝心の選手画像から背景を取り除くことができず、作った背景と合成できなかったため断念。Adobe Fireflyも試しましたがダメでした。普通の画像合成ソフトを使えばいけたかもしれませんが、あくまでAIがテーマなので。

画像生成(2023/10)

ClipDropなる新しいツールの話を聞き試してみます。背景除去ができるとのことで選手画像から除去。さらにAdobe FireFlyでロゴを作って。。。できた!

あれ?人が変わっていませんか?

クォーターファイナル以降

クォーターファイナル以降はAIの利用はしませんでした。元々贈る言葉にAIを使うつもりがないうえ、名勝負が多くて今までの文体を崩したくなったから。こういうときは逆にAIは不便です。

終わりに

個人的には非常に勉強になりました。AI自体は今後仕事なり他事なりに活用していこうと思いますが、来シーズンは同じやり方でタイムスを書き続けることはないと思います。まぁ楽しかったは楽しかったのですが、わりと消耗しました。(特に全チーム同点の試算は丸々二晩かかって成果ゼロだったし。。。!)
そんなこと言いながらもしSEASON4でもタイムスを書いていたら、心の中で『こいつ裏でなんかやってやがるぞ』と思ってください。今はネタもパッと思い浮かばないのであり得ないですけど。

さてここから先には利用したプロンプト等を記載しています。なんと私初の有料記事です!
といっても○○式プロンプトみたいに凝りに凝ってAIを極限まで使い倒す感じではありません。失敗例もたくさんあります。むしろリアルなAI活用の姿をご覧になりたい物好きな方のみ先にお進みください。
まあ道中それなりに苦労したので、お小遣い程度の有料化ご容赦くださいな。

ここから先は

29,149字 / 22画像

¥ 100

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?