美味しい平面の煮込み方

意味はあるが特に意味はない事を書く

Discordチャンネルログをちょっと整形してみる

こんにちは、自称平面人、哀しき社会の歯車、生産性がない陰キャ人間です。

今回はDIscordのチャンネルに書き込んだログをファイルとしてダウンロードできる『DiscordChatExporter』さんで落としたHTMLファイルを編集していいかんじにしようって思っていじった時の備忘録をざっくり残しておきます。

本記事はチャンネルログに表示する画像や文字、色の編集をぱぱっと行いたい人向けの記事のため詳細な解説は割愛するものとします。(書いてるわたしもにわかのため)

どのへんいじればいいか見たい人は記事作成のきっかけをスキップして必要な部分を閲覧してください。

記事作成のきっかけ

チャンネルログを落とす用途のひとつとして、TRPGのテキストログをDiscordに残して最終的に見返す用に落とすことが多かったんです。
(少なくとも私は。。。)


TRPGについて
テーブルトークロールプレイングゲームの略称。
ルールブックに記載されたルールやシナリオをもとにプレイヤー(実際の人間)がキャラクター(作ったキャラ)を演じたり行動を宣言するなどして遊ぶ。
歴史が長いので遊び方とかシステムとか多岐に渡る。ボードゲームみたいなものもあれば、物語を作っていくタイプもある。
あくまでTRPG=クトゥルフ神話TRPGではない。(戒め)
クトゥルフ神話TRPGはあくまでデジタルゲームでいうところのハードウェアの一種。
テーブルトークとあるので初期の頃は現地でプレイヤーが集まって会話によってゲームを作っていたが近年はネットの発展もあって必ず同じ場所にいる必要もなくなり、会話もチャットで代用することが可能になったりしている。


で、Discordで遊ぶこともあるんですけどこれだと発言者=ディスコードのアカウント名とかだったりして読み返す時になんかこう、地味に没入感がないんですよね。私はね。少なくともね。
自キャラが自分の名前で発言してるの見るのがつらい。自キャラに殺意を抱くタイプ。

なのでログをダウンロードしたら発言者名をプレイヤーキャラクター名に差し替えたりしたかったんです。。。はい。
その時の作業備忘録が以下となります。


DiscordChatExporterの準備、Discord自アカウントへトークン認証、チャンネルログのダウンロード
ここまでは色んなブログで紹介されているので以下は編集したいログファイルが手元にある前提で解説します

あとは作業が楽になるのでVS Codeでファイルを開いて編集できると楽かな~って思います。

それではよろしくお願いいたします。



発言者アイコン画像を差替える

発言者アイコン画像はimgタグのsrcにURLが入っているのでここを見に行っています。

任意のものに差し替える場合はURL部分を書き換えればOKです。
個人用ログであればローカルファイルのパスを指定してしまって良いですし、他人に共有したい場合はファイル共有サイトに画像をアップロードして、そのURLを指定しておけばOKです。

例えばですがDropBoxにアップロードした画像を使う場合は
www.dropbox.com部分を dl.dropboxusercontent.comに差し替えると綺麗に見えるようになります。
私がログの画像置き換える時にDropBoxに使いたい画像置いてるので一応の参考までに。

今回はこの画像に差し替えてみます
こんな感じで置き換えできました

発言者名を書き換える

あんまよくわかってないですがchat_log_authorクラスのtitleと、横にある表示している名称部分両方書き換えておけばOKです。



発言者名の色を変更する

ここに書き込み単位で設定されているので、後はお好みの色に変えておきましょう。



書き込みを段落分けする

HTMLでログを書いているだけなので、書き込みグループを定義してるっぽいdivタグ『

』を足してあげればOKです。
あとはそれっぽく見えるように

修正前の段階だとこんなかんじ
<div class=chatlog__message-group><div id=chatlog__message-container-1000677559777890434 class=chatlog__message-container data-message-id=1000677559777890434><div class=chatlog__message><div class=chatlog__message-aside><img class=chatlog__avatar src="https://cdn.discordapp.com/avatars/247758172947873793/a60232d660b5baaacfc0239b89b413fb.png?size=512" alt=Avatar loading=lazy></div><div class=chatlog__message-primary><div class=chatlog__header><span class=chatlog__author style=color:rgb(231,76,60) title=ほーずき/Hozuki#9655 data-user-id=247758172947873793>ほーずき/Hozuki</span> <span class=chatlog__timestamp><a href=#chatlog__message-container-1000677559777890434>24-Jul-22 05:15 PM</a></span></div><div class="chatlog__content chatlog__markdown"><span class=chatlog__markdown-preserve>草生やすなし</span></div></div></div></div>
<div id=chatlog__message-container-1000677602584957009 class=chatlog__message-container data-message-id=1000677602584957009><div class=chatlog__message><div class=chatlog__message-aside><div class=chatlog__short-timestamp title="24-Jul-22 05:15 PM">17:15</div></div><div class=chatlog__message-primary><div class="chatlog__content chatlog__markdown"><span class=chatlog__markdown-preserve>こっちは連続投稿のテスト</span></div></div></div></div></div>
タグを補って書き込み自体を分けた後
<div class=chatlog__message-group><div id=chatlog__message-container-1000677559777890434 class=chatlog__message-container data-message-id=1000677559777890434><div class=chatlog__message><div class=chatlog__message-aside><img class=chatlog__avatar src="https://cdn.discordapp.com/avatars/247758172947873793/a60232d660b5baaacfc0239b89b413fb.png?size=512" alt=Avatar loading=lazy></div><div class=chatlog__message-primary><div class=chatlog__header><span class=chatlog__author style=color:rgb(231,76,60) title=ほーずき/Hozuki#9655 data-user-id=247758172947873793>ほーずき/Hozuki</span> <span class=chatlog__timestamp><a href=#chatlog__message-container-1000677559777890434>24-Jul-22 05:15 PM</a></span></div><div class="chatlog__content chatlog__markdown"><span class=chatlog__markdown-preserve>草生やすなし</span></div></div></div></div>
<div class=chatlog__message-group></div><div id=chatlog__message-container-1000677602584957009 class=chatlog__message-container data-message-id=1000677602584957009><div class=chatlog__message><div class=chatlog__message-aside><img class=chatlog__avatar src="https://cdn.discordapp.com/avatars/247758172947873793/a60232d660b5baaacfc0239b89b413fb.png?size=512" alt=Avatar loading=lazy></div><div class=chatlog__message-primary><div class=chatlog__header><span class=chatlog__author style=color:rgb(231,76,60) title=ほーずき/Hozuki#9655 data-user-id=247758172947873793>ほーずき/Hozuki</span> <span class=chatlog__timestamp><a href=#chatlog__message-container-1000677559777890434>24-Jul-22 05:15 PM</a></span></div><div class="chatlog__content chatlog__markdown"><span class=chatlog__markdown-preserve>こっちは連続投稿のテスト</span></div></div></div></div></div></div>

私が作業するときは下記手順で対応しています。
①div class=chatlog__message-groupを追加
②書き込みの定義をしているタグの一番後ろに閉じる方のタグが並んでいるので/divを1個追加
③ほかの書き込みにあるimgタグから実際の書き込み内容(上記例では草生やすなし って書いてあるところ)直前までをコピー
④div class=chatlog__message-asideタグの後ろから、実際の書き込みの手前(上記例ではこっちは連続投稿のテスト って書いてあるところ)までを上書き貼り付け



その他追記した方が良さそうなものがあれば記事を更新しておきます。
記載に誤りがあるもの等あればTwitterで連絡お願い致します。

Smash.ggのAPIに-2くらいつけられた所から大会結果を抜き出すまでキャラ対した結果

f:id:hzk_428:20211211205344p:plain
特に意味のないげむち(みすたーげーむあんどうぉっち)

顔と顔を合わせない時代だからこそ大袈裟に感情は伝えろ!!!!!!!!!!!
わかりました!!!!!!!!!!!!!!!!!!!
私、ちゃんとはっきり気持ちを伝えます!!!!!!!!!!!!!!!!!!!!!!!!!!!






人類滅
bどうも平面人です。

※この記事は寝椅子さん(寝椅子 (@newenwere) | Twitter)主催の
スマブラ Advent Calendar 2021
の12月12日担当で作成した記事です。


2021年もあっと言う間に最終盤。
日本国内の大型オフ大会とか再開し始めましたね~~~~~~~~~~~👼👼👼👼👼👼👼👼👼
激動の一年だ。


お気持ち表明はここまで。
あ、去年のアドベンドカレンダーではこういう記事を投稿してました。平面人です。
キモいというか、お友達ができなさそうな内容だな!!!!

hzk-428.hatenablog.com




