backstage

合唱音源の新着情報の舞台裏

【スプラトゥーン2】イカリング2の戦績データをPCブラウザで無理矢理閲覧する

スプラトゥーン2での戦績を閲覧できるイカリング2ですが、 Nintendo Switch Onlineというスマホアプリ内でしか見ることができません。

www.nintendo.co.jp

前作では普通のブラウザ上で閲覧できたので、戦績データをスクレイピングしてクラウドに保存していたのですが、アプリとなると専門外です。

そこで、プロキシを経由して無理矢理に中身を拝見しました。

アプリの通信内容を解析する

今回はプロキシサーバにmitmproxyを使って、イカリングを串焼きにしようと思います。

適当なCentOSホスト上にプロキシサーバを立てました。ファイアウォールの設定で8081番ポート(自由)を自分のIPアドレスに対して公開しておきます。

mitmproxyはpipでインストールできますが、mitmproxy公式のDockerイメージがあったので、それを使って立ち上げました。 良い時代になりました。

$ docker run --rm -it -p 8081:8080 mitmproxy/mitmproxy

プロキシサーバが立ち上がったら、Android/iOSでプロキシの設定をしておいて、 http://mitm.it にアクセスして証明書をインストールし、NintendoSwitchOnlineアプリを開きます。

mitmproxyの画面に https://app.splatoon2.nintendo.net/ というURLへのGETリクエストが出るので、中身を開きます。 iksm_session(イカスミ?)というキーのcookieがあるので、これを控えておきます。 この値を使えば、アプリ上のhttpリクエストが他の環境でも再現できます。いわゆるセッションハイジャックを自身のスマホに対して行います。

ここでPCに戻り、GoogleChromeEditThisCookieを使って、iksm_sessionに先程と同じ値を書き込んで、 https://app.splatoon2.nintendo.net/home にアクセスすればOKです。

f:id:s2terminal:20170723201214p:plain

無事にPCでイカリング2を閲覧できました。

開発者ツールのNetworkタブを覗いてみると、「records」「stages」「active」「timeline」という4つのJSONデータを取得しており、ここさえ叩くことができれば戦績のログデータが手に入ることが分かります。

認証処理を解析してiksm_sessionを手動生成することができれば、スクレイピングでデータを取得することができそうです。 (誰かやって下さい)

参考文献

【IIJmio×mineo×WiMAX】モバイル回線3種でスプラトゥーン2してみた

f:id:s2terminal:20170716150553j:plain

先日、スプラトゥーン2 前夜祭が開催されました。 データが本編には引き継がれず勝敗が関係ないので、試しにモバイル回線を使ってみることにしました。

格安SIMであるmineoIIJmioテザリング、およびUQ WiMAXモバイルルーターを使って、それぞれ3試合ずつしてみました。

回線のスペック

- WiMAX2+ mineo IIJmio
下り 14.25 Mbps 2.09 Mbps 1.42 Mbps
上り 6.66 Mbps 3.38 Mbps 4.03 Mbps
ping 67 ms 108 ms 113 ms

(測定環境: 大阪市内 休日 日中 RBB SPEED TESTを利用)

注目すべきはping応答速度で、WiMAXの67msに対して、テザリングのmineoとIIJmioは2倍近い差をつけられています。 WiMAXなら比較的ラグの少ない環境で通信対戦できると言って良いと思います。

ナワバリバトル結果

f:id:s2terminal:20170716150612j:plain

3回線での合計9試合中、WiMAXで2勝、残りは全敗という散々な結果に終わりました。

単純に、私の得意武器が使えずスプラシューターコラボを使うしかなかったのもありますが、ちょっとひどい戦績です。

f:id:s2terminal:20170716150659j:plain

プレイ中、ゲームが止まったりワープするといった、ラグによるあからさまな異常は起きませんでした。 安定した通信さえできていれば、最低限のマナーを守って遊ぶことができると言えます。

シビアな格闘戦を制することもでき、スペシャルウェポンのジェットパックを使えば次々とキルを取ることができ、普通に楽しむことはできました。 しかし塗りやダメージの反映がちょっと遅れている感じはして、その結果相打ちになったりはしました。ある程度は枷になっていると思います。

またIIJmio利用中に1度だけ、マッチング中に通信エラーが起きてしまい対戦できない時がありました。

通信量について

