2019年5月18日 (土)

SHOWROOM - イベント結果データ (2)

SHOWROOMの特定イベントの(一部)配信者さんの獲得ポイントの推移、配信者さん間の差、日々の獲得ポイント等をグラフにしたものです。

この記事にあるデータやそれから作成したグラフは自由に使っていただいてかまいません。例えばグラフをダウンロードしてツィートするとか、Excelのシート(もとデータ)をダウンロードして分析し、それを公開する等です。特に連絡していただく必要もありません。

なお、この記事にあるデータは

  「Showroom - イベントの獲得ポイント数を取得して記録するツール

(の改良版=ソースの公開の準備中)で取得したものです。

※ 「SHOWROOM - イベント結果データ(1)」の記事が長くなりすぎたので (2) として新規の記事にしました(一部重複があります)

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

☆ 現行イベントの最新情報

  ★ みんな大好き!ハンバーガーギフト券争奪イベント☆第3弾! (2019/05/22 0:00 - 2019/06/01 23:59)

    各配信者さんの獲得ポイントの推移(1)(グラフ)

    各配信者さんの獲得ポイントの推移(2.拡大図)(グラフ)

    特定の配信者さんを基準にした獲得ポイントの差(グラフ)

    一部配信者さんの日々の獲得ポイント(グラフ)

    もとデータ(数値データ)

  ★ 【SHOWROOM枠 準決勝A】雑誌『bis』モデル発掘オーディション2019! (2019/05/17 13:00 - 2019/05/26 21:59)

    各配信者さんの獲得ポイントの推移(1)(グラフ)

    各配信者さんの獲得ポイントの推移(2.拡大図)(グラフ) (5~8位さんにフォーカスしてあります)

    特定の配信者さんを基準にした獲得ポイントの差(グラフ)

    一部配信者さんの日々の獲得ポイント(グラフ)

    もとデータ(数値データ)

  ★ 【SHOWROOM枠 準決勝B】雑誌『bis』モデル発掘オーディション2019! (2019/05/17 13:00 - 2019/05/26 21:59)

    各配信者さんの獲得ポイントの推移(1)(グラフ)

    各配信者さんの獲得ポイントの推移(2.拡大図)(グラフ)

    特定の配信者さんを基準にした獲得ポイントの差(グラフ)

    一部配信者さんの日々の獲得ポイント(グラフ)

    もとデータ(数値データ)

Bis_vo2_sr_sf_b_e 

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

☆ 過去イベントの情報


  ★ 【3日間イベント】ありがとう、平成 (2019/04/28 12:00 - 2019/04/30 23:59)

    各配信者さんの獲得ポイントの推移(グラフ)

    特定の配信者さんを基準にした獲得ポイントの差(グラフ)

    一部配信者さんの日々の獲得ポイント(グラフ)


  ★ スイーツ好き大集合! (2019/04/14 0:00 - 2019/04/21 23:59)

    各配信者さんの獲得ポイントの推移(グラフ)

    一部配信者さんの獲得ポイントの推移(拡大図)

    特定の配信者さんを基準にした獲得ポイントの差(グラフ)

    一部配信者さんの日々の獲得ポイント(グラフ)

      ダウンロード SR_Event_sweetslover_1.xlsx (数値データ)


  ★ のんび〜り 配信アイテムゲットしよう♪ (2019/03/27 0:00 - 2019/04/25 23:59)

    各配信者さんの獲得ポイントの推移(グラフ)


      ダウンロード SR_Event_30daysevent.xlsx (数値データ)


» 続きを読む

2019年4月 3日 (水)

SHOWROOMのイベント参加者のリストを取得する(GO, スクレイピング)

これまでSHOWROOM関連のプログラムをGO言語でいろいろ書いてきたのですが、すべてブラウザを開きそれを操作するか、というようなやり方をしていました。つまりGO/agouti で書いたものです。

ベースに星集め、種集め、星投げ、種投げを自動化しようというのがあるので、そうしていたわけですが、(いまさらですが)よくよく考えるとものによっては単にリクエストを投げ戻って来たHTMLを解析するだけで済む話でした。

イベントに参加している配信者さんの順位や獲得ポイントを取得する、イベントに参加した配信者さんのリストを取得する、現在配信中の配信者さんのリストを取得する、などの操作がこれにあたります。

今回は、まずはじめに、イベントに参加している配信者さんのリストを取得する、というのを紹介します。

ブラウザに関するおまじない的なものはないのでその分は簡単になりますが、やってることはそんなにかわりません。ただパフォーマンスは圧倒的にいいです。

