Salmonia2でできること/できないこと

Nintendo Switch

Salmonia2

初代SamloniaがあまりにゴミコードだったのでゼロからつくりなおしたSalmoniaです。

設計を抜本的に変えたので機能はほとんど変わらないままエラー落ちなどが発生しにくくなっているのが特徴です。

根本的にプログラムがどう違うなんかは説明しても仕方がないので、機能的な側面から初代SalmoniaとSalmonia2で何が違い、将来的にどんなことが可能になるかを説明しようと思います。

機能の違い

結構違うところがあるのでまずは表から見ていただければ、と。

機能SalmoniaSalmonia2
ログインAPIオリジナルラッパー
仕様変更に対してアップデートが必要アップデートが不要
履歴取得対応対応
履歴アップロード対応無効化(対応済)
統計表示最終プレイシフトのみ対応最終プレイシフトのみ対応
記録表示最終プレイシフトの
プレイヤーと全ユーザ記録
ステージ・潮位・イベント
ごとのプレイヤー記録のみ
リザルト概要表示非対応一部対応
リザルト表示対応一部対応
プレイヤー詳細表示非対応一部対応
Salmon Statsの表示常に対応ログイン時のみ
Salmon Statsからのリザルト取得非対応無効化(対応済)
機能の比較

最も大きな点は独自APIを使っているために任天堂のアプリのアップデートに対して柔軟に対応できる点です。ただし、この仕組みをそのまま製品版に使うわけにはいかないので上手いこと調整しようと思います。

履歴取得はどちらのバージョンも対応しており、違いはありません。

履歴アップロード機能はSalmonia2ではまだ無効化になっています。

統計表示はどちらのバージョンも対応しており、違いはありません。

納品記録表示はSalmonia2の方が少しだけ詳しく見ることができます。ただし、Salmoniaにあるような昼のみ記録などにはまだ対応していません。

リザルト表示機能については順次対応予定です。

で、残りの項目については次の章で解説します。

Salmonia2でできないこと

さて、アプリを長い間使っている人なら一度は思ったことがあるのではないでしょうか。

「Salmon Statsから自分の記録をダウンロードできたらなあ」、と。Salmoniaにはデータを保存・アップロードする機能はありますがエクスポート・インポートする機能がないので、自分でGoogle Driveなどに履歴を保存しておくことができません。

しかし、そのために「アプリをアンインストールすること」がそのまま「履歴の全削除」に直結してしまっています。一度アプリを消してしまうとどうやっても履歴を復活させることができません。

アプリがクラッシュしてアンインストールを余儀なくされた場合などは非常に困る問題なのです。

その要望に答えようと、Salmonia2ではSalmon Statsからのデータ取得とデータの出力と入力機能に対応する予定です。

一度データを保存してからのデータ入力とデータ出力は問題ないとして、最初にデータを保存するためのSalmon Statsからのリザルトのダウンロードは可能なのでしょうか?

リザルトのダウンロード機能

結論からいってしまえば、仕組み上Salmon Statsからリザルトを取得することは可能です。ただし、実装されていないのには理由があります。それは「時間がかかりすぎるから」です。

現在、Salmon Statsには自分のデータを一括で複数件取得するための仕組みがありません。なので、Salmon Statsにアップロードされている履歴を一件ずつとってくるしかないのです。

負荷を考えると早くても5秒、常識的に考えれば10秒に1回くらいのペースでしか履歴を取得できません。

となると、1000件もデータをアップロードしている人であれば10000秒(約3時間)も取得にかかる計算になります。その間アプリはずっと動きっぱなしでなくてはなりません。そういう時間的な制約から、この機能を実装するのは現実的でないのです。

しかし、もしもSalmon Statsが「一度に100件のリザルトを取得できる仕組み」を実装したらどうでしょう?

リザルト自体は1件あたり1.5KB程度なので、100件まとめて取得してもたったの150KBほどです。通信量という観点からは100件の履歴の一括取得は全く問題ないはずです。

問題があるとすれば一括で100件取得することのサーバへの負荷ですが、それも微々たるもののはず。

つまり、Salmon Statsからデータ取得はSalmon Stats側がどうにかなればどうにかなるということです。

納品記録の取得

Salmoniaではプレイヤーが最後に遊んだシフトの自身と他のプレイヤーの金イクラ納品数を見ることができます。そして、その機能を実装すること自体は難しいことではありません。

が、「どうせなら全期間の記録(要するに最高記録)も見たい」と思っている方が少なからずいるはずです。なぜその機能はないのでしょうか?

それはSalmon Statsがもともと「納品数の記録は編成に依る場合が多いから、シフトごとの記録をまとめよう」という理念のもとで開発されたためです。

なのでSalmon Statsには全期間の記録を取得するための仕組みが(いまのところ)ありません。将来的につくられるかどうかも微妙ですし、そもそもSalmonia側があまり必要としていません。

しかし「でも見たいんだよなあ?」って人はいると思いますし「Salmon Run Recordsと似たような仕組み使えばいいんじゃね?」って思う人もいると思います。

Salmon Run Records
有志によってまとめられているサーモンランの記録集です。

が、これはJavascriptで直接スプレッドシートからデータを取ってきて整形しているのでぶっちゃけてしまうとこれをそのまま(プログラミングがめんどくさすぎるので)触りたくないです。

GASs(Google API Script)なりでJSONが返ってくるようになったら対応します。

なのでこの機能に対応しないのもSalmonia側の問題ではないということです。

ランキングがみたい

平均納品数・最高納品数・WAVEや潮位における納品数が全ユーザに対してどのくらい勝っているのか負けているのか、を知りたい人も多いと思います。

Salmoniaでは一位の記録と自分の記録しか見えないので「間がどうなってるの?」「自分は何番目?」って言うのが気になる人もいるでしょう。

これも実装しない理由は簡単で、Salmon Statsにそういう仕組みがないからです。

結局のところ

恐らく「Salmoniaになんでこの機能ないんだろな」って思っていることの半分くらいはSalmonia単独では解決不可能な問題だからです。

必要なのは欲しいデータを返してくれるSalmon Stats側の仕組みであって、プログラミングに詳しい方であればSQLクエリを思い浮かべてもらえば話は早いと思います。

SQLクエリを考えてしまえば「このクエリの値を返すAPIください」とでも言えば多分実装してくれます。なのでまずはクエリを考えましょう。

あと、Salmonia2のベータテスター枠はまだ空いています。記事は以上。

コメント

タイトルとURLをコピーしました