2018年2月 1日 (木)

wxMaximaでグラフ(Plot)が表示されないとき - システム変数の設定

今新たに簡易分光器やそれに関連する実験の“構想”を練っているのですが、何かと計算が面倒です。ちょっと不精して数式処理/Maximaなんぞを使ってみようとしました。Maximaを使って効果があるのかちょっと疑問もあるのですが、覚えておいて損はないだろうとwxMaxima 17.10.1 で簡単な計算をいろいろやっています。

例によってつまずきっぱなしです (^^;;
数式の入力は最後に Shift+Enter というのに気がつくのに時間がかかってしまったりしています。

一通り使い方の感じがわかったのでグラフを描かせてみることにしました。ところがエラーメッセージが出てグラフが表示されません。

wxplot2d([%o80], [x,-5,5])$
Message from maxima's stderr stream:
set output "C:/Users/公平/AppData/Local/TeAmp/maxout_2452_2.png"

                                                                 ^
"C:/Users/Œö•½/AppData/Local/Temp/maxout2452.gnuplot", line 4: cannot open file; output not changed
util.c: No such file or directory


ホームディレクトリのフォルダ名が漢字なのが問題にされてそうな感じです。漢字を含まないフォルダに変更したいのですが、たいていのインストール手順にはこういうことについては書いてありませんし、環境変数?と思ってググったのですが、それらしいものが見つかりません。

探しているうちにグローバル変数で設定されていることに気がつきました。ただ今度はグローバル変数の設定でつまずきます。まず、

maxima_tempdir:C:\Tmp\Maxima\TempDir;
assignment: must assign a string to maxima_tempdir; found: TmpMaximaTempDir
-- an error. To debug this try: debugmode(true);


次に

maxima_tempdir:C\:\/Tmp\/Maxima\/TempDir;
assignment: must assign a string to maxima_tempdir; found: C\:\/Tmp\/Maxima\/TempDir
-- an error. To debug this try: debugmode(true);

ああでもこうでもないとやっているうちに思考力が低下していました。フォルダ名の書き方に問題があると思っていたのですが、エラーメッセージに解答が書いてあります。システム変数にはstringを設定しろと怒られているんでした。

maxima_tempdir:"C:/Tmp/Maxima/TempDir";
(maxima_tempdir) "C:/Tmp/Maxima/TempDir"

maxima_userdir:"C:/Tmp/Maxima/UserDir";
(maxima_userdir) "C:/Tmp/Maxima/UserDir"

これで無事にグラフが表示されるようになりました \(^o^)/

Exp0x2

------

解決にけっこう時間がかかったので記事にしました。調べてもそれらしい記事が見つからなかったということは、そういうことを調べている人はいない(あるいはみなさん調べるまでもなく自己解決している)、と同義かもしれませんが...

» 続きを読む

2018年1月28日 (日)

Showroomの複数アカウント(複アカ、複垢)について考えてみた(1)

Showroomが複数アカウント(以下“複アカ”と略します)のチェックをはじめました。

複アカとはどういう意味か、なぜ複アカは許されないのか、というようなことを最初に書きたいのですが、面倒くさいので今回は省略します。

ただひとつだけ書いておきます。スマホとPCの両方を使ってShowroomを利用すると複アカとして扱われるのではないかと不安に感じている方がいらっしゃいますがその心配はないです。このことはShowroom - よくある質問に次のように明記してあるからです。

  同じひとつのアカウントであれば、複数の端末から同じアカウントデータでご利用することが可能です。

--------------------------------

複アカはもともと許されていないし、実際イベントで複アカを理由に獲得ポイントが減算されたという事例もありましたが、今回は組織的に取り締まるようです。詳細は「イベントにおけるポイント不正の対応に関する重要なお知らせ」という通知に書いてありましたが対策内容は次の二点です。

・イベント期間中、重複アカウントを用いた不正な応援行為がされていないか定期的にチェックする仕組みを導入

・不正なギフティングが確認された場合はその分のポイントを減算し、正確なポイントをもってランキング結果を発表する

これは22日の通知です。肝心の「何をもって複アカと判断するか」が明記されていません。それを書くと回避策を考える人がいるから、というのが常識的な推測ですが、じっさいはルールを公表できないもっと切実な(?)理由があるような気がしないでもないです。

上のルールは当日から実施されました。つまり22日の正午に減算操作が行われました。このときDDの私は某イベントに出ている三人の配信者さんを応援していたのでイベント参加者の獲得ポイントの変化を記録していました。下記のグラフはイベント参加者から三人分を抜き出したものです。仮に緑さん、青さん、赤さんという名前とします(私が応援していたのがこの御三方というわけではないです)

Sr_graph_00

確かに22日から獲得ポイントの減算が始まっています。このグラフをよく見るといろいろと興味深いことがあります。

まず毎日(A1~A7の矢印で示したところで)ポイント減算の事象が見られます。特に緑さんは毎日減算されています。つまり

  1. 複アカのチェックとそれを理由にした減算は毎日行われている。

ことがわかります。何日に一回とかサンプル的に抽出ではなく毎日全員に対してチェックが行われているようです。

次に赤さんのグラフを見るとA1のところで大きな減算がありA2のところで軽く減算、A3のところでまた大きく減算されています。特にB(=A3)のところは前日の獲得ポイント以上のポイントが減算されています。これは青さんのC点ではさらに顕著で一回で3,4日分の獲得ポイントが減算されています。

Showroomの通知を素直に読むと毎日前日分のチェックを行い複アカがあったらその分を減算するように思えますが実際にはそうではないようです。次のような可能性が考えられます。

  2-1. チェックは前日分だけではなく毎日イベント開始時に遡って行っている。

あるいは

  2-1. 前日分のチェックで複アカが見つかった場合はイベント開始時に遡って再度チェックを行う。

のいずれかが行われており、そしていずれの場合も言えることは

  3.a 複アカを検出する方法(アルゴリズム)は毎日同じではない。

ということです。3.についてはまた二つの可能性が考えられます。

  3a-1. 複数の方法を日替わりで使っている

あるいは

  3a-2. 複アカ検出の方法を常に更新している

です。これはいずれかわかりません。負荷軽減の目的で3a-1.も考えられないことはないですがこういうことをすると配信者、リスナーが混乱するので、おそらく3a-2の方だと思います。複アカの正確な検出は難しい(というより不可能?)と思われるので検出方法を常に改良しようとしていると思うからです。もし3a-2が正しければ、常に検出に改良が必要(もし正確に検出できていれば改良の必要がないはず)ということ、すなわち

  4a. 現在の複アカチェックは正確に行われていない (3a.2 が正しい場合)

ことを意味します。要するに、複アカじゃないのに複アカの嫌疑をかけられて泣いているリスナーさんがいれば、複アカがバレずほくそ笑んでいるリスナーさんがいるのが現状だと思います。

そんなことはないとは思うのですが、可能性としては次のようなのも考えられないわけではないです。

  3b リスナーが複アカに相当する行為を行ったことが検出された場合そのアカウントでのポイントを過去に遡って減算する。

仮に3b.が正しいとすれば次のような状況が排除できなくなると考えられます。

  4b.-1 複アカでも減算が行われないケースがある(3b.が正しい場合、可能性として)
  4b.-2 複アカではなかったのに減算されるケースがある(3b.が正しい場合、可能性として)

今日泥棒した人だから昨日も泥棒したんだろう、と考える人も多いでしょうが、感性としてはともかく論理としては間違っています。

それから減算されたときどのリスナーさんが対象となったのか気になりイベント貢献ランキングをチェックサれる方がいらっしゃると思いますが(少なくとも現時点では)無意味です。

  5. ポイント減算はイベント貢献ランキングには反映しない。

からです。

----------------

私はそもそも複数アカウントのチェックができるものか疑問に思っています。Showroomは「疑わしきは罰する」方向でチェックを行っているのではないかと危惧しています。

Showroomで行われている複数アカウントのチェックの手法を推理し、その推理が正しいか否か検証するにはどうしたらいいか、ということを今いろいろ考えていますので、そのうち記事にしたいと思います。できれば実際に実験して検証したいのですが、それはいろいろと問題があるのでどうしようか悩んでいます。

» 続きを読む

2018年1月20日 (土)

超初心者のGo言語/agouti - ブラウザ操作の基本の基本

これはやく記事にしなければならなかったのですが、面倒で後回しにしていました。ただ実際にGo言語/agoutiを使おうとするといちばん最初に必要なことなので簡略化した形で記事にします。画像や詳細な説明はこれから少しずつ追記していくつもりです。

操作したい場所を探す

ChromeでF12キーを押すとデベロッパーツールが開きますのでこれを使います。デベロッパーツール上でhtmlの上にマウスカーソルを置くとブラウザ画面の対応箇所がグレー表示されます。これで場所を追い込んで行ってもいいんですが、Ctrl+Shift+Cを押すと逆にブラウザ画面上にマウスカーソルを置くとそれに対応するhtmlがわかるようになっていますので、この機能を使った方が早いでしょう。

情報を得る

上の手順でブラウザに表示されている内容を取得する場所がわかり、例えば

  <span id="event-next-point">24,693</span>

の“24,693”という数字がほしいとき(これはShowroomでイベントをやっているときに表示される「次の順位まであと 24,693 pt」の数字のところです)

  evnet_next_point, _ := page.FindByID("event-next-point").Text()

FindByID() で場所を特定し、Text() で文字列を取り出します。ただいつでもおあつらえ向きにID があるわけじゃありません。確実なのはセレクターを使う方法です。セレクターもデベロッパーツールで知ることができます。該当するhtmlにマウスカーソルをおき右クリックして表示されるコンテクストメニューからCopy => Selector と進みます。ここでは“#event-next-point”でした。次の方法でデータを取得できます。

  evnet_next_point, _ := page.Find("#event-next-point").Text
()

Showroomで言えば/onlive/follow のページのように配信者のルームが表になっているときはそれぞれの項目(配信者)の項目へのセレクターは

  #list-ranking > li:nth-child(1) > div > div > div.listcardinfo-image > a

のような形をしています。ここで赤字の数字のところを1から順に2、3、...と変化させればそれぞれの項目を取得できます。

  FmtURLSelector := "#list-ranking > li:nth-child(%d) > div > div > div.listcardinfo-image > a"
  Selector := fmt.Sprintf(FmtURLSelector, i)
  URL
, _ := page.Find(Selector).Attribute("href")


ここでは上の例だとText() となっているところがAttribute() になっていますがこれは

  <a href="/xxxxxxxx" class="room-url">.........<a>

というhtmlからhrefの値を取得しているためです。画像のファイル名を知りたいときもこの方法です。

それからこういう一覧表みたいなのにアクセスする場合はまず表の大きさ(配信者数)を知っておいた方が楽です。これにはCount()を使います。例えば

  NoOfRoom, _ := page.AllByClass("js-follow-li").Count
()

というようにします。

リンクをクリックする

これは上と同じように場所を特定できればClick()を使うだけです。

  page.FindByClass("starButton").Click
()

これはShowroom Toolbox の“一気投げ”のボタンを押しているところです。なおjavascript:void(0) が使われているところは当然のことながらクリックしてもムダですので念のため(これって何か対応方法あるんでしょうか?)


----------

今のところ、ここに書いた範囲の知識でどうにかなっています (^^;;


» 続きを読む

2018年1月13日 (土)

超初心者のGo言語 - 複数の戻り値をもつ関数

見よう見まねでagoutiを使ってブラウザの自動操作ツール(Showroomの星集め)を作っていたらヘンなコンパイルエラーが出ます。

MyPoint := page.Find("#room-gift-item-list > li:nth-child(12) > div").Text()

というソースに対し

multiple-value page.selectable.Find("#room-gift-item-list > li:nth-child(12) > div").Text() in single-value context

と怒られました。単一の値が現れるべきところに複数の値Text()が現れている、ということのようです。

ここではじめてGo言語っていうのは関数が複数の値を戻すことができるということを知るのですが、どうやったら関数の戻り値を取得できるのかなかなかわかりませんでした(まあ、単に調べ方が悪かっただけでしょうか)

この複数の値を戻すというのはかなり違和感があるのですが、よくよく考えてみると引数を使って値を戻すのよりわかりやすくトラブルが起きなさそうですから合理的なのでしょう。

関数の側を含めてこんな感じで使うものらしいです。

package main

func sub(f1, f2 int) (int, int, int, int) {
	return f1 + f2, f1 - f2, f1 * f2, f1 / f2
}
func main() {
	a, b, c, d := sub(10, 3)
	println(a, b, c, d)

	a = sub(10, 3)
	println(a)

	_, a, _, _ = sub(10, 3)
	println(a)

	_, _, a, _ = sub(10, 3)
	println(a)

	_, _, _, a = sub(10, 3)
	println(a)

}

13 7 30 3
13
7
30
3

funcを定義するときは戻り値の型を定義するところで複数の戻り値それぞれの型をカンマで区切り括弧でくくる。戻り値を受けるときは戻り値の分だけ変数をカンマで区切って並べるということになります。戻り値の一部を使わないときは変数の代わりにアンダースコアを置きます(ダミーの変数を置くと使われていない変数があるというエラーが出てコンパイルが通らなくなります)

» 続きを読む

2018年1月 9日 (火)

超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

Showroomの星集めツールを作ろうとGo言語/agoutiを扱いはじめて2週間ほど経ちました。経験のある方には信じられないようなところでつまずきまくっています。いろんなサイトの記事も参考にさせていただいているのですが、レベルが高すぎて読むのに苦労したりしています。

私ももう一ヶ月も経つと超初心者から次第に初心者になりさらに一年も経つと経験者となって今の苦労はきれいに忘れてしまいそうです。そこで今のうちにつまずいたあれこれを記事にしてこれからGo言語を始める方の参考にしていただこうと思い立ちました。

最初はもっともGo言語らしいと思われるGoroutine(並列処理)の話です。以下もっとも簡単なGoroutineの例ですが、これでも非同期で並列に処理が進んでいることがわかります。次にどうやって動作を同期させるのかというようなことでチャンネルの話なんかが出てきます。

» 続きを読む

Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/agouti)

Showroomでリスナーレベルをあげてどういう意味があるのかがよくわかりません。レベルに応じたアバターがもらえますが、逆にそれ以外に何もメリットがないようにも思えます。それでもレベルを上げたいという記事です。

リスナーレベルについては

  SHOWROOM アバター - レベル1~9アバター&リスナー累計ポイント

から始まる一連の記事が詳細でとても参考になります。レベル40台くらいだと10万ポイントでレベルが1上がるようですが、これは実体験とあってます。ちなみにレベル45までは(こういうツールに頼らず)“指”だけで到達しました。

なおShowroomのSHOWROOM 会員規約の第10条に「禁止事項」というのがあって、自動操作は禁止事項に該当する可能性があります。表向きの理由はともかくサーバーに負荷をかけるな、という意味だと思います。人間のやることを人間がやるのと同じくらいのスピードでやってる分には問題化することはないと思っていますが、そのあたりはご自身で判断してください。

そこそこコメントは入れてあるので詳細はプログラムを読んで確認していただきたいのですが、要点を書くと

  ・61分に1回ずつ星集めと種集めを行う。
  ・集まった星・種は10個単位で投げる。

ということをやっています。

レベルは投げた星・種に応じて上がるものなので投げることが重要です。そういう意味では“星集めツール”ではなく“星投げツール”と言った方がいいかもしれません。

カウントもしていますが、これは配信者に対するお礼の意味でやっているだけでレベルアップとは無関係です。はじめたばかりの配信者さんは星投げやカウントよりコメントを喜ばれるようなので、そのうち「こんにちは~」とか「星集めさせていただいています」みたいなコメントする機能も追加しようと思っています。

タイトルにあるようにGo言語/agouiを利用しています。“開発”はLiteIDEを使っています。なかなか便利です。

それからこのプログラムはShowroom Toolboxが導入されていることが前提です。Showroom Toolboxの設定は事前にしておきその環境下でプログラムを実行しています。環境の引継ぎ方ですが、まず

  "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:\tmp\chrome

みたいなショートカットでChromeを起動して必要な設定をします。そのあと以下のプログラムのように書けばOKです。

それからStartTime.txtは次のような内容のファイルです。

10 24 1
9 53 1


上の行が星集めを開始する時刻(時、分)、下の行が種集めを開始する時刻(時、分)です(このファイルはプログラム実行中にエディターで変更することもできます)

種集めが終わると開始時刻は自動的に更新されます。つまり61分後が新しい星集めの時刻として設定されます。

二つの行の最後の数字は0か1です。
1のときはレベルアップが目的でとにかく最大限星を集め、集めた星がムダにならないように投げていきます。
0のときは集めるだけです。集めたものを投げなかったときは61分後に1回だけ星をもらいます。言うまでもなく“自動三周ツール”を作ることを前提とした機能です。次はこの数字を指定した時刻(例えば配信開始予定時刻の1時間45分前)に1から0に変更する部分を作ろうかと思っています。プログラムはひとまず意図した動きをするようになりましたがまだ作成途中です。不足する処理、冗長な処理、コードなどいろいろあると思います。ツールと別にShowroomを閲覧しているケースを考えるとなかなかに難しいところがあります。あんまり目くじらたてずに御覧くださるようお願いします。

  ----------

参考

  「Showroomでの自動星集めの試み (1)
  「Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る
  「
Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間
  Showroomでの自動星集めの試み (4) 星集めツール
  Showroom ラスカルイベの最後の5分間
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/agouti)

  「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

  ---------------------


  Qiita @0829 - Goではじめてみたブラウザの自動操作

  Qiita @tenten0213 - agoutiというWebDriverクライアントを使って面倒な作業を自動化する
  「Qiita @masaru_b_cl - Windows上でGo言語初心者向け学習環境を作る

  GoDoc - package agouti

  「はじめてのGo言語

  天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

