Salmonia仕様書

はじめに

本記事は備忘録的なものなので、一般ユーザの方にはあんまり参考になりません。

でも最後の展望のあたりはちょっとは面白いかも。

保持するデータ

SwiftにはUserStandardと呼ばれるアプリ自体で永続的に値を保持できる仕組みがあります。ブラウザでいうところの有効期限が無限のCookieのようなものと考えれば話は早いかと。

で、保持しているデータを列挙したいと思います。

 iksm_session

何を隠そうSplatNet2からデータを取得するために必要な認証トークン。

基本的にAPIを利用して自動生成していますが、バージョン5.1.4から手動設定もできるようになりました。もしもAPI変更で自動生成が一時的にできなくなったときはこの機能が使えます。

session_token

iksm_sessionを生成するときにこのsession_tokenがあれば必要な工数が減ります。このsession_tokenはアカウントごとに固有で何故か有効期限がないので、これを使いまわしてiksm_sessionを再生成しています。

api_token

Salmon Statsにデータをアップロードするために必要な認証トークン。

Salmoniaの超初期バージョンでは自力で取得する必要があったのですが、頑張って自動取得に対応、偉い。

userLang

ユーザの言語設定で、session_tokenを生成するときに必要。session_tokenは再ログインをしない限り変更されないので、基本的には最初の一回しか使わない値。

一応設定できるようになっているのだが、アプリ内では決め打ちで英語(en-US)が指定されている。かといって別に表示が英語になるわけではない、不思議。

pid

player idの略でSalmon Statsと連携されているIDで、初期状態ではNullが入っているのだが、一度でもアップロードするとpidがSalmon Statsに紐付けられる。

nsaid

SplatNet2で取得できる、ニンテンドーによって決められているID。

nsaidとpidが一致したときのみSalmon Statsにデータがアップロードできる。そうでないと他人のアカウントでログインして(そんな事する人いないと思うが)データをアップロードして自身の成績を改竄することができてしまう。

cookie

Salmon Statsにログインしたときに生成されるlaravel_sessionというcookieの値を保存しておくところ。

このcookieがないとapi_tokenを取得できない。

latest

最後に取得したリザルトIDを保存する値、だったのだがデータベース保存にしてしまったため全く使われていない悲しい値。

多分、次期バージョンで消える。


無事、5.2.0(2)でlatestは削除されました。

user

称号持ちのアカウントかどうかを判定するフラグ。

TRUEが返るとリザルト画面で黄色いイカちゃんのフォントが表示される。しょーもない機能だけど、つけていたいオマケ機能である。

ただ、こんなところでフラグ管理する必要があるかと聞かれると少々疑問が残る。

エラーコード表

Salmoniaを使っていて表示される可能性のあるエラーコードを全て載せることにしました。

エラーコード意味原因
1000session_token取得エラーAPIの軽微な変更
1001access_token取得エラーAPIの軽微な変更
1002user_info取得エラーAPIの軽微な変更
1003splatoon_token取得エラーAPIの大幅な変更
1004iksm_session取得エラーAPIの大幅な変更
2000s2s API接続エラー外部APIサーバダウン
2001flapg API接続エラー外部APIサーバダウン
2002splamp API接続エラー外部APIサーバダウン
2830Salmonia API接続エラー外部APIサーバダウン
3000セッション無効/期限切れiksm_session入力ミス
3001任天堂サーバ接続エラー任天堂サーバダウン
3002セッション無効/期限切れiksm_session入力ミス
3003セッション無効/期限切れiksm_session入力ミス
4000iksm_sessionエラーSplatNet2未連携
4001api_tokenエラーSalmon Stats未連携
9403無効なトークンAPIの大幅な変更
9406認証エラーAPIの変更
9427APIアップグレード要求APIの変更
9999不明なエラー致命的エラーの発生

まだエラー処理自体が完全ではないのでこれよりもっと増えていくと思います。まとまってきたらSalmoniaの解説ページに載せたいですね。

今後の展望

これから先、どんな機能を追加するかなんですが将来的にサブ垢対応はしようかなと思っています。もちろん、気が向けばですが。

ランキングただ、サブ垢対応にはSalmon Statsのアップデートが必要なのでこのあたりはそちらの管理人さんのやる気次第です。

ランキング形式でTOP10くらいまで見れるようにしても面白そうですし、最近Salmon Statsに実装されたフィルタも実装するのもアリなんですが、せっかくあっちで実装してくれたのをわざわざまたネイティブSwiftで書くのもどうなのかなっていう気がしますね。

あと、マルチランゲージとして中国語には絶対に対応させます。意外と身近にユーザが多いので。

そういえばsplatnet2statinkとSalmoniaは任天堂の新APIに対応させたのに、肝心なPC版が対応まだでした。

うーん、今日時間があれば取り掛かりたいですね。30分あれば終わるはずなので。

現在の進捗

5.2.0でリリースできそうな機能と改善の一覧は以下の通り。

  • 任天堂の新APIへの対応(完了)
  • Salmon Statsへのログイン高速化(完了)
  • エラー処理をより厳密に(85%完了)
  • 中国語対応(10%完了)
  • 記録の表示スタイルの変更(完了)
    • 統計ページとスタイルを統一する(完了)
  • スペシャル使用数の表示(完了)
  • 潮の高さを文字で表示(完了)
  • 日本語版スプラで記録が正しく見れない問題の修正(完了)
  • ロード画面のプログラムの改修(40%完了)
    • 皆さんの見た目上の変化はないです
  • デバッグメニューの改修(0%完了)
  • API変更に柔軟に対応させる機能(0%完了)
    • 軽微な修正であればアプリのアップデートなしに対応可能になります
  • 記録や統計画面が反映されるのが一回遅い問題の修正(0%完了)

後半部分全然できてねえ!!!

記事は以上、おやすみ。