• MMD杯問題で話題になっているマイリス投票の代替案

    2018-03-22 19:2711時間前1

    はじめに

    私はMMDに触ったこともない一視聴者なので、MMD関連の運営に直接働きかけるようなことはしませんし、するつもりもありません。
    ただ一つ気になったのが、MMD杯問題の様々な意見を見ているとマイリス工作はどうしようもないという意見が多かったように感じます。
    そこにだけ意見を出してみようと思いこの記事を書かせていただきました。

    マイリス工作とは

    ここに関しては私の推測になりますが、ニコニコはロボットによるアカウントの生成に対策をしていないことと、非公式APIがわりと充実していることから、スクリプトさえ組めれば、大量に一般会員アカウントを生成し、APIから生成した大量の一般会員アカウントのマイリストを操作することが容易にできるようになると考えられます。これがマイリス工作です。

    この問題は、ランキング工作にも関わってくるので、いま改革を進めているニコニコには早期に取り組んでもらいたい問題の一つでもあります。
    ランキング工作問題とMMD杯でのマイリス工作問題は、動画の評価の指標となるマイリスト登録数を操作されることで、動画の平等な評価ができなくなるという点で、実質同等の問題といえると思います。

    マイリス投票の代替案

    マイリス工作は、皆さんがおっしゃっているとおり、ニコニコの運営が対策すべき問題です。
    ランキング工作に関してはニコニコの対策を待つしかありません。
    しかし、MMD杯のような、いくつかの候補の動画の評価値を算出するという条件であれば、現状の機能でも出来ることがあります。

    それが、プレミアム会員コメントの集計です。

    これはマイリス工作が一般会員の動画再生数、コメント数、マイリスト登録数は好き放題操作できるが、プレミアム会員の操作は、アカウントごとに500円払ってプレミアムアカウントにしない限り操作できないため、工作対策としてはプレミアム会員の何らかの挙動を集計すれば、工作は難しいという考えに基づいています。

    ニコニコのコメントAPIを利用すれば、動画のコメントデータを取得出来るのですが、取得したデータにはコメントごとに会員ID(または一週間で変わる匿名ID)、プレミアム会員フラグ、匿名投稿フラグ、投稿日時といった情報が含まれています。
    それらの情報を以下のように処理します。

    集計期間内の投稿日時のコメントをリストアップ

    プレミアム会員のコメントと一般会員のコメントを分離

    生ID投稿と匿名(184)投稿を分離

    それぞれの重複する会員IDを除去

    それぞれの会員IDの数を集計


    すると、以下のような集計結果が得られます。

    a) 動画に生IDで投稿したプレミアム会員IDの数
    b) 動画に184で投稿したプレミアム会員の匿名IDの数
    c) 動画に生IDで投稿した一般会員IDの数
    d) 動画に184で投稿した一般会員の匿名IDの数


    あとは、これらの結果に好きなように重みを付ければ新たな評価値を作ることができます。

    例えば、このようなプレミアム会員の配点が高く、一般会員の配点が低い計算式にすることで、工作の妨害に一定の効果があると思います。

    評価値の例)
    評価値 = a × 1000 + b × 100 + c × 10 + d × 1


    さらに、これらの値を応用して工作指数の算出が可能になります。

    工作指数の例)
    工作指数 = ( c + d + 1 ) ÷ ( a + b + 1 )


    この例では、工作が起きて一般会員のコメントが大量に投稿されると、工作指数が大きくなり、工作が起きているか否かを判断する材料となりえます。(+1はゼロ除算回避用です)

    集計方法

    言うのは簡単だけど、実際集計するの大変なんじゃないの?と思うかもしれないので、実際に集計するスクリプトを書いてみました。

    https://github.com/pettypechi/nicocc

    第14回と第20回MMD杯を集計するサンプルを同梱してあります。
    使い方は上記のページに書いてあるので、使ってみたい方は用法と用量を守ってご利用ください。
    将来的にニコニコの仕様変更により動作しなくなる可能性があります。
    コードのメンテナンスを出来る人がいないと、実際に運用するのは難しいかもしれません。

    注意点

    集計に非公開のAPIやスクレイピングを使うことに関して否定的な意見の方もいるかもしれません。
    あまり良くわからない人は、岡崎図書館事件(通称Librahack事件)の記事なんかを見てみるといいかもしれません。悪意があったわけではないのに誤認逮捕されてしまった事例です。
    これはかなりのレアケースですが、スクレイピングは一歩間違えれば、サーバーに負荷をかけることになるので、注意して使ってください。
    一応、私の上述のスクリプトではサーバーとの通信の間隔を1秒間空けるように設定されています。
    ただ、ニコニコは結構寛容なようで、公式放送で堂々とサードパーティ製のコメントビューアを使ったりしてるので、そんなに深く考えなくてもいいのかもしれません。私の個人的な見解では、無茶な使い方をしなければいいのかなというような認識です。
  • 広告