とても冗長なブログなため開幕目次です。
対戦よろしくお願い致します。

■目次

1.今年のテーマと書いたきっかけと宣伝のおはなし

今年は平面人がどーのとかの話題ではありませぬ。
いんふぉめ~~~しょんてくのろじ~~~というか、一種のでぇ~~~え~~~っくすなお話です。


仁義なき戦いのはじまり

皆さん、smash.ggはご存じでしょうか?



そうですね、スマブラをはじめとした対戦ゲームの大会管理、トーナメント、参加者管理と大会の参加等ができるサービスですね。
ここに登録しておけば他に大会管理とトナメ管理が一括でできるサービスが実質ないようなものなので
とりあえず大会参加する時便利になるので登録&本名非公開設定しておくと良いでしょう。

smash.gg



ちなみにAPIが公開されており、例えばAPI経由でデータ取得、トーナメント管理等ができるようになっております。
まあ用意されているインターフェースのものしか取れないのは悪しからずではありますが。


要するに過去に開催された大会と参加者、リザルト情報の取得が可能になっています。
いちいち全部ブラウザから手でコピーしたら4ねるのでお助かりです。


ただ先に言っておくとこのAPI、いわゆるREST APIではないAPIで要は
すんげぇわかりづらいという問題があります。


ドキュメントも英語しかないため、ITおよび英語にアレルギーがある場合、即死するような状況。
参考になるような個人記事も殆どない。
日本語で一番参考になるのがこちらの記事。

www.youtube.com






あ、ちがうちがうこっちこっち。

qiita.com




あ、でもチャンネル登録みんなしようね。


話を戻しますね。
このブログを書くきっかけとなったのはP-さん主催のJPR作成プロジェクトでした。

JPR作ろうぜプロジェクトについて

名の通りJPR(ジャパンランキング、スマブラSPのオフライン大会実績に基づくランキング)を作るプロジェクト。
目的はいわゆる名刺的な意味合いでのプレイヤーの強さの共通基準として使えるようにするため。
あとはデータについては篝火のシーディングで使うため。

プロジェクト人員は篝火スタッフさんが中心。
ほーずきさんはスタッフではないのですが(何ならクロブラのスタッフも降りた)
技術面フォローの面でお呼ばれしました。
仕事でアプリ作らない方の人間だけどまあいいでしょう!

このプロジェクトの大きなタスクは以下の2つと認識しています。

①大会のシード決め、シード序列設定に置いて信頼できるランキングを作成する
②上記目標の達成のため、大会情報を長期的に取得、保存、管理する

①達成のためには②の達成が先行しないといけないです。
①については算出式や条件となる大会やポイント計算とかいろいろあるけど
とりあえず②をやらないと話がはじまらない!
ってことでほーずきさんはSmash.ggのAPIと殴り合いをはじめたのでした。めでたし。


なおプロジェクト内で作成するJPRはじゃくさん作成のJJPRをはじめとした
個人作成のものとはまた違う観点での作成となります。

日本国内ランキング作成に興味のある方は主催がP-さんなのでこちらにお問い合わせいただければと思います。
モチベがある人が多いに越したことがありません!!
むしろランキング作成やAPIに関しては有識者ニキ様各位には
どしどし参加いただければ!!!!!!!!助かります!!!!!!!!!!!!
ぜひぜひよろしくお願い致します。

twitter.com

ブログを書いた動機

ま、まだ全然めでたしな地点には到達してませんけどね!
兎にも角にも取っ付きにくいAPIとなんとか少しは和解できたっぽいです。

JPR作成のために大会データの取得が必要だよ

APIまじでわかりづらいよう ぬぁぁ

今後同じ場所で苦戦する人が出ないように備忘録をつけよう

お、ちょうどアドベンドカレンダー企画あるじゃん。じゃ、これで。。。

これがブログを書いたきっかけです。


あわよくば誰か私よりも使いこなして便利なサービスを作ってくれねぇかなぁ~~~~という欲はあります。

最初はいいけどこのクエリがな……な……
少なくとも普段PCをがっつり触らないお仕事される方もれなく全員バイバイ不可避なので……
参考になれば幸いです。

次からはAPI使ってみよう~サンプルクエリ~ほーずきさん脳内のおはなしです。


2.とりあえずAPIを叩いてみよう、話はそれからだ

Smashggに限らず、API実行のためには認証をしてくれるトークンの発行が必要です。
トークン……人間がユーザ名とパスワードを打ってエンターを押す行為が、一意の文字列になったもの。これを送りつければデータ取得等の行動が認証される。今はそういうことにしておいてください。

やり方は前述の記事内に紹介があるリンクを踏んで、Create New Tokenをするだけ。
出力されたトークン文字列は、忘れないようメモ等しましょう。

qiita.com


トークンが手に入ったらAPIを実行できます。
今さらAPIについて軽く説明すると要は条件とか指示を特定の書式で書いて
Enterすればなんかしてくれるモノと考えておいてください。
ネット経由でトークンによる認証さえ通っちゃえばなんかのソフトとか入れずに使えるので便利!!!

ですが、今回はどなたでもお試しいただきたいという気持ちがあるので
SmashggのAPI公式で用意されている実行環境を使います。

以下下記リンク先にあるエクスプローラーでデータ取得等行うことにします。
まあ理解が金トロッコの速度に追い付いている方は
適当にcurlできる環境でぽちぽちすればいいのかなと思います。

developer.smash.gg


f:id:hzk_428:20211206215814p:plain

こんな画面が出て来ます。テスト実行のため、以下手順を実行してみましょう。


トークンを左上のAuth tokenの欄に貼り付ける


②下記クエリをAuth tokenの欄の真下にある欄に貼り付ける

query TournamentQuery($slug: String!) {
  tournament(slug: $slug) {
    id,
    name,
    countryCode,
    addrState,
    city,
    isOnline,
    startAt,
    numAttendees
  }
}

なんの呪文なのかは今は何も考えないでおいてください。


③画面の左下が実はまた別の欄があるので上に引っ張っておく

f:id:hzk_428:20211206220211p:plain
初見殺しポイントです

境界のあたりにマウスポインタを置くとサイズ調整の表示に変わるので
見える位置になる程度に移動させておいてください。


④Query Variablesとある欄に下記を入力。思考停止で。

{
  "slug": "5-kagaribi-5-1"
}


⑤Auth tokenの欄の左にあるCD再生ボタンみたいなやつをクリック。

クエリが実行され、画面の右部分に結果が出てきます。


f:id:hzk_428:20211206220434p:plain


なんと!篝火#5の大会情報が書かれています。
そーです、今実行していただいたのは大会情報を取得するAPIでした。

もしもエラーが出てしまった場合はここまでの手順の中で何かが抜けている可能性が高いです。
エラー文は英語で返されるので、適宜Googl●翻訳をかけつつ対処していきましょう。

もしも大会情報が出てきたのなら大成功です。
もうあとは欲しい情報を指示して取得するだけ!!!

……なんですが此処からが一番厄介です。
理屈すらいらねえ!!!という場合は5.サンプルクエリまで飛ばしていただければと思います。

ただやっぱりアレは何これはナニっていいうものが出てくると思いますので
そうなった際に手前の文章を読んでいただけたらと思います。

3.悩んだらTournamentQueryをパなせ!

結論。
大会に関わる情報の取得は9.5割、TournamentQueryをパなせば手に入ります。

TournamentQueryというのは、先ほどお試しで入れてもらった文字のうち、query TournamentQueryとあった部分のことです。


Smash.ggのAPIに特化して説明してしまいます。
先頭に入れていたquery という指示語の後にSmashggに指示するフォーマットを指定してあげます。
フォーマットになるものの種類はいくつかあります。

下記リンク先にあるドキュメントの、INPUT OBJECTSにあるものがフォーマットの種類になります。
が、大会に関する情報はぶっちゃけTournamentQueryで取れるので
他についてはやりたいものに応じて使っていけば良いと思います。
大会進行とか……?

developer.smash.gg


ちなみにTournamentQueryはどの大会についてか、という情報の指定が必須となります。
それが下記の部分になります。

{
  "slug": "5-kagaribi-5-1"
}


先ほどつかったクエリを例に解説します。

query TournamentQuery($slug: String!) {
  tournament(slug: $slug) {
    id,
    name,
    countryCode,
    addrState,
    city,
    isOnline,
    startAt,
    numAttendees
  }
}

このAPIクエリは『
TournamentQuery を パラメータslugを使って実行!
tournament の要素を返してください。
具体的には中括弧の中にあるidとかnameとかです。
』というのを書いていました。


