Salmonia for iOS

Salmonia

Salmoniaとはサーモンランのリザルトアップローダのことである。

パソコンでつけっぱなしにしておけばデータを任天堂のサーバから定期的にダウンロードして、それをSalmonStatsにアップロードしてくれるスグレモノ。

ただし、以下の点で現代のニーズに答えられていないと感じていました。

Python3が必要

スプラユーザの大半はPythonがWindowsにインストールされているとはとても思えないし、Salmoniaのためだけに手間ひまかけてインストールするとも思えません。

更に、仮にインストールしたとしてもその後Pythonを使う見込みもなく、意味もなくPythonをインストールさせるのはどうしても避けたかったです。

この問題はPyinstallerと呼ばれるツールを使うことでPythonがインストールされていなくてもSalmoniaを起動させる事ができるようになりました。

パソコンが必要

エンジニアの方であればパソコンが付いていない時間のほうが短いということは十分考えられますが、利用するユーザはあくまでも一般的な人を対象としています。

一般的な人がサーモンランをするたびにいちいちパソコンを付けてSalmonia起動するのかな?と考えたときやはりそれが手間になるのではないかと考えました。

つまり、パソコンレスで動くSalmoniaが欲しいわけです。

っということはつまりスマホ対応?

そういうことになるのかなあ…?

Salmonia for iOS

iOSでSalmoniaを動作させることは難しいように思えますが、一度別のプログラミング言語で完成させているのでそれと等価なコードをiOS向けに書けばいいだけです。

Windows版SalmoniaはPythonで書かれているので、これをiOS向けのSwiftで書き直せばいいわけですね。

以下、書き直さなければいけないコードが持っている役割について。

iksm_session取得

frozenpandaman氏のiksm.pyの移植にあたります。

全部で六つくらいのコードを書き直すだけなので簡単そうに見えますが、URLスキーマなどの作業もあるのでちょっとめんどくさかったり…

しかもikawidgetと競合する可能性があるので余計にややこしいという…

ただ、当初はiksm_sessionの指定はユーザに直接入力してもらえばいいと思っているので、この機能を実装するのは後回しにしても良いでしょう。

SplatNet2からのデータ取得

イカリング2からリザルトをダウンロードしてくる仕組みです。

これはAlamofire+SwiftyJSONで実装することができ、動作確認も終了しています。

SalmonStatsへのアップロード

ダウンロードしたデータをSalmonStatsへアップロードする仕組みです。

ダウンロードしたものをアップロードするだけなのでAlamofire+SwiftyJSONで実装することができました。

正常にアップロードできることも確認できています。

設定ファイルの保存

入力したiksm_sessionやapi-tokenを起動するたびに入力していては大変めんどくさいです。

なので初回起動時に入力したデータを設定ファイルとしてどこかに保存しておきたいわけですね。

ikawidget2などではplistとしてiOSのドキュメントファイルに保存されているので同じ方法をとることにしました。

現在、この作業を行っておりこれが完了次第仮リリースができる見込みです。

まとめ

必要最低限の機能だけで良ければ案外簡単につくれそうだな、という感想です。

Swiftを触るのは多分二年ぶりくらいだったのですが、やっぱりプログラミング言語としてはぼくが触っている他の言語と違いすぎてとっかかりづらいですね。

そのためライブラリのAlamofireとSwiftyJSONにはすごく助かっています。

順調に行けば九月中にはテスト版を配布できるかなあという感じです。

記事は以上。