遺物紹介

この記事は PUC 逆 Advent Calendar 2023 の 8 日目の記事として作成されました。

adventar.org


(逆ってなんだ……?)



前日の記事は養生さんの18ローラー記事です。

note.com

ボルテの埋めはほとんどやってないので、地力向上のためにもそろそろやった方がいいかな~
埋めてないせいでアリーナが弱かったり曲を全然知らなかったりするので、気運があればぼちぼちやりたいですね。


記事概要

null です。

今回は総集編ということで、これまでに作ってきた様々なツールを紹介しようと思います。

本当はもっとぶっ飛んだ記事書きたかったけどネタがないので仕方なし


音ゲー

Score-Tolerance
分類 ユーザースクリプト/ブックマークレット
機能 譜面保管所で許容を表示する
作成年 2021
使用言語 JavaScript
GitHub


音ゲーのサポートツールを作った話 - メモ帳


ボルテのS許容やウニのSSS許容などが気になるときに使えるツールです。

ボルテ
ウニ

TamperMonkey版はPC限定ですがページが自動で書き換わるので便利です。
ブックマークレット版はスマホでも使えます。

実装は譜面保管所のHTML構造に完全に依存しているため、リニューアルされると動かなくなります。そのため現在は動きません。

……と書くつもりでしたが、時間があったので現在のページで動くように書き換えておきました。あとついでにオンゲキも追加しました。
よかったら使ってみてください。

オンゲキ

また動かなくなった場合でも一言くれれば直します(時間があれば)


chunifil

chunifil

分類 Web サイト
機能 CHUNITHM の埋めを支援する
作成年 2022
使用言語 HTML, CSS, JavaScript
GitHub

note.com

ウニの下埋めモチベを上げるために作りました。

理論値埋めをするにあたって「何から触ればいいかわからない」という状態に陥ってしまったので、課題曲を提示してくれるツールがあればいいと思い実装に踏み切りました。
実際これのおかげでかなり理論値が埋まりました。

そこそこ気合入れて作ったので、自分が今まで作った成果物の中では多分一番ちゃんとしてます。
chunirec は API が整備されているのでこういうのも割と簡単に作れます。便利ですね。


ちなみに当の本人は現在下埋めから逃げて4曲しか収録されてないチュウニズムをやっています。
全AJしたらやるかもですが、他の音ゲーもやりたいし音ゲー以外にもやりたいこと/やらないといけないことが大量にあるので、モチベーションが残ってたらやってもいいかなくらいの気持ちでいます。


PrskEx
分類 Web サイト
機能 プロセカのリザルトのEXスコア(後述)を計算する
作成年 2023
使用言語 HTML, CSS, JavaScript
GitHub

PrskEx

部内のIRでEXスコア制 (PERFECT×3 + GREAT×2 + GOOD) が採用されたため、リザルト提出の負担を減らすために作成しました。

がんばりポイントとして、画像から文字データを抽出する技術(OCR)を組み込んでいます。
OCR のライブラリは Tesseract.js を用いています。

ただそのまま画像を突っ込んでも謎の文字列しか得られないので、実際には

  1. リザルトがある領域をざっくり切り取る
  2. 画像をグレースケールに変換し、さらに白黒を反転させる
  3. コントラストを特定の値に変換する
  4. OCR を行い、英数字から成る文字列の列を抽出する
  5. 数字以外を消し、4桁の整数が4つ得られたら成功。そうでなければ、ハイパーパラメータを変更して1.に戻る

という流れで抽出しています。
ハイパーパラメータはそれっぽいものを事前に手動で列挙しておき、それらを全て試してうまくいったものを採用するという実装になっています。

リザルト提供:R2様

GitHub Pages 上で公開する Web サイトは静的なものに限られるため、JavaScript のみで完結させるのが結構大変でした。
実際 Python で試作するのはそれほど手間ではありませんでしたが、JavaScript に移植するのに多くの時間を費やした記憶があります。


これもアプデの影響で動かなくなっていたので直しました。
新UIに対応させた後も何故か激唱Full(APPEND)だけ読み取れなくて唸っていたら、昔書いた「読み取った数値が4000以上なら認識ミスとする」(2本指音ゲーに4000ノーツ越え譜面があるわけないので)という処理が原因で爆笑しました


あと、今調べたら先行研究がありました。参考にしたかった…

qiita.com


逆紅白戦2023 スプレッドシート更新自動化
分類 スクリプト
機能 対戦相手の chunirec を監視し、スプレッドシートに反映する
作成年 2023
使用言語 Google App Script (JavaScript)
GitHub

CHUNITHM の部内チーム戦である逆紅白戦の際に作成したスクリプトです。

誰が選曲したかわからない楽曲群から1人1曲選んでそれを選んだ人と戦う、というのを自選他選ともに行うルールのため、誰が選んだのかを知るためにスコアの更新を確認する必要がありました。
そこで chunirec のスコアを監視してスプレッドシートに反映させることにしました。chunirec を更新していない人には使えませんでしたが、労力が減ったのでよかったと思います。またやりたいね


音ゲー以外編

千葉大生向けGPA計算ツール
分類 ブックマークレット
機能 学生ポータルで GPA を計算する
作成年 2021
使用言語 JavaScript
GitHub


千葉大生向けGPA計算ツール - メモ帳

学生ポータルがリニューアル直後で GPA の表示機能がなかった時に作りました。
現在は公式で GPA を計算してくれるので、完全に過去のものですね。


スプラトゥーン疑似ブキチ杯bot
分類 Discord Bot
機能 Discord のコマンドでブキのランセレを行う
作成年 2023
使用言語 JavaScript(, Google App Script)
GitHub ×


身内でスプラトゥーンをやるための discord サーバーであるクラブラ禁止鯖で動く bot です。

ブキがランダムに配布される「ブキチ杯」をプラべでやったら楽しかったので、勉強がてら作ってみました。

spoiler タグを使っているため他チームのブキは見えないようになっています。

クリック前
クリック後

現在は停止中。


おわりに

今までの成果物を列挙してみました。
他にも研究やらインターンやらで色々作ってますが、ここでは紹介できないので割愛。

Web 関連は授業では全くやらないので、基本的に独学で習得しました。
とはいっても何からやればいいかわからなかったので、月額制の学習サービスに1か月だけ登録して一通り勉強しました。
それからは既存のスクリプトやF12とにらめっこしつつ見様見真似で色々作っています。

何かを作るときや不慣れな言語でコーディングする際は、必ずと言っていいほど ChatGPT を使っています。
正直これを使いこなせるかどうかで作業効率に明確な差が出るように思います。
以下は使用例:

使用例1
使用例2


あとこんだけWeb開発しておいてなんですが、フロントエンドは大して好きじゃないです。
表示が思い通りにいかずくねくねしてる時間が虚無すぎるのと、JavaScript がカスなのが大きな理由です。できれば TypeScript を使いたかったんですが、GitHub Pages で使えないんですよね……

でも自分の作ったものの動く様がわかりやすいので、達成感はあると思います。


そろそろバックエンドとかも触ってみたいですね~