/*
	SHOWROOMのイベントの配信者の一覧を作ります。
 
	使い方
		イベントページのURLが
			https://www.showroom-live.com/event/event_id
		のとき
 
		EventRoomList.exe event_id
 
		実行するとイベント参加者のアカウント、ID(5~6桁の数字)、ルーム名が
		参加者の数だけ出力されます。
		(ただしデータが得られる参加者数には上限があったはず)
 
*/
package main
 
import (
	"fmt"
	"os"
	"strings"
 
	"net/url"
 
	"github.com/PuerkitoBio/goquery"
)
 
func GetEventRoomList(EventName string) (NoRoom int, AccountList, IdList, NameList []string) {
 
	//	AccountList	アカウントのリスト、アカウントは配信のURLの最後の部分の英数字です。
	//	IdList		IDのリスト、IDはプロフィールのURLの最後の部分で5~6桁の数字です。
	//	NameList	ルーム名のリスト
 
	//	以下の部分は次を参考にしました。
	//		はじめてのGo言語:Golangでスクレイピングをしてみた
	//		https://qiita.com/ryo_naka/items/a08d70f003fac7fb0808
 
	_url := "https://www.showroom-live.com/event/" + EventName
 
	doc, err := goquery.NewDocument(_url)
	if err != nil {
		panic(err)
	}
 
	u := url.URL{}
	u.Scheme = doc.Url.Scheme
	u.Host = doc.Url.Host
 
	//	イベントに参加しているルームの数を求めます。
	//	セレクターはブラウザの開発ツールを使って確認します。
	SNoRoom := doc.Find("p.ta-r").Text()
	fmt.Sscanf(SNoRoom, "%d", &NoRoom)
 
	//	確か30ルームを越える参加者がいる場合は初期表示されるのは30ルームだったはず
	if NoRoom > 30 {
		NoRoom = 30
	}
 
	//	各参加者の情報を取得します。
	for i := 1; i < NoRoom+1; i++ {
		//	セレクターはブラウザの開発ツールを使って確認します。
		selector_account := fmt.Sprintf("li.js-follow-li:nth-child(%d) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > a:nth-child(2)", i)
		selector_id := fmt.Sprintf("li.js-follow-li:nth-child(%d) > div:nth-child(1) > div:nth-child(2) > div:nth-child(3) > ul:nth-child(1) > li:nth-child(2) > a:nth-child(1)", i)
		selector_name := fmt.Sprintf("li.js-follow-li:nth-child(%d) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > h4:nth-child(1)", i)
 
		account, _ := doc.Find(selector_account).Attr("href")
		account = strings.Replace(account, "/", "", -1)
		id, _ := doc.Find(selector_id).Attr("href")
		id = strings.Replace(id, "/room/profile?room_id=", "", -1)
		name := doc.Find(selector_name).Text()
 
		AccountList = append(AccountList, account)
		IdList = append(IdList, id)
		NameList = append(NameList, name)
	}
 
	return
}
 
func main() {
 
	if len(os.Args) == 1 {
		fmt.Println("Usage: ", os.Args[0], " EventName")
		return
	}
	EventName := os.Args[1]
 
	NoRoom, AccountList, IdList, NameList := GetEventRoomList(EventName)
 
	fmt.Printf("0\t0\t0\r\n")
	for i := 0; i < NoRoom; i++ {
		fmt.Printf("%s\t%s\t%s\t%s\tfalse\t1\t2\r\n", NameList[i], AccountList[i], EventName, IdList[i])
	}
 
}

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

参考

  「Showroom - 自動星集め・星投げ・カウントツール)」 (使用法とソースつき)
  
Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール)」 
  「Showroom - イベントの獲得ポイント数を取得して記録するツール
  「SHOWROOMのイベント参加者のリストを取得する(GO, スクレイピング)
  「Showroom - 福引するプログラムとその結果 (1)

  「Showroomの複数アカウント(複アカ、複垢)について考えてみた(1)
  「Showroom - 複数アカウント(複垢)問題の真実 - 実験計画
  「Showroomの重複アカウント(複垢)減算はこうして起きる

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


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

  「Showroomでの自動星集めの試み (4) 星集めツール
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

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

  「超初心者のGo言語 - 複数の戻り値をもつ関数
  「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

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

  「GoDoc - package agouti

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

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

  「はじめてのGo言語
  「天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

  「Qiita @TakaakiFuruse - Golang Goの並列処理を学ぶ(goroutine, channel)
  「Qiita @To_BB - Rubyエンジニアがゴルーチン(Go言語)を学んでみた【初心者向け】
  「Qiita @fukumone - goroutine 使い方まとめ

2018年11月25日 (日)

Showroomの重複アカウント(複垢)減算はこうして起きる

