ひこぱっちのメモ

読者です 読者をやめる 読者になる 読者になる

ひこぱっちのメモ

特撮系、プログラミング、好きなもの、カラオケなど普段の気になったこと等をメモするブログです。

Rubyのスクレイピングで遊戯王カードbot作って神のカードを当ててみた

以前Rubyクローラー作成、スクレイピング制作を少ししたので、今回はRubyで何か興味あるものをスクレイピングすることにしました。
そして、遊戯王カードを様々なところからスクレイピング、編集してツイートするTwitter botを作りました。

遊戯王カードをドローし続ける遊戯bot

1時間毎に、約6000枚の遊戯王カードの中からランダムに1枚引いて、そのカード画像をツイートするだけのbotを昔作りました。
そろそろ6000回目のドローに達しそうなので記録として残しておきます。
こんな感じのbot


他、主な仕様としては以下の通り

  • 属性、レベル(ランク)、種族をハッシュタグにして同じ数値、種族のカードを調べやすくする
  • 融合・儀式・シンクロ・エクシーズなど特殊な召喚方法のモンスターも召喚方法をハッシュタグ
  • ペンデュラムモンスターはペンデュラムスケールもハッシュタグにする
  • カードの効果はカード画像とは別に、読みやすく編集して大きく記載しておく


コトの始まり

小学生の頃は遊戯王が流行ってましたが、ちょっとだけ手を付けて離れた自分。
(どっちかっていうとこのブログでもよくアクセスのあるガッシュカードにハマってました。)
大学でたまたま先輩が遊戯王をしているところを見て、結構変わってることに驚き、少し興味が。

で、スマートフォンアプリ『遊戯王デュエルリンクス』の事前登録が発表された時に「せっかくだし、今までの遊戯王カードをおさらいしておきたい」と思い、作ることに。
※この時はデュエルリンクスのカード環境が現行のものとは変更されて配信されると知りませんでした(汗)


遊戯王 デュエルリンクス
開発元:KONAMI
価格:無料(アプリ内購入あり)
平均評価:4.6(合計608,813件)
ダウンロード:1,000万回以上
(2017年2月8日時点)

今までドローしたカードを幾つかピックアップ

遊戯王そんなに詳しくない自分が選んでるので、決闘者の人から見たらおなじみのカードかもしれないけど、そこはお許しを。

青眼の白龍


言わずと知れた遊戯王を代表するカードのひとつ。
初期イラストも人気ですが、自分はこっちのイラストが好きです。

クリフォート・アセンブラ