» 続きを読む

2018年1月 4日 (木)

Showroom ラスカルイベの最後の5分間

先日Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間 という記事を書いたのですが、あれは正確に言うとガチイベの予選がガチイベっぽかったという話でした。

今回取り上げるのは

  1位になって ラスカルのオリジナル カスタムルーム背景制作権をGET!!

というイベントです。イベントの(特典の)内容からするとほんわかした感じなのですが、このイベントがすごいことになっているという話を聞き、前回と同じように最終日の終了5時間前から終了までをモニターしてみました。

Photo

今回はポイントの推移だけではなく不定期に「イベント貢献ランキング」を取得し最終結果の推測ができるだけ正確になるようにしています。

このイベントはBさん(赤)が優勢だったみたいですが、最後にAさんが仕掛け1位になったところから記録されています。注目していただきたいのは縦軸のメモリで1,000万ポイントを軽く越えているという凄さです。三位以下の方のグラフがないのも三位の方でさえ850万という大差をつけられているためです。

「イベント貢献ランキング」の上位100名のみなさんの獲得ポイント合計は常にBさんがリードしています。ようするにAさんの方は101位以下の下位のみなさんの頑張りがすごいということになります。

Bさんの101位以下の獲得ポイントの合計は100位の方のポイントの80倍くらいなのですが、Aさんの方がこれが90倍くらいになっています。100位の方のポイント10倍なんてたいしたことないだろうと思われる方が多いと思いますが、このイベントに関してはそんなことはなくそれだけでなんと30万ポイントになります。

