新入社員とベテラン社員の対談 - モバイル開発のリアル -
パイオニア株式会社のnoteを見てくれている方に、モバイル開発部の現場について知ってもらおうということで、いろいろ話してみました!
自己紹介
パイオニアの魅力とは
方波見:
早速ですが、パイオニアの入社前と入社後のイメージのギャップってありましたか?
山本:
良い意味でのギャップは感じましたね。
想像以上に大きな会社だと驚きました。自分が思っていたより市場がグローバルすぎて思わず笑ってしまいました!(笑)
方波見:
利用されいてる地域も日本だけじゃないですし、toCの相手がグローバルすぎて本当に驚きですよね。
山本:
日本の売上と海外の売上が半々なので、そういう意味では大きい会社でしか感じられないメリットがありますね。
例えばアメリカに旅行した時に、ウォルマートで自分が携わった製品が並んでいるのを見ると、テンション上がりますよね!
方波見:
身近で使ってもらえるのもやっぱり嬉しいですけど、全然知らない土地で使ってもらえていたり、売られているのを見られるのはグローバル企業の開発ならではですよね。
山本:
そうですね。
逆にメーカーの会社ってイメージは全然変わらなかったですね。
方波見:
具体的にはどんなところにメーカーの会社っぽさを感じましたか?
山本:
製品を使ってもらうアプリを作っているので、製品側が完成しそうな頃に、アプリの開発もウォーターフォール型で要件定義から始めるところですかね。
方波見:
スピード感が重視されるアプリ開発的にはウォーターフォールはやりにくいですよね。
山本:
作り始めてからの仕様変更は体制がネックになって対応しにくいですし、製品のリリースで納期がずらしにくいので、デメリットの方が大きかったです。
私が担当しているMy NP1では今までのウォーターフォール型での開発をやめて、アジャイル型での開発にシフトしていきました。
方波見:
アジャイル開発にシフトしていくためにはアジャイルについての知識を持っていないとできないと思うのですが、そういった知識はあったのでしょうか?
山本:
プロジェクトを進めていくために勉強しましたね。
よりスキルアップするためにスクラムマスターの資格も取得したのですが、資格取得に必要な費用は会社が支援してくれました。
社員が成長するためのバックアップがしっかりしているので、そう言った点も魅力の一つだと思います。
アーキテクチャや技術選定はどうしているの?
方波見:
さて、もう少し技術的な話をしていきたいと思います。
山本さんが開発しているMy NP1は新規開発のアプリですが、Androidはどんな感じで作っていますか?
例えば、使っている技術とか設計の話を伺いたいです。
山本:
開発言語は90%Kotlinで書かれていて、BLEのプロトコルバッファとの相性でJavaも少し混在している状態です。
アーキテクチャはMVVMを採用しています。
私のプロダクトではAndroidX(*1)やKotlin Coroutine(*2)を使っていたり、できるだけ新しい技術は取り入れるようにしています。
方波見:
My NP1は比較的、新しい技術を取り入れていますよね。
私が担当になったアプリは開発言語がJavaで書かれていて、アーキテクチャはMVCが採用されていて、最近のアプリの主流からは少し遅れてます。
今後はMVVMやClean Architectureを採用して、依存関係の交通整理をしたり、DataBindingを導入してViewとロジックを切り離すことでUnitTestを書きやすくしていったり、アプリとしての品質を高めていけるようにしたいです。
山本:
今までのパイオニアは開発そのものをベンダーにお願いしていて、技術的なコントロールができていなかった部分もあって、プロダクトごとで使っている技術が違ったりしていますよね。
方波見:
そうですね。
My NP1はチームメンバー達で話し合って、技術選定していると聞いたのですが、技術選定をする際に何を大事にしていましたか?
山本:
うーん。そのプロダクトにあっているかどうかですかね。
方波見:
その部分は大事ですよね。
アーキテクチャをおざなりにしてしまうと可読性や拡張性が失われて、結果的に開発スピードや品質を貶めることに繋がりますからね。
そういった技術負債返済のためにアーキテクチャを後から変更していくのは、とてつもない労力がかかるのでかなりしんどいです。笑
山本:
今のリソース観点からはFlutter(*3)とかKMM(Kotlin Multiplatform Mobile)(*4)も検討してみたりしていましたね。
KMMはまだα版なのでパイオニアで使われているプロダクトはないですが。
方波見:
マルチプラットフォームが正義かって言われると必ずしもそうじゃないとは思いますが、Flutterはモバイルアプリ系のカンファレンスでのセッションも増えてきて、トレンドでもありますし、個人でもFlutterでアプリ作っていてその良さを体感しているのでFlutterでアプリ作りたいです!
山本:
マルチプラットフォームの方はAndroidエンジニアがiOSエンジニアに転身っていうハードルは低くなる感じもありますよね。
方波見:
頻繁にジョブチェンジされるとスキルが身に付かない問題が生まれたりするかもしれないですけど、そう言ったエンジニアとしての成長のチャンスとか楽しさは欲しいですよね!
山本:
今はガチガチなルールが決まっているわけではないので、プロダクトにあっていれば新しい技術的なチャレンジがしやすいとは思いますね。
現在の技術課題は?
方波見:
先ほどの話で少し話題になりましたが、Javaで書かれているプロダクトもありますし、アーキテクチャもバラバラだったり技術課題が山積みですよね。
山本:
プロダクトごとでアーキテクチャが違ったりするので、技術共有とかはしにくい状態ですね。
方波見:
今度はプロダクトごとでやっていたりするTips会とかもチームで開催していきたいですし、勉強会とか読書会で技術のボトムアップも取り組んでいきたいですよね。
山本:
やりたいことは沢山ありすぎるから、その前に目の前の技術課題を解決していかないとって感じではありますけど。
方波見:
そうですね。
全体的に開発環境が古いものを使っている傾向がありますね。
例えばSVN。パイオニアにジョインする前に昔話的に存在を知っていた程度だったのですが、パイオニアに入って初めてSVNを使う事になって、個人的には驚きでした。笑
山本: 笑
方波見:
今は徐々にGitHubに移行しているおかげでBitrise(CI/CD)が使えるようになりましたけど、まだまだ品質担保や向上と言うところまでは到達できていないので、どんどん自動化も進めていきたいですよね。
山本:
菅野君が書いていた記事の話ですよね?
方波見:
記事ではBitriseでの自動ビルド&配布までしか書かれていないですが、その先も考えていて、最終的にはAppiumを使ってE2Eテストもできる限り自動化していきたいと思っています。
山本:
対応しないといけない端末数多いですしね。
それに、モンキーテストだったら手動の方が効率が良いと思いますが、リグレッションテストは自動化していきたいですよね。
方波見:
テスト駆動で設計できる様になれば、品質担保にもつながりますし、メンバーも安心して開発もできる様になります。
後々の事を考えると対応していくメリットは大きいので一から構築していくのは大変ですが、やっていきたいですね。
山本:
他にもやりたいことはいっぱいあって、アプリをグロースしていくためのデータ収集にも課題があったりしますよね。
例えば、レガシーな技術のメンテンナンスや、古いOSを切る切らないの判断をするためのデータに基づいたクライテリアも定まってないですし。
方波見:
開発していくにあたって工数も増えやすいので、そう言う部分の指標もちゃんと決めていきたいですね。
他にはKPIとかも可視化して、メンバーで分析した上でアプリ開発に落とし込んで作ったり、もっとプロダクトとして成長できる様にしたいですね。
最後に
パイオニアのモバイル開発ではこのように課題、やりたいことが山ほどあります。
チームは駆け出し始めたばかりで、ちょっとでも応援したいなって思ってくれた方は、このnoteへのスキ!やシェアを是非お願いします。フォローも大歓迎です!
最後まで読んでいただき、ありがとうございました。
パイオニア株式会社では、変革に向けて一緒に働く仲間を募集中です! 老舗メーカーの変革に少しでも共感、チャレンジしてみたいと思われた方は、下記の採用ページをご覧ください。
カジュアル面談をご希望の方は下記Meetyからご連絡ください!
山本
方波見