Qman's Diary

多趣味人間の備忘録

2022-11-21 (2025-01-06 更新)

【備忘録】SEGA音ゲー3機種の公式サイトの裏で流れてる楽曲リストJSON+αの解説

タグ
音楽ゲーム
技術
オンゲキ
CHUNITHM
maimai

SEGA音ゲー3機種の公式サイトの裏には、楽曲リスト等のためのJSONが流れています。

エンドポイントさえ知っていれば、それらを取得して活用することも可能です。

ただ、正規で公開されているものではありませんし、いつ仕様が変更されたり使えなくなったりしても一切文句は言えません。

この情報を利用する際は、何があっても自己責任でお願いします。

CHUNITHM

楽曲リスト

▶エンドポイント: https://chunithm.sega.jp/storage/json/music.json

以前は著作権情報もこのJSONファイル内にあったが、現在はhttps://chunithm.sega.jp/storage/json/rightsInfo.jsonにまとめて全て入っている。

▼レスポンス例

[
    {
        "id": "2065",
        "catname": "ORIGINAL",
        "newflag": "0",
        "title": "創世のコンツェルティーナ",
        "reading": "ソウセイノコンツエルテイウナ",
        "artist": "大嶋啓之",
        "lev_bas": "3",
        "lev_adv": "7",
        "lev_exp": "10+",
        "lev_mas": "13",
        "lev_ult": "",
        "we_kanji": "",
        "we_star": "",
        "image": "ec89f55fcf6e1c66.jpg"
    },
    {
        "id": "107",
        "catname": "ORIGINAL",
        "newflag": "0",
        "title": "We Gonna Journey",
        "reading": "WEGONNAJOURNEY",
        "artist": "Queen P.A.L.",
        "lev_bas": "3",
        "lev_adv": "6",
        "lev_exp": "11",
        "lev_mas": "14",
        "lev_ult": "14+",
        "we_kanji": "",
        "we_star": "",
        "image": "b43fef626f5b88cd.jpg"
    },
    {
        "id": "8081",
        "catname": "VARIETY",
        "newflag": "0",
        "title": "檄!帝国華撃団",
        "reading": "ケキテイコクカケキタン",
        "artist": "真宮寺さくら(横山智佐)&帝国歌劇団「サクラ大戦」",
        "lev_bas": "",
        "lev_adv": "",
        "lev_exp": "",
        "lev_mas": "",
        "lev_ult": "",
        "we_kanji": "歌",
        "we_star": "3",
        "image": "b5570c700e7bbf75.jpg"
    }
]

実際は1つのリストの中にすべての楽曲が入っている。ここでは通常の楽曲とULTIMAの存在する楽曲、WORLD'S END楽曲1つずつを例として挙げた。

同一楽曲であっても、通常譜面とWORLD'S END譜面は別々でオブジェクトが存在する。さらに、同じ楽曲のWORLD'S END譜面が複数ある場合、その譜面の数だけオブジェクトがある。

ちなみに、クラス認定(旧コースモード)限定楽曲/譜面はここに含まれない。そもそも公式サイト上にクラス認定に関する項目がないので、情報を取りようがない。

▼各key/valueの説明

  • id: 楽曲ID
  • catname: カテゴリ名
  • newflag: 新曲か否かのフラグ。新曲なら1が、そうでなければ0が文字列として入っている
  • title: 楽曲タイトル
  • reading: 検索用の曲名。元のタイトルを一定のルールに従って変換したもので、濁点や小文字のないカタカナとアルファベット大文字のみで構成される
  • artist: 楽曲アーティスト
  • lev_baslev_mas: それぞれBASIC~MASTERの譜面レベル。WORLD'S END譜面の場合は空欄になる
  • lev_ult: ULTIMAの譜面レベル。ULTIMAが存在しないか、WORLD'S END譜面の場合は空欄になる
  • we_kanji: WORLD'S ENDの譜面属性。漢字1文字もしくは『!』『?』が入る。通常譜面の場合は空欄になる
  • we_star: WORLD'S ENDの譜面難易度。数字「1」「3」「5」「7」「9」が文字列として入り、それぞれ☆~☆☆☆☆☆に対応する。通常譜面の場合は空欄になる
  • image: ジャケット画像のファイル名。URLhttps://new.chunithm-net.com/chuni-mobile/html/mobile/img/に付け足すと画像を取得できる。

