splatnet2statink.py はスプラトゥーン2の試合結果を任天堂のイカリング2から取得して stat.ink に送信してくれる、UNIX 系サーバーで動く Python スクリプトです。
今回はGoogle Cloud Platform (GCP)のクラウド仮想サーバーの常時無料枠を使い、このスクリプトを無料で24時間動かす比較的カンタンな方法を比較的初心者向けに解説していきます。
比較的初心者向けとは言ってもLinuxのコマンドなどを扱うので、ある程度PCに理解のある方でないと難しいかもしれませんが、打つコマンドはほとんどコピー&ペーストで進めていけるようにしているので、Linuxに触れたことがない人も頑張ってみてください。
目次
Google Cloud Platform の準備
Google Cloud Platform を使うことで、24時間動かすことができるコンピュータ(サーバー)を無料で使うことができます。
新規登録
このリンクから新規登録します。クレジットカードもしくは銀行口座情報を求められますが、この情報は本人確認のために使用され、自動的に課金されることはありません。
プロジェクトの作成
プロジェクトの選択→新しいプロジェクト→プロジェクト名を設定→作成
Google Compute Engine インスタンスの作成
Google Compute Engine インスタンスというのはサーバーだと思ってもらえればとりあえず大丈夫です。
Google Compute Engine→VMインスタンス→作成
作成画面で変更する項目は2つ。
- マシンタイプをmicroに
- ブートディスクのOSをCentOS 7に (好きなOSで構いませんがこの記事ではCentOS 7で解説します)
この2つは結構重要なので間違いのないように!!
SSH接続
インスタンスの作成が完了したら、接続の下にあるSSHというボタンを押します。
このような黒いウィンドウが開きます。
サーバーでいろいろ設定
splatnet2statinkのインストール
ここに以下のコマンドを打ち込んでいきます。すべて選択&コピー&ペーストでOKです。
途中で1分間以上止まった、おかしくなったなどの場合、Ctrl + Cを押すか、ウィンドウを閉じてもう一度最初からやり直してください。
# 必要なパッケージのインストール sudo yum -y install git python-pip sudo pip install --upgrade pip sudo pip install requests msgpack-python future # 作業フォルダをホームディレクトリに cd # splatnet2statink のダウンロード git clone https://github.com/frozenpandaman/splatnet2statink.git # 作成されたディレクトリに移動し、スクリプトを実行 cd splatnet2statink ./splatnet2statink.py
最後の行まで実行できたら、splatnet2statinkを使用するための設定をしていきます。
splatnet2statinkの初期設定
画像内、一部の情報を隠しています。これらの情報を他人に知られると、stat.ink や Nintendo のアカウントが乗っ取られる危険性があるので、注意してください。
① stat.ink からAPIキーをコピーしてきて貼り付けます。
② ja-JP と打ってエンターを押します。
③ 表示されたURLをブラウザのアドレスバーにコピーして開きます。
④ ログインした後、”この人にする” ボタンのリンクをコピーして貼り付けます。
5. 戦績を何戦分取得してアップロードするか聞かれますが、時間がかかるので0を入力して後に回します。
cronを使って2時間に1回スクリプトを走らせる
cron (crontab) というのは、コマンドの定時実行を行うために用いられるLinuxの機能です。
echo "10 */2 * * * $USER cd; cd splatnet2statink; git pull; ./splatnet2statink.py -r" | sudo tee -a /etc/crontab sudo systemctl restart crond
長いコマンドですが、ざっくり意味を説明すると
10 */2 * * * ⇒ 毎日2時間ごと、10分になると
$USER ⇒ 今ログインしているユーザーで
cd; cd splatnet2statink; git pull; ⇒ splatnet2statink をアップデート
./splatnet2statink.py -r ⇒ splatnet2statink.py を実行 (-rオプションで未アップロードの試合結果のみアップロード)
echo “……” ⇒ というタスクを出力する。
sudo tee -a /etc/crontab ⇒ 出力先を crontab の設定ファイルにする。
sudo systemctl restart crond ⇒ cronサービスを再起動して設定ファイルを確実に反映させる。
といった感じです。
これが実行し終わったらすべての作業が終わりです!お疲れ様でした。
実際にスプラトゥーン2を何試合かやってみてテスト
ナワバリやガチマをプレイし、2時間後にstat.inkに戦績がアップロードされていたら成功です!
なぜか動かなかった人
まず、記事を良く見返してやり忘れたことはないかチェックしてください。
splatnet2statink.py が動いているかチェック
cd ~/splatnet2statink ./splatnet2statink.py -r
それっぽい結果が返ってくることを確認します。
crontab が動いているかチェック
# cronの設定ファイルを確認 sudo cat /etc/crontab # cronのログを確認 sudo cat /var/log/cron # cronの実行結果を確認 sudo cat /var/spool/mail/root
2時間おきにタスクが動いているか確認します。
これらをチェックした上でご自分で調べ、わからなかった場合はエラーメッセージと共にコメントで質問して頂ければ、分かる範囲でお答えします。
Google Cloud Platformって永年無料なわけではないですよね、、、?
下記リンクの無料枠プロダクトの範囲内で永年無料ですが、今後変更になる可能性はあります。
https://cloud.google.com/free/