1回のナワバリバトルに使用する通信量は約10MB/3分程度でした。 秒間に直すと55KB程度なので、通信速度は大抵の4G回線ならば問題ないと思います。

100試合で1GBと考えると、ちょっとずつ遊ぶ分にはモバイル回線の月間通信量が大きく不足することは無いでしょう。 ただしフェスでカンストまで進めたり、ガチマッチをやり込んだりすると、足りなくなると思います。

まとめ

f:id:s2terminal:20170716150815j:plain

  • モバイル回線でも遊べないことはない
  • やり込むなら固定回線必須

NintendoSwitchのスプラトゥーン2は前作WiiUと異なり携帯モードで遊ぶこともでき、必ずしも自宅など固定回線がある環境でなくてもプレイができます。 出先でちょっと遊ぶくらいなら4Gスマホのモバイル回線テザリングでも可能です。 しかし、本格的に楽しむためにはやはりモバイル回線ではなく、家庭の高速で安定した固定回線が必要になってくると思いました。

個人用mastodonサーバーを構築する

f:id:s2terminal:20170423131210p:plain

ニンジャスレイヤーのmastodonサーバーができたようですが、私はmastodonアカウントを持っていないのでフォローできませんでした。

diehardtales.com

上記記事より引用

あなた自身でサーバーを立てて象になることもできますが、それにはある程度のUNIX知識が求められます。

ではせっかくなので、個人用にサーバーを立てて象になってみました。

なおUNIX知識が求められるそうですが普通にLinux(CentOS7)で構築します。

用意したもの

mastodonAWS S3に対応しているそうなので、特に理由が無ければサーバーもAWS EC2で用意するのが無難だと思います。 真面目にやるならAWS ECS+S3+ElastiCache+PostgreSQL on RDSみたいな構成になるのではと思いますが、今回は個人用なので適当です。

サーバーにはdockerやnginxなど必要なものを入れておきます。

アプリケーションサーバーの準備

jtwp470.hatenablog.jp

上記記事などに沿ってdockerイメージのビルド、RailsのアセットプリコンパイルとDBマイグレーションまで終わらせます。 ちょっと時間がかかりますが、気長に待ちます。

最終的に、$ docker-compose up -d すればOKです。

SSL証明書の取得

qiita.com

この作業のときにサーバーの443番ポートをパブリックに開放する必要があります。 (逆に、このとき以外はファイアウォールで必要なアクセス元以外を閉めておけば個人利用には問題ありません)

Let'sEncryptの証明書は3ヶ月で切れますが、3ヶ月も経てば飽きて辞めるか本格運用のためイチから作り直すと思うので自動更新とかはしなくて良いと思います。

メールサーバーの設定

個人利用ならばSMTPサーバーは用意しなくてもDBを直接操作でOKみたいですが、今回はせっかくなのでSendGridを使ってメール送信設定をします。

s2terminal.hatenablog.com

SendGridのアカウント情報を.env.productionに書いておきます。

シングルユーザーモードに設定

qiita.com

上記を参考に、自分のアカウントに管理者権限を付けて、 .env.productionSINGLE_USER_MODE=trueをコメントインし、docker-composeの再ビルドを実行します。

ファイアウォールの設定

今回は個人の検証用途なので、443番ポートは個人のIPアドレス以外に対して基本的に閉じています。IDCFクラウドIPアドレス仮想ルーターファイアウォールで設定しています。

他に、フォローしたいアカウントのあるサーバーからのアクセスを許可する必要があります。今回紹介したようなシンプルな構成だとドメインのAレコードIPとゲートウェイIPアドレスは一緒だと思うので、たとえばニンジャスレイヤーをフォローするには$ dig a dhtls.netした結果をファイアウォールの設定に貼り付けていますが、この運用には限界があります。

本格的に使いたいならば443番ポートをパブリックにできる環境を用意する必要があると思います。

参考

2017年春 IT系カンファレンスまとめメモ

特筆がない限り日時は現地時間。

Facebook F8 2017

www.fbf8.com

2016年のF8ではチャットボットフレームワークが発表されたりしました。
Facebook「F8」開発者カンファレンスの発表まとめ | TechCrunch Japan

Amazon Web Service Global Summit

なおAWS re:Inventは11月27日~12月1日。新製品の発表などはこちらがメインな印象です。
https://reinvent.awsevents.com/

Microsoft Build 2017