Aさんが広い支持を集めているのに対してBさんはどちらかというと貢献ランキング上位の方の強い支持があります(誤解していただきたくないのですが、Aさんの上位の方もそうとうな頑張りをみせていますし、Bさんもふつうのイベントでは見られないくらいの支持基盤があります)

最後の5分間に貢献ランキングの増加分が多かった方10名を抜き出したのが次の表です。
この表からもBさんの上位の人たちががんばっているのがわかります。

Photo_3


Aさんの方で目立つのは(おそらく、以下同様)タワー10本を立てた1位の方、くま10匹を投げた2位の方ですが、それに対して、Bさんの方はくま10匹を8回投げたと思われる1位の方をはじめくま10匹5回のお二方がいてその後もくま10匹を2回あるいは1回投げた方が続きます。

じつはBさん陣営は最後の5分間はギフトを投げなくても1位になれたようです。ただ獲得ポイントがリアルタイムでわからないので相手陣営がギフトを投げているのを見るとどうしても投げざるを得なくなるというのが現実のようです。このあたりのShowroomのシステムはよくできています。

  ----------

参考

  「Showroomでの自動星集めの試み (1)
  「Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る
  「
Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間
  Showroomでの自動星集めの試み (4) 星集めツール
  Showroom ラスカルイベの最後の5分間
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

  「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

  ---------------------

  Qiita @0829 - Goではじめてみたブラウザの自動操作
  Qiita @tenten0213 - agoutiというWebDriverクライアントを使って面倒な作業を自動化する
  「Qiita @masaru_b_cl - Windows上でGo言語初心者向け学習環境を作る

  GoDoc - package agouti

  「はじめてのGo言語

  天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

 