CHUNITHM海外版

楽曲リスト

▶エンドポイント: https://chunithm.sega.com/assets/data/music.json

CHUNITHM NEWまでは日本版の古いJSONフォーマットと同一だったが、おそらくNEW PLUSになってからは現行日本版と完全に同一のフォーマットになった。ただし、データが最新のものに追従していないように見える。

その他の差異は以下の通り。

  • 著作権表示のJSONファイルはhttps://chunithm.sega.com/assets/data/rightsInfo.jsonにある。
  • ジャケット画像のファイル名の前に付け足すURLはhttps://chunithm-net-eng.com/mobile/img/である。

なお、中国大陸版については、そもそもこれらのような公式サイトが存在しないものと思われる。

WORLD'S ENDの譜面難易度に関する余談(クリック/タップして展開)

上記ファイル内において、WORLD'S ENDの難易度は5段階にもかかわらず何故か飛び飛びの奇数が設定されている。この理由については推測だが、WORLD'S END実装前はさらに細かい難易度分けをしようとしていたのではないかと推察できる。

CHUNITHM-NET上でWORLD'S ENDの楽曲が表示される画面では、譜面属性アイコンの横に難易度を表す星の画像があるが、この画像のURLにも上記と同様の数字が存在する。

例えば、「5」の画像はhttps://new.chunithm-net.com/chuni-mobile/html/mobile/images/icon_we_star5.pngである。


結論から言うと、この星の画像は全部で20枚ある。URLの番号部分を0~19に入れ替えて見てみると、その画像が姿を現す。

0・2・4・6・8には星が半分だけある画像が、10~19には黄色く塗りつぶされた星の画像がある。いずれも未使用である。

maimaiでらっくす

楽曲リスト

▶エンドポイント: https://maimai.sega.jp/data/maimai_songs.json

CHUNITHMと同じく、著作権情報はhttps://maimai.sega.jp/data/RightsInfoText.jsonに分けられている。

▼レスポンス例

[
    {
        "artist": "ツミキ feat.音楽的同位体 可不(KAFU)",
        "catcode": "niconico&ボーカロイド",
        "dx_lev_bas": "2",
        "dx_lev_adv": "6",
        "dx_lev_exp": "9+",
        "dx_lev_mas": "11",
        "dx_lev_remas": "13",
        "image_url": "e6f1a560ee4c29d9.png",
        "release": "220915",
        "sort": "110",
        "title": "フォニイ",
        "title_kana": "フオニイ",
        "version": "23000"
    },
    {
        "artist": "ナユタン星人",
        "catcode": "niconico&ボーカロイド",
        "dx_lev_bas": "3",
        "dx_lev_adv": "7",
        "dx_lev_exp": "9",
        "dx_lev_mas": "12+",
        "image_url": "dfd85cc1f0611a87.png",
        "release": "000000",
        "lev_bas": "6",
        "lev_adv": "8",
        "lev_exp": "11",
        "lev_mas": "13",
        "sort": "213",
        "title": "ダンスロボットダンス",
        "title_kana": "タンスロホツトタンス",
        "version": "19007"
    },
    {
        "artist": "HiTECH NINJA",
        "catcode": "オンゲキ&CHUNITHM",
        "date": "NEW",
        "dx_lev_bas": "5",
        "dx_lev_adv": "8",
        "dx_lev_exp": "12+",
        "dx_lev_mas": "14",
        "image_url": "74c92bac1b51a9c3.png",
        "key": "○",
        "release": "230120",
        "sort": "996",
        "title": "電光石火",
        "title_kana": "テンコウセツカ",
        "version": "23011"
    },
    {
        "artist": "結束バンド",
        "catcode": "宴会場",
        "lev_utage": "13?",
        "kanji": "協",
        "comment": "バンドメンバーを集めて楽しもう!(入門編)",
        "buddy": "○",
        "image_url": "b3c2cfe1e41c7ee9.png",
        "release": "230914",
        "sort": "1370",
        "title": "[協]青春コンプレックス",
        "title_kana": "セイシユンコンフレツクス",
        "version": "24000"
    },
]