Showroomで一人のユーザーが複数のアカウントを使うことは禁止されており、もし複数のアカウントを使えば獲得したポイントが減算されるとされています。この記事では複数アカウントを使ったときの減算がどのようにして起きるか、どのように減算されるかをできるだけ詳しく説明しようと思います。

最初にお断りしておくべきことがいくつかあります。

まず「一人のユーザーが複数のアカウントを使う」ことを禁止するのはけっこうですが、それを行ったからペナルティを課すというのは(Showroomの仕組みでは)現実には不可能としか思えません。なぜそういうことをするのだろう__というかなぜできないはずの複数アカウントのチェックができると主張するのか不思議に思うのですが、このことについて書くのは今回はやめます。

次に、以下はいろいろ検証した上での記事ですが、複垢減算は状況によりいろいろな影響を受けます。ですから以下に書くことが100%正しいと断言できるわけではありません。また今後のShowroomの仕様変更によって以下とは異なった結果となることも予想されます。このことにはじゅうぶんご留意願います。

最後に、この記事を書くにあたって協力していただいた配信者さんがいらっしゃいます。本来はお名前(ハンドル)を書いて謝意を表すべきです。ですが内容が内容なだけに申し訳ありませんがお名前は省略させていただきます。こころよく実験をお許しいただき心から御礼申し上げます。

なお、これはブログの記事ですから散文的です。要点だけ知りたいという方は

  Showroom - 複数アカウント(複垢)問題の真実 - 実験計画

を御覧ください。Q&A形式でまとめてあります。

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

以下のような状況を想定します。

姉と弟がおり、二人ともShowroomのリスナーだとします。
姉は自室で自分専用のPCでShowroomを視聴し、弟はリビングの家族共用のPCでShowroomを視聴し、さらに同じ配信者さんを応援しているものとします。

※ こう書くと、こういう環境だとふつうIPマスカレードがなんかだろうから二人とも同じIPアドレスになって複垢扱いされるのでは、と思われる方がいらっしゃるかもしれませんが、(少なくとも現時点では)それはないです。二人が同じ配信者さんに星(あるいは種)を投げたとしてもそれぞれは別ユーザー/別アカウントとしてきちと計上されていきます。要するにIPアドレスが同じというだけで同一ユーザーの重複アカウントと判断されることはありません

さてこの二人の応援する配信者さんがイベントに参加しました。イベントは月曜から金曜日まで5日間にわたって行われます。最初の三日間ふたりはそれぞれいつものように配信者さんに星(種)を投げます。
月曜日 火曜日 水曜日 木曜日 金曜日 有効獲得ポイント
姉の獲得ポイント 0pt 1,609pt 1,250pt 2,859pt
弟の獲得ポイント 1,810pt 1,810pt 1,810pt 5,430pt

ここまではとうぜん何の問題もありません。

» 続きを読む

2018年9月21日 (金)

Showroom - 複数アカウント(複垢)問題の真実 - 実験計画(実験結果追記)

Showroomの(特にイベントの)複数アカウント(重複アカウント)の件については

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


を書いたのですが、内容はよく言っても推測・憶測、悪く言えば妄想からなっています。

参考 複垢減算が発生したと思われる例
Sr_graph_00

現実にいろいろ“実験”してみたいのですが、配信者さんに迷惑をかけることになるのでなかなか実行に移せませんでした。ところが最近実験するなら協力してもいいという配信者さんが現れたので実験に取り掛かることにしました。

  ==>   「Showroomの重複アカウント(複垢)減算はこうして起きる

こういうことをやるのはShowroomの規約に反しているのではないかというご指摘があるかもしれません。しかし(重複アカウントが禁止されているのは確かですが)どのような行為が重複アカウントになるのかは具体的にはまったく示されていません。したがってユーザー(例えば兄弟)が自分たちのやっていることが重複アカウントになるのか否かを判断すること、つまり自分たちの行為が規約にに反するか否かを判断することはできないということになります。

要するにShowroomの規約は一言で言うと「ルールは守れ。でもルールは教えない」ということですから「自分たちでルールを明確にしよう」ということです。

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

下記のような内容を実験してみる予定です。もしこんな実験もやったほうがいいんじゃないかというのがありましたらぜひご指摘いただければと思います。内容が内容なのでこの記事にコメントしにくいのであればTwitter(DMも可)でもけっこうです。

なお協力していただいた配信者さんにご迷惑(減算)をおかけした場合は当該イベントで(もしそれができなければ次のイベント以後で)最低でも倍返しが三倍返しはさせていただきます。17日間のイベントで16万pt投げた実績がありますから借りはちゃんと返します (^^)

--------

なお複数アカウントというのは

  同一の端末で複数のアカウントを使用する行為