» 続きを読む

2018年1月 3日 (水)

Showroomでの自動星集めの試み (4) 星集めツール

Go/agoutiの扱いにも次第に慣れてきました。「星集めツール」(「種集めツール」)も形になってきてある程度実用にできそうなものができました。

なおあらためて書きますが、これは技術的にこうすればできるというだけの記事です。こういう方法がShowroomのルール上問題ないのかとか、こういうことをしたとき配信者にどういう印象を与えるかはまだ考えていません。実際に使うのであればそういうところをよく検討した上でお願いします(Showroomでの自動星集めの試み (2) 配信ルームの一覧を作るに「SHOWROOM 会員規約」の内容についてちょっと触れています)

------

次のような“仕様”です。仕様と言っても概要です。詳細はプログラムとそこに書かれたコメントを参考にしてください。
それからこのプログラムではログイン操作は行っておらず、ログイン操作を行った環境で起動すれば環境を受け継ぐことができる、ことを利用しています。これについては例えばQiita @0829 - Goではじめてみたブラウザの自動操作に説明があります。

1. 「アイドル」枠~「お笑い・トーク」枠について以下を繰り返す。

1.1 「まいにち○○」と「ONLIVE」について以下を繰り返す。

1.1.1 配信ルーム数を取得する

1.1.2 配信ルームの数の分以下を繰り返す
1.1.2.1 ルームの名前、URL、配信開始時刻を取得する
1.1.2.2 配信開始時刻が一定の範囲にあるものだけ名前、URLをリストに格納する。