実際は1つのリストの中にすべての楽曲が入っている。

オブジェクトの中で譜面レベル部分以外のkeyが辞書順にソートされている(宴譜面を除く)。

また、CHUNITHMと違ってそのデータに該当するものが存在しない場合は空欄ではなくkeyそのものが存在しないようになっている。でらっくす/スタンダード/宴譜面の3種があり、空欄をつくる方式を採用するとファイルの文字数が増えてしまうからだろうか?

▼各key/valueの説明

  • artist: 楽曲アーティスト
  • catname: カテゴリ名
  • date: 新曲か否か。このkeyが存在する場合はNEWという文字列のvalueが入る。そうでなければkeyそのものが存在しない
  • dx_lev_basdx_lev_mas: それぞれでらっくす譜面のBASIC~MASTERの譜面レベル。でらっくす譜面がなければkeyそのものが存在しない
  • dx_lev_remas: でらっくす譜面のRe:MASTERの譜面レベル。譜面がなければkeyそのものが存在しない
  • image_url: ジャケット画像のファイル名。URLhttps://maimaidx.jp/maimai-mobile/img/Music/に付け足すと画像を取得できる。
  • key: 解禁が必要か否かのフラグ。このkeyが存在する場合は(U+25CB)という文字列のvalueが入る。そうでなければkeyそのものが存在しない
  • release: 楽曲リリース日。YYMMDD形式の文字列。現在稼働しているバージョン以外で登場した楽曲のリリース日情報は全て000000にされている(maimai でらっくす FESTiVAL稼働時点では稼働開始日である2022/9/15以前の数字が存在しない)。さらには、後から譜面が追加された場合、その譜面の一般解禁日がこの値になることから、楽曲自体のリリース日にはならないこともある。
  • lev_baslev_mas: それぞれスタンダード譜面のBASIC~MASTERの譜面レベル。スタンダード譜面がなければ存在しない
  • lev_remas: スタンダード譜面のRe:MASTERの譜面レベル。譜面がなければkeyそのものが存在しない
  • sort: 楽曲ソート用の番号(文字列)だと思われる。JavaScriptソースコード上では後述のversionが同一値だった際のソート用の値として使用されている
  • title: 楽曲タイトル。宴譜面においては文字列の先頭に譜面を表す1文字が大かっこ[]に囲まれた状態で付与されている。
  • title_kana: 検索用の曲名。元のタイトルを一定のルールに従って変換したもので、濁点や小文字のないカタカナとアルファベット大文字のみで構成される
  • version: バージョンを表す5桁の番号(文字列)。詳細は後述
  • lev_utage: 宴譜面のみに存在するレベル。末尾に『?』がついている。
  • kanji: 宴譜面のみに存在する譜面を表す1文字。kanjiと銘打たれているが、漢字であるとは限らず、『r』『は』のようなものも存在する。titleの先頭についているそれと同じ……と思いきや、なんと『人マニア』のみtitleは『宴』、kanjiは『X』と異なっているため注意が必要(2025/01/04現在)。
  • comment: 宴譜面のみに存在する、譜面に対する一言コメント
  • buddy: 宴譜面のみに存在する。このkeyが存在する場合は(U+25CB)という文字列のvalueが入る。そうでなければkeyそのものが存在しない

versionについて

maimaiの楽曲リストJSONに存在するversionは、楽曲の追加されたゲームのバージョンを表す文字列である。ここで言うバージョンとは、2週間ごとにある楽曲追加ごとに変更される(内部的な)バージョンであり、名前のついたバージョンを意味しない。

