React Native製Mastodonクライアント「ikuradon」をgithubで公開しました。

potproject/ikuradon

React Nativeの勉強のためにちまちまと作ってたアプリなのですが、

最近、せっかくなので何かOSSとして公開したいなーと思っていたので公開します。アプリ名も安直です。

React Native、色々言われてる割には国内でのちゃんとしたアプリのソース公開も少ないので、参考になればいいんですけども。

内部のライブラリにReact Redux,React Navigationを使用しています。

Reduxは覚えるのに苦労しつつ、この実装でいいのか今もイマイチな感じがあるのですが、全体のデータを管理出来るので、Reduxか似たようなものが無いと設計段階でやはりキツいです。

まだまだ開発途中で、一部遷移が遅かったり、そもそも動かなかったりしますが、そこはちゃんと整備します。デザインも変えていくので許して。

とりあえず今のところはタイムライン表示機能とfav,boost,普通のTootとまあ本当に最低限の機能という感じ。

開発期間は割と短いし、Androidでは一切検証してなかったけど大体普通に動きます(バグあるけど)。

React Native(というかExpo)開発に関して

とりあえず、Expoが本当にすごい。

コード更新即反映即立ち上げのHot Reload機能、その他役に立つ解析機能やAPIなどかなり開発速度を早くできたのもこのおかげです。

そしてWindowsでも実機でiOSネイティブ開発出来ちゃいます。わざわざ埃被ってるMacBookを出さなくていいです。

ネックなのはデバッグモードがかなり遅いところですねえ。そのせいで本番と挙動が違う部分も出てきたりします。

速度的には充分ネイティブ並みに動いてると感じます。UI自体はネイティブですし、よくあるUI部分を同期的に書いてフリーズする、みたいなことも基本無くてよろしい。
開発は楽で楽しいんですけど=簡単に作れるってわけではないと思います。そもそもReactやRedux、ES6の知識が必要ですし。

WebSocketもデフォルトでサポートされていたり。今のところはStreaming API対応してませんが、割とすぐに対応できると思います。

動かし方

上でも書いたとおり、Expoというアプリを使用します。このアプリをダウンロードして、このCDNリンクからQRコードを読み込むだけ。

開発なら、cloneした後npm installからnpm startでQRコードが出てきます。これで終わり。後は同じ。

自分もこれで実機のiOSで開発しています。ほぼnpmで事足りるのでホームページからわざわざSDKダウンロードしたりすることも無し。なんともモダンって感じの開発環境です。

App StoreやGoogle Playの公開はもうちょっとできてから考えようって感じです。

また、時間があれば開発での辛いところとか書いていきます。

Splatoon勝敗手動記録サイト「イカステート」作りました。

ika1

勝敗手動記録サイト イカステート


http://blog.potproject.net/ikastate/

最近ずっと、WiiUのゲームであるSplatoonにハマりすぎていて、夜の間はずっとガチマッチに潜ってます。
おかげさまで、昼夜逆転してしまい、朝を迎えることが割と普通という不味い状態になってます。

splatoon、面白いのですが、他のシューターにあるような情報管理表示サイトのようなものがなく、ゲーム内でも表示できないです。
これは、つまりはキル数だけを求める人を排除するためにわざと無い気がします。

経緯としては、
勝率表示できるようなサイト公式で出ないのかなー・・・とずっと考えており、
やっとフレンド交流サイト「イカリング」というものが出来たのですが、こっちのメインはフレンドとの交流で、フレンドランキング・・・

フレンドなんていねーよ!ずっと1人でガチマッチやってるよ!

ということで、(自分にとっては)全く持って使い道ないし、公式も作る気ないっぽいので勝率管理サイトを自分で作ることにしました。

見たとおり、武器とルールとステージを選び、買ったら「勝利」ボタン、負けたら「敗北」ボタンを押すだけの簡単なお仕事です。
これで勝率を自動算出し、ルール別・武器別・ステージ別の情報を表示できます。
本日と累計、二パターン表示できます。
なお、Userstreamを使用しているので、サイトを閉じても保存されます。
その分、ローカルに保存されるだけなんで、コミュニケーションとかランキングとか無し。
ただ記録して一喜一憂するだけだ!
そういうサイトです。

もっと細かく出せればいいなと思ったのですが、とりあえずこんなもので。
今頃のスマホとかでも動くはず。(自分のスマホは古くて動かなかったが・・・)

追記:ちゃんと古いスマホ(iOS6あたりとか)なんかでも動くようにしました。
ちゃんと調べたら問題点はNumber.isNaNを使ってたところというだけでした。
標準化されてるとはいえ新しいからこれ古いブラウザは対応してないのね。こういうところ注意しなければ。

ika2
ika3
ika4
ika5

参考として自分の記録です。なんとか勝率5割をキープしているところ。
こうやって統計取ってみるといかにノヴァブラスターとかが強いかわかるし、どこのステージが苦手かわかるなあ・・・。
自分以外に使うことがいるのであれば、もっとちゃんとした奴作ろう。

更新履歴
ver1.05
古いスマホやブラウザなんかにもちゃんと対応しました。あと新ステ新武器追加とか
ver1.15
ガチマッチ合算が表示されるようになりました。
バトル-ステージ別にでも表示できるようになりました。
ver1.20
tweetボタンで戦績をtwitterに投稿できるようになりました。広めたいならこういうのがないと。
ver1.30
週間の記録が見れるようになりました。
ver1.35
ついに念願のウデマエSになりました。・・・じゃなくて、月間の記録が見れるようになりました。デザイン変えました。
ver1.40
フェスマッチに対応(今頃)。毎日の勝率とかウデマエを表示できて成長が感じられるスケジューラーでも作ろうか悩み中。
ver1.50
要望が多かったため、ボタンを間違えた時のための取り消しボタンを実装。デザインも少し変わりました
ver.1.60
スプラトゥーンのステージ情報がとれるやつ(非公式)APIを使わせていただき、「ステージを自動取得」にチェックボックスを入れると現在のステージを取得するようになりました
ver1.70
検索機能とソート機能が追加されました。
ver1.90
最近10試合の戦績が表示されるようになりました。なんと武器アイコン付きで。
アイコンはstylecase氏のアイコン(74 INK WEAPON ICONS)をお借りしています。