と思われている方もいらっしゃるようです。でもShowroomの(イベントの)規約説明では

SHOWROOMではお1人様1アカウントでのご利用をおねがいしており、重複アカウントを用いた不正な応援行為は禁止させていただいております。

となっており、複数アカウントというのはあくまで

  同一人物が複数のアカウント使用する行為

という定義のようです。

上の二つは明らかにまったく違う行為です。誤解を招きやすいのでこれからは必要に応じて“同一の端末で複数のアカウントを使用するとき“、あるいは“同一のユーザーが複数のアカウントを使用したとき”みたいに具体的に書くことにします。

--------

要確認事項

・同一IPでの貢献(星投げ、種投げ、カウント、ギフト)

複垢減算があったとき配信者さん、リスナーさんで話し合うわけですが、どうもそれらしいのがない。兄弟(親子、夫婦)で貢献してる人がいるのでひょっとしたら同じIPアドレスなのが原因で減算されたのではないか?みたいな話が出ることが多いです。

さすがにそれはないだろうとは思うのですが.....

  ==> 同一IPアドレスからのアクセスというだけで減算されることはありません。

・同一PC、同一のWindowsログインからの貢献

例えば同じPCで同じログインから兄弟が各自のアカウントでアクセスすれば複垢と判定されそうです。(Showroomの規約から言えば同一人物が複数のアカウントを使っているのわけではないので複垢ではないはすですが

  ==> 必ずしも同一PC、同一Windowsログインからのアクセスというだけで減算されるわけではありませんが、何も考えずに(工夫せずに?)やると減算を喰らいます。

・同一PC、異なるWindowsログインからの貢献

では同じこの兄弟が同じPCを使うが異なるWindowsユーザーでログインしている場合はどうでしょう?もちろん同一IPだったら複垢とみなすのであればこれをやる意味はありませんが...

  ==> 同一PCでもWindowsログインが異なれば減算されることはありません。Windowsログインが違うということは別ユーザなわけですから当たり前ですね。

・同一PC、同一Windowsユーザあるいは同一スマホであるが異なる環境でShowroomを使っている場合

一人がGoogle Chromeを使いもう一人がFireFoxを使っているというようなケースです。場合によってはさらに二人が(各々のスマホのテザリングを使うなどで)異なるIPアドレスからアクセスしているとします。
これはユーザーエージェントとかCookieとかそのあたりを意識しています。

以上はどういう場合が複垢と判断されるかという問題ですが、もう一つ複垢と判断された場合どういう取扱をされるかという問題もあります。

  ==> 同一PC、同一Windowsログインであっても異なる環境でShoworoomも使えば減算されませんが。確実に異なる環境であることのチェックが必要です。

・たとえ1ポイントでも減算されるのか?

  ==> 1ポイントでどうかはチェックしていませんが、数十ポイントでも減算の対象となります。。

・複垢のチェックは毎日行われているのか?

  ==> 断言はできないのですが毎日行われているようです。

・例えばA,Bの二つのアカウントを使ったとみなされた場合どちらが(あるいは両方の合計)が減算されるのか?

  ==> 現時点では明確にお答えできません。仮説はいくつかあるのですが....

・ある時点で複垢とみなされた場合前日以前の貢献ポイントについても減算されるのか。

  ==> 複垢とみなされるとさかのぼって減算されます。

・ある時点で複垢とみなされた場合、翌日以降複垢とみなされる行為をしていなくても減算されるのか?

  ==> 一度減算されたアカウントはイベント終了まで毎日減算されます。

・二つのイベントXの配信者AとイベントYの配信者Bを応援していた場合、イベントX配信者Aで複垢とみなされた場合、イベントYでも複垢とみなされ配信者Bでの減算が発生するのか。

  ==> イベントが異なれば別扱いのようです。

» 続きを読む

2018年9月18日 (火)

Showroomの仕様変更とその対応の履歴

Showroomのシステムの手直しはしょっちゅう行われているみたいですが、ここに取り上げるのはこれまで紹介したツール類(星集め・種集めツール、星投げ・種投げツール、カウントツール、イベントでの獲得ポイント・イベント貢献ランキング取得ツール)の挙動がおかしくなるようなケースについてです。またそれ以外になんらかの理由でツールのおおきな手直しをしたケース等についても記しておきます。

上に記したようなツールが動かなくなった場合は該当するものがないか確認をお願いします。

---------

2018年10月31日(16時頃)

Showroom - 自動星集め・星投げ・カウントツール)

ジャンルの“人気”と“アイドル“の間に“ハロウィン”が追加されました。このためジャンルを示すインデックスを変更する必要があります。

・アマチュア枠についてはプログラムの先頭にある

const Amateur = 9


const Amateur = 8