この番号は上3桁・下2桁に分けることができ、それぞれ以下のような意味合いがある。

  • 上3桁: その楽曲が収録された名前付きバージョン(「maimai GreeN」「‍maimai でらっくす Splash PLUS」など)の識別番号。
  • 下2桁: その名前付きバージョンにおける更新の何回目で収録されたかを表す値。当該バージョン稼働日の00から始まり、1ずつ数字が増えていく。

これに従うと、例えば18015は「maimai MURASAKiの16回目の更新」であることがわかる。

以下は上3桁とどのバージョンが紐づいているかのリストである。

  • 100xx: maimai
  • 110xx: maimai PLUS
  • 120xx: maimai GreeN
  • 130xx: maimai GreeN PLUS
  • 140xx: maimai ORANGE
  • 150xx: maimai ORANGE PLUS
  • 160xx: maimai PiNK
  • 170xx: maimai PiNK PLUS
  • 180xx: maimai MURASAKi
  • 185xx: maimai MURASAKi PLUS
  • 190xx: maimai MiLK
  • 195xx: maimai MiLK PLUS
  • 200xx: maimai でらっくす
  • 205xx: maimai でらっくす PLUS
  • 210xx: maimai でらっくす Splash
  • 215xx: maimai でらっくす Splash PLUS
  • 220xx: maimai でらっくす UNiVERSE
  • 225xx: maimai でらっくす UNiVERSE PLUS
  • 230xx: maimai でらっくす FESTiVAL
  • 235xx: maimai でらっくす FESTiVAL PLUS
  • 240xx: maimai でらっくす BUDDiES
  • 245xx: maimai でらっくす BUDDiES PLUS
  • 250xx: maimai でらっくす PRiSM

今後もこの法則に従うと仮定するなら、バージョンごとに数値は5ずつ増えていくものと思われる。

なお、ゲーム自体が2週間毎に更新されるからといって、この値からリリース日を算出することはできない。エイプリルフールの更新や新型コロナウイルスによる2020年の更新のブランクなどが存在するためである。

再生ランキング

▶エンドポイント: https://maimai.sega.jp/data/topChart/maimai_ranking.json

▼レスポンス例

{
  "update": "2025/01/04 07:00:00",
  "ranking": [
    {
      "rank": 1,
      "artist": "YOASOBI",
      "catcode": "POPS&アニメ",
      "image_url": "c7c5029b33c09561.png",
      "title": "アイドル",
      "title_kana": "アイトル"
    },
    {
      "rank": 2,
      "artist": "吉田夜世",
      "catcode": "niconico&ボーカロイド",
      "image_url": "7fc9d2db1826507b.png",
      "title": "オーバーライド",
      "title_kana": "オオハアライト"
    },
    {
      "rank": 3,
      "artist": "YOASOBI",
      "catcode": "POPS&アニメ",
      "image_url": "b36820c1c9f7f7e3.png",
      "title": "勇者",
      "title_kana": "ユウシヤ"
    }
  ]
}

再生ランキングのページで利用されているデータ。ページ上では50位まで表示されているが、なんと内部的には100位までデータが存在する

maimai海外版

楽曲リスト

▶エンドポイント: https://maimai.sega.com/assets/data/maimai_songs.json

フォーマットは現行日本版と同一。ただし、情報が最新でない可能性がある旨が表示されている。

おそらく、大型アップデートの際のみ更新されるものと思われる。

その他の差異は以下の通り。

  • 著作権表示のJSONファイルはhttps://maimai.sega.com/assets/data/RightsInfoText.jsonにある。
  • ジャケット画像のファイル名の前に付け足すURLはhttps://maimaidx-eng.com/maimai-mobile/img/Music/である。

なお、中国大陸版については、CHUNITHM同様そもそも公式サイトが存在しないものと思われる。

オンゲキ

楽曲リスト

▶エンドポイント: https://ongeki.sega.jp/assets/json/music/music.json

著作権の情報は楽曲ごとに存在している。ページ下部にすべてを表示するCHUNITHMやmaimaiと違い、オンゲキは1曲ごとに著作権情報を表示している。