1.1.3 リストに格納されたルームの数の分以下を繰り返す。
1.1.3.1 ルームを開く
1.1.3.2 自動カウントを開始する(Showroom Toolboxを使います)
1.1.3.3 30秒ウエイトします。
1.1.3.4 獲得ポイントを取得します。
1.1.3.5 獲得ポイントが99ptになったとき、あるいは獲得ポイントが3回続けて同じ値のときはすべてのループをブレークします。


1.1.2.2で配信時刻をチェックしているのは特定のルームの一回の配信中に2回訪問しないようにするためです。一定の範囲は現在“40分前~現時点”としています。今後いわゆる“三周”を行ったりすることを考えると、
  ルームを配信開始時刻の古い順に開いていき
  99ptになったときのルームの配信開始時刻を記録する
  次の巡回ではその時刻以後開始したルームを探索する
というような方法が妥当かもしれません。
また三周時の短時間での星集めではTwitter投稿による“ボーナス”を利用すべきかも。

実行結果の例(部分)
“<× 5>”というような表示が獲得ポイントです。ほんとうは5ずつ増えていくはずですが、
・リストを取得してからルームを開く前に配信が終了していた。
・投票機能を利用しているため取得したものが獲得ポイントにならない
・表示のタイムラグで一つ前の状態の獲得ポイントが取得された
などあって獲得ポイント数の表示に乱れが生じることがあります。