tournamentという指示フォーマットで手にはいる情報ですが、上のサンプルでは下記情報を指定していました。
id … 大会自体の固有のID
name … 大会のお名前
countryCode … 大会開催国のコード。日本はJPでアメリカはUSって出て来る
addrState … 設定してあれば開催州、日本で言えれば都道府県が出て来る
city … 設定してあれば市区町村が出て来る
isOnline … オンライン大会であるかどうか。true=オンライン false=オフライン
startAt … 大会開始日時のタイムスタンプ。数字だけどエクセルとかで変換すれば年月日時分秒が帰ってくる。
numAttendees … 参加者人数

英語にはなりますがドキュメントは存在するので、適宜翻訳をかけながら探ってみましょう。


4.slugってナニ?!

そろそろslugという謎ワードについて解説します。
ぶっちゃけると大会ごとに固有に設定できる一意の単語と思ってください。

これの何が便利かというとURLに書いてあるのですぐわかるというところです。

例えばEVO2020のslugはevo-japan-2020です。

https://smash.gg/tournament/evo-japan-2020

これがあらゆる大会についているので見たい大会のslugはurlを参照して取得しましょう!!!


5.サンプルクエリ

まあとにかく書いてドキュメント読んでいけば
そのうちわかる!!!!!!!!!!!!!!!!!!!!!!!!!!はず。

大会情報の取得
query TournamentQuery($slug: String!) {
  tournament(slug: $slug) {
    id,
    name,
    countryCode,
    addrState,
    city,
    isOnline,
    startAt,
    numAttendees
  }
}
イベント情報の取得

smash.ggにおいては大会は大枠、イベントは中で実施するトナメを指すと思えばOK。
例えばシングルスとダブルスで別のトーナメントになっていれば
イベントも別枠となる。

query TournamentQuery($slug: String!) {
  tournament(slug: $slug) {
    events {
      id,
      name,
      videogame{
        displayName,
        name
       }
    }
  }
}
イベントにおける順位一覧の取得

pageは迷ったら1を指定
perPageは1ページあたりの出力数。
例えばTOP32までなら32を指定する。

query TournamentQuery($slug: String!,$page: Int!, $perPage: Int!) {
  tournament(slug: $slug) {
    events {
      standings(query: { page: $page, perPage: $perPage }) {
        nodes {
          standing
          player{
            prefix,
            gamerTag,
            user{
              discriminator
            }
          }
        }
      }
    }
  }
}
特定大会の特定イベントの特定個人の戦績の取得

戦績が文字列で入っているため、直接扱いづらい形式になっています。。。
後述しますが適宜取得後も加工しないと厄介です。

query TournamentQuery($slug: String!,$page: Int!, $perPage: Int!,$eventIds: [ID],$playerIds: [ID]) {
  tournament(slug: $slug) {
    events{
      standings(query: { page: $page, perPage: $perPage }) {
        nodes {
          player{
            sets(filters:{ eventIds: $eventIds, playerIds: $playerIds }){
              nodes{
                fullRoundText,
                round,
                displayScore
              }
            }
          }
        }
      }
    }
  }
}

サンプルQuery Variables
篝火#5におけるしゅーとん選手の対戦戦績の場合は下記を指定。
(ここまで出てきたクエリでidを取得すればあのidはアレっていうのはわかるはずです)

{
  "slug": "5-kagaribi-5-1",
  "page": 1,
  "perPage": 1,
  "eventIds": "592466",
  "playerIds": "226829"
}

そもそも特定選手の対戦戦績を出すために
トーナメント(大会)→イベント→順位→プレイヤーと迂回しているのが玉に瑕。
もっとスマートに取得できる方法を募集。



6.Smashggにおけるデータの小ネタ

IDとかdiscriminatorとか

データ管理において一意に識別するためのもの達です。
Smash.ggにおいてはIDは数値が、User等のdiscriminatorは文字列になっています。

集計においては選手や大会の名称ではなく、こちらを使う必要がありますっていうおはなしです。


PlayerとUserと大会参加時の名義の区別

Smash.ggの中ではPlayerとUserという似て非なる概念が存在する。
基本的には
 Player … ゲームのプレイヤーとしての情報
 User … プレイヤーの個人情報
と捉えればOKです。

具体的にはプレイヤーの参加名義、所属チーム等のプレフィックス
Playerから取得します。

gamerTagがプレイヤー名、prefixが所属チーム等の略称です。
しゅーとん選手で言えばgamerTagがShuton、prefixがSST

Userでは固有コード、誕生日、BIO等が取れます。
Userにおけるnameは本名ですが、これは非公開設定にしてあればnull(そこに何もない)
が返されるので安心です。

ちなみに選手名についてはEvent内のEntrantでも取得できます。
恐らくは参加した時点での名義になるのかな?


Pythonラッパー

サランラップ的な意味の方に近いラップです。
Pythonで呼び出せる奴が存在するっていうのをはい!てんぷらちゃんに教わりました。

github.com

こっちは細かいクエリの指定をせずにラッパーの中でAPIクエリに変換して実行してくれるみたい。
Pythonチョットワカルな人ならこっちを使った方が開発面でも便利かも。

かくいう私も来年くらいにはこいつを使い始める予定。
主に出力データの加工とかで呼び出しをここからやればいいかなあという意味合いで。




7.今後の課題とか

とりあえず大会関連のデータは抜けるようになりました。
しかしやることはまだまだあります。

①フォーマット変換

現状はエクセルで集計できるようCSV変換して溜め込む設計でいます。
エクセルで集計していく想定のためです。

APIで返却されるうちdata要素だけ必要なので他を削りたい
必要に応じてブレイクダウンされた要素を横に並べたいので
変換用のスクリプトは最低限書かないとなあと考えてます。

このへん個人でランキング出力している方々どういう設計でいるのでしょう。
意見交換したい次第。

取得と変換をpython内でちゃちゃっと完結したみ。


②データの集積と今後の集計

現状はまだいいのですが、将来的に開催大会、参加者はどんどん増えていきます。
CSVファイルを出して個人で集計をかける……のもしんどくなるのかなと見込んでます。

DBを立てるとか、CSV置き場を作って置き場を直接覗ける集計ツール使うかとかは
いつかは考えないといけないかも。

究極論、Smash.ggに行けば誰でも取れるデータではあるのでBigQueryとかでオープンで突っ込んでいって
有識者ニキ、なんかレポートくれ~~~~とかできたらモチベニキ達がいろいろできそうでいいよなあとか。

もろもろ、金銭的なコストが出そうなのでそこも検討したいですね。
場合によっちゃ令和トナメとの相談になるのかなあ。
規模が読めないので想像の範疇ですが。





ぽわぽわ考えていると延々と語ってしまいそうなので今回の記事はここまで。
進捗があればブログ等で共有ができればと思います。


ここまで閲覧いただき、ありがとうございました!

スマブラオレ曲ベスト10に投票したので曲を推すだけの記事

どーも、平面人です。


2021スマブラアドベンドカレンダーにこんな記事が出ましたね~~。

kimisan-ssb4.hatenablog.com


毎回投票してます。
フラットゾーンに票が地味にあるやつ、ほぼ私です。

審査員もめっちゃ人が増えててびっくりしました。
割とゲーム音楽大好きなので参加すっかな~と思ったんですけど
豪華すぎてやめとくか、となりました。平面人です。

その代わりと言っても何ですが
自分の投票したBGMとコメントをひたすら語るだけのブログを書きます。

この投票、Twitterでも可能でその場合は誰がどの曲に投票したかは見えるはず
なのでこういうブログにしても問題ない認識です。
投票そのものはGoogle Formで投票済です。


早速やってまいりましょう。
とりあえず目次兼自分の投票曲一覧がコチラ







デレデレデレデレデレデレデレデレデレデレデレデレデレデレ











デーーン

いや、上位は伏せるのかよ。と思った皆さん。すまん(自滅)


それではコメントして参りましょ~~~う



10.スマブラDX:How to Play[SPアレンジ]

今生にてスマブラDXの曲がアレンジ?!
スマブラDX:How to Playがランクインです。

聴いたときは結構ビックリしました。この曲????タイトル前のやつを????

と思いきや大胆過ぎる戦闘向けアレンジ。
地球上の生命体はコーラスが大好きとは言いますが大盤振舞い。

編曲担当は桜庭統 氏。
氏にかかれば曲が超カッコイイ~~になるのは間違いない。

緊張感あふれる金管、何で鳴らしているかわからないですが合いの手の金属音がとにかくお洒落。
大会の勝者側1-2回戦の配信でこれ流れたら痺れます。


9.戦闘!四天王/戦闘!ソルガレオルナアーラ[SPアレンジ]