▼レスポンス例

[
    {
        "new": "",
        "date": "20200930",
        "title": "STARTLINER -星咲 あかりソロver.-",
        "title_sort": "STARTLINERホシサキアカリソロVER",
        "artist": "曲:kz(livetune)/歌:星咲 あかり(CV:赤尾 ひかる)",
        "id": "709200",
        "chap_id": "01001",
        "chapter": "目指せ! いっぱいのエール!",
        "character": "星咲 あかり",
        "chara_id": "1010",
        "category": "オンゲキ",
        "category_id": "06",
        "lunatic": "",
        "bonus": "1",
        "copyright1": "-",
        "lev_bas": "2",
        "lev_adv": "5",
        "lev_exc": "8+",
        "lev_mas": "11",
        "lev_lnt": "",
        "image_url": "92bac6746c5cd534.png"
    },
    {
        "new": "",
        "date": "20201008",
        "title": "ロボットプラネットユートピア",
        "title_sort": "ロホツトフラネツトユトヒア",
        "artist": "lumo",
        "id": "913900",
        "chap_id": "04099",
        "chapter": "END CHAPTER(第4章)",
        "character": "みどニャン",
        "chara_id": "9030",
        "category": "チュウマイ",
        "category_id": "05",
        "lunatic": "1",
        "bonus": "",
        "copyright1": "-",
        "lev_bas": "",
        "lev_adv": "",
        "lev_exc": "",
        "lev_mas": "",
        "lev_lnt": "0",
        "image_url": "59fb1dc1b106d17f.png"
    }
]

実際は1つのリストの中にすべての楽曲が入っている。

ここでは通常楽曲とLUNATIC楽曲1つずつを例として挙げた。

同一楽曲であっても通常譜面とLUNATIC譜面で1つずつオブジェクトが存在する。

▼各key/valueの説明

  • new: 新曲か否か。新曲ならNEWが、そうでなければ空文字列がvalueとなる
  • date: 楽曲リリース日(YYYYMMDD形式)
  • title: 楽曲タイトル
  • title_sort: ソート用の曲名。元のタイトルを一定のルールに従って変換したもので、濁点や小文字のないカタカナとアルファベット大文字のみで構成される。形式自体はCHUNITHMやmaimaiと同一だが、こちらは検索には使用されていない
  • artist: 楽曲アーティスト
  • id: 楽曲ID
  • chap_id: 楽曲が属するチャプターのID
  • chapter: 楽曲が属するチャプター名
  • character: 楽曲での対戦相手の名前
  • chara_id: 楽曲での対戦相手のID
  • category: 楽曲カテゴリ名
  • category_id: 楽曲カテゴリのID。名前との紐付きはhttps://ongeki.sega.jp/assets/json/music/categories.jsonでも確認できる
  • lunatic: LUNATICか否か。LUNATIC楽曲なら1が、そうでなければ空文字列がvalueとなる
  • bonus: ボーナストラックか否か。ボーナストラックなら1が、そうでなければ空文字列がvalueとなる
  • copyright1: 著作権表示。内容が無い場合は-がvalueとなる
  • lev_baslev_mas: それぞれBASIC~MASTERの譜面レベル。LUNATIC楽曲の場合はいずれも空欄。『EXP』が『EXC』となっていることに注意
  • lev_lnt: LUNATICの譜面レベル。通常楽曲の場合は空欄となる
  • image_url: ジャケット画像のファイル名。URLhttps://ongeki-net.com/ongeki-mobile/img/music/に付け足すとジャケット画像を取得できる。

ランキング

もはや楽曲リストとは関係ないが、妙に充実していたのでついでに解説する。

公式サイトのランキングページからは3種類のランキングを確認することができる。それぞれJSON形式でデータが用意されている。

バトルポイントランキング一覧

▶エンドポイント: https://ongeki.sega.jp/assets/data/ranking_json/battlepoint/list.json

▼レスポンス例