build.microsoft.com

2016年のBuildでは Bash on Windows が発表されて大変な反響がありました。
今年は5月中旬と、ここ数年の傾向からすると遅めの時期ですがHoloLensやAzure関連での新情報が楽しみです。

なお de:code 2017 は5月23日~24日です(※日本時間)
https://www.microsoft.com/ja-jp/events/decode/2017/

Google I/O

events.google.com

Google I/O 2016ではInstant Appsという機能が発表されたりしました。
インストールなしでアプリを実行するAndroid Instant Apps発表。リンクを踏んで起動、終了すれば消去 - Engadget 日本版

個人的にはAppleの方が作りたがりそうな機能だと思ったので、これを聞いたAppleWWDC 2017でどんなモノを後出ししてくれるのか楽しみです。

Apple WWDC 2017

E3

まとめ

本当にサイトの離脱を減らすべきか - 書評『逆説のスタートアップ思考』

ゼルダの伝説 ブレス オブ ザ ワイルド』で忙しい中ですが、『逆説のスタートアップ思考』(中公新書ラクレ)という本を読みました。

f:id:s2terminal:20170320181927j:plain:w320

半年くらい前に公開された同名のスライドの書籍化で、多くの内容が重複しています。SlideShareに目を通して完璧に内容を理解できたという方ならば特に本書を購入するメリットは乏しいと思いますが、私はそうではなかったので今回書籍を購入しました。

www.slideshare.net

著者である馬田隆明氏は元MicrosoftのVisualStudioエバンジェリストだったそうです。

medium.com

例: Google検索のKPI

突然ですが、もし自分がGoogle検索のサイト運営者だったとしたら、何を考えるでしょうか。

Google検索のKPI…PV,UU,継続率,滞在時間,離脱率,回遊率などなど…を置いて、それらに目標数値を設定して、改善に向けてPDCAを回して、というのは容易に想像できます。

  • PVを上げるにはどうしたら良いか?
  • 継続率を上げるにはどうしたら良いか?
  • 離脱率を下げるにはどうしたら良いか?
  • サイト滞在時間を上げるにはどうしたら良いか?

私だったら、こんな事を日々悶々と考えながら、仮設をいっぱい立てて、検証して、という事をすると思います。

しかしこの時点でGoogleとは考え方が異なっているそうです。いったい何が違っているのでしょうか。

本書の後半で、実際に製品の指標の設定の仕方について語られています。

そう考えていくと、メトリクスは製品がいずれたどり付きたいビジョンにしたがって設計するべき、と言えます。

(『逆説のスタートアップ思考』第三章『プロダクト――多数の「好き」より少数の「愛」を』P.173より引用)

Googleの掲げる使命は「世界中の情報を整理し、世界中の人々がアクセスできて使えるようにする」ことです。

www.google.com

つまりGoogle検索も、これを達成できるような数値目標を設計するべきです。

Webページの内容はおおきく2つに分けられます。 「コンテンツ」 と、コンテンツに到達するための 「ナビゲーション」 です。 Google検索とは、まさにインターネット全体の「ナビゲーション」に該当するわけです。

ではGooleのミッションが達成されるために、Google検索はどういうナビゲーションであるべきかというと

  • たくさんの人がGoogle検索を利用する
  • どんな場面でも日常的にGoogle検索を利用できる
  • Google検索を利用して、必要なコンテンツに早くアクセスできる

つまり、Google検索をたくさん使って、さっさと目的のWebページに移動してもらいたいので

  • PVを上げる
  • 継続率を上げる
  • 離脱率を上げる
  • 滞在時間を下げる

という運営が必要になってきます。

正気のサイト運営者ならば自身のサイトをたくさん見てほしいはずなので、 「離脱率を上げる」「滞在時間を下げる」 というサイト運営は、直感に反するものです。 より端的にいうと、 狂っています

ですが、こうした"狂った"考え方によってGoogle検索は他の類似サービスを出し抜き、多くの顧客を獲得しました。

ポータルサイト全盛の1990年代後半、多くの会社が自社サイト内でのユーザー滞在時間をいかに増やすかを考えていた時に、Googleは精度のよい検索エンジンを作り、あえて自社サイトへの滞在時間を減らす事業を展開していました。(中略)これも、他人から見ればさぞ不合理なアイデアに見えたはずです。