https://pbs.twimg.com/media/CsXs6DaVMAATqVL.jpg
機械族のペンデュラムモンスター。
なによりもエラー出力&文字化け風のフレーバーテキストに驚きました。
遊戯王の数少ないお遊びが見れて面白いです。
(しかもこれ、ちゃんと解読できるんですね

究極幻神 アルティミトル・ビシバールキン

https://pbs.twimg.com/media/CzX8-XDVQAExbwp.jpg
シンクロモンスターで、まさかのレベル0。
名前とイラスト枠の間に見事に何もありません。

No.95 ギャラクシーアイズ・ダークマター・ドラゴン

https://pbs.twimg.com/media/Cy6IFWwUQAAno-t.jpg
(左詰めの)ランク9のエクシーズモンスター。
このbotを作るに関して、一番長い名前、効果、ペンデュラム効果は調べて、それがちゃんと枠内に収まるように設計したのですが、このモンスターは収まってませんでした(汗)
最長の名前と思われる『No.92 偽骸神龍 Heart-eartH Dragon』は半角英語だから収まってたけど、油断した~(汗)
https://pbs.twimg.com/media/Cy56WteUoAAQgKG.jpg

ウィジャ盤

https://pbs.twimg.com/media/CwbIAPVUAAAhj6I.jpg
フィールド上に「DEATH(海外版はFINAL)」の文字が揃えばデュエルに勝利できるカード。
このbotは既に「E」「H」も引いてるのであと少しです。

ラーの翼神竜


4277回目のドローで見事引き当てた神のカード。
botでただ引いただけなのにこの時はめちゃくちゃ嬉しかったです。


bot制作においてしたこと

カード画像のスクレイピング

nokogiriを用いて行いました。
同じカードでレアリティが異なるカードは低い?レアリティの方を選択。

カードの効果のスクレイピング、編集

nokogiriを用いてカードのテキストを取得。
そのままではリミットレギュレーションや余計な情報が載ってる場合があるので編集。
カードの召喚方法の分類、効果文に適切に改行入れて読みやすくしたり、ペンデュラムカードのペンデュラム効果とモンスター効果を分けたり細々とした作業をします。
カード画像とは別にスクレイピングしてるので、合ってるか簡単に照合も。

カード画像とテキストを枠に収めて1枚の画像にまとめる

RMagickを使用。
モンスター用の枠、魔法・罠用の枠、ペンデュラム用の枠にカード画像と、編集したテキストをはみ出さないように載せます。

カードの相場を調べる

カードってたまにとんでもない値段がつくのをご存知でしょうか?
カードの相場が知りたかったのでAPIでカードを検索してリンク掲載。

Twitterに投稿

Ruby Twitter Gem使用。

以上のことを全自動で毎時動作させています。
あと、今回のテキスト編集に当たって、一応大まかな遊戯王のテキストの仕様の勉強(?)。
今の遊戯王の細かな種類が思ってたより多かった…(汗)

まとめ

遊戯王カードに関しては知識が10年ぐらい前で止まっていたので、色んな知らないカードがいっぱいで、驚きの連続でした。

まだ残りの神のカード『オシリスの天空竜』と『オベリスク巨神兵』が引けてませんが、気長にこのbotの引くカードを見守っていきたいと思います。

ついでに、5枚揃った時に効果が出る『封印されしエクゾディア』や『ウィジャ盤』が揃うのも心待ちにしてます(果たして揃うのだろうか。

Rubyによるクローラー開発技法

Rubyによるクローラー開発技法

リンク召喚、リンクモンスターについて

2月17日、フラゲ情報から新しくリンク召喚という召喚方法が追加されることが判明しました。
詳しいリンクモンスターのカード画像などは他サイトに任せるとして、このリンクモンスターの登場で新しくbotの仕様も変えることに。

リンクモンスターの特徴

  • レベルを持たない
  • 守備力を持たない(LINK数が記載されてる)
  • 8方向に向いたマーカーが付いた

これを現状のbotに適用すると、恐らくハッシュタグでLINK数、レベルや守備力の表記を無くす等の変更ですかね…。
マーカーの方向は未定です。

それにしても、リンクモンスター置かないとEXデッキのモンスターが展開できないとはなかなかな縛りを入れてきましたねKONAMIさん…。

今までならシンクロやエクシーズ、ペンデュラムを追加するだけで良かったのに、過去作のキャラクターもリンクモンスターを使わざるを得ない状況にしてしまいました。

これがどう影響するのか、若干不安ですが、続報を待っておきます。


大人向け『ベイブレードバー』で15年ぶりにベイブレード回してきました

先週末に東京に用事があり、帰りに池袋パルコで期間限定で開催されている「爆転シュート ベイブレードバー」へ寄ってきました。
自分は小学生の頃がちょうどベイブレード第1世代で、よく熱中して遊んでました。

今回、その第1世代「爆転シュート ベイブレード」のアニメ15周年を記念してベイブレードバーなるものが開催されました。
当時のベイブレードで遊んでたワクワクを思い出しつつ、いざレッツゴー。


ベイゴマの進化版「ベイブレード

知らない方向けに。ベイブレードは、タカラトミー社が販売しているベイゴマが進化した玩具です。
知ってるよ!って人は飛ばしてね。

第1世代:爆転シュート ベイブレード

ベイは、ざっくり分けると攻撃の要となるアタックリング、重さを担うウエイトディスク、動きを決めるブレードベースの構造となっています。
これらのパーツを変えることで様々なオリジナルのベイを作ります。

油でヌルヌルだったり空中に飛び跳ねたり磁石で動いたり色んなギミックのベイが当時驚かせてくれました(笑)

第2世代:メタルファイト ベイブレード

ボディが小型化し、ほとんどのパーツが金属になったことで、更にベイゴマに近い質感、衝突音が出てるシリーズ。
また、各パーツの名称を合わせたのがそのベイの名称になるため、より改造後のベイをかっこよく言えるように。

例:アースアクライラ145WD

アース(メタルウィール)+アクイラ(クリアウィール)+145(トラック)+ワイドディフェンス(ボトム)
何気にこの命名システム気に入ってます。マシンっぽさ出てかっこよくないですか?

第3世代:ベイブレードバースト(現在)

相手のベイをバトル中にド派手に破壊できるようになりました。
全てのベイの中にバネが仕込まれており、バトル中に一定のダメージを受けると各パーツへバラバラに破裂するようになってます。アニメみたいだ…!

ベイブレードバーとは

その名の通り、お酒を飲みながらベイブレードを楽しめる店です。
第1世代で遊んだことがある人は、今や大人。
その人達にもう一度ベイブレードを遊んでもらえるようにと設けられた、大人のための大人によるベイブレード社交場です。
バーという名前ですが一応未成年も入店できます。
※ただし中学生以下は保護者同伴だよ!

ベイブレードバーの店内の様子

ベイブレードの展示

店内には爆転シュートベイブレードに登場した歴戦のベイ達が展示されています。
f:id:HikoPatchi:20170120074131j:plain
第1世代のベイブレードで遊んだ人には、見覚えのあるベイが多く見つけられると思います。
f:id:HikoPatchi:20170120074134j:plain
左端の大きなトライピオが目立ちますな。
f:id:HikoPatchi:20170120074135j:plain

アニメ上映

f:id:HikoPatchi:20170120075507j:plain
爆転シュートベイブレードのアニメも上映してました。主人公タカオも何度か見た目変わってたなぁ。

フリー対戦スペース

f:id:HikoPatchi:20170120074133j:plain
こちらがお待ちかねの大人の対戦スペース。周りにはベイを構えたお兄さんお姉さんがいます。
なお、対戦で使用できるのは最新モデルのベイブレードバーストです。


対戦風景はこんな感じ。間近で見るとベイの当たる音に心が揺さぶられます。

僕はベイブレード持っていなかったので、貸し出しの物を使わせてもらおうとしましたが、心優しい方が自前のベイを貸してくださいました!
初めてベイブレードバースト触りましたが、思ってたより軽い!
あと組み立ての構造が少し違う!

勝負は3ポイント制で行われ、運良く3連勝することができました。
15年ぶりにシュートしましたが、本気で回すと冗談抜きで結構腕にも力がかかり、体に熱も入りました。
持った時は軽かったのに、シュートしてベイが離れていく瞬間はとても重さを感じました。
この感覚懐かしい…!

まとめ

久しぶりにベイブレードに触れて、間近でベイの回転、シュートを体感し、とても懐かしい気分になりました。
現在は池袋でしか開催されていませんが、もしかしたら関西にも期間限定オープンするかもしれませんね。
もし池袋近くに立ち寄った際は一度覗いてみてはいかがでしょうか。

ではでは。

新元号は平成31年元日から。平成ライダーは何作目までか再確認!

今朝、平成は30年をもって終了し、平成31年元日から新元号への移行を検討すると報じられました。

2016年に『天皇陛下生前退位』が報じられ、新元号はいつから始まるのか話題になりましたね。

それと同時にTwitterではHey!say!JUMP(平成ジャンプ)や平成ライダーなど、「平成」とつくものがトレンドに上がってました。
僕は思いっきりニチアサ民なので平成ライダーネタに乗っかってました。



平成ライダーが話題に上がってたのは、「平成」と名前に含まれてるだけじゃなくて、もう少しで20作目に到達、そして仮面ライダーディケイドが復活するかもしれないというニチアサクラスタの共通の認識があったからなのです。
平成31年が平成でなくなると、平成ライダーはどうなるのでしょうか。
ざっくりと再確認!

あ、プログラマとエンジニアも震えてました(汗)

平成仮面ライダー1期の放送年

2000年から放送が開始された仮面ライダークウガ
ここからの仮面ライダー平成ライダーと呼ばれています。

1月放送開始で、ディケイド以外は1年間放送されるので正確には年は越してますが、主な放送期間として年号を上げました。

平成ライダー最後は何作目になるのか

スーパー戦隊の終了時期とずらすために仮面ライダーディケイドは少し早めの秋に放送を終了。
なので、平成2期ライダーは秋スタートで1年放送。

年を大きくまたいで放送される今のまま続くと、最終作はおそらく以下のように。

平成31年が新元号元年になるので20作目は平成

このままいくと一応放送開始時期で考えた場合、20作品目は無事平成ライダーとして始まり、2期終了の区切りとすることができそうです。

昭和から平成の元号をまたいだ仮面ライダーBLACK RX昭和ライダーのままなので、きっと20作目の仮面ライダーディケイド2(?)も平成ライダーとして扱われるでしょう。

そもそもディケイド2の場合、元が平成ライダーだからそのままかな?

平成ライダー終了と新元号ライダーの共演

そしてディケイド2の放送が終わる新元年秋に新しい年号1作目の仮面ライダーが登場し、昭和と平成の世界を巡る仮面ライダーディケイド大きな物語は幕を閉じます。

平成ライダー代表のディケイドと新元号ライダー1作目のライダーが冬の某共闘映画で素晴らしい共演を見せてくれるでしょう。
多分。そんなことをふと考えた明け方でした。

…せっかく去年から始まった冬映画『仮面ライダー平成ジェネレーションズ』シリーズは2,3作目で終了ですかね(汗)