[
  {
    "month": "9",
    "year": "2018"
  },
  {
    "month": "10",
    "year": "2018"
  },
  {
    "month": "11",
    "year": "2018"
  }
]

バトルポイントのランキングが集計された年月のペア。稼働開始2ヶ月後の2018年9月から毎月集計されていて、今のところ抜けはない。

バトルポイントランキング

▶エンドポイント: https://ongeki.sega.jp/assets/data/ranking_json/battlepoint/data/{YEAR}/{MONTH}/{REGION}.json

URLの{YEAR}{MONTH}はそれぞれ年月に置き換える。

ファイル名の{REGION}は集計エリアを表しており、全国および各都道府県の48パターンがある。全国の場合はzenkoku、都道府県別の場合は文字列regionIdに都道府県ごとに割り振られた2桁のID(01~47)を結合したものである。以下に例を示す。

  • 2020年12月の全国ランキング: .../data/2020/12/zenkoku.json
  • 2019年1月の福井県のランキング: .../data/2019/1/regionId37.json

この都道府県IDは、単に50音順に都道府県名を並べたものであり、JISコードのような既存のコードではない。

▼レスポンス例

実際のプレイヤー名はここでは記載していない。

{
  "aggregateDate": "2025-01-01 04:00:00",
  "rankingList": [
    {
      "rank": 1,
      "userName": "******",
      "point": 22247,
      "imgURL": "https://ongeki-net.com/ongeki-mobile/img/ranking/f88a0523da42c5c4910fcfa08c467ab9.png",
      "updateDate": ""
    },
    {
      "rank": 2,
      "userName": "******",
      "point": 22193,
      "imgURL": "https://ongeki-net.com/ongeki-mobile/img/ranking/f88a0523da42c5c4910fcfa08c467ab9.png",
      "updateDate": ""
    },
    {
      "rank": 3,
      "userName": "******",
      "point": 22186,
      "imgURL": "https://ongeki-net.com/ongeki-mobile/img/ranking/f88a0523da42c5c4910fcfa08c467ab9.png",
      "updateDate": ""
    }
  ]
}

▼各key/valueの説明

  • aggregateDate: ランキングの集計日時
  • rankingList: 実際のランキングデータ。全国では1000位までが、都道府県別では100位までが記録されている
    • rank: 順位。獲得ポイントが同一の場合、数値は重複する
    • userName: プレイヤー名
    • point: 獲得ポイント
    • imgURL: バトルランクを表すエンブレムの画像のURL
    • updateDate: 不明。確認できる範囲ではすべて空文字列であり、使用されていない可能性がある

イベントランキング一覧

▶エンドポイント: https://ongeki.sega.jp/assets/data/ranking_json/eventpoint/list.json

▼レスポンス例

[
  {
    "startDate": "2024-12-12 06:00:00",
    "endDate": "2024-12-25 23:59:59",
    "id": "1451220601",
    "name": "Link!Like!ラブライブ!"
  },
  {
    "startDate": "2024-10-31 06:00:00",
    "endDate": "2024-11-13 23:59:59",
    "id": "1451050601",
    "name": "Primera Fes. ~maimai Stage~"
  },
  {
    "startDate": "2024-10-03 06:00:00",
    "endDate": "2024-10-16 23:59:59",
    "id": "1451010601",
    "name": "ワールドダイスター 夢のステラリウム【第2弾】"
  }
]

実際のデータには、これまでに開催されたイベントがすべて記載されている。

▼各key/valueの説明

  • startDate: イベント開始日時
  • endDate: イベント終了日時
  • id: イベントID。後述のランキングデータ取得に使う
  • name: イベント名

イベントランキング

▶エンドポイント: https://ongeki.sega.jp/assets/data/ranking_json/eventpoint/data/eventId{ID}.json

{ID}には先述のイベントIDを入れる。イベント『ワールドダイスター 夢のステラリウム【第2弾】』なら.../data/eventId1451010601.jsonとなる。

▼レスポンス例

実際のプレイヤー名はここでは記載していない。

