# 概要
## プロダクト
上記位置ゲームアプリのキャラクターを使用したスピンオフカメラアプリ。SNS上での拡散力と、位置ゲームとしての体験向上を意図したもの。
## 業務範囲
要件定義、アーキテクチャ選定〜設計〜実装〜リリース、ディレクション、プロジェクトマネジメント、プロモーション戦略
## 開発体制
エンジニアx2, ディレクタx1, デザイナx1
# 要件定義について
位置ゲームのスピンオフとしてカメラアプリを作ることは親和性はあるでろうという仮定のもとで、プロジェクトが開始されましたので、まず、実際にどういったユーザ層に使ってもらえるのか、ユーザのペルソナを定義し、ユーザストーリーに起こすことで、ニーズの発掘を行うことから始めました。
また、そのニーズを実現するための費用とマイルストーンについても計画を行いました。
# アーキテクチャ選定について
開発工期が限られている中で、Android/iOSリリースということで、使用エンジンは最初からほぼUnity一択でした。
アプリの規模はミニマムですが、ミニマム前提でMVVMで設計を行うと後々の拡張がつらくなる自体が想定されます。かといってflux等の大規模アーキテクチャで設計を行うのは現在の要件ではマッチョです。
そこで、今回の設計はReduxをベースにし、StoreからViewへの単方向バインドのみを実装、ActionCreatorやReducerはMVVMのVMで省略するという方針で設計しました。これにより、軽量な実装と大規模アプリケーションの拡張性を両立目指しました。また同時に、クリーンアーキテクチャに見られる内側への参照関係も採用し、テスタビリティも確保しました。
# 設計について
デザイナの工数をアサインできましたので、画面遷移図はGoogle図形描画で済まし、早々にデザイナさんにSketchでモックアップをお願いしました。
また、スピンオフアプリの性格上、リリース後のメンテナンスが行き届かなくなる事が予測されたため、コードのみやすさが最優先と定義し、以下のような原則を適用しました。
* コルーチンよりもRxによるストリーム処理を推奨
* Rxに流すものはプリミティブ型や、Entityオブジェクト
* 無意味な継承は行わない
* クリーンアーキテクチャ風にできるだけ近づける努力をする
# ディレクション
開発が軌道にのり始めるとエンジニアが追加でアサインされ、各役割ごとの作業を進めていくフェーズですが、そこでディレクタが突然いなくなります。しかし、代わりのディレクタのアサインは行われず、ディレクションや、プロモーション戦略を考えていく必要が出てきました。結果から言うと、この役割は半分失敗に終わります。
それは、戦略や計画を立てることはしましたが、開発に工数を取られ、実行や調整を行う工数が工面できなかったためです。この問題に対し、タスクを委譲できる単位に切り分け、他チームに分散して巻き取ってもらう調整をつけ解決しました。
# マネジメント
このプロジェクトではマネジメントにも挑戦しました。
このプロジェクトに課せられたミッションは大きく3つで以下のとおりです。
* カメラアプリの本体アプリである位置情報ケームのゲーム外のユーザ体験を向上させる
* SNSにおける画像つき投稿のコンバージョン率の高さを利用した拡散力の獲得
* できれば年初から始めて、GWまでにリリースしたい
このプロジェクトにおいてまずはリリース時期が最大のネックでした。位置ゲームのスピンオフという立ち位置上、行楽シーズンに間に合わせるのは至上命題です。
また、拡散力についての要求もありますので、アプリの快適さや、写真のクオリティーも落とせません。
つまりこれは、短納期高品質が要求される難題でした。
これに対して私は、まずリーンスタートのアプローチを取ることで、GWに間に合わないという事態を回避しました。
また、カメラアプリ開発で工期を取られる中でも、比較的省コストで実現できるフォトコンテストをGWでのバイラルを狙い開催します。
こちらはフォトコン以前に行ったイラストコンテストの焼き直しですが、イラコンより参加の敷居が下がるため、投稿数を稼げる目論見がありました。
このプロジェクトでの心残りは、自分のポリシーに反し、結果的にマイクロマネージメントになってしまっていた事です。
プレイイングマネージャーで起こりがちな事態ではありますが、短納期も相まって、同じ轍を踏む結果となってしまいました。
この反省から、健全なデベロップメントチームを作るためのプラクティスとしてスクラムを学習し、後述の駅メモ2期でのSMとしての振る舞いにつなげるきっかけとなりました。