大まかな流れ

現在、SING4DATASCIENCE/HSSingLogのセッションにおいてはいくつかのプロセスが存在しています。

  1. 歌唱プレイリスト作成
  2. 歌唱セッション
  3. 歌唱結果集計
  4. メタデータ集計
  5. 結果投稿

この記事においてはこれらのプロセスと、それに使われているツール等に関して紹介していきます。

歌唱プレイリスト作成

歌唱プレイリストの作成は自動化されており、以下のような機能を備えています。

  • 自動選曲抽選システム
  • 固定楽曲システム(現在3曲の楽曲に関して固定)

自動選曲抽選システムは過去の歌唱セッションの情報を元に、これまでに歌唱した回数、及び、最後の歌唱からの日数等などを元に重み付けがされ、抽選がシミュレーションされています。重み付けにより、歌唱回数が少ないものや最後の歌唱から時間が経った楽曲がより高い確率で選曲されるようになっています。

これらはPowerShellで実装されており、抽選ロジックはバイナリモジュール、抽選プロセスに関してはスクリプトモジュールで実装されています。(PowerShell 7を使用。)

自動選曲抽選システムの実行例

歌唱セッション

歌唱プレイリストが作成されると、歌唱指示書が作成されます。このCSVリストでは歌唱する順番及び、現在存在するメタデータが記載されています。

歌唱指示書

歌唱結果集計

歌唱が完了すると、それを集計します。歌唱指示書のうち、Title ID項目を取り出し、集計表で集計していきます。

集計表

集計が完了すると、それをGet-HSLCompiledFileコマンドレットを使用することで検証(スコアに矛盾等がないかを確認)し、登録されているタイトル情報と合成した上で、GitHubにプッシュしているファイルを作成します。

Get-HSLCompiledFile実行例

メタデータ集計

新曲である場合や、現在メタデータが入っていない楽曲がある場合は歌唱指示書の中で入力されていない曲を埋めていき、Update-HSLCsvDataを実行します。このコマンドレットを使用することにより現在、3つある、それぞれのメタデータCSVの情報が更新されます。(3つのメタデータは著作者リスト、リリース日、テンポリストです。)

Update-HSLCsvData実行例

結果投稿

結果を投稿するためにはPythonのスクリプトを使用しています。Pythonのスクリプトには大きく2種類の機能を持っています。(PythonにおいてはpandasMatplotlibを使用しています。)

  • 投稿テキストの作成
  • 投稿グラフの作成
結果投稿生成システム実行例