@m_seki の

I like ruby tooから引っ越し

RubyKaigi 2022 に登壇しましたよ

RubyKaigi 2022にオフライン登壇しました

Create my own search engine. というタイトルでポケカのデッキを検索するシステムの話をしました。 楽しく聞いてくれた人が多かったようで、たいへんうれしいです。

去年、登壇の機会は3回(takeout, iCARE, スクラムなんとか)あったのだけど、どれもラジオ形式というかパネルディスカッションぽい形式での発表でした。 今年は久しぶりに一人で喋ることにしたので、やり方を思い出せず緊張しました。

発表資料

スライド

speakerdeck.com

台本

rk2022.md · GitHub

今回も id:miwa719 に練習手伝ってもらったんだけど、いろいろたいへんでたいへんだった。

もしかすると、gistは変更履歴が見れたりするんだろうか。たいへんでたいへんだった履歴が...。

そういえば

ネットワークトラブルで、オンラインの方々は視聴できなかったと聞きました。後日、配信がされると思うよ。

まあ、それまではこれでも見て!

私とポケカ

www.youtube.com

2021の発表

rubykaigi.org

この仕事、いま欠員が出て困ってます。私とオフラインで開発したい人連絡くだされ。

来年に向けて

三日間参加する体力をつけたいです。

TourBox Elite届いた

TourBox Eliteが届いたのだが

いわゆる左手デバイスのTourBox Eliteが届きました。 まだ使いこなせる気がしないのであった。

Tweetの写真の構成について(クリスタ)

質問されたので自慢します。

これはMacBook Proと4Kモニタに、SideCar(拡張モニタ)としてiPad Proを接続しています。つまり本体とあわせてディスプレイが3つある状態です。 アプリケーションはmacOSのClipStudio Paintです。SideCarでiPad+Apple Pencilで使うと、液タブみたいな感じで使えます。 んで、左手デバイスでツール切り替えながら操作できてるよー、という雰囲気を伝えたい写真でした。

よかったとこ

程よく重いし、机に置いてもがたがたしたり滑ったりしないのはよい。

触覚フィードバックがソフト制御されてるのも面白い。

思ったのと違った点

Preset

自分が一番使うのはLightroom(Classicでないほう)だったんだけど、Lr用のPresetは付いてませんでした。 Presetされてるのは、Lightroom Classicの方。

自分で設定するのはめんどくさい...だれか以下の設定があれば譲ってくだされ。

Davinci ResolveとClipStudioは公式サイトで公開されているユーザー様製のプリセットを使ってます。

付属品

BluetoothつかえるのでUSB-Cのケーブルは付属してません。乾電池はついてるよ!

これ


このリンク↑は旧製品の方。

ポケモンカードの5月のシティリーグの500デッキを類似度計算してグラフにする練習

デッキ間のcos類似度を計算したものを可視化する練習1

@rick36i にシティリーグの結果がプレイヤーズのサイトで見れるということを教わったので早速データを集めてみた。

event.pokemon-card.com

ここから使用されたデッキと使用された日をメモしたので、JSONgithubに保存した。

github.com

できたもの

とりあえずできたデンドログラムはこれ。見やすくするのは続編であとで書く。

http://www.druby.org/city-2022-05-29.pdf

中央の横長のクラスタパルキアです。(色は適当かも) PDFを拡大表示するとデッキのIDが見えると思うけど、これじゃあどんなデッキかわからないので、あとで可視化を工夫する。

類似度の計算

以前からデッキ間のcos類似度は計算できてて、それを使って似ているデッキの比較ができる検索システムを作ってあった。

hamana.herokuapp.com

同じ意味のカード(ホイルとかレアリティ違いとかそういうの)を正規化する仕組みがあるので、見た目が違うカードでも 意味が同じなら同じカードとみなして計算する。なのでデッキIDが違うけど同じデッキ、みたいなのもわかる。

github.com

1要素目がカードのID、2要素目が正規化先のカードのIDまたはオリジナルなら名前。RubyのArrayのppだけど、JSONとしても読めるような...。

距離行列

要素間の距離からなる要素数x要素数の行列を距離行列というらしい。今回は500デッキあったので500x500。 距離は1-cos類似度で計算しました。

これを元に階層型のクラスタリングするぞ。(こちらを参考にしました)

chokkan.github.io

(2n + 1 x 2n + 1行列で解くのがかっこ良さそうでしたが、Rubyなので雑にHashでやりました)

なお最初のPDFは最短距離法で求めたものです。

デンドログラム

んで、デンドログラムが描きたかったんだけど自分でやるのは相当めんどくさいのでobervableの例を参考にしました。

observablehq.com

サンプルをWebページで触るのまでは簡単だけど、自分用のなにかを作るといつもハマるのね。

スクリプト

解きながら・実験しながら改造していったので、スクリプトが断片的にしか残ってない...。もうちょっとかっこよくしたらgithubに載せます。

読んでたけど今回は使わなかった本

AmazonのPAAPIが使えなくなっちゃうのでなにか買っていって!