変更して対応しました。

・公式枠については

  StartJ,StopJの設定で 2となっているところを3、6となっているところを7とします。
  それぞれ2箇所。

  GetNumOfStarsの最後の引数2を3とします(2箇所)

  この変更は今日深夜から明日未明にかけてもとの状態に戻されるのではないかと思われます。

今後このような変更が頻発することが考えられるので公式枠のインデックス用に

const Official_b = 3
const Official_e = 7

を使うことにしました。場合によっては外部の設定ファイルからこの値を読み込むようにした方がいいかもしれません。

2018年9月1日(09時頃)

Showroom - 自動星集め・星投げ・カウントツール)

スポーツ枠がなくなりました。
このため種集めで配信ルーム一覧への移行で(スポーツ枠の次にある)アマチュア枠への移行が行われないなど正常に機能しなくなりました。

プログラムの先頭にある
const Amateur = 9
const Amateur = 8
と変更して対応しました。

★ 「Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール) 

  記事中に説明があります。
  このツールに関しては改訂版を提供していただいていますので、近々差し替えます。

---------

2018年7月15日(17時頃)

★ 「Showroom - イベントの獲得ポイント数を取得して記録するツール

イベントでの獲得ポイントの表示部分で

  "次のレベルまであと "

とあったところが

  "目標達成まであと "

と変更されました。このため獲得ポイントを取得できなくなりました。

ScanActive() (showroom.go)の該当部分を修正し、RoomList.txtで指定した獲得ポイント取得対象配信者リストの第7フィールドが“2”のときには"目標達成まであと "の後からポイントを取得するようにしました。

---------

2018年04月13日(17時頃)

Showroom - 自動星集め・星投げ・カウントツール)

バーチャル枠が追加されました。
このため種集めで配信ルーム一覧への移行で(スポーツ枠の次にある)アマチュア枠への移行が行われないなど正常に機能しなくなりました。

プログラムの先頭にある
const Amateur = 8
const Amateur = 9
と変更して対応しました。

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

参考

  「Showroom - 自動星集め・星投げ・カウントツール)」 (使用法とソースつき)
  
Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール) 
  「Showroom - イベントの獲得ポイント数を取得して記録するツール

  「Showroom - 福引するプログラムとその結果 (1)


  「Showroomの複数アカウント(複アカ、複垢)について考えてみた(1)
  Showroom - 複数アカウント(複垢)問題の真実 - 実験計画
  「Showroomの重複アカウント(複垢)減算はこうして起きる

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

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


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

  「Showroomでの自動星集めの試み (4) 星集めツール
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

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

  「超初心者のGo言語 - 複数の戻り値をもつ関数
  「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

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

  「GoDoc - package agouti

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

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

  「はじめてのGo言語
  「天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

  「Qiita @TakaakiFuruse - Golang Goの並列処理を学ぶ(goroutine, channel)
  「Qiita @To_BB - Rubyエンジニアがゴルーチン(Go言語)を学んでみた【初心者向け】
  「Qiita @fukumone - goroutine 使い方まとめ

2018年8月27日 (月)

水を注いだコップの中のコインは真上に浮き上がって見えるのか?

水を注いだコップの中のコインの見かけの位置について書いた記事をググってみたらなかなかおもしろいことになっています。

比較的多そうなのがこれです。

  例
  「【光の屈折】コインが浮かび上がって見える作図問題の解き方
  「中学理科のまとめ - 光

01

Aから出た光は水面で屈折してBの方へ向かう。Bから見ると水面から出た光が来た方向つまり点線の方向に見えるのでA'のところに見える。

と書かれたものがけっこうあります。

点線の方向に見えるのは確かでしょうが、このことだけからAの真上であるA'の位置に見えるということは言えないように思います。

感覚的にどう見えるかということであれば、これが実感に近いかもしれません。
でも感覚的に....という話を始めてしまうと、もうそれは理科ではないような....

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

単に点線の方向に見えるということであれば例えば向こう側に浮き上がって見えるということでも問題ないはずです。
ただし、このように見えると書かれたものはまだ見たことありません。
(「検定教科書における「思い違い(誤解、誤謬)」 -コップに沈めたコインの見え方-」によればこの“説”を採用した教科書もあったそうです)

02
--------

あるいはこのように手前に浮き上がって見えるということでもいいはずです。

  例
  「【中学中間・期末試験問題集(過去問)・理科1年】」 (理由はなし)
  「検定教科書における「思い違い(誤解、誤謬)」 -コップに沈めたコインの見え方-
    (理由は書いてあるのですが、これでみんな納得するのかなあ、という気はします)

後者はタイトルからもわかるように教科書がでたらめだとお怒りです。2003年に書かれたものですが、その後どうなったんでしょう。気になります。