{
  "aggregateDate": "2024-12-26 04:00:00",
  "rankingList": [
    {
      "rank": 1,
      "userName": "******",
      "point": 1700000,
      "imgURL": null,
      "updateDate": ""
    },
    {
      "rank": 2,
      "userName": "******",
      "point": 1255666,
      "imgURL": null,
      "updateDate": ""
    },
    {
      "rank": 3,
      "userName": "******",
      "point": 1212345,
      "imgURL": null,
      "updateDate": ""
    }
  ]
}

▼各key/valueの説明

  • aggregateDate: ランキングの集計日時
  • rankingList: 実際のランキングデータ。100位までが記録されている
    • rank: 順位。獲得ポイントが同一の場合、数値は重複する(※)
    • userName: プレイヤー名
    • point: 獲得ポイント
    • imgURL: 不明。確認できる範囲ではすべてnull
    • updateDate: 不明。確認できる範囲ではすべて空文字列

(※そもそもかなり重複しづらい値ではあるが、イベント『バンドリ! ガールズバンドパーティ!』にて3名が377,777点で同率32位だったことが確認できた)

テクニカルチャレンジ一覧

▶エンドポイント: https://ongeki.sega.jp/assets/data/ranking_json/techchallenge/list.json

▼レスポンス例

[
  {
    "startDate": "2024-10-31 06:00:00",
    "endDate": "2024-11-27 23:59:59",
    "id": "1451051702",
    "name": "KING of Performai The 6th 予選ラウンド"
  },
  {
    "startDate": "2024-10-31 06:00:00",
    "endDate": "2024-11-20 23:59:59",
    "id": "1451051701",
    "name": "Primera Fes. ~maimai Stage~"
  },
  {
    "startDate": "2024-10-03 06:00:00",
    "endDate": "2024-12-11 23:59:59",
    "id": "1451011701",
    "name": "ワールドダイスター 夢のステラリウム【第2弾】"
  }
]

構造はイベントランキング一覧と同一であるため割愛する。

イベントランキング

▶エンドポイント: https://ongeki.sega.jp/assets/data/ranking_json/techchallenge/data/eventId{ID}.json

▼レスポンス例

実際のプレイヤー名はここでは記載していない。

{
  "aggregateDate": "2024-11-28 04:00:00",
  "rankingList": [
    {
      "userName": "******",
      "point": 3030000,
      "rank": 1,
      "subPoint": 12974,
      "updateDate": "",
      "imgURL": null
    },
    {
      "userName": "******",
      "point": 3030000,
      "rank": 2,
      "subPoint": 12960,
      "updateDate": "",
      "imgURL": null
    },
    {
      "userName": "******",
      "point": 3030000,
      "rank": 3,
      "subPoint": 12943,
      "updateDate": "",
      "imgURL": null
    }
  ]
}

▼各key/valueの説明

  • aggregateDate: ランキングの集計日時
  • rankingList: 実際のランキングデータ。100位までが記録されている
    • userName: プレイヤー名
    • point: 獲得ポイント(課題曲のテクニカルスコアの合計。曲数によって上限が変動する)
    • rank: 順位。獲得ポイントが同一の場合でも、数値は重複しない(※)
    • subPoint: 獲得ポイント(PLATINUM HIGH SCORE。いわゆる内部精度であり、pointが同じ場合はこちらで順位がつく)
    • updateDate: 不明。確認できる範囲ではすべて空文字列
    • imgURL: 不明。確認できる範囲ではすべてnull

(※イベント『Primera Fes. ~maimai Stage~』の5位と6位がそれぞれ3,030,000点かつ内部10,753点であるにもかかわらず順位がついている。もしかしたら、内部的には達成日時なども参照して順位を決めているのかもしれない)

まとめ

仕様は定期的に変化するので確認を怠ることができない。ただ、昔はバラバラだったフォーマットが徐々に統一されてきているようにも感じる。

Recent Articles
>> キューマンのコンテンツ置き場

Profile

オタクコンテンツで命を繋いでいる人間

Accounts

Category