① どのようなプロジェクトだったのか
公式の音楽動画をストリーミングで視聴し、動画の一部を切り取り、サービス内外でシェアすることができるネイティブアプリです。新規サービスとして、企画がある程度固まった後にiOSの開発リーダーとして参加し、設計、開発、チームのマネジメント、テストを行いました。iOSを開発するメンバーは、新卒2年目の自分と、iOS開発未経験の新卒1年目と3年目の業務委託の方2名でした。
自分が参加してから、メンバー全員で企画をより固め、その後開発を始めました。開発からリリースの期間は約半年です。その後半年間機能追加のエンハンスを行い、再度企画を考え直しリニューアルとして再び1から開発を行っています。
2019年度に、先輩からのサポートが少ない中、少ないメンバーでかつ教育を行いつつも予定通りリリース・エンハンスを行った実績を認められ、下記の賞を社内史上初の同時受賞することができました。
- 全社員で最大1名が選ばれるヤングMVP賞
- 全社員で最大5名が選ばれる執行役員賞
②どのような機能を開発されたのか
サービスとしてiOSアプリで行うことは全て設計、開発を行いました。
- 動画の視聴
- 動画の一部を切り取りサービス内外にシェア
- 動画の検索
- シェアする動画の位置を指定
- シェアされた動画をタイムライン形式で連続視聴
- ログイン
- ユーザーフォロー
- ユーザープロフィールの設定
- プッシュ通知
③どのような技術を使い、どのように実装をされたのか
開発リーダーとして、iOSで使う技術に関してはかなりの裁量を与えていただいていたため、まずはアーキテクチャの選定、設計を行いました。
その後、未経験だったメンバーへ実装する上で必要な知識として、アーキテクチャでの責務の分けるポイントとしてビジネスロジックやプレゼンテーションロジックの判断、AutoLayout、Delegateパターン、Optionalやプロトコル思考といったSwiftyな書き方をコードレビューを通して共有していきました。その後、小さなミスを自動でなくせるようにSwiftLintを導入しました。
また、より経験が浅い1年目のメンバーには、サービスへとコードの理解を深めるためにログイン画面等のテストコードをXCTestフレームワークを使って実装してもらいました。この事により、アーキテクチャやソースコードの理解がスムーズにでき業務にもすぐに入ることができました。
- アーキテクチャ
初期段階はSwiftでMVCで実装を行いました。
MVCで実装した理由は、当時の自分が新卒2年目で、一緒にiOSの開発を行うメンバーもiOS開発未経験の新卒1年目と3年目の業務委託の方だったこともあり、未体験のアーキテクチャで実装することはリスキーだったからです。
半年間の開発で無事予定通りリリースすることができ、その後のエンハンスでテスタブルなコードを書けるように、MVPに移行し始めました。それと同時に一部画面ではユニットテストを実装し、自動でテストが行える環境も構築しました。
サービスの都合で再び一から作り直す機会を得ることができたため、今ではVIPERで実装しています。
④どのような技術的な課題があったのか
動画の一部を切り取りシェアすることができる機能も全てストリーミングで行う使用だったため、シェアされた動画を連続視聴する際に読み込みする時間がかかってしまう問題がありました。
⑤どのようにその課題(難しかったことなど)を解決されたのか
これを解決するために、UICollectionViewでCellを生成する前にAVPlayerを生成し、動画をセットアップするように実装することである程度解決しました。