03
どれが正しいかまじめに考えてみました。

» 続きを読む

2018年8月23日 (木)

水深2mのプールの見かけの水深は? 屈折と光線追跡

まずタイトルの“答え”を書いておくと

  (真上から見た)見かけの水深 = 水深 * 空気の屈折率 / 水の屈折率

です。具体的には

  (真上から見た)見かけの水深 = 水深 * 0.75    (水の屈折率≒1.33、空気の屈折率≒1.00)

で、水深2mだったら1.5mです。頭くらいは出るだろうと思って飛び込んだら頭まですっぽり水の中ということになります。

真上から見るんじゃない場合は次の記事にあります。
  水を注いだコップの中のコインは真上に浮き上がって見えるのか?

----------

どうでもいいことにやけに一生懸命になっているような記事ですが、理由があります。

簡易分光器はスリットの像を回折格子で反射させてカメラで撮影するというような構造になります。とするとカメラのフォーカスは「スリット・カメラ間距離」つまり「スリット・回折格子間距離」に「回折格子・カメラ(のレンズの主点)間距離」を加えたものに合わせればいいように思えますが実際に撮影してみるとそうはなりません。もっと遠くにフォーカスを合わせる必要があります。これはカメラにどういう像ができるかをExcelでシミュレートしてもそのような結果が得られました。(撮影のためのDVD簡易分光器の製作 - 設計編

どうしてそうなるのかもっと理詰めで考えようと思ったのですがそのままになってしまっていました。最近 竹内淳「高校数学でわかる光とレンズ」 講談社, 2016 を読んでいたら「光軸近似と光線追跡」という章があって、簡易分光器のもう少し理屈のしっかりした設計に応用できるんじゃないかと思いました。

そこで今回は小手試しに簡易分光器の上の問題に一番関係がありそうで、しかもとっつきやすい水面での屈折について検討してみました。
(簡易分光器の方はスリットから来た光は回折格子のところで屈折したのと同じことになるからスリット・回折格子間の見かけの距離が大きくなるんだ、という“読み”です)

申し訳ないですが、光線追跡(光線行列とか光軸近似など....)についての説明については省略させていただきます。

光線追跡についてはググるのであれば、「光線行列」、「ABCD行列」などを検索ワードにすればいいかと思います。大学の先生が書かれたものがたくさん見つかります。

例えば

  (京都大学)光物性研究室へようこそ
    授業・セミナーのページ
      電磁気学C
        電磁気学4 2010講義ノート
          幾何光学 補足  <== これ!


光線行列はいくつか流儀があるようで、これは光線ベクトルの2番めの要素がnθになっています。下に書いた水・空気界面での屈折の話の光線ベクトルは2番めの要素がただのθになっているやり方です。
何も考えずに見比べたりするとヘンなことになりますので念のため。

» 続きを読む

2018年8月13日 (月)

Showroom - イベントの獲得ポイント数を取得して記録するツール

これまでShowroom関連のツールをいくつか紹介しましたが、今回は何か操作するというのではなく、イベントで参加者(配信者)の獲得ポイント数を定期的に取得しファイルに記録していくツールです(イベント貢献ランキングリストの取得もできます)

Showroom - イベント結果データ にあるグラフやExcelファイルはこれを利用して作ったものです。例えばこんなグラフを作るのに使います。

Sr_event_beginner_women_official_vo

このツールには次のような特徴があります。

1. テストツール(go/agouti)による実装。
テストツールを星集め・星投げツールに使うのはあんまりいいやり方じゃないなという反省があったのですが、こういう定期的にデータを取得するというような目的だったらあんまり問題なく使えます。
指定したGoogle Chromeの作業フォルダではすでにChromeやShowroomの設定が終わっていることが必要です。ただ星集めや星投げと違いログインしておく必要はありません。

2. ログイン不要
Showroomでツールを使うことに(心理的な?)抵抗がある方もいらっしゃると思います。このツールはログインせずに使えるので(=規約の適用を受けるとは思えないので)安心して使えます。
ログインしてなければ、またあいつ偵察に来たな、と思われる心配がありません。
もちろんログインした状態でも使えます。

3. 複数イベント対応
どのイベントの誰のデータの記録を行うかは毎回入力データファイルを読んで決めます。ツール実行中であってもデータをとるイベントを増減したり配信者を増減することができます(まあ再起動してもたいした手間ではありませんが....)

4. タブ区切りデータの出力
そのままExcelで読み込めます。とうぜんイベントごとに別ファイルになります。
上のようなグラフを作りやすいような形式で出力されます。

5. イベントの最高レベルのポイント数を越えたときの対策
“目標支援ポイント”の数値から“目標達成まであと...”の数値を引いたものを獲得ポイント数としています。イベントの最高レベルを越えるとこれができなくなるので、下位の配信者の獲得ポイント数に“次の順位まであと...”の数値を足して(あるいはこの操作を繰り返して)獲得ポイント数を求めています(したがって獲得ポイント数自体は必要がなくても下位の配信者の獲得ポイントを得ることが必要になることがあります)
また、この操作のためには具体的に何人の配信者の獲得ポイントを求め上位何名までこの計算方法を使うかを指示する必要があります(ここは自動的に行えるように改善すべきでどうすればいいか検討中です)

ソースは以下からダウンロードできます。

  ダウンロード EvalPoints.zip (3.8K)

ZIPファイルには二つのソースがありますが、

src---+--- EvalPoints---EvalPoints.go
      +--- showroom  ---showroom.go

のような位置関係におきます。

» 続きを読む

2018年8月 7日 (火)

Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール)