また、

  [2740:11996:0103/081342.970:ERROR:process_metrics.cc(105)] NOT IMPLEMENTED

というエラーメッセージが表示されることがありました。動作に問題はなさそうですが原因・理由はまだわかりません。
 21003,<× 5>,<https://www.showroom-live.com/48_ISHIDA_CHIHO>,<石田 千穂(STU48)>
21004,<>,<https://www.showroom-live.com/tps_0430>,<【SOS】高3あやのんののんびりお天気お姉さん>
21006,<× 10>,<https://www.showroom-live.com/kazchi22>,<【新アバ配布中】PKMあかりのふわふわるーむ>
21007,<× 15>,<https://www.showroom-live.com/komugisrf>,<SRF AWARD 2017★@秋田県産小麦>
21008,<× 20>,<https://www.showroom-live.com/miyamae>,<イベント参加中!宮前優花の わらいまSHOWROOM!!!>
21009,<× 20>,<https://www.showroom-live.com/comet_mikuru>,<SOS!ガチイベ!♡みくる♡【J&M】>
21010,<× 30>,<https://www.showroom-live.com/harajukumate_riri1>,<☆りりRooM☆ハラ塾メイト市村梨里>
21011,<× 30>,<https://www.showroom-live.com/0122_tps>,<金井千咲のチータイガーがおがおroom♡>

  ----------

参考

  「Showroomでの自動星集めの試み (1)
  「Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る
  「
Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間
  Showroomでの自動星集めの試み (4) 星集めツール
  Showroom ラスカルイベの最後の5分間
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

  「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

  ---------------------

  Qiita @0829 - Goではじめてみたブラウザの自動操作
  Qiita @tenten0213 - agoutiというWebDriverクライアントを使って面倒な作業を自動化する
  「Qiita @masaru_b_cl - Windows上でGo言語初心者向け学習環境を作る

  GoDoc - package agouti

  「はじめてのGo言語

  天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

 

