はじめに
私「もんりぃ先生」は、 株式会社キッズスター という会社で TechLead をやっているエンジニアです。
今回は、今やっているコトや、これからやろうと思っているコトについて、技術的な観点でのまとめを記事にします。
なお、ポエム成分多めな記事になっているので、予めご承知置きくださいませ。
キッズスターの話
キッズスターは、 なりきり!!ごっこランド ( App Store / Google Play ) という、スマートフォン向けアプリの開発・運営を主力事業とする 子ども向けプロダクト を作る会社です。
開発には基本的に Unity を用いており、2013年に使い始めて以来足かけ5年に渡る付き合いとなっています。
ごっこランドの話
主力事業である「ごっこランド」は、ユーザさまには完全無料でご利用いただき、企業さまにアプリ内にあるコンテンツ(弊社では「パビリオン」と呼んでいます)のスポンサーとして費用を頂戴する、というビジネスモデルで成り立っています。*1
おかげさまで200万を超えるご家族にご利用いただいており、レビューの平均点も4を超える良い数字を頂戴しております。
2018年2月現在スポンサーとして企業さまが付いているパビリオンは6つあり、2018年はこの数を大幅に増やそう!という計画になっていたりします。
もんりぃ個人の話
さて、話のベクトルを私個人に向けてみたいと思います。
この記事を書いている現在、私は「ごっこランド」のパビリオン開発と、開発基盤の整備に従事しています。
もうちょっと掘り下げて分解してみると、以下のようになります。
- 社内で企画を練り、クライアント企業さまに納得いただいた要件でパビリオンの開発を行う。
- 複数のパビリオン開発を行う上で、必要となる共通的なライブラリの開発やメンテナンスを行う。
- 開発者が効率的に開発を行うための、ビルドシステムを含めた開発環境の整備を行う。
- サーバサイドシステム、サインフラストラクチャの開発・整備を行う。
- これは最近殆どやってませんが。
この中でも特に 2. を、個人としても組織としても重視しているので、そこを更に掘り下げて紹介します。
開発基盤の話
TL; DR
OSS として Clean Architecture を Unity で用いるためのアーキテクチャフレームワークを作りました。
長〜い開発基盤の話
2018年2月時点の開発基盤の話をするにあたり、2017年上半期あたりまで使われていた KSUDK (KidsStar Unity Development Kit) と呼ばれるフレームワークの話をする必要があります。
これは、いわゆる「オレオレフレームワーク」で、2D ゲームをサッと作るコトに特化した、もんりぃ謹製のアプリケーションフレームワークです。
こいつは、紆余曲折 *2 を経て育て上げられた巨大なコードベースとなっており、以下のような問題点が顕在化していました。
- 出来ることが、実装されている範囲に制限されているため、表現の幅が狭い
- もんりぃ以外がメンテナンスしづらい
- ドキュメントとかテストとかが皆無なので、新しくジョインする人の学習コストが尋常じゃなく高い
で、「このままじゃいかん!」ということで、2017年後半に、先ずは「KSUDK からの脱却」を図るべく KSUDK を利用しているパビリオンと、利用していないパビリオンが混在可能な状態 を作り上げました。
これにより、1. の問題点は解決可能になりました。
しかし、元々 Unity 開発の世界には標準的なアーキテクチャフレームワークが存在して居らず *3 、各社・各位で思い思いのアーキテクチャを採択しフレームワークを自作しているような状態です。
そのため、誰かにプロダクト開発をお願いするときに「ウチはこのアーキテクチャフレームワーク使ってるんで!」という話がし辛く *4 2. や 3. の問題点が解決できない状態にありました。
そんな時、弊社技術顧問の @ppworks さん から「世間には Clean Architecture ってのがあるらしいよ?」という天の声を授かりました。
「そっか、ないなら作れば良いんだ。」と気付いた私は、その日から猛烈に調査・研究をしまくり、私なりの Clean Architecture に対する解釈を Unity 向けのコードとして落とし込んだ CAFU: Clean Architecture For Unity を OSS として作りました 。
「え?それ結局またオレオレフレームワークになってるんじゃないの?」という声が聞こえた気がしますが、声を大にして言いたいことは「CAFU はアーキテクチャを実現するためのフレームワークであり、実装を手助けしたり縛ったりするためのモノではない。」と言うことです。
SOLID 原則を意識し、可能な限りクラス間の結合を疎にして、それでいながら 開発者が「これ、どこに書けば良いんだ…?」というコトに悩まなくて済む ようになっています。
で、その CAFU を「ごっこランド」のパビリオン開発に採択し開発している、というのが今のステータスとなります。
今後の話
私個人の2018年3月以降の動き方を、業務内外含めてザックリ以下のように定義しています。
- 上述の CAFU のドキュメント・テスト・サンプル整備を含めたメンテナンス
- 新規ライブラリ開発やライブラリ配布基盤のメンテナンス
- CAFU の啓蒙を含めたアウトプット活動
- 「ごっこランド」の共通機能や基盤機能の強化・改善・分析
- Unity の初学者〜中級者に向けた学習補助サービスの提供
- Unity 関連書籍執筆
勿論、全部完璧にこなせるかどうかは分かりませんが、これらのプランを一つでも多く実践することで、私個人としても組織としても成長できると信じて行動を開始しています。
2017年はアウトプットなども含めたコミュニティへの貢献があまりできなかったので、2018年こそは自身を奮い立たせて活動していきたい所存です!
まとめ
まぁ、2018/02/24 現在、私が上述の「今後の話」を実現するためにパビリオン開発を担ってくれる人が足りないので、 助けてくれる人を募集しています という話です!
契約形態とか不問ですし、Unity 経験が無い or 浅い人でもエンジニアとしてのスキルがあれば何とかなると思ってますので、「手助けしてあげても良いかなぁ?」と思った人は Wantedly 経由でも、Twitter でDM 送るでも、何でも良いのでご連絡頂けると幸甚です!