beatmania IIDX ULTIMATE MOBILEが稼働しましたね.いきなりですが問題です.
beatmania IIDX ULTIMATE MOBILEの稼働開始時点で,「無料プレー時に遊べる楽曲」は,100曲よりも,多いでしょうか,少ないでしょうか.
さっそくですが解答です.各バージョンの無料プレー曲を取り出すプログラムを作成しました.以下はその出力です.
beatmania IIDX: 1 song 5.1.1. | dj nagureo beatmania IIDX substream: 0 songs beatmania IIDX 2nd style: 1 song .59 | dj TAKA beatmania IIDX 3rd style: 1 song era (nostalmix) | TaQ beatmania IIDX 4th style: 1 song ABSOLUTE | dj TAKA beatmania IIDX 5th style: 2 songs Real | Aya V | TAKA beatmania IIDX 6th style: 1 song Colors (radio edit) | dj TAKA beatmania IIDX 7th style: 2 songs Bad Routine | D.J. Spugna ZERO-ONE | Mr.T beatmania IIDX 8th style: 2 songs MUSIC TO YOUR HEAD | SLAKE airflow | Mr.T beatmania IIDX 9th style: 3 songs LOVE SHINE | 小坂りゆ lower world | D.J.SETUP ライオン好き | AKIRA YAMAOKA beatmania IIDX 10th style: 2 songs Back Into The Light | Sota Fujimori pandora | dj TAKA feat.Tomomi beatmania IIDX 11 IIDXRED: 3 songs RED ZONE | Tatsh&NAOKI RESONATE 1794 | KOHTA ピアノ協奏曲第1番”蠍火” | virkato beatmania IIDX 12 HAPPY SKY: 2 songs Xepher | Tatsh 月光 | Tatsh feat. 星野奏子 beatmania IIDX 13 DistorteD: 2 songs Apocalypse 〜dirge of swans〜 | Zektbach Leaving... | SEIYA MURAI meets “eimy” beatmania IIDX 14 GOLD: 3 songs GOLD RUSH | DJ YOSHITAKA-G feat.Michael a la mode KAMAITACHI | DJ TECHNORCH fw. GUHROOVY Second Heaven | Ryu☆ beatmania IIDX 15 DJ TROOPERS: 3 songs THE DEEP STRIKER | L.E.D.-G satfinal | RAM 華爛漫 -Flowers- | TЁЯRA beatmania IIDX 16 EMPRESS: 4 songs 3y3s | 青龍 Fly Above | Sota Fujimori smooooch・∀・ | kors k 凛として咲く花の如く | 紅色リトマス beatmania IIDX 17 SIRIUS: 4 songs Evans | DJ YOSHITAKA She is my wife | SUPER STAR 満-MITSURU- mosaic | Auridy サヨナラ・ヘヴン | 猫叉Master beatmania IIDX 18 Resort Anthem: 3 songs Mermaid girl | Cream puff XANADU OF TWO | T.Kakuta With Starving Trancer + 森永真由美 灼熱Beach Side Bunny | DJ Mass MAD Izm* beatmania IIDX 19 Lincle: 3 songs I'm so Happy | Ryu☆ 恋する☆宇宙戦争っ!! | Prim 蛇神 | Zektbach beatmania IIDX 20 tricoro: 3 songs FLOWER | DJ YOSHITAKA GRADIUS 2012 | Sota Fujimori Proof of the existence | 猫叉Master+ beatmania IIDX 21 SPADA: 3 songs Adularia | DJ TOTTO Verflucht | Tyrfing アルストロメリア | TAG beatmania IIDX 22 PENDUAL: 4 songs chrono diver -fragment- | 猫叉Master feat.三澤 秋 それは花火のような恋 | 夏色バーニングラブ☆Prim パ→ピ→プ→Yeah! | ヒゲドライバー join. shully & Nimo 紅牡丹 | DJ NAGAI feat. a☆ru beatmania IIDX 23 copula: 3 songs DIAMOND CROSSING | S-C-U vs L.E.D. Dynamite | USAO POSSESSION | TAG underground beatmania IIDX 24 SINOBUZ: 2 songs Amazing Mirage | lapix 冬椿 ft. Kanae Asaba | Xceon beatmania IIDX 25 CANNON BALLERS: 2 songs 東京神話 | DJ TECHNORCH feat.宇宙★海月 vs BEMANI Sound Team "U1-ASAMi" 純真可憐デザイア | BEMANI Sound Team "HuΣeR" feat.Fernweh beatmania IIDX 26 Rootage: 35 songs 50th Memorial Songs -Beginning Story- | BEMANI Sound Team 50th Memorial Songs -Flagship medley- | BEMANI Sound Team 50th Memorial Songs -The BEMANI History- | BEMANI Sound Team 50th Memorial Songs -二人の時 〜under the cherry blossoms〜- | BEMANI Sound Team AGAiN | DJ NAGAI Angels & Demons | 月代 彩 CoMAAAAAAA | Ryu☆ Cranberry City ft. Luschel | lapix Digital Skipper | BEMANI Sound Team "Expander" Dr. Chemical & Killing Machine | Hommarju Ember Lights | Nhato Glory | kradness HEISEI | BEMANI Sound Team "dj TAKA" Hurry Hurry | Masayoshi Iimori IDC feat.REVERBEE (Mo'Cuts Ver) | DJ Mass MAD Izm* L.F.O | aran Let me be your cure | Pizuya's Cell OVER TIME | 空中分解feat.アンテナガール Psycho Sheep Riddim | BEMANI Sound Team "SYUNN" R∞tAge | BEMANI Sound Team "HuΣeR+" SPEED ROCKER | AJURIKA Starry Night | Massive New Krew feat.松平なな THE DAY OF JUBILATIONS | BEMANI Sound Team "S-C-U vs L.E.D." The Rebellion of Sequencer | DJ Myosuke Twilight Warp | Maozon feat. Kyte Urban Constellations | Dirty Androids Wing of Hearts | USAO & DJ Nanashi Wonderland | kors k Yum Yum Jelly | YUC'e dAuntl3ss | DJ Noriken セカンドピアス | OSTER project feat. echo ハードベース・フェスタ | かめりあ feat. ななひら ミストレス・アンに花束を | soejima takuma feat.BEMANI Sound Team "猫叉Master" 夏の匂い。キミの残像。 ft. Kanae Asaba | Xceon 花冠 feat.Aikapin | RoughSkreamZ beatmania IIDX 27 HEROIC VERSE: 5 songs Calvados Queen | OSTER project feat. かなたん Moving on | AJURIKA feat.矢吹真央 Silly Love | DE DE MOUSE THE BRAVE MUST DIE | BEMANI Sound Team "L.E.D.-G" VALKYRIAS -英雄誕生- | BEMANI Sound Team "HuΣeR" feat.Fernweh Total: 100 songs
ということで,正解は「ちょうど100曲」でした.
以下はプログラム作成の経緯です.beatmania IIDX ULTIMATE MOBILEから「楽曲リスト」「GAME PLAY」の順に移動すると,ゲームでプレーできる楽曲一覧が表示されます.楽曲リストを見ると,各行の背景色は,紫,黒,透明(背景透過)のいずれかです.基本的には黒と透明の縞模様なのですが,紫は,表の下まで見ると分かりまして,「※紫セルの楽曲は無料プレー時に遊べる楽曲です。」という注釈がついています.
5曲は少なすぎる…と思いながらページをさかのぼると,これはbeatmania IIDX 27 HEROIC VERSEだけです.バージョン名をクリックすれば変更ができ,初代から最新の27まで,すべて揃っています.26 (Rootage)は表に入った全曲が無料プレー可能.ですが1.5と呼ばれるbeatmania IIDX substreamは,5曲がエントリーされていて紫は一つもありません.
全部で28のバージョンすべてをブラウザでアクセスして,コピー・貼り付けするのは,時間がかかりすぎます.こういう作業はコンピュータだろうと思い,プログラムを作成しました.
プログラムは,3つのRubyスクリプトに分けて書きました.
- iidxum-gatherer.rb:サイトにアクセスして各バージョンのHTMLを獲得
- iidxum-versionpicker.rb:バージョンの数値とバージョン名を抽出
- iidxum-extractor.rb:各バージョンから無料プレー曲を抽出
iidxum-gatherer.rbは,これを使った無用なアクセスを避けるため,公開していませんが,具体的なコードの代わりに,処理の概略を書いておきます.OpenURI.open_uriを使って,https://p.eagate.573.jp/game/2dx/mobile/music/game.html?game_id=27.0といったURLにアクセスし,HTMLをファイルに保存します.ファイル名は,game_idの値と同じにしています.すなわち「...?game_id=27.0」だったら27.0というファイル名です*1.
バージョンは1から27までの各整数に「.0」を付けたもの,それと「1.5」です.iidxum-extractor.rbではコメントにしていますが,各バージョンを小さい値から並べた配列にするには,Rubyで以下のように書けます.ただし各要素はFloatですので,必要に応じて文字列にします.
((1..27).map { |i| i.to_f } + [1.5]).sort
27.0のファイルがあれば,iidxum-versionpicker.rbとiidxum-extractor.rbは別々に動作します*2.前者の出力を後者の「__END__」以下に貼り付けています.
抽出方法ですが,HTMLを対象とした処理だからと思いながらREXMLを試すと,ページがなんと"shift-jis"で,しかもタイトルやアーティストの「&」がそのまま(&ではなく)となっていて,それらを個別に処理してからREXML::Document.newに通すのは面倒に思えてきました.そこでREXMLの使用は取り止め,(UTF-8に変換した)HTMLに対して,String#scanでパターンマッチしました.具体的なコードや,パターンマッチの例は,公開している各rbファイルをご覧ください.
(2019-12-09 深夜に最初のバージョンを公開し,翌朝大幅に書き換えました.)
*1:ブラウザでHTMLを保存してからファイル名を27.0に変更するのでも,wgetコマンドが使用できる環境ならwget -O 27.0 'https://p.eagate.573.jp/game/2dx/mobile/music/game.html?game_id=27.0'を実行するのでも,ファイルを作ることができます.
*2:ただし,27.0のファイルしかない状況で,iidxum-extractor.rbを実行すると,このバージョンの無料プレー楽曲だけを抽出し,出力の最終行は「Total: 5 songs」となります.