第2回オレ曲の覇者。
オフ大会でポケスタ2略してポケツーとカロスがあるからこそ映える一曲。
戦闘!四天王/戦闘!ソルガレオルナアーラがランクインです。

編曲担当は本田晃弘 氏。
メタルギアビートマニアポップン、最近だとウマ娘のうまぴょいも携わってる御方。

騒がしく静かなイントロから試合の中心を奪わぬも支配するBGM進行。
そして原曲の緊張感を失わないどころか音数としては更に激しいアレンジ。
原曲行方不明アレンジも好きですが正統派進化アレンジは地球生命体はみんな好き。

ハッと生き呑む前に伝説のポケモン戦BGMに移るスピード感が
正にスマブラSPの試合スピードに相応しい。

まあ私のメインキャラは割と試合スピード遅い方のキャラですがね。

この曲については第一位コメントで書ききられているのでそちらにお任せします。
ポケスタ2を選ぶときは大体コレか4位BGMかダイゴ戦選んでます。


8.けけウェスタ

土曜日夜にどうぶつの森系ステージを選ぶ
その上で抽選で現れるとたけけソング。
オレ曲セレクトで召喚すらできない名曲がランクインです。

と、いうか先にお気持ちを申し上げると
いい加減オレ曲でとたけけBGMを選ばせてほしかったなつくづく。
確かに原作は土曜日に喫茶店に行かないとだったんですけど
少なくとも二度とたぬきち商店のカタログが使えないくらい時間旅行を繰り返した
私のおいでよどうぶつの森ではリクエストで曲名をちゃんと書けば流してくれたので
スマブラも現代に合わせてこう……(ろくろを回す手)

だからこの曲、タミスマとかじゃないと大会でほぼ流せないんですよね。
運も絡む。
他にもペルーのうたとかも大好きなので選んでかけたいです。
けけライダーが恒常なのになんで。。。。なんで。。。。。アレンジだから。。。?

静かに、でもギターがシンプルにかっこいい。
静かな決戦ってかんじですね。
すま村も村と街も割りと何か起こる系ステージではありますが。

まじで使わせてくれ。

7.We're The Robots(Dr.Wily Stage 2)[SPアレンジ]

曰く、大和魂を感じる。
まあヤマトマンアレンジどころかロックマン6ボスキャラのアレンジはSPにはないがな!
We're The Robots(Dr.Wily Stage 2)がランクインです。

ロックマン9のワイリーステージ後半のBGMですが、曲名があります。
前半のFlash In The Darkの原曲はスマブラでも聴けるので併せて聴いて欲しい。
ファミコン音源で最先端音楽をやったら最強なのに増してや、ってなる。勝てない。
ほーずきさん、実は無印ロックマンファンです。Xやexeはやってないけどファミコン作品が好き。
ただスマブラでの対ロックマンは……ナオキです。

編曲担当は下田祐 氏。
作曲者ご本人によるアレンジ。
あまりの理解度だと思ったらすごい納得。

簡単に言えばジャパニーズロックジャズ。
高音の笛は篠笛なのかな???お仕事し過ぎ。もっと激しくいこう。

原曲の時点でかっこいいのに何も損なわないどころか新境地に至るアレンジ。
タミスマでもワイリー基地終点化が使われている関係でよく耳にするのもGood。

6.宿命~炎[SPアレンジ]

ランダムでかかって以降、小戦場を選ぶときはひとまずコレ。
宿命~炎がランクインです。

SPアレンジばっかで恐縮ですが
そのくらい試合向けBGMが多いのも事実。
この曲に関しても原曲と比べるとテンポが上がっておりカッコよさマシマシ。

編曲担当は本田晃弘 氏。
木簡サビはみんな大好き。
転調はもっと大好き。

ほんとにランダムでたまたまかかって
何の曲だ~~~となって調べてFEだと知ってびっくりしました。
原作だとどこで流れるんだろう?終盤っぽさを感じる。

シンプルに良いので困ったら割とこの曲を擦ってます。
選出率の高さでこの位置に置いてしまった。

5.フラットゾーン

はい。
フラットゾーンがランクインです。

今までは一番に置いてましたが先ほどの宿命~炎と対照的に
実戦であまりチョイスしないので今回は下げめにつけました。
この曲を選ぶってことは流れをこっちに持っていきたい
そのくらいの意図での選曲となります。

といってもそもそもフラットゾーンをはじめとした
原作にBGMがないor数曲のみのレトロゲーのスマブラ楽曲の秀逸さは
いつでも語りたいまであります。

編曲担当はカービィでおなじみ安藤浩和 氏。
原作にBGMがないor数曲のみのレトロゲーのスマブラ楽曲担当は
ほぼこの御方とおおくまけんいち氏によるもの。

ゲーム&ウオッチってBGMないんです。
効果音でビープ音は鳴るけれども。
その音からBGMに起こすってだけで狂気沙汰。
そこからダークテクノに仕上げる発想は人類卒業。
ループで静かになるのもシャレオツが過ぎる。
ちょうどここで2分なので2分タイム制の〆としてのポイントも激高い。

DXのゲムヲって1000戦試合するか他キャラ全員ででシンプルとかターゲットを壊せをやるという
インターネット黎明期にしては厳しい条件で解禁される上に謎のキャラなので
この時はファンファーレ込みでダークで正体不明でシールドがいつもおもらししてる奴
ってコンセプトだったように思います。ほんとか?

この曲と併せてDXのゲムヲのファンファーレをマジで聴いて欲しい。
かっこよすぎる。SPでも使わせてくれ!!!!!!!!!

フラットゾーン2は2でシャレオツテクノなので是非。

www.smashbros.com

www.smashbros.com

桜井さんのこのコメントも渋い。

ゲーム&ウオッチ”には、ビープ音ぐらいしかありません。
明確な音楽は無いので、その効果音のみを素材として
駆使し、音楽を作っていただきました。

それにしても……シブい。カッコいい。
静かな地下のバーの中、紫煙をくゆらせるダンディが
なにかをたくらみ口の端をキュッと上げるような
イメージを連想します。

えぇ、単なる妄想ですが。



4.ポケットモンスター 赤・緑:メインテーマ[64]

ヤマブキシティ好きだったのでSPに収録されてとっても嬉しい。
ポケットモンスター 赤・緑:メインテーマ[64]がランクインです。

編曲担当はこちらも安藤浩和 氏。
64~DXはハル研究所制作なので多くかかわっているのですけども
ほんと曲が映えるからすごい。

メインテーマについてはどのアレンジも好きなんですけども
ポケモンに関して言えば古き良きが勝るといいますか。
GBとか劇場版ポケモンのオープニングのメインテーマとか震えるほど好きですねぇ~

あの所謂冒険がはじまる高揚感あるイントロはあと100年くらいは出ないんじゃないのかな。
ポケモンBGMといえばここに集結するくらい好きです。

スマブラならダントツでヤマブキシティに行きつくわけなのです。
イントロ全振りではあるけれども、
直接オケ音源を取り込めなかった時代の音源も基本大好きなので結局好き。

あとはスマブラの試合的な意味では急にレトロに傾く意味で
こちら側に流れを寄せたいけどフラットゾーンが流せない
そういう時にもチョイスしてます。


特別枠.スマブラfor:スタッフロール

急に番外編。
forのシンプルクリア時とかに流れるクレジットのBGMについてちょっと語ります。

いやあと腐れないように先にお気持ち申し上げると
SPは灯火の星ゴリ押し!!!ってかんじがして
『あの曲』は好きだけど曲としての灯火の星はちょっと。。。。
なほーずきさんにとってはエンディングまで灯火の星はお腹いっぱいどころか
一帯がゲロの海だよ~~~くらいな気持ちでした。

灯火の星、嫌いではないけどアドベンチャーモードがクソ長すぎて
あと何回聴くの!?!?という疲れの方が印象に残ってしまいました。
むむむ~~~~~

日本在住特有のマイナスな話はここまで。
とにかく!!!!!!!
エンディングとしてはforが最も完成されていたと言えます。
スマブラ発のBGM盛りだくさん。

編曲担当は不明となっていますが構成がスマブラの歴史を感じてあああ~~~~~~
ってなってしまう。
疾走感あるイントロのforメインテーマから
スマブラDX名楽曲の連続からのオープニングのサビ前からのHow To Play
Xメインテーマの〆からますます疾走感を増して
そしてforへ還るこの構成、流石にエモーショナルの代名詞でいいでしょう。

本当に最後なんですよ!!!!今度こそ!!!!!!
という気概すら感じます。SPが出てしまいましたけどね❤

大勢のキャラクターが囲む超大作にこそ相応しいフィナーレ。
SPが出てしまったからというのと
オレ曲で試合で選ぶ曲ではないので
好きなBGMとして取り上げさせていただきました。


