見出し画像

文系出身の3年目エンジニアが新規アプリをリリースした話

こんにちは、しろくまです。ナビタイムジャパンでカーナビ系iOSアプリ開発を担当しています。

先日公開された「SPEED METER by NAVITIME」UXのこだわりを支えるデザインと技術の話、皆さんはもうご覧いただけましたでしょうか?

この度、Android版に続き、待望のiOS版『SPEED METER by NAVITIME』をリリースいたしました!
Android版から約1ヶ月半後のリリースとなったものの、すでに国内外の多くのユーザーにご利用いただいており大変嬉しく思っております。

今回は、初めて新規アプリ開発に取り組んだ私が抱えていた課題と、それをどう解決していったかについてお話ししていきたいと思います。これから新規にアプリ開発をされる方の参考になれば幸いです。

課題

私自身の場合は以下2点の課題がありました。

  • Android版の開発に追いつく必要があった

  • 技術力には正直自信がなかった

Android版の開発に追いつく必要があった

元々両OSでアプリを提供することが決まっていましたが、仕様検討やデザイン調整のため、Android版の開発が先に進んでいました。
また、Android版のリリース前から社内レビューを随時行っていたため、レビューを経て発生した仕様変更についても、新規開発を進めつつキャッチアップしていく必要もありました。

技術力には正直自信がなかった

今回のアプリは、私1人で一から開発を進めていくことになりました。ですが、私は文系出身でプログラミング経験がほぼなく、入社してからの開発は既存アプリへの機能追加がメインでした。そのため、今回このアプリの開発にアサインされた時は、大きな案件を一任していただいた期待に応えられるよう頑張りたいという気持ちと、自分がちゃんとしたアプリを作れるのかという不安な気持ちが半々でした。

どうやって乗り越えたか

開発している途中は正直無我夢中だったのですが、終わってから振り返ってみて、以下2点の取り組みがよかったのではないかと考えています。

  • 力を入れるべきところを見極める

  • 周囲をうまく頼る

力を入れるべきところを見極める

当アプリでは、メイン機能の一つである地図・ナビゲーション・現在地情報の表示についてはすでに用意されている社内ライブラリを活用し実装しています。
それらに加え、今回の開発にあたっては、当社が提供しているカーナビアプリ『NAVITIMEドライブサポーター』の一部設計も活用しています。

本アプリでは横画面時も表示領域を確保するために、縦画面では画面下部に表示されているタブが、横画面時は画面右部に表示されるようになります。OS標準で用意されているタブではこの動作ができないため、自前で実装する必要があります。
本来なら一から実装しなければならない部分ですが、前述した『NAVITIMEドライブサポーター』には同じ動作をする下タブがすでに実装されていました。

『NAVITIMEドライブサポーター』と『SPEED METER by NAVITIME』は下タブの動きが共通

普段から開発をしていて、設計についてある程度把握できているプロダクトということもあり、『NAVITIMEドライブサポーター』からタブの挙動を管理しているコードを流用することで、このタブの実装にかかる時間を短縮することができました。

こういった社内にある技術資産を少しずつ取り込んでいくことで、本アプリのこだわりであるデザインやアニメーションの実装に注力することができました。
その結果、iOS版は11月に開発に着手してから約5ヶ月でアプリをリリースすることができました。

周囲をうまく頼る

基本的に開発は1人で進めていましたが、開発に着手する前のアプリ設計の検討や、特に処理が複雑なナビゲーション部分の開発は、同じプロジェクト内の先輩に頼りました。
それに加えて、本アプリの開発自体には関わっていなくても、普段から開発の相談をしている先輩にアドバイザーとして入っていただき、随時質問したりもしていました。

一からの開発だとほぼ全てに自分の手が入っている状態なので、「仕様を説明した上で相談する」「途中から開発をお願いする」よりは自分でやった方が早いと思いがちなのですが、1人の視点だと見落としている部分があったり、先輩が別アプリで実装経験を持っているケースは思ったよりもずっと多いです。午前中に悩んでいた部分が、開発の相談を経て午後には実装完了していたり、自分が3日で見積もりを出していた機能を先輩が1日で実装してくださったりと、逆に相談がなければもっと遅くなっていたかもしれないと思うところもあります。

また、スピードメーター画面やログ再生画面のアニメーションでは、アプリ開発というよりは数学の知識が必要になる場面も多かったため、数学が得意な同期に一緒に考えてもらったりもしていました。

スピードメーター画面のアニメーション
ログ再生画面のアニメーション

「〇〇を実装する」という考えから始めてしまうと、実現方法について調査する時や質問する時も、その前提をもとに考えてしまいがちですが、「満たすべき要件は何か」をベースに仕様を細分化していくことで解決策が見つかることも多かったです。

うまく周囲にいる人を頼ることで、技術的に足りない部分を埋めながら開発スピードをなるべく落とさずに進めていけたのではないかと思っています。

最後に

新規アプリ開発について、取り組んでよかったと思った部分についてお話ししました。
この記事を最後まで読んでくださった皆さんの参考になれば幸いです。
『SPEED METER by NAVITIME』も、この機会にぜひ一度ご利用ください!