キャラクター
【FFTrends】流行りのミラプリ装備を60万のキャラから検索できるWebサービスをリリース
公開
URL: https://www.yukapero.com/fftrends※スマートフォンからの閲覧に対応()
※追記 馬鳥速報様に掲載要望出したら一瞬で
記事を作ってくれました。ありがたや・・・
■サービス超概要- 特定の武具を装備(ミラプリ)しているキャラクターを検索し、各キャラの見た目と装備を全て確認できる機能
- 様々な条件下での装備(ミラプリ)ランキングを集計する機能
・・・と文章で説明すると上記のようになりますが、百聞は一見にしかずということで、とりあえずアクセスして実際に見てもらった方がよく分かると思います!
■基本的な使い方・○○○を装備しているキャラクターの色んなコーディネートがみたい1. "全ての装備" を押下して、装備検索ウィンドウを開く2. 装備検索フォームに目的の装備名を入力し、右隣の "装備検索" ボタンを押下する3. リストに表示された候補装備の中から、目的の装備を押下する※ ここでは例として スカラディフェンダー・コート を選択
4. お好きなフィルタリング設定をしてから、右隣の "検索" ボタンを押下する5. ページ下部に指定された武具を装備しているキャラクターのスナップショットの一覧が表示されます※結果が50件以上ある場合、ページ最下部までスクロールすることによって自動的に次の50件がロードされます
6. 気になるスナップショットをクリックすると、詳細な装備セットが確認できます■応用・部位別ランキング画面上部の部位別ランキングTop10に表示されている装備を押下することによっても、検索対象の装備を指定することができます
・詳細な装備ミラプリランキング※画像では例としてナイト胴装備ランキングを表示
"詳細なランキングを見る" ボタンから、60万強あるキャラクターデータから様々な条件を指定した上で、ミラプリランキング(流行)を確認することができます
集計結果から検索装備を指定することもできます
・新規ウィンドウスナップショットの詳細ウィンドウ右上に新規ウィンドウボタンが設置されており、ここから新しいウィンドウでスナップショットを閲覧することができます。
ここでは固有のURLが用意されているため、他の人に特定のスナップショットのURLをシェアすることが可能となります。
例:
https://www.yukapero.com/fftrends/snapshot/592297また、ここではキャラクタの画像を押下することで拡大することができます。
■Twitterhttps://twitter.com/yukapero_com@yukapero_com
本記事とは一切関係ありませんが、残念なことを呟く個人のアカウントを今さきほど作りました
まだ友達誰もいないので、光の戦士様・・良かったら友達なってください(涙目)■要望, 苦情, 感想など・本記事のコメント欄
・
@yukapero_com ・Dyukusi#5800 (Discord)
■その他tipsや愚痴とかしょうもない雑記の垂れ流し
ミラプリのトレンドという着眼点がとても素晴らしい!
装備のデータは取れるデータだとは思っていたけど、装備の情報はキャラクター情報と一緒に取れるデータなんだけど1キャラクターにつき13部位と量が多くて扱いが面倒だから、この着眼点がなければ集められないデータなんですよね。そういうポイントを見つけるセンスがイイと思いました。
種族ごとの流行りミラプリの表現としては、今のシンプルな集計以外にも全体からの偏りで見るという方法もあります。
例えば「ルガディン男性」の「でぶチョコボヘッド」選好度を
ルガディン男性でデブチョコボヘッドをミラプリしているキャラ数」/ ルガディン男性の有効キャラ数
から
全種族の男性でデブチョコボヘッドをミラプリしているキャラ数/ 前種族の男性有効キャラ数
を引いた数字で表現すると種族ごとのキャラクター数を均してルガディン男性が男性全体よりデブチョコボヘッドを選好している度合いが出せます。
これを全装備でやれば「ルガディン男性で特に好まれている装備ランキング」が出せます。
さらにJP/NA/EUのリージョン単位でやるとまた面白い結果が見れると思いますよ。
>> 幸福番長さん
あれ、どこかで見かけたことが・・・と思ったらLodestone国勢調査をまとめられているお方・・!
毎回調査記事を楽しんで読ませて頂いています!
> 装備の情報
とにかく量が多いですよね。DBに全部突っ込んだのですが何と800万レコードのデータになりました。と言ってもサイズで見るとたったの400MBほどだったので、全然ですけどね!
データの収集自体は
[スナップショットID, 装備ID, ミラプリ装備ID, 染色ID, 製作者ユーザID, マテリア1, マテリア2, ... , マテリア5]
※マテリア1-5をカラムとして定義するのはテーブル設計上悪手ですが横着しました
みたいな単純なスキーマのテーブルを作って、そこに一つずつ装備情報を突っ込ませるだけのお手軽工程だったので、使うかわからないけどとりあえず収集しておくといったノリでできました。各ステータス値も同じような理由でとりあえず後先考えず集めておいていますw
ということで、実は最初から装備に着眼して集めたデータでもなかったりします\(^o^)/
文字制限のため↓に続く
>> 全体からの偏りで見るという方法
とても面白い見方ですね!
個人的にも種族によってどのような趣向の差異が見られるのかは気になるところです。
このサービスに需要がありそうなら一定期間毎にスナップショットの追加更新を考えている(現状は10/30に取得したデータのみ)のですが、その際に余力あれば併せてその統計を出す実装もしてみようかと思います。
また、もし番長さんご自身でこのデータを使って色々調べてみたい場合は、DBのdumpデータを個人的に全て送ることもできますので、ご興味がありましたらDM等頂けたらと思います。
質問です。
データから特定のキャラクターを指定して、画像を検索できなくすることは可能ですか?
また、その際には当然本人確認がネックとなりそうですが、その辺についてはどのように考えておられますか?
質問の追記です。
「元々全てLodestone公式から誰でも閲覧可能なものとして常時公開されています」
とありますが、
だから誰でも自由に2次配布していいに決まってる、と解釈されたということですよね?
「何勝手に人の個人情報抜いてる」ということを言われた場合の反証として上記の主張をされているようです(ただし、キャラクターの画像データをもって個人情報だと訴えるのは流石に筋違いだとは思うのですが)。
ので、もしも「2次配布はやめてほしい・ウチのキャラデータだけでも除外してくれないか」などと言われても応じる必要などない、というおつもりだと解釈しても構わないでしょうか?
まぁ、そのようなことを言われても、本人確認ができない以上、応じることは不可能とは思いますが。
>> Magicalnurse Mikarinさん
解釈に関しましてはスクエニから提示されているFFXIVの著作物利用許諾条件に反しない範囲内で利用させて頂いているつもりですが、万一スクエニ側からお叱りがあればサービスを即時停止します。
データから特定のキャラクターのデータだけを削除することは可能です。
また、本人確認に関しましては他14関連のWebサービスでもよく見られる通り、ロードストーンの自己紹介コメントを用いた認証によって間接的に可能だと思います。
(実はFFTimelinesという別のサービス用に当サイトでも会員登録機能を用意しておりますが、そこではまさにこれを利用した本人確認をしています)
1人で趣味の範疇で無償で提供しているサービスなので対応できるものにはかなり限界がありますが、規約に違反しているものがあれば修正するのは前提として、その他の+αの要望でも理由によっては応じると思います。
おお、では実際にデータを削除してもらう際の具体的なアクションを教えてもらえますか?
毎度色んなことにチャレンジしててすごい!
ぜひ使わせていただきます∩^ω^∩
>> Magicalnurse Mikarinさん
あ、ごめんなさい!読み返したら質問の意図からズレていて誤解を招く返信でした。
("そもそも本人確認が出来ない時点でダメだと思うが、もし仮に削除依頼があった場合に(技術的に)特定のデータ削除は可能なのか。" といった形で捉えてしまっていました。その回答としての "今はサービス自体にそういった機能は無いですが、やろうと思えば本人認証も特定のキャラ削除も可能なので、その理由によっては応じることもあります" といったものです)
現状削除機能が無いのは、当然私が不必要だと考えてしまっていてそこに実装コストをかけたくないからですが、Twitter、DiscordのDM又はメール(dyukusi.yukaperopero@gmail.com)に理由を添えて対象のロドストURL又はスナップショットURLを送って頂けたら検討はさせて頂きます!
>> Sia Rrさん
ありがとうございます!実際に直接そういったメッセージを頂けるととても嬉しいです!
■60万のキャラクターデータとは?
10月30日頃時点でLv61以上のジョブを持つキャラクターをDC、サーバー問わずアクティブキャラクターとみなし、これらのキャラクターの "その時点" での装備データを全て収集したもの。
何勝手に人様の個人情報抜いとるんじゃい!と思われる方もいるかもしれませんが、これは元々全てLodestone公式から誰でも閲覧可能なものとして常時公開されています。
(例えば私の場合は https://jp.finalfantasyxiv.com/lodestone/character/18968752/ )
公開してみて需要があれば、メジャーパッチ毎ぐらいに再度スナップショットを取り直してデータを追加したいと考えています。
■キャラクターの画像と、装備が一致していないものがあるんだが?
Lodestoneの仕様で、どうやらキャクターの画像更新と装備一覧の更新には一定のラグがあるようで、この時にデータが取得されたキャラクターにおいてはデータの不一致問題が発生しています。
パット見でも0.5割くらいのデータはこの問題が起きていそうですが、これを自動的に検知して取り除くのはかなり困難だし、手動でやるにも60万のデータからやるには無理ゲーなので、この問題はそっ閉じしました・・・/(^o^)\
■謎のこだわり
・ページ遷移撲滅作戦
個人的にページ遷移が嫌いなので、試しに極限までページ遷移をしない構造(SPAと呼ばれるもの)にしてみました。
どこをクリックしても、ページの一部が書き換わるだけで、ページ遷移が発生しません。
ただしURL管理が面倒になって実装放棄したため、何を操作してもURLが不動に・・w
・レスポンシブ対応
FFTimelinesではスマートフォンからの閲覧など1ミリも考慮せず、完全に弾いていましたが、今の時代天下のスマートフォンデバイスを弾くなんざノーセンスも良いところでは・・・ということで今回は1ミリだけレスポンシブ対応を頭の片隅に入れながら実装してみました。
依然として使いにくさは凄まじいですが、ギリギリスマートフォンからでも閲覧に耐える造りになっていると思いま・・・思いたい・・・
■面白い統計
この60万のデータを用いて、ミラプリ装備ランキングを出す他にも、面白い統計情報を出すことができることに気づきました。
ジョブのレベルや性別、種族分布やアクティブキャラクター比率等の統計は既に他サイトで紹介されているるので除外するとして、見かけたことがないもので結果が出せそうなものが、
- 人気称号ランキング
- 神職人ランキング(銘から製作者を割り出し、そこから誰が作った装備がエオルゼアに最も出回っているかを調べる)
- ステータスランキング(60万のキャラのHPからダイレクトヒット値まで細かく全て収集しておきました)
結果を出したら暇つぶしにまた別の記事として投稿しようかと思います。
■言語
FFTimelinesは初のサービスということで海外も視野にして英語表記でリリースしてみましたが、アクセス解析の結果、結局日本勢からのアクセスが大半を占めていたため、今度は最初から日本語表記にしてみました。
■元々やりたかったこと
今冷静に考えるとメインコンテンツとするにはセンス無いアイデアだった気もしますが、当初のアイデアは類似画像検索技術を応用して、自分のキャラに似ている他キャラクターのコーディネート(装備セット)を検索できるサービスでした。
現実で服屋にいってイケメン体型のイケメンマネキンに着飾られている服装一式を衝動買いするものの、実際に家で自分で着てみるとコレジャナイ感が出て絶望することが多々ありますが、これは自身とイケメンマネキンにギャップがあったことが原因です。
言うまでもない超当たり前のことですが、つまりは人の容姿によって似合う服装は変わってくることにあります。
それなら、自分と近い人、似ている人のコーディネートが色々閲覧できたら、こういった事故を防げるのではないか、という発想です。
(さらにしょうもない思案垂れ流し雑記)
キャラクタの容姿の各設定値があればより正確に類似キャラを特定できますが、残念ながら公開されていないため、これを見た目画像で代用します。
類似度を計算するもとのデータとなる画像にはLodestoneが公開している各キャラクターの顔画像を用います。
(※私の場合の例 https://img2.finalfantasyxiv.com/f/1084ff3e236be47127a2173146755250_470db1bf2e865f9130531fea40b61ee4fc0_96x96.jpg?1541947743 )
これをPerceptual Hash( https://tech.unifa-e.com/entry/2017/11/27/111546 ) を用いて各画像をハッシュ値に変換した上で、各ハッシュ値のハミング距離( https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%9F%E3%83%B3%E3%82%B0%E8%B7%9D%E9%9B%A2 )を求めることによって類似度を求めます。
ハミング距離が小さければ小さいほど、似ている画像の可能性が高くなります。
実際に試しにこれを手元で60万のキャラの画像データを基にして類似キャラを求めてみた結果、かなり高い精度で似ているキャラクターを叩き出すことに成功しました。
Lodestoneのキャラ画像生成にブレが全くないことが精度の高さの秘密でしょう。
例えばララフェル同士であれば顔の位置はピクセル単位で一致しますし、さらに同じ髪型であれば髪型もピクセル単位で同じ座標に描画されます。
ただし重大な問題が1点発覚。
こういったサービスを作る場合、サーバー側の負荷軽減のために普通は各画像同士の類似度を予め計算しておいてどこかに突っ込んでおきたくなりますが、現状これが大分厳しいものとなります。
何故なら、仮に60万の画像があった場合、類似度計算は 600000 C 2 回必要となります。
60万回類似度を計算するのに5秒くらいだったことを考慮すると、全通りの類似度を計算するだけで17日ほど掛かります。
容量的にも600000C2個の数値を保管しておくスペースが必要になりますが、私個人で用意するにはかなり辛いものとなります。
容量の問題に関しては類似度を全て保管しなくても、類似度の近い画像同士で予めクラスタリングしておいて、類似画像検索のリクエスト毎にそのクラスタ内だけで類似度計算させるような構造にすれば問題無さそうやないか・・・ということでクラスタリングアルゴリズムに関して調べるも、現状の技術では60万のデータでは計算量的にまず無理ゲーという結論に。
(そしてこれ書いてて今更気づきましたが、恐らく種族、髪型等の変化の激しいものであれば画像の分類ができるので、つまりは容姿の設定値毎にキャラクタを分類することができそう。そうすれば、計算量的にも容量的にも全ての問題が解決する・・・ゴクリ)
・・・と、このままだと厳しいなぁどうしようかなぁとデータを見ながら悩んでいたところ、このデータ量があれば単純な集計で流行りの装備が分かるし、特定の武具を装備しているキャラクタの画像&装備セットを詳細に確認することができることに気づき、もうそれだけで十分面白そうということで今の形になりました。