3.■■■

ここからは目次でも伏せてきたトップスリー達の紹介です。


いつもフラットゾーンを一番に入れてきたのに最後の最後で変えてきた。
ちょろい平面人こと~~~~~~~

ほーずきさんが最期に選ぶオレ曲第三位は~~~~~~~~~~~~~~~~~~



デン




Kazuya Mishima, Devil Kazuya

編曲担当は工藤祐介 氏です。
この御方あまり存じ上げないので恐縮ですが所属はバンダイナムコスタジオ
SPでの担当楽曲はこれと後は
スピリッツ:ルーレット』という
どこで聴くんだっけかくらいなところでしか担当はされておらず。

だとしたらこの才能はどういうことだ!?!?!?
地球人はコーラスと濃い口エレキギターがあれば生きていけるとされている。

カズヤ参戦PVでも流れていたので引き込まれた人は多数いたかと思います。
鉄拳ってなんかゲーセンで怖いおじさん(お兄さんだルォォオオと言われそう)たちが
なんか集まってやってるイカついゲームのイメージでしたが
流石にBGMだけで払拭できるレベル。

ちなみに作品のあらすじを読みましたが鉄拳は
テニスの王子様」「イナズマイレブン」「戦国BASARA
あたりと同系統の臭いがしました。
毎回改造動物が戦うし、アメリカチャンプはクマと戦う運命にあるし
アメリカチャンプの中段大Pあたりがなんか当たると1/3くらい削れるクソ技だし
北海道征服で喜ぶ平八、自分を捕まえた製薬会社の社長になり上がった一八、
それに対して世界の大多数を支配できた仁くん有能過ぎてワロてしまいました。
全然民衆にわかりやすい作品だったわ鉄拳。

カズヤはVIPにこそ(気合で)入れたもののメインでない
そんな私すらしょっちゅう擦っているのがこの曲です。
だってかっこいいじゃん……

対カズヤは最速風神拳の外から亀で殴れです。おわり。


2.■■■

いよいよ第二位。
正直一位にするか悩んだくらい聴いた時には衝撃を覚えたけれども
わりと直近のマエスマだったかスマメイトの試合中とかで聴いて歴が浅いので
此処にさせていただきます!!!


ほーずきさんが最期に選ぶオレ曲第二位は~~~~~~~~~~~~~~~~~~





デデン




Nitendo Switch Presentation 2017 Trailer BGM[SPアレンジ]