以前書いた記事 「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)をご覧になったあしかっぴ(@pf_ashika)さんが独自に自動3周ツールを作られたそうです。実行環境も Go/agouti+ChromeDriver+Google Chrome とのことでしたのでお願いしたら快くソースを提供していただきました。そこでこの“3周ツール”を紹介させていただきたいと思います。

私がShowroom - 自動星集め・星投げ・カウントツール)の記事で紹介した(=ダウンロードできる)ツールとはかなり違いがあります。

あしかっぴさんのツール Showroom - 自動星集め・星投げ・カウントツール)
目的・使い方 簡単・確実に3周を行う

一つのコマンドラインで最初の操作の開始時刻と星投げ・種投げの対象ルームを指定するだけで星集め・種集め、(いわゆる)捨て星、星投げ・種投げ、カウントが進んで自動的に3周できる

まず指定した時刻に星集め・種集めを行います。
指定した時刻の61分後にいわゆる捨て星を行います。
さらにその50分後に星投げ・種投げを行い、星集め・種集めを行ったあと、再度星投げ・種投げを行います。
そのまた10分後に星集め・種集めを行ってそれを投げます。
Showroomのリスナー活動に必要な機能を一つ一つ用意しそれを組み合わせて使う

3周には星集め・種集めのための3つのコマンドラインと星投げ・種投げ、カウントの対象ルームを指定するための一つのコマンドラインが必要
構成 コマンドの内容にしたがってGetStars()を繰り返し呼び出す。GetStars()は星集め・種集め、(いわゆる)捨て星、星投げ・種投げ、カウントの機能を全て含む。 複数の星投げ・種投げのためのThrowStars()と星集め・種集めのためのGetStars()をGoroutineとして非同期で動かす。
(コメント(カウント)は排他処理が必要で完全に非同期で動作するわけではない)
動作環境 Go/agouti + Google 最新版
(特にChromeDriverが最新であること。またShowroom Toolboxは使用しないこと)
 同左
実装の違い 星集め・種集めはいわゆる“ツイボ”による
----------
“ツイボ”のとき送信内容をタイムスタンプ+URLに書き換えます。これによって「同じ文面は連続で投稿できません」のエラーの発生を回避できます。
------
以下略(余裕ができたら書きます)
星集め・種集めは30秒ウェイトと“ツイボ”から選択
-------
“ツイボ”は表示されたものをそのまま送信します。
------
以下略(余裕ができたら書きます)

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

追記(2018年9月6日、26日)

2018年9月1日(おそらく9時頃)予告されていたとおりスポーツ枠がなくなりました。
このため下記のソースでは種集めのとき配信ルーム一覧への移行で(スポーツ枠の次にある)アマチュア枠への移行が行われないなど正常に機能しなくなります。
9月3日版のソースではこの点は対応済だそうです。

旧版ではこの問題についてはソースの1,312行にある

status = GetStars(9, 9, OThrow, TCount_1, URL1)



status = GetStars(8, 8, OThrow, TCount_1, URL1)

と修正することによって対応可能です。


この件に関しては近々記事を書く予定です。


 ==> Showroomの仕様変更とその対応の履歴

---------

さて肝心のソースですが、

  ダウンロード sh-871_20180907.zip (9.8K)

    ダウンロード sh-871.go (47.4K)  こちらは旧版(2018年8月3日)のソースです。

にあります。

いただいたソースのログ保存先、(旧版はChromeの作業フォルダも)についてだけは修正していますが、それ以外はいただいたままのものです。

私のもそうですが、使用する場合はソースを読み込んで自分のものとしてから利用してください。何かトラブルがあって「どうしてくれる!」とねじ込まれても困りますから。同様にShowroomの規約が気になる方はご自身で規約を読んで判断してください。