» 続きを読む

2017年12月30日 (土)

Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間

後から考えるとこの記事ではこうやっておけばよかったというようなところがたくさんあります。方法を多少は改善した記事が

  Showroom ラスカルイベの最後の5分間

にあります。

-------------------------

タイトルには“ガチイベ”と書いたのですが、正確にはガチイベの予選の話です。とは言えガチイベらしさは出てると思います。

Go/agouti による自動星集めを検討しているわけですが、プログラミングにも少しは慣れてきたのでガチイベの最後の4時間、獲得ポイント数上位の方たちの獲得ポイントの推移を調べてみました。

対象としたイベントは  

  TP公式番組アシスタントMCの奪取イベント!(東京エリア B予選)

です。どういうイベントなのかは上のリンクの中にあります。イベント特典(つまりこのイベントの価値)も書いてありますが、今回は予選ですので特典は“上位5名が決勝に出られる”ことになります。つまり1位でも5位でもいいけれど5位と6位は天と地ほど違うということです。

このイベントを選んだ理由は、私が応援している配信者さんが参加していたから、という単純な理由です。

イベント最終日の14時の時点での獲得ポイント数上位8名の方の獲得ポイントの推移を17時からイベントが終了する21時直前まで取得してグラフにしました。
イベント終了時の獲得ポイントはどうやって調べるのかわからなかったので貢献ポイント上位100名の貢献ポイントの合計に貢献ポイント100位の方のポイントの50倍をプラスするとして求めています。特に根拠のある方法でなく、ここは今後検討してみたいと思います。
ポイントとはなんぞや、みたいな話は省略します。この記事に興味を持たれる方には不要な話だと思いますので...
Tpslog_2
(データは数分おきに取得しているため重複があります。最後の1時間についてはグラフを見やすくするため重複データを間引きしてあります。データは8位の方の分までとったのですが、7位と8位の方は110万pt以下だったのでこのグラフには表示されません)

途中ちょっとした動きはありますが、イベント終了30分前くらいまでは配信者さんそれぞれについて(配信していないと思われる時間帯は除き)一定の傾きで上昇しています。
リスナーさんが星・種を投げたりカウントしてたりしているのに相当すると思われます。星・種やカウントの数は1時間あたり500個あるいは一配信あたり50カウントと上限が決まっていますので、こうなるのは当然でしょう。

配信終了の30分くらい前からじょじょに傾きが大きくなってきます。有料のギフトを投げはじめているものと思われます。そして最後の5分間のあいだに一挙にポイントが上昇します。

14時の時点で4位だった配信者・Dさん(紫)は、終了5分前でもまだ4位のままだったのですが、5分の間にポイントを30万ポイント程度増やし堂々の一位になります。6位だった配信者・Fさん(橙)も15万ポイントを増やし4位に4位に滑り込み決勝進出の権利を獲得しています。

1位、2位だった配信者さんは30分くらい前から有料ギフトを断続的に投げていますが、最後の5分間で集中的に投げるというのはあんまりやられていないようです。結果として1位だったAさん(青)は3位、2位だったBさん(赤)は5位に落ちてしまっています。とくにBさんはあやうく決勝進出の権利を逃すところでした。

これを見てどう感じるかは人それぞれと思いますが、Showroomのイベント、特にガチイベと言われるイベントの怖さを感じます。

  ----------

参考

  「Showroomでの自動星集めの試み (1)
  「Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る
  「
Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間
  Showroomでの自動星集めの試み (4) 星集めツール
  Showroom ラスカルイベの最後の5分間
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

  
超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

  ---------------------

  「Qiita @0829 - Goではじめてみたブラウザの自動操作
  Qiita @tenten0213 - agoutiというWebDriverクライアントを使って面倒な作業を自動化する
  「Qiita @masaru_b_cl - Windows上でGo言語初心者向け学習環境を作る

  GoDoc - package agouti

  「はじめてのGo言語

  天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

» 続きを読む

2017年12月29日 (金)

Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る

今回は自動星集めの前段階として配信されているルームの情報を集めることをやってみたいと思います。