編曲担当は永松亮 氏!
Wii Sports ResortマリオカートWiiからはじまり
スプラトゥーンのアオリちゃんソロ曲トキメキ☆ボムラッシュ
異論のすべてを人速で回避するアオリちゃん派です
スプラトゥーン2の不意打ちのセオリー(超大好き
サーモンラン各曲、
テンタクルズのミッドナイト・ボルテージも担当されている
もはや任天堂楽曲の代表の一角であられる御方。

直近のゼルダの伝説関連曲も担当されており
夢を見る島DXの主な編曲もこの御方。

曲のおはなしをはじめますと、この曲はブレスオブザワイルドの紹介で流れていたスローな神秘的な曲の
ここぞとばかりのオーケストラ+コーラス+熱いエレキギターアレンジとなります。
地球生命体が負ける理由全部入っているな。
女神の詩のforアレンジの氏によるものですがこれもまあギターが良いんだ。。。

ブレスオブザワイルドの世界観の広さ、神秘、世界に墜ちていく感覚すらある
解像度が高く鮮やかなアレンジだと思ってます。

エスマだと終点化が始まりの塔が採用されているので聴く機会もかなり多いかも!!
そういえばなんでマエスマは始まりの塔が採用されているのだろう?
タミスマのワイリー終点化は当初背景が重くない
=僅かにでも通信遅延が抑えられる理由で採用されていたような気はしますが。

今後オフライン大会でもガンガン流して欲しい。
大会の注目カードでこれ流れたらアアアアアアアアアアアアアアアアアアアアアってなるもん。


1.■■■

さて、いよいよラストです。
思えば個人ブログでこんな勿体ぶるの意味あったのかな?
まあいいでしょう。もう2021年終わりますおし。

参りましょう。
ほーずきさんが最期に選ぶオレ曲第一位は~~~~~~~~~~~~~~~~~~







ぁぁ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~









デレデレデレデレデレデレデレデレデレデレデレデレデレデレ






デレデレデレデレデレデレデレデレデレデレデレデレデレデレ








デデデン



Balrog Stage[SPアレンジ]

編曲担当は原曲も担当されている下村陽子 女史!


とりあえずアンケートには思いのたけを全部書いた方がいいと思い書いたらちょっと長くなっちゃいました。
改行含めてここにも置いておきます。
こんな長いと流石に拾われる筈もないので



ゲームBGMのアレンジは賛否両論、初出の音源の時点で完成されているという意見もあるだろう。
だがしかしバルログのテーマについてはアレンジされればされるほど進化をするといっても過言ではない。

今回はスマブラSPのアレンジに特化してコメントする。数多の楽曲がひしめき、対戦に集中されるためあくまで脇役となるBGMにおいて誰もが耳に止まるようなアレンジに昇華されていた。
まさかのピアノソロによるイントロである。
さながらベートーヴェン 交響曲 第5番 ハ短調「運命」の如く。アレンジ担当はストリートファイター2の楽曲を手掛けた下村陽子女史。
ビデオゲーム黎明期から存在するロングセラータイトルのBGMはどうしても初期BGMに信仰が置かれがちではあるが毎度毎度進化した戦闘BGMを作曲されているのはどういうことなのだ。
スクウェア作曲家は三柱(植松氏、光田氏)はそろそろ社の一つを建設され現人神として在るべきだと感じるばかりだ。

話を曲の方に戻すととにかくイントロで引き込まれる。此処は大乱闘だ友達と遊ぶだ以前に勝敗を決する戦いであろう……という空気の切り替わりが此処に起こる。
一番タイマン向けのBGMじゃないか、とすら思う。
そこからバイオリンとの二重奏。オタクはピアノとバイオリンのデュオが大好き。
90年代以降のゲームBGMはかなりJPOP寄りの構成になっているので表現を借りるがAからBから以降するタイミングでクラシックギターが加わりトリオへ。(フラメンコギターじゃなさげなのでミソ)
Bメロに入る頃にはドラムまで加わりクィンテット。イントロはクラシックな雰囲気すら纏っていたのがモダンどころか最先端の音楽にすら進化している。1分未満でこれってオイオイオイオイオイ。
息もつく間にサビへGO。
急にDisりはじめて恐縮なのだがスマブラに収録されるバイオリン主旋律のアレンジはどーーーーしてもforの頃のパッとしない雰囲気がこびりつくのだが
このアレンジは終始9割方バイオリンがド真ん中で歌っているので聴いていて気持ちいい。
裏でおれも歌ってるぜ~~~と言わんばかりにピアノが鳴るのもぎもぢい~~~~~。
WindowsXP以降の東方Project楽曲が好きなオタクは絶対ハマると思うので改めて聴いて見て欲しい。
間奏部分でTHE哀愁と言わんばかりに語るギターがかっこよすぎる。レトロだがレトロじゃない。
そしてピアノと追いかけるバイオリンが歌いだすわハモるわうぉぉおぉぉぉぉおおおおおおおおおおおおおおおおおおおズルはよくない、よくない。強いんだって。

そのまま私が仮面のナルシストですこんにちはと言わんばかりの大サビ。(熱唱!!STREET FIGHTER IIで歌詞がついたときの曲名が仮面のナルシスト、バルログ自身もナルシスト)
この曲は強いですって主張強いな~~~~~~いや強い~~~~~~と間奏のギターが来てここでループ。
さりげなくこの曲、かつてのスマブラBGMの縛りでもあった2分でループするを遵守していたりするので安心して2分タイム制でも大盛り上がりしたところで試合終了できる。助かる。

とにかく最初に耳に入った時のインパクトのまま聴き続けられる神アレンジ。次のバルログはどうなってしまうんだ。キャラ性能は知らんけど。。。スマブラしてないでこの曲聴け。



……………





……………書いた文章がだいぶ長くなっちゃったのでざっくりコメントします。


とにかく原曲の構成自体が最強で、ストリートファイター内でのアレンジでどんどんスパニッシュに仕立てられて洗練とされていって

もうこれ以上何処に行くんだ。



その矢先にこのSPアレンジである。
曲がランダムに選ばれる戦場/小戦場/終点でこれが流れたら何!?!?!?ってなる。
私はなった。


和要素はないのに朱雀城にもまた合うんだワ。。。。
終点にも合うんですよこれが。。。。
とにかくイントロで流れ、変えてみせましょうってなるのが強い。
試合のBGMとしてもカウンターでこれ流して流れを自分のものにできる気すらする。

予選とかで進行の関係で配信台来てね~~~な時以外の配信台にもし来て
小戦場/終点を選べるのであればこれ流します。

この曲私以外の人も選んで欲しいくらいにはとにかくオススメしたいので
もしオレ曲の投票迷ってたら入れておいてくださいって勢いである。

大会決勝で流れたらくぁwせdrftgyふじこlpってなってまう。
決勝じゃなくてもなる。
流してくれ、切実に。




アンコール.E3の……

最後にまた番外。

youtu.be


本当はですね、本当はですよ。
E3のプレゼンPVで使われたこのBGMが一番です。

オレ曲で選べるものなら即第一位にしてました。

が、V13.0.1現在ゲーム内で使用不可能なため番外として語らせていただきました。

これに関して言えば曲もさることながらコーラスもあれば
中間のスネークが出てきてマジ!!?!?!?!?!?!?からの
全員参戦でフロア熱狂からのナァァァァァァアアアアアアアアア~~~~~~~~~が
コンセプトなので(言語についてよく理解していません)
いつかゲーム内に登場し、あわよくばスマブラSPの大型大会グランドファイナルで
流れたらとか夢見ています。



あとがき

ほーずきさんはコーラス、クラシックギターエレキギター、主旋律強い曲が好き!!!
おわり!!!!!!!!!!!
でも実際最近の東方Project楽曲めっちゃ好みだから間違ってないな!!!!!!!!

私にとってのイチオシをイチだけど10個(番外はあるけど)選んだらこうなりました。
皆さんのイチオシはどの曲でしょう?
どこが好きでしょう?原曲から?アレンジから???
思い入れを語るなら今がチャンス。

#最終回みんなで決めるスマブラオレ曲ベスト10
最終回 みんなで決めるスマブラオレ曲ベスト10完全版

投票しよう!!!!!!!!!!!!!



ちなみに私もアドベンドカレンダーに参戦しています。
12月12日(日)担当です。
でもこっちではすっごい真面目なこと書くのでエンターテインメント性は期待しないでください!
去年の記事はエンターテインメントじゃないけども!!!!!!!!!!!!!




それではまた!!

さたうほーずき宅について

f:id:hzk_428:20211104220416p:plain

最後のDLCが来た後でオフ再活性化してきて嬉しい、
そんなタイプの平面人です。


平面人とかいちいち書いてられないので本題は私ほーずきと
さたうが開催する宅オフについて、環境とか簡単に紹介できればと思います。

これを見てさたうほーずき開催宅オフ、
略してさたずき宅に来てくださるプレイヤーが増えたらこれ幸いでございます。



宅オフ概要

■何をするところ?:
 ・大乱闘スマッシュブラザーズSPECIAL(以下スマブラSP)の
  オフライン非公式大会でよくある7分3ストックアイテムなしステージギミックなし
  使用可能ステージ制限ありのルールでひたすら対戦するところです。

 ・モニター1台につき2人(状況によって3人)で対戦します。
 ・60-90分に一度台を交代する時間を設けてます。
 ・台チェンジのアナウンスは家主が行います。

 ・大会を視野に入れているプレイヤーさん、大歓迎です。
 ・大会でよくやるタイマンルールでがっつり遊びたいプレイヤーさん、大歓迎です。

 ・でも社会における常識、マナー、宅オフ内でのルールは
  しっかり守ってくださいませ。
 ・飲食は飲み物はOK、食べ物NGです。
 ・その他宅オフルールについてはdiscordサーバ内にまとめております。
  (ぶっちゃけトイレは座ってしろ位のルールですが)




■最寄り駅:
 ・大江戸線または新宿線森下駅(徒歩4分)
 ・JR両国駅(徒歩10分)
 ・大江戸線両国駅(徒歩8分)

詳細な住所は公開しておりません。
参加希望を出した、初めて訪れる方に向けては
別途、集合場所の案内をお出ししております。


■募集人数:最大8人(家主込みで10人となります)
■参加費:100円
■持ち物:
 ・参加費
 ・自身が使うコントローラー
 ・Switch本体(お持ちでない方等はご相談ください)
  GCコン使用者かつ振動機能を利用される方のみ、USBハブの持参をお願いします。
  ※時世が時世ですので、お菓子等の差し入れは無しでお願いします。

家にSwitchのドックだけあるので、本体を入れてもらう形で遊びます。
USBハブにつきましては、有線状態で使うProコントローラー、
任天堂公認Horiコンを使うプレイヤーがいた場合
USBポートを1つ消費してしまうため持参をお願いしています。
3つあるポートのうち1つはスピーカーの給電で消費しているため
残り2ポートでは足りなくなるためです。
どうかご協力のほど、よろしくお願い致します。



家主概要

さたう
forからのパルテナ使い。自称7歳女の子、橋本環奈ちゃん似の183cm。
好きな食べ物はケーキ(ラーメン)、嫌いな食べ物はピーマン(肉より魚、野菜が好き)
九九を覚えたら引き算を忘れる程度の頭脳。
ジョークが通じない方向けに書くとただの成人男性です。元パルテナ窓副窓主。
主な戦績…篝火#3 17/132th・レポスマ#1 2nd/38・
     クロブラ#23 9/48th、クロブラ#21 5/48th、ウメブラSP#7 129/758th


ほーずき
forからのMr.ゲーム&ウォッチ使い。女。この2属性が揃ったら概ねほーずき
……が導かれるくらいには地味に知名度がある。ゲムヲ窓主もしていた。
でも最近げむち女子増えたな。導かれない、解散!
また人の名前を覚えるのが大の苦手です。
何度もプレイヤーネームを聞いてるうちに覚えるので勘弁してつかぁさい。

主な戦績…レポスマ#1 3rd/38・クロブラ#20 33/64rd・ウメブラSP#7 129/758th



設備について

BenQ GL2480モニター:4台
BenQ GW2265モニター:1台
 ※各台にスピーカー有
・Switchドック:5台
・Switch本体:2
・純正GCコンタップ:5つ
・長机:4つ
・ダイニング机:1つ…5台目のモニター用
・パイプ椅子:8つ
・椅子:2つ…5台目のモニター用
・荷物置き用のカラーボックス:1つ(6箇所収納)


参加者の持ち物にSwitch本体とあるのはこのため。
対戦相手との合意があればリプレイ取得のために本体の入れ替えをしてOKです。

また分配器等持参されている場合は対戦相手との合意があれば使用可能です。
いづれも忘れて帰らないようお気をつけて!


参加申請用discordの案内

まずはこちらのTwitterアカウントページへアクセス、
リプライやDM等で参加希望の旨をお伝えください。
サーバ参加URLをDMでお渡ししますので、参加をお願いします。
現在進行形で募集しているオフには参加しないけど、
そのうち行くかも~な場合でも大歓迎です。

twitter.com


discord内に宅オフルールと、参加希望を書くためのチャンネルがあります。
ルールをよくお読みの上、参加される方は申請の書き込みをお願い致します。

気になることがあれば
宅オフTwitterアカウント、discordサーバにてお問い合わせしてくださいませ。


沢山のご参加、お待ちしております!

正真正銘のスマブラ戦績管理とMU作成をしてみよう

はい、悔い改めて~~~~~~~~~~

こういうブログを書いている平面です。

hzk-428.hatenablog.com


のちょうさんにも鮫木さんにも拡散されてびっくりしましたこのツール。
後継として、大幅改良されたYONさんツールがありますのでこちらも是非せひよろしくお願い致します!

yon4.hatenablog.com




まあそれはそれとして、

f:id:hzk_428:20210320001749p:plain
前回のあらすじ


と、宣言していたので何を作っていたかと、
どう実装したかのお話をこの記事で公開していこうと思います。



先に釘を打っておきますが、
自動もへったくれもないアナログ作業を公開するだけなので
いんふぉめ~しょんてくのろじ~要素に期待しないよう
何卒よろしくお願いします。




■目次

1.正真正銘のスマブラ戦績管理とMU作成


こんなもん作ってました。はい、どーん。


f:id:hzk_428:20210320002024p:plain

f:id:hzk_428:20210320002051p:plain


これは私のスマメイト13.5期の戦績を基にした集計の可視化です。

f:id:hzk_428:20210320002213p:plain
22戦しかしてねぇ。。。。


造ったきっかけはずばり
スマメイトのマイ対戦データを見るではデータの精度に限界があったからです。
なんで精度が?って話は前に少し話したので割愛。


それを打破するために少なくともプレイしている
自分の記録はつけておきたいと思いました。
結局は自分のためにデータが使えればいいわけですしね。
MUでキングクルール有利だからって普通に負ける時は負けらぁぁ(フラグ)

とりあえずオンはこれで溜めて、
将来的にはオフ対戦もここに記録する予定です。
たぶん結果は変わるしステージも小戦場とかは顕著に使わなくなりそう~~~~~


13.5期だけを見た結果としては、まだ何も言えません。
とにかくデータが少ない。
スマメイト試合数が22、総試合数が66試合、戦ってないキャラも大量にいる。。。。。
数が重要だなぁとしみじみ。


ただこれでデータを溜めれば
ほーずきの勝率や実績ベースMUは作れそうです。


このブログ書いていたの、13.5期の頃なんですけど月日が経って
14.5期まで終わっています。

14期および14.5期のデータもまとめましたので
とりあえず13~14.5期で簡単な可視化をしていきましょう。


■総対戦数が多い順

f:id:hzk_428:20210710201306p:plain
一人(二人)だけ桁違うの由々しき事態ですよ桜井さん。こっちこっち~~~~~~~

と、いうかスネークから吸い過ぎた。


f:id:hzk_428:20210710201102p:plain
これは14期のみ。ボコボコ
f:id:hzk_428:20210710201134p:plain
これは14.5期のみ。ちょっとだけ対策の進歩がみられる。というかどっちも一番試合した数多いのホムヒカなの大爆笑案件過ぎる。桜井さん!!!!!


■勝率が高い順ソート

f:id:hzk_428:20210710201616p:plain
試合数少ないキャラもいるけどひとまず勝率8割超え。ワリオとスネークおいちい。ちゅぱちゅぱ。ばっぶ~ん
f:id:hzk_428:20210710201723p:plain
同じように勝率6割超えキャラ。ピトブラ増えすぎだょ~~~
f:id:hzk_428:20210710201905p:plain
勝率5割~4割。パルテナに勝ち越しなの褒めて。。。褒めて。。。クロムもSP最初期ムリムリ言いまくってたけどここまで来れた。


■勝率が低い順ソート

f:id:hzk_428:20210710202033p:plain
キングクルールとかというキャラ、強い人のサブとか1800超えとかばっか当たってもう無理です。はい~~~ガン不利(現実逃避)

クッパ、サムス、キンクル、ホムラ、テリーが対戦数の割に……ってかんじだ。
アイクも勝てそうで負けるを繰り返している。
あと対しずえさん釣り糸の仕様知らなくて無限に外れて
地面に垂れていた糸に当たって捕まってた。
待ち方もあんまよくなかったのは覚えている。。。

ティーブは遂に対策固まりそうなので、フリーばんばんしたみある。
メタナイトは……これforと全く同じ対策になるオチ見えていて顔面蒼白なうです。(つまりは崖端ガン待ち……ってコト?!)


うーーーーーん777試合(まさかの)入れても
これ本当にほーずきさんの得意苦手表やんけ。。。っていうオチになった。まる。



以下はアナログ実装のお話。です。



2.レポート作成のための構成


目標

  • 対戦相手に対して勝利したかを記録する
  • 対戦相手の拒否ステージを記録する
  • 対戦相手との実際の試合の勝敗、キャラクター、ステージを記録する


最低限の要件

  • 集計できる表が欲しい
  • キャラ勝率が見たい
  • ステージ勝率とBAN率が見たい


これを達成するためには下記3つが必要だな~~とおおまかにまとまった。

試合結果のインプットできるもの ─ データを溜めるもの ─ データを見せるもの


実装する際は下記無料サービスをばんばん使いました。あとはインプットの運用でGoogleAppScript。
インプット→Googleフォーム(結局めんどくさくなって使わなくなったけどな!)
ストレージ→Googleスプレッドシート(DWHとDMを兼ねる)
可視化→Googleデータポータルが無料で使えたので採用



3.データ蓄積:フォームのアンケートを使おう

簡単にスプレッドシートにデータを入れてくれるサービス
ないかな~~と思っていたところ
「そういえばクロブラのアンケートはスプレッドシートで集計してたな」
ということを奇跡的に思い出した。

f:id:hzk_428:20210710203807p:plain

ちなみに格上格下とかという上から目線項目は
最終レートで判断(近い場合は大まかな平均で比較)するように変えた。
結果入力、結局シーズン終わってからまとめて入れてたんすよね。
時間効率考えたら入力の時間設けるのもったいなかった。。。。

私は結局スプレッドシートに直接結果を書くようになってしまったけど
これならだれでもできるのでいいんじゃないのかな~~~~~
公開用作る気ないですけども。

で、ちょっと厄介なポイントがここで発覚。

f:id:hzk_428:20210710204050p:plain

80キャラもリストで書いていくの
クッソだるいな、と。


キャラクターのマスタをさっさと更新できるようにしたいね。。。




4.フォーム運用:GASでDLC対応

キャラクターのマスタ(一覧)、数は多いわDLCがいるわで大問題に。

理想はデータはスプレッドシートに書いておくから
それを勝手にフォームに持ってくるみたいなやつ。
なんかないのかよ~~~~~















qiita.com

あった~~~~~~


と、いうことで早速実装。IDは伏せてます。

function overwriteDjList() {

  /**
  // スプレッドシートの情報を取得する
  // 
  **/

  //スプレッドシートのID →「https://docs.google.com/spreadsheets/d/△△△/edit#gid=0」の△△△を↓に記述
  var sheets = SpreadsheetApp.openById('△△△').getSheets();

  // シート1の情報を取得
  //(デフォルトのスプレッドシートの場合、シート1という名称になっています)
  var sheet = sheets[0];

  // スプレッドシートのA1のセルが「DJ」の場合
  if("キャラクター" == sheet.getRange("A1").getValue()){

    // A行の2行目からコンテンツをもつ最後の行までの値を配列で取得する
    var colA = sheet.getRange(2, 1, sheet.getLastRow() - 1).getValues();
  }

  /**
  // Googleフォームのプルダウン内の値を上書きする
  // 
  **/

  // GoogleフォームのIDを設定 →「https://docs.google.com/forms/d/〇〇〇/edit」の〇〇〇を↓に記述
  var form = FormApp.openById('〇〇〇');

  // 質問項目がプルダウンのもののみ取得
  var items = form.getItems(FormApp.ItemType.LIST);

  items.forEach(function(item){
    // 質問項目が「好きなDJを選択して下さい」を含むものに対して、スプレッドシートの内容を反映する
    if(item.getTitle().match(/.*戦目の相手キャラを選択.*$/)){
      var listItemQuestion = item.asListItem();
      var choices = [];

      colA.forEach(function(name){
        if(name != ""){
          choices.push(listItemQuestion.createChoice(name));
        }
      });

      // プルダウンの選択肢を上書きする
      listItemQuestion.setChoices(choices);
    }
  });

}

こいつをデプロイして実行で対応されます。
ちょうどカズヤが実装されたので対応するか。


f:id:hzk_428:20210710205030p:plain

まずはスプシに書いておく。
見分けついたほうが個人で使う分には楽なので苗字を記載。



f:id:hzk_428:20210710205140p:plain

まだリストにはカズヤがいませーん。



f:id:hzk_428:20210710205114p:plain

じゃあ、実行するっと。。。



f:id:hzk_428:20210710205212p:plain

3秒で完了したよ。じゃあフォームの画面を更新しましょう。





f:id:hzk_428:20210710205255p:plain

やった~~~~~!



……



これやるのあと1回やんけ!!!!!!!!


ただのお勉強で終わってしまった。
実際セフィロス実装時期くらい?に
これ作り始めたので運用回数めっちゃ少ないという。




5.データ加工その①:スプレッドシートにぶちこむ

公開するにあたって、特定されていちゃもん付けられたら泣いちゃうので
(ほんまに)(最終レートで出してるのに)
(短くていい表現あったらむしろ教えてください)
一部非表示にしていることご了承ください。


フォームの場合は結果がシートで入ってくるので、
まずはそのままコピーして溜めるシートを作成。
(14.5期は全部手打ちしたけど)

f:id:hzk_428:20210710205449p:plain


更に実際の試合(BO3)単位で並べたシートを作成。

f:id:hzk_428:20210710205652p:plain


もう殆ど完成しました。
集計するだけならスプレッドシートでもいいんですが
折角なのでもうちょい良いツール使います。



6.データ加工その②:データポータルで集計

冒頭で見せたような形で出力~~~
このへんは正直直感と言うか、集計でCASE文とかSUMとか使うくらい。

f:id:hzk_428:20210710221226p:plain
今用意しているシートはこんなかんじ


冒頭で見せていなかった2シートだけ簡単に紹介。


■シーズン別総括

f:id:hzk_428:20210710221341p:plain
特異点いい加減にせい!

シーズンのタブだけあるシート。そのシーズンの勝率とかを簡単に見るためのシート。
分布図にするつもりが間違ってバブルチャートを選んだ挙句
後から何故か変えられなかったこの円のサイズの意味のないグラフは
縦が勝率、横が総試合数になってます。
クッパとホムラァ!!!!!


f:id:hzk_428:20210710221541p:plain

最終レート準拠格上/下勝率という要るのかわからんグラフ。
当然レートが下の相手には勝ってるし上の相手には負け越してますね。
マッチングはほぼ同数程度のようだ。



■ステージ傾向レポート

f:id:hzk_428:20210710221722p:plain
ほーずきさんは戦場拒否ですが、将来拒否なしにするかもなので欄があります

・実試合で使ったステージ 集計
では実際に使われたステージの集計を出しています。
個人的予測ですが自分よりレート平均の下の人達は終点を選びがちな気がするけど、
上の人達は小戦場出してくるよ~とかそのうち明かす……つもり。


f:id:hzk_428:20210710222111p:plain

・キャラ別 拒否ステージ集計
ではマッチング相手の拒否ステージの集計を出しています。
終点とすま村が絶賛不人気のようだ。
勿論これはマッチング当時の拒否であって、
サブ等出された時のことは考慮しないが
まあ大まかな拒否傾向は見れるようになっただろう。
終点拒否が多いキャラがオフ大会で終点をBANしてなかったら
しめしめ、するときに使える集計かも。


ちなみにゲムヲはこんなかんじ。
f:id:hzk_428:20210710222457p:plain

なおゲムヲは戦場が弱いわけじゃなくて、
不利相性といわれているパルテナとかシュルクとか
そのへんが戦場の立ち回り強いので拒否していると思う。
少なくとも私はそう。
本当なら戦場でやりたいカードもあるのでうーん、過信は禁物かもしれない。


f:id:hzk_428:20210710222838p:plain

・ステージ別 勝率集計
では実際そのステージで戦った際の純粋な勝率を計上している。
カロスでなかなか試合できてないけど勝率高め。
カロスは撃墜面も防御面もゲムヲの恩恵が
強くなるのでありがたいです(ただしDDとかゼロサム除く)
逆にすま村絶不人気=苦手な人多い中なかなか勝てていないの勿体ないのかもしれない
(すま村でやりたくない、広いステージでやりたいキャラがカウンターで出すケースが多いってのは
ごもっともだけど、ゲムヲは機動力低めの近~中距離キャラなので
やっぱ慣れておきたいんじゃあ)


そのうち見たい軸が思い当ったら集計して見るかもしれない。



7.あとがき

のちょうさん、
スマメイトでレート収支見れるようにしていただき
本当にありがとうございます(爆泣)


自力で勝敗記録つけるの、結構根気がいるしちゃんと活かせるか未知数です。
でも露骨に苦手キャラとかステージとか
スマメイトでの流行が見れるようになったのは大きいかもしれない。

いちおうスマメイトしている限りは記録はつけていく所存です。
これと同じことを最上位がやってくれ(他力本願)
でも私がスプシとか可視化やる気はない(協力性皆無)(典型的なB型)

いまあとがき書いてて思ったのは
キャラ別の実際の試合の勝敗ステージの表が
欲しいなってなりました。ただの。
これが一番(自己反省の意味で)早いと思います。。。。。


そのうちネタが思いついたらブログを書きます。
それでは人間の皆さま、悔い改めて

スマメイトのレート等を自動取得するだけのプログラムの後継ツールが生まれました!

こんにちは。こういうブログを書いている平面です。
最近はTwitchで配信もしてます。良ければフォローお願いします(アルティメット乞食)

www.twitch.tv



で、開幕宣伝してすみませんでした本題に入ります。



これまで↓のようなツールを公開しておりました。

hzk-428.hatenablog.com



が、このツール、私の個人用をいじっただけなので
pyrhonを入れないといけなかったり、CUI動作なので色々ご不便おかけしたこと多かったです。
pythonわからーーんとなって導入を諦めてしまった方もいるやもしれません。。。。



そこで、YONさん(YON (@yoyoyo_4) | Twitter)(スマブラをする鳩さん)のツールです!
私のツールをフォークする形でより使いやすく改良されたツールとなります。

yon4.hatenablog.com


詳細はこちらのブログをご覧ください。


主な良いところは
python導入不要
・ZIP解凍するだけで利用可能
・ウインドウが出て来るので設定が親切
・前日比データが表示できる
・アップデートが入った場合はツール経由でアップデート可能(動作未確定)

と、とーにーかく易しいです!



そしてこちらのツールはほーずきPGの事実上上位互換ツールとなるため、
今後は私の方ではPGの更新は行わない予定です。
(致命的な何かが起こらない限りは。。。)
単純にレートを取るだけでしたら私のツールでもOK
今すぐ配信に自動更新レートを載せたい(バン!!!)な方はYONさんツールをご活用くださいませ。



何事も快適さが大事です。
更に快適なスマメイト配信ライフをお送りください。
















あとがき
まさか自分の書いたしょしんしゃpythonがこうしてより良い形で公開されるとは思ってもみませんでした。
いつか時間ができたらGUI化しよー、あのバグなおそーーー
とか雑にゆるく考えていたそんな時に今回のお話をYONさんからいただき、迷わず「是非!」とお答えした次第です。

そして今回のYONさんツールをきっかけにpython同梱させる方法とか、.exe化とかのやり方を勉強するに至りました。
趣味のツールきっかけでリアルお仕事経験ゼロのpythonがどんどん詳しくなって圧倒的成長。

ちなみに私の配信でもYONさんツールに切り替えて配信しております。

f:id:hzk_428:20210526231831p:plain


こうしてスマ界隈に色んなサービスやツールが出て、プレイヤーさんがより楽しめたり便利になっていけるのなら幸いです。
公開してみるかなあ、と思って動けたことを少しだけ誇りに思います。
ツール公開、やりたくてやったというよりは欲しかったものを作った、たぶん需要があるから整えて公開すっか!くらいの軽さなので次があるかは不明。。。

あ、でもVIP連勝自動カウントするための画像認識とかは実装してみたいなとか考えてます!!!!!
時間があるか不明ですが。何よりも、モチベとか。(画像用意めんどくさそ~~~~~~~~~
ゲムヲ限定とかになりかねないなコレ。。。。


あとがきをしめて、スマブラプレイヤーとしても引き続きがんばっていきますか~~~

スマメイトのレート等を自動取得するだけのプログラム配布_ver1.04

またですか。平面です。

本日2021/3/20の21時よりスマメイトの第14期が開始となりました。
うおおおおおおおおおおおおお乗り込め。


そしてまたレート取得スクリプトのエラーが発覚しました。
メインシーズン開始時は今期レートとかというデータすらなかったんですね。がはは。



まあそれはさておき、修正はすぐにできました。


ver1.04リリースです。


■更新内容
smamate_mypage_get_data.py
 ・『今期レート』という文言がマイページ内にない場合は初期データ作成を行うよう仕様変更
 ・取得間隔が短くなくてもいい方向けに60秒ごとに取得が走るバッチファイルを同梱(間隔を変えただけですが、お好みでご利用ください)


ざっくり言えばエラーが出づらくなりました。
おおむね。想定の上では。
 
今回はまだ1戦もしていない私のマイページと、
こっそり1戦以上完了している方のマイページを勝手に借りてテスト走行したので大丈夫だと思います。。。。。。。。。はい。。。。。。。。。。。。。
やってることはブラウザでマイページ行ってHTML全文コピーと変わらんから平気やろガハハハハ


ツールを使ってみて、また何らかエラーが出た場合はDMください。
むしろ報告は一番助かります。


ダウンロードはこちら↓


■ダウンロードリンク
 
https://firestorage.com/download/3886c6937fd7cc283fd5ba24fbc44dd941817117



パスワード『sma428』と入れればダウンロード可能です。


もしも古いバージョンを導入されていた方は
本ファイルの解凍内容で一旦今まで使っていたものを上書きし、
pythonファイル内のURL指定のところをやり直しいただければ問題ないです。

ただし任意で出力文字列を変えている方は再度設定が必要です。ご了承ください。
時間ができたら、設定する文字列を入れるだけのファイル作ってそれで処理できるように改善予定です。
(そうしたらpythonファイルの更新関係なく出したい文字が出せるようになる)

なおバッチファイルの中身は変わっていないので
以前のものをお使いいただければと思います。




快適なスマメイト配信ライフをお楽しみください。




私は明日からにしようと思います。。。。初日メイトこわい。