子供向けゆるゆるシューティングゲームかと思ったら意外と奥が深いんですよねこれが。やってみると分かります。戦績を管理しようこのSplatoonですが、奥が深くガチ勢も多いため、いろんな人がいろんなサービス・ツールを公開しています。今回紹介する「stat.ink」もその有志が公開しているサービスの1つです。自分で記録とるのめんどくさいじゃないですか。ラズパイとカメラでキャプチャして勝敗を記録するツールについての記事をまず見ていて、「これは導入できそうにないなあ」と思っていたところ、IkaLogを知って「このデータを活用すれば統計情報とか出せるね」となり、「でもIkaLogにはそういう部分ないのね」ってことで「じゃあ作りますか」と。「作るのは面倒じゃないのか」と言われると「プログラマは楽をするために全力を尽くす生き物」です。少なくとも私には全部手入力とかExcelで管理とか無理です。stat.inkについてる機能もいくつか「面倒でこんなの誰も使わないって」と思いながらつけたものがあります。実際にはそこそこ使われてたりして「マメだなあ」とか思ってます。FAQよりつまるところ「無ければ作ればいい」ってことですね。プログラマはみんな頭がおかしい(自虐を含む)。私も最近知ったのでよく知らないんですが...一言で言えば「Splatoonの戦績を管理するWebサービス」でしょうか。Online」アプリを利用して、「イカリング2」というサービスから過去50戦分の履歴を見ることができます。それは50戦だけのお話。そのデータを自動的にstat.inkへアップロードできれば、何もせず過去全てのデータを管理することができるというわけです。splatnet2statinkとは?「splatnet2statink」とはPythonスクリプトで動く、Splatnet(イカリングの英語版名称)のデータを自動的にstat.inkへアップロードするツールです。サーバーとかにインストールすれば常時稼働状態で自動的に管理が行えますし、MacやWindowsで実行することもできます。Piに導入したいと思います。ついでに、サービス化して常に監視するようにしたいと思います。splatnet2statinkを導入するちょっと難しいですが意外と簡単です。stat.inkstat.inkへ登録するまず、「stat.ink」へアクセスしてください。「ユーザー登録」をクリックします。次に、登録に必要な情報を入力します。名前(表示用)...その名の通り表示用の名前です。Twitterで言うところの名前です。ログイン名...ログイン用のIDのようなものです。Twitterで言えばScreenNameでしょうか。パスワード...パスワードです。入力したらbot確認を行って、「ユーザー登録」を押します。APIキーを確認する「プロフィールと設定」ページにアクセスします。上部ヘッダーのメニューからアクセスできます。「APIキーを表示」ボタンを押し、41文字くらいの英数字をコピーしてください。このキーは、自分のstat.ink情報へのアクセスを無制限に許可することができます。絶対に他人漏らすことのないようにしてください。iksm_sessioniksm_sessionとは、イカリングへアクセスする際のトークンキーとでも言いましょうか。IDとPWが会員証と身分証明だとしたら、セッションキーは入場証みたいな物です。これがあれば、以後の出入りは有効期限内なら自由です。splatnet2statinkは正規サービスではないので、これを自分のログイン情報から横取りします。(他人の、ではありませんよ?)これからセッションキーを傍受します。自分のログイン情報なので不正アクセスにはなりませんが、このキーも他人に漏れるとイカリングへの全てのアクセスを許すことになります。ログイン情報が漏れたのと同義で大変危険ですし、自分で行う行為もセッションハイジャックと等しいです。正規のサービスを利用するものではないので任天堂よりアカウント停止等の危険性もあります。ご自身の判断にて利用をお願いします。これから説明する方法で何かあっても責任は負えません。mitmproxyのインストールWeb経由での通信内容をのぞき見します。イカリングへログイン済みのアプリから、セッションキーを盗もうという魂胆です。そのために使うのがmitmproxyというソフトです。ラズパイにインストールします。mitmproxymitmproxy下の画像のような画面になれば起動成功です。スマホへ証明書をインストールイカリングはhttps通信なので、そのままでは傍受できません。スマホへmitmproxyの証明書をインストールします。スマホとラズパイを同一ネットワークに接続し、スマホのWi-Fi設定画面を開きます。その後接続しているWi-Fiの画面を開いてください。したらプロキシの設定画面を表示させ、ラズパイのIPアドレスと、ポート:8080を指定します。認証は必要ありません。設定が終わったらスマホからmitm.itへアクセスし、ご自身のスマホのOSを選択します。(イカ以下、iOSの説明です)リンゴマークをタップするとプロファイルをインストールする旨を聞いてきますので、許可してください。表示させ、「mitmproxy」をONにします。あとは適当に何かWebサイトを表示させて問題なく見られればOKです。Onlineアプリを開いてください。2」というアプリにログインして、そのデータを使いました。Nintendoアカウントとリンクしていて、イカリングからデータを取得しているアプリなら多分なんでもOKです。コンソール上に出ていると思いますが、これでは分かりづらいので「L」キーを押してください。「nintendo」と入力します。これで任天堂サーバーとの通信にフィルタリングされました。https://app.splatoon2.nintendo.com/?lang=ja-JP」を見つけます。見つけたらEnterキーを押してください。詳細画面に移りますので、Tabキーを押します。「Response」タブが表示されていますので、「Set-Cookie」にある「iksm_session=xxxxxxxx...」の英数字をコピーしてください。これがセッションキーになります。あとは「Q」キーとか押すと戻ります。Pythonが動けば多分なんでもいいと思います。必要なアプリケーションの事前準備gitや、pipをインストールします。Pythonはラズパイなら最初から入っているので実行不要だと思います。python-pipgitからリポジトリをコピーするリポジトリを作りたいフォルダーを作ってください。(私は今回、「~/applications/git/」内に作っています。splatnet2statink/必要なライブラリをインストールsplatnet2statinkの実行に必要なライブラリを自動インストールします。requirements.txtPythonスクリプトを実行あとはスクリプトを実行すればOKです。splatnet2statink.py起動すると最初にAPIキーを聞いてきます。これは、「stat.inkのAPIキー」になります。入力してEnterを押すと、次はクッキーを聞いてきます。これが「iksm_sessionキー」です。それも入力すると過去何戦分のデータをアップロードするか聞いてきます。「1」と入力してください。<URL>」が表示されれば成功です。stat.inkの自分のページを表示してみてください。バトルが表示されていますか?表示されていればOKです。ハズカシイので「勝利」のみでフィルタリングしましたサービス化して常時監視するさて、インストールできたのはいいですがこれを毎回バトルの度に起動するの面倒くさいですよね。-M」ってやってからバトルを始めればいいのですが、忘れるかもしれません。したら旅行とかで起動できないかもしれません。そこで、「Supervisor」というツールを使ってデーモン化させます。以下のページを参考にしました。supervisorこれだけ設定ファイルを記述するどのスクリプトをデーモン化するのか、とかの設定です。分からないのですがとりあえず自分なりの名前に変えてます。詳しい方はご自身のお好きな名前でどうぞ。/etc/supervisor/conf.d/splatnet2statinkd.confテキストエディタで以下を記述します。;ユーザー名を記入redirect_stderr=truestdout_logfile=/var/log/supervisor/splatnet2statinkd.logユーザー名とか設定ファイル名とか実行コマンドとかは適宜書き換えてください。-r」となっています。これは「モニターモードを10800秒(180分)間隔で、既にアップロード済みのものを確認しながらアップロードする」というものになります。常時アクセスを行うので、過度な監視は任天堂のサーバーに負担をかけることになります。最低1時間以上、だいたい3時間から4時間間隔がいいと思います。(もしこれが原因で垢BANされても責任は負えませんよ)そもそもマッチングやリザルト含めて1試合が5分だとして、50試合分は取得できるので250分、4時間間隔でも十分もれなく取得できます。ガチマではもうちょっと時間がかかったり、休憩したりすることを考えると5時間でも多分大丈夫です。サービスを開始するサービスを再起動します。その後、起動確認します。statusactiveとかrunnningとか表示されていればSupervisorサービス自体は起動しています。次に、splatnet2statinkを自動操作するサービスを開始します。設定ファイルを書き換えたので、必ず最初にリロードを行ってください。status最後のステータス確認でRUNNINGとかになっていればOKです。動作確認をするといっても、モニタリング間隔を3時間とかにしてしまったので長いです。何試合かして寝ましょう。それが面倒な人は、動作確認用に10分間隔とかに一時的に変えてもいいかもしれないですね。試合結果がstat.inkへ反映されていれば問題ありません。splatnet2statinkをアップデートするSplatoon2自体が結構頻繁にアップデートしますし、それに伴ってsplatnet2statinkもアップデートします。放置すると、新ブキが空欄になったりします。できればgithubで更新確認、最低でも新マップ・ブキ・ギア等が追加したときはアップデートの確認をした方が良いかなと思います。サービスを停止後、アップデートサービス起動中でスクリプト動作中だとどうなるか分からないので、サービスを停止します。statusSTOPPEDを確認してください。available.」と表示されます。「Y」を入力し、アップデートしてください。vx.x.x....」と表示され、アップデート完了です。splatnet2statink.py」と入力して起動できることを確認したら、アップロードするバトル数は「0」を入力して終了します。statusサービスを起動状態に戻し、正常稼働を確認したら終了です。おわり私は最初に導入しようと思ったとき、Pythonのバージョンが低かったようでエラーが出てしまいました。ZeroReturnError」みたいな感じのヤツです。アップデートしたら直りました。これで快適なイカライフが送れますね。ウデマエSではないのでそんなに活用できるのか分かりませんが、データダウンロードもできるようなのでそのうちやってみたいです。他のブログだと「イカ、ヨロシク〜」って言ってお別れすると思うのでしょうが、無印はやったことないので分かりません。ふつうに締めたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。