日本での Swift 開発界隈で「凄腕な Swift 開発者」として認知してもらえたい。
何かしらのサービスを世界に羽ばたかせたい。
PS4 / PSVita 用ゲームソフト「この世の果てで恋を唄う少女YU-NO」のプロモーション用カジュアルゲームアプリ「YU-NO 2048」です。基本的なゲームルールは 2048 と同じ、同じ数字のパネルをくっつけて倍にし、2048 パネルの生成が目標ですが、盤上のパネルを全て倍にしたり、前回の移動をキャンセルしたりと様々なスキルに加え、「ドラッグしてドロップしたパネルと同じ数字のパネルが盤上から全部消える」特殊パネルなどの独特な要素があります。
素材以外の全ての開発(要件定義からコーディングまで)を一人で担当しており、立案からリリースまでわずか2ヶ月の超短期プロジェクトですが、操作性の気持ちよさを妥協せず、App Store でユーザーレビューモ高評価を頂いております。
また、このプロジェクトがきっかけとなった OSS がいくつかありますが、その中でも Storyboard や Auto Layout 制約を使わずにレイアウトをコーディングで組むフレームワーク「NotAutoLayout(https://github.com/el-hoshino/NotAutoLayout)」が一部で話題となり、現在 GitHub では星を 33 個頂いております。そのほかにも、BGM のループポイントに対応したオーディオループ再生フレームワーク Hifumi(https://github.com/el-hoshino/Hifumi)や、サムネイル画像をタップして全画面で表示し、横スワイプで画像を切り替え、そして閉じるときに今表示されている画像のサムネイルに戻るアニメーションを備えた画像ライブラリ表示フレームワーク ServalCat(https://github.com/el-hoshino/ServalCat)、スキルのクールダウンアニメーションを PC の RPG ゲームでよくみかける時計回り風で表示する CooldownProgressView(https://github.com/el-hoshino/CooldownProgressView)など、様々な Open Source Framework を今作のために作りました。
最初は iOS 用カジュアルゲームアプリ YU-NO 2048 のために作ったレイアウトフレームワークです。
筆者の中では基本アプリの設計は Cocoa が使っている MVC を利用していますが、いわゆる Fat Controller 問題を解決すべく、レイアウト等のビジュアル面の責務を綺麗に View に持たせたい、という基本思想で作りました。従来の UIView は各子ビューの frame プロパティー、もしくは Storyboard で Auto Layout の制約を用いてレイアウトを決めていますが、このフレームワークは逆に各子ビューのレイアウト情報をそれらの子ビューを持つ親ビューに持たせるべく、親側でレイアウトを作ることに成功しました。そうすることによって、layoutSubviews を一々オーバーライドする必要もほとんどなくなり、またレイアウトパフォーマンスも Auto Layout より大幅に向上しました。また、レイアウトをコードで書くことができるので、git などでマージコンフリクトが起こった時の情報のわかりやすさも Storyboard より格段に向上されます。
現在このプロジェクトは Swift 4.0 対応に合わせ、API の設計を大幅に見直し、より簡単で手軽に使え、そしてよりコードを読むときにレイアウトをイメージしやすいよう改修しているところです。新しい 2.0 版の NotAutoLayout では他の子ビューにくっつけたり、UILabel などのような動的に大きさが変わるビューの扱いがよりしやすかったり、そしてさらにレイアウト後の追加動作(例えば UIScrollView の contentSize の更新など)などもできるようになる予定です。また、レイアウト動作自体だけでなく、Targeted Extensions の書き方も導入し、複数フレームワークを導入した時の名前衝突の可能性も大幅に低くしました。
ハッカソンのようなデスマ環境