-------

あしかっぴさんのものはstarttime1.txtというデータファイルが必要でその内容は

17 21 3 0 0 https://www.showroom-live.com/account

というようなものになります。

最初の2フィールドがアクションを開始する時刻です(3周するのであればこれは配信開始時刻の1時間45分くらい前の時刻になります。とうぜんこの指定した時刻に星(あるいは種)を集めることができるか、すでに集め終わっていることが前提です)

そのあとの2つはソースを見てほしいのですが、3周するのであれば 3 0 とします。そしてその次が公式枠(“0” 星を集める)かアマ枠(“1” 種を集める)を示します。最後のフィールドは星投げ・種投げの対象ルームのURLです。

2019.09.26 追記

9月3日版についてはあしかっぴさんから次のようなメッセージをいただいています。

  今回は

    「スポーツ枠廃止に伴う修正」
    「福引機能の追加」
  が修正点です.

  福引は starttime.txt において アマ枠 1 か オフィシャル 0 か 
  の選択の部分を 負の数にすれば良いです.

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

参考

  「Showroom - 自動星集め・星投げ・カウントツール)」 (使用法とソースつき
 Showroom - 自動三周ツール(もう一つの自動星集め・星投げ・カウントツール) 
  「Showroom - イベントの獲得ポイント数を取得して記録するツール

  「Showroom - 福引するプログラムとその結果 (1)


  「Showroomの複数アカウント(複アカ、複垢)について考えてみた(1)
  Showroom - 複数アカウント(複垢)問題の真実 - 実験計画
  「Showroomの重複アカウント(複垢)減算はこうして起きる


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

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


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

  「Showroomでの自動星集めの試み (4) 星集めツール
  「Showroomでひたすらリスナーレベルを上げるための星集めツール(Go/Agouti)

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

  「超初心者のGo言語 - 複数の戻り値をもつ関数
  「超初心者のGo言語 - もっとも簡単なGoroutine(並列処理)

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

  「GoDoc - package agouti

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

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

  「はじめてのGo言語
  「天才まくまくノート - まくまく Hugo/Go ノート - 関数を定義する (func)

  「Qiita @TakaakiFuruse - Golang Goの並列処理を学ぶ(goroutine, channel)
  「Qiita @To_BB - Rubyエンジニアがゴルーチン(Go言語)を学んでみた【初心者向け】
  「Qiita @fukumone - goroutine 使い方まとめ

2018年7月20日 (金)

CD-R簡易分光器の限界は? - 「イラストレイテッド光の実験」

これまでの簡易分光器の記事はすべて(CD-Rではなく)DVD-Rを利用したものです。言うまでもなくCD-Rに比較してDVD-Rを使った方が色解像度が高くできるからと思ったからです。

簡易分光器を作ろうと考え始めた頃、当然いろいろググって製作記事や実際に撮影されたスペクトル写真を拝見したのですが、「やっぱり簡易分光器ってそんなに色解像度がとれないものなんだなあ」と思わせるようのものが多かったです。だから少しでも色解像度が高いものがほしかったらDVD-Rしかないと思いこんでしたったという事情があります。

前回の一連の記事ではDVD-Rで(“最大瞬間風速”的な意味では)0.05nmくらいの半値幅が実現できるところまで行きました。とするとCD-Rを使っても0.6nm離れたナトリウムのD1、D2線をきれいに分離するくらいのことは容易に実現できそうです。

----------

先日図書館でたまたま

  田所利康「イラストレイテッド光の実験」  朝倉書店, 2016

という本を見つけました。文字通り反射、屈折、散乱、干渉、偏光など光に関わるいろんな現象の画像とその撮影方法について書かれたものです。簡易分光器とそれを使ったスペクトル写真もあります。蛍光灯、太陽光(フラウンホーファー線)、プラズマボールなどがサンプルとして使われているのですが、フラウンホーファー線の画像を見るとD1線、D2線がきっちり分離し、しかもD1線よりD2線がちょっと太めという特徴まではっきりわかる画像になっています。

作り方も詳しいのですが使い方・撮影法のポイントも簡潔・明瞭に書いてあって私のブログよりよっぽど役に立ちそうです (^^;;

よくよく考えると私のフラウンホーファー線の写真は特定波長領域だけ取り出して色解像度を上げたものが多く、可視光線全域の写真となると「イラストレイテッド光の実験」 にはまったくおよびません。要するにDVD-RでCD-Rに負けているわけでまだまだ修行が必要です。

» 続きを読む

«100Ω抵抗器の端子間で発生した火花放電(沿面放電)

フォト

サイト内検索

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

新着記事

リンク元別アクセス数

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

人気記事ランキング

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