ところでこの「自動星集め」というのはやっていいことなのかいけないことなのかがよくわかりません。やっていることは(将棋のオンライン対局のアプリ指しなんかとは違って)単に人間のやることと同じことをプログラムで実行しているだけですから問題ないように思うのですが、Showroomがこのようなことを禁じている可能性もあります(まだ確認していません)

その後調べたところ.....
SHOWROOM 会員規約」の第10条に「禁止事項」というのがあって今回の件に関連するのは以下のものになるかと思います。
「当社が提供するアプリケーション、当社が保有するサーバー及びこれらが生成する情報、通信内容等の解読、解析、逆コンパイル、逆アセンブルまたはリバースエンジニアリング」、「ボットなどの自動化された手段を用いて本サービスを利用すること」、「本サービスを変更または妨げることを目的に利用すること」、「その他当社が不適当と判断するもの」
これらがとういう行為に対してどう適用されるかはけっきょく「中の人」の判断ということになるのでしょうから、私にはこれ以上何も書くことはありませんが、参考にしていただければと思います。

以下の例はミュージック枠に表示されている各ルームのリスナー数、配信開始時刻、ルーム名を取得して表示するものです。

このような内容が表示されます。
このとき「まいにちミュージック」で17件、「ONLIVE」で4件の配信が行われていました。

  ----------

参考


  「Showroomでの自動星集めの試み (1)
  「Showroomでの自動星集めの試み (2) 配信ルームの一覧を作る
  「
Showroomでの自動星集めの試み (3) ガチイベ、最後の5分間
  Showroomでの自動星集めの試み (4) 星集めツール
  Showroom ラスカルイベの最後の5分間
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

  
超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

  ---------------------

  「Qiita @0829 - Goではじめてみたブラウザの自動操作
  Qiita @tenten0213 - agoutiというWebDriverクライアントを使って面倒な作業を自動化する
  「Qiita @masaru_b_cl - Windows上でGo言語初心者向け学習環境を作る

  GoDoc - package agouti

  「はじめてのGo言語

  天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)


C:/Appl/Go/bin/go.exe build -i [C:/Users/Seppina/Go/src/main]
成功: プロセスがコード 0 で終了しました
C:/Users/Seppina/Go/src/main/main.exe  [C:/Users/Seppina/Go/src/main]
2017-12-29 12:21:33.5591426 +0900 JST m=+0.019488001
   1   1    789 12:00〜 【絶対1位】最終日大ピンチ 新生☆眞野咲耶
   1   2    384 12:10〜 最終日【 絶対1位】MVイベ☆ゆきこhr☆やっちょんな!?
   1   3    489 12:00〜 【1位狙いMVイベ再挑戦】岡井つばさ THEカラオケ★バトル
   1   4    369 12:00〜 咲耶さん、SHOWROOM始めるってよ。
   1   5    386 12:01〜 シンガーソングライター美桜(みおう)
   1   6    329 12:00〜 ♡みきぽんルーム♡MV獲得イベント決勝!!
   1   7    157 12:09〜 イベ中_美羽希(みゆき)と今夜もリラックス
   1   8    350 12:00〜 詩愛組の部屋@1/31CLUBCITTA川崎トリ21:05〜
   1   9    498 11:18〜 【誕生日イベ中!】クロネコの音楽室☆彡弾き語り
   1  10    218 12:00〜 NANA.の「金髪救急救命士!だって私はベーシスト!」
   1  11    224 11:45〜 ムーラー師匠のギルガメッシュROOM〜♪
   1  12    359 11:29〜 芽亜利・Jの部屋(イベント参加中♪)
   1  13    197 11:59〜 かやROOM【2/11 東京の祖師ヶ谷大蔵で初ライブ】
   1  14    141 12:05〜 I’m your SSW!久保木寛人ルーム!!
   1  15     98 12:09〜 dan hiryu宅録部屋
   1  16     70 12:12〜 Arrowの粗塩対応おつまるTV
   1  17     11 12:20〜 グラッチェ!!送りバント歌手HIROTO
   2   1    239 12:00〜 まゆみん。のお部屋
   2   2    194 12:01〜 TWINKLE KISS
   2   3    114 12:04〜 ✻流架のまったり部屋✻
   2   4      1 12:20〜 ZaBii(ざびー)のショールームへようこそ!!新アバ配布中
成功: プロセスがコード 0 で終了しました

» 続きを読む

«Showroomでの自動星集めの試み (1)

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