えむいーさんについて
運営しているサービス/開発したツール
Salmonia3
スプラトゥーン 2 のサブゲームであるサーモンラン専用の iOS アプリです。
Salmon Stats
サーモンランのリザルトをまとめた統計が見れるサイトです。
Splatool
しゃり氏が運営する対戦分析ツールと連携するためのウェブアプリです。
Ocean Modifier
スプラトゥーン 2 のサーモンランにおいて任意のシード値をメモリに書き込むための補助ツールです。@container12345氏との共同プロジェクトで C++で開発しました。
お仕事の依頼について
個人で利用するアプリを作って欲しい、と思ったときはお気軽に依頼してください。メールでも連絡はつきますが、Twitter の DM が最も反応が早いです。
アプリは iOS 向けが一番確実ですが、ウェブアプリ、Android 向けアプリも受け付けています。
こいつに仕事任せて大丈夫かな?って人は上のサービス一覧と下の実績っぽいもの一覧でなんとなく何ができるのか把握していただけると幸いです。
実績
なんにも書いてないのもあれなので、思いつくことを書いてみました。でもなんだかサーモンランばっかりになりました。
イカ研究所による乱数実装ミスの発見
本来は生成された疑似乱数を用いなければいけないところで、初期シードを使いまわしてしまっていることに起因するバグを発見しました。
なお、初期シードの使い回し自体は@container12345 氏が発見していました。
オオモノ湧きアルゴリズムの解明
サーモンランにおいて初期シードからどの WAVE にどの方向からどのオオモノが出現するかを司るアルゴリズムを解析しました。
なお、解析にあたってはスプラトゥーン 2 の実行バイナリを逆アセンブルする方法を採用しました。
キンシャケ探しのアタリ位置バグの発見
初期シードの使い回しによるキンシャケ探しのアタリ位置の偏りを発見しました。
なお、この発見については発生しうる全てのパターンをプログラムを書いてチェックする方法で検証しました。
ちなみに、同様の手法でラッシュで絶対に発生しない湧き方向なども突き止めていますが、特筆すべき結果ではないので省略します。
キンシャケ探しにおけるゴール位置の解明
アタリ位置については@container12345 氏が解明してくれていたので、同様の手法でゴール位置計算アルゴリズムを解明しました。
基本的にはアタリ位置がわかればそれでいいのですが、ステージによってはゴール位置も重要になるケースがあるため、それなりに利用価値の高い成果だったと思っています。
これも、バイナリを逆アセンブルする方法を採用しました。
連続しない湧き方向が存在することの証明
ある特定の位置の湧き方向は連続しないであろうことは知られていましたが、アルゴリズム解析でそれを証明しました。
これも、バイナリを逆アセンブルする方法を採用しました。
サーモンランにおけるパッチの開発
改造済みのニンテンドースイッチで、様々な効果を発生させるパッチを開発しました。パッチの内容や開発については割愛しますが、aarch64 の理解を深める上で大変貴重な体験になりました。
プログラミング
Swift
主に SwiftUI を利用しています。ライブラリの開発、ライブラリを使ったアプリ開発ができます。
Typescript
Vue 3 + Vite 3 の組み合わせをよく利用しています。NestJS で API を立てたり、PWA 対応のウェブサイト開発などをしています。
Python
Python3 系を利用しています。Keras を利用した DL 解析などをしていました。
PHP
プログラミング初学者のころに利用していた言語です。今は他人が書いたコードの改修のためにちょっと勉強しています。自分で PHP を選択して何かを作るということは今後ないと思います。
C/C++
コード自体は書けますが、プロジェクトとして利用したことはありません。C 系はとにかく速いので速度を要求されるプログラムが欲しいときに重宝していました。
最近は Swift も十分速いので、そちらを利用することも多いです。
Dart
Android 向けアプリを作成するときに利用しました。正直、まだ未成熟な気がするのでこれを利用して Android アプリを作ることはまだないと思います。
その他
DB(PostgreSQL/MySQL/MariaDB/Realm)
DB は有名なところは一通り利用したことがあります。
モバイル向けは Realm、それ以外なら PostgreSQL でいいかなって思っています。