(『逆説のスタートアップ思考』第一章『アイデア――「不合理」なほうが合理的』P.44より引用)

実際に、PVを追っていった結果不必要なリンク遷移を増やしてユーザにとって使いにくいサイトになったり、検索順位向上を目指して倫理上問題のある記事を量産したメディアの例は枚挙に暇がありません。これらの良し悪しを語ることはしませんが、言いたい事はKPI設計ひとつ取ってもWebサイトを変えてしまうという事です。

立ち上げ当時のGoogleは検索サイトとしては後発の弱小サイトだったそうです。 しかしその結果Googleがどういう成長を描いたのかは、私が説明するまでもありません。 世界最強の検索エンジンの根底にあるもののひとつは狂ったKPI設計だったのかもしれません。

書籍『逆説のスタートアップ思考』について

先述のGoogleの例のように、使命を達成するための「説明しづらい」「不合理に見える」「狂った」アイディアこそがスタートアップにおける成功の法則である、といった意味合いで「逆説的である」ので 『逆説のスタートアップ思考』 というタイトルだそうです。

この本は2時間程度で読める新書ですが、著者直々に「時間が無い人向けの読み方」も公開されています。

medium.com

まずはざっと内容をつかみたい方や時間がない人は、
- 「太字になっているところだけ」さらっと読む
- 「気になる太字の前後だけ」を読む
というのがお勧めです。

medium.com

私は平成生まれのデジタル・ネイティブなはずなのですがなんか頭の中が古臭いのか、電子媒体から入ってきた情報を活かすのが苦手です。SlideShareを「なるほどふ~ん」と適当に読んでも次ゼルダの伝説を遊ぶ頃には頭から抜けていそうです。 そのため書籍化によって手元に置いておけるようになったのは嬉しい限りでした。読みやすいものの理解しにくいないようなので、何回か繰り返し読みたい一冊です。

不確実性を楽しむ

本書には様々な「逆説的な」考え方が紹介されています。しかし「この考え方はあくまでスタートアップという領域に限られた物であり、世間一般に普遍的に適用されるべきものではない」というスタンスも取っています。実際に毎日毎日みんながみんな狂ったアイディアばかりを口にしていたら何が真実なのかさっぱり分からなくなりそうです。

論理的思考で誰が見ても正しい結論を導き、合議して進めることで明らかな成果を確実に出すという事が多くのシーンでは重要であり、そこに逆説的な思考は本来ならば存在し得ません。

スタートアップは誰にでもお勧めできる選択肢ではないと考えています。 というのも、スタートアップを始めると、ほぼ例外なく大きなストレスを抱えることになります。実際、シリコンバレーでは起業家の鬱が社会問題になっているほどです(面白いのはそれを解決するメンタルヘルスケアのスタートアップまで多数あるところですが)。

(『逆説のスタートアップ思考』終章『逆説のキャリア思考』P.247より引用)

一方で本書では「不確実性の高まっている昨今の世界情勢において、“不確実性を利用して大きな成果を出す”というスタートアップの考え方は広く理解されるべき」としています。これこそが本書の主題だと私は受け取りました。

つまりこの本の正体は起業の本でもなんでもなくて、予測できない状況をできるだけ前向きに楽しむためのマインドセットなのだと思います。

例えば、スタートアップの話ではないですが「Twitterで翻訳小説を連載する」だとか「可愛い絵柄で血みどろの魔法少女アニメを作る」といった狂ったアイディアは、本書の定義において逆説的であると思います。

逆説の思考を毎回必ず採択すべきとは到底思いません。むしろ有効な場面のほうが少ないと思います。全員がこういった思考をするべきとも思わず、得手不得手が極端に出ることだと思います。

ですが逆説的な考え方には「説明しづらい」という欠点があります。そこで「こういった考え方もある」という事を多くの人が理解し、世に認められるべきだと思いました。私自身こう言っていても本書の内容はまるで血肉になっていないので、もっと勉強しようと思います。

まとめ

逆説のスタートアップ思考 (中公新書ラクレ 578)

逆説のスタートアップ思考 (中公新書ラクレ 578)

逆説のスタートアップ思考を理解でき、まわりにも理解されていれば、不確実性の高い未来に対して少しでも希望を見いだせるようになり、論理的な思考では超えられない壁を打破できるようになるかもしれません。 すると世の中の見え方が、すこし良い方向に変わってくるのではないかと思いました。