Ika4J
タイトルの通り、Splatoon 2のAPIにJavaからアクセスするためのライブラリです。商標的に問題になりそうなのでSplatoon4Jは避けました。
GitHubで公開中です。Maven Central Repositoryには現在のところありません。
https://github.com/yusuke/ika4j
機能
現在のところスケジュール取得のエンドポイント(https://app.splatoon2.nintendo.net/api/schedules)のみサポートしています。むこう24時間分のレギュラーマッチ、ガチマッチ、リーグマッチのステージ情報、ルール情報、各ルールの開始/終了日時を取得できます。
準備
最初のハードルが高いです。まずスプラトゥーン2で一回以上プレイした実績のあるニンテンドーアカウント、スマホ、PCが必要です。さらにmitmproxy等を使って、セッションクッキーであるイカスミセッション(iksm_session)を取得します。
使い方
Scheduleクラスのコンストラクタにイカスミセッションを渡してnewします。
あとはgetterを呼び出すだけ。
現在のガチマッチ、リーグマッチのルールとステージ、今後24時間のガチマッチのルールをプリントするプログラムは以下の通り。
public class Main { public static void main(String[] args) { String iksm_session = "*************************"; // https://app.splatoon2.nintendo.net/api/schedules の情報を取得 ika4j.Schedules schedules = new ika4j.Ika4J(iksm_session).getSchedules(); マッチ 現在のガチマッチ = schedules.get現在のガチマッチ(); System.out.println(現在のガチマッチ.getルール名()); System.out.println(現在のガチマッチ.getステージA()); System.out.println(現在のガチマッチ.getステージB()); マッチ 現在のリーグマッチ = schedules.get現在のリーグマッチ(); System.out.println(現在のリーグマッチ.getルール名()); System.out.println(現在のリーグマッチ.getステージA()); System.out.println(現在のリーグマッチ.getステージB()); for (マッチ マッチ : schedules.getガチマッチList()) { System.out.println(マッチ.getルール名()); System.out.println(マッチ.get開始時間()); } } }
実行結果はこんな形になります。
ガチヤグラ フジツボスポーツクラブ ザトウマーケット ガチアサリ 海女美術大学 チョウザメ造船 ガチヤグラ 2018-01-20T15:00 ガチホコバトル 2018-01-20T17:00 ガチヤグラ 2018-01-20T19:00 ガチエリア 2018-01-20T21:00 ガチホコバトル 2018-01-20T23:00 ガチアサリ 2018-01-21T01:00 ガチホコバトル 2018-01-21T03:00 ガチヤグラ 2018-01-21T05:00 ガチエリア 2018-01-21T07:00 ガチアサリ 2018-01-21T09:00 ガチホコバトル 2018-01-21T11:00 ガチヤグラ 2018-01-21T13:00
工夫した点
技術的にはなんらすごいことはしていません。練習がてらJava9のHttpClient APIを使ってみました。Splatoon2 APIのホストではSNI(Server Name Indication)という仕組みを使っているようで、HttpClient APIは素の状態ではアクセスできませんでしたのでStackoverflowで見つけた回避策を適用しています。Java 10では直っているようです。
今後の展望
スケジュール以外のエンドポイントサポートを追加せねばなりません。が、自分はスケジュールさえ取得できれば良いので満足しています。APIが荒削りなので改善したいですね。
注意事項
SplatoonのAPIは非公開のものです。無闇に負荷をかけたり、スプラトゥーンやSwitchの評判を落すりょうな使い方したりなど、任天堂に迷惑をかけるようなマネはやめましょう。