1人目エンジニアが語る「成果を出すチーム」の作り方

医療ビッグデータを活かした事業を幅広く展開しているJMDCには、魅力的な経歴や豊富な経験を持ったメンバーが所属しています。今回は、JMDC初のモバイルアプリのエンジニアとしてチームを立ち上げ、現在EMを務める山本 慎之佑さんに話を聞きました。

<プロフィール>
山本 慎之佑(やまもと しんのすけ)プロダクト開発部 ユーザープラットフォームグループ
2016年に釧路工業高等専門学校を卒業後、株式会社オトバンクに入社。Androidアプリエンジニアとして、CS対応や保守のほか、React Nativeによる新規アプリの実装を担う。その後、株式会社ノハナにてAndroidアプリの開発を経験。2021年3月にJMDCに入社。ヘルスケアプラットフォーム「Pep Up」のモバイルアプリ開発に携わる。

 

効率的なReact Nativeによる開発で、人々の健康を支える

──山本さんのお仕事について教えてください。

ユーザープラットフォーム開発部のモバイルアプリチームで働いています。ユーザープラットフォーム開発部はJMDCのなかでも、toC向けのプロダクト開発を担う組織です。

私はモバイルアプリチームの立ち上げをミッションに入社をし、現在はEMも兼任しています。

新規プロダクト開発も行っていますが、メインで扱っているのはヘルスケアプラットフォーム「Pep Up(ペップアップ)」のモバイルアプリ版の開発です。モバイルアプリ版の特徴として、Google fitやスマートウォッチ等とデータ連携して、歩数や心拍の情報を取り込むことができます。

 

Pep Upは個人の健康や医療データを一元化して、健康を促進する活動に繋げてもらうPHRサービスで、元々は「JMDCが長年蓄積してきた医療ビッグデータを活用して個人向けWebサービスを作ろう」という構想のもと、JMDCの子会社で作っていたサービスです。その会社をJMDCが吸収合併しサービスとして引き継ぎ、現在に至ります。ですので、toB向けのサービスが多いJMDCの中では珍しいBtoBtoCのビジネスモデルで、健康保険組合(以下、健保)を経由して、健保加入者の方々がユーザーとなっており、現在約400万人のユーザーIDを発行しています。(2022年12月の取材当時の数値)

加入している健康保険組合の通知を受け取ったり、JMDCが配信するヘルスケア関連の情報をチェックしたりできるのが特徴です。

※パーソナルヘルスレコード。個人の健康や医療データを一元管理して、健康を促進する活動につなげてもらうWebサービスのこと。

 

▼関連記事

techblog.jmdc.co.jp

 

──Pep Upの開発を手掛ける上でのおもしろさは何でしょうか?

私自身、Pep Upには2つの方向性のおもしろさがあると思っています。

まずは技術的な観点で、開発にReact Nativeを採用していることです。
モバイルアプリの開発作業で、主に時間がかかるのはユーザーが触れる画面の実装です。AndroidとiOSそれぞれでアプリをリリースする場合、同じような見た目の画面を2つ作ることになります。React Nativeを採用すると、ひとつのコードでAndroidとiOSの画面を実装することができるので、効率よくモバイルアプリの開発ができます。エンジニアとしては開発効率が上がりますし、プロダクトのリリース効率も上がるので、採用しています。

React Nativeを採用している中でも、Pep Upのモバイルアプリ版はNative Moduleを活用しているという特徴があります。画面の実装は共通のコードで効率良く開発しつつ、AndroidとiOSそれぞれのOSの機能を利用するところはKotlinとSwiftで実装してあります。React Nativeを基本としながらも、必要に応じてAndroid/iOSそれぞれに手間をかけて作るという、技術のいいとこ取りをしています。

もうひとつは専門性に関係なく、仕事を通じて医療やヘルスケア領域の知識に触れることができることです。

開発をしていると、新しい機能を作るときにそこで行う処理について調べたり聞いたりして、どんな学会のどういった基準を採用しているかがわかるんです。

こういった環境は、健康意識の高い方にはとても楽しめるものだと思います。仕事を通じてヘルスケアに携われる点は、私自身も入社した動機の一つになっています。

 

モバイルアプリ専任エンジニアとして、0からのチーム立ち上げ

──現在のモバイルアプリ開発チームの体制を教えてください。

現在は、テックリード兼EMの私を含め、4人のエンジニアがいます。私が1人でチームを立ち上げて1年半ほどですが、それぞれ専任のプロダクトを持ち、裁量を持って働いています。

 

──たった1人からチームを立ち上げる上で、難しかったことは何でしょうか?

一番は「開発体制の整備」です。

新規プロダクトの立ち上げフェーズにはよくあることかと思いますが、時間とコストをかけすぎず必要最低限な開発をするため、Pep Upのモバイルアプリ版は当初、外部の開発会社に委託していました。そのため、長年その外部の担当者さんが毎週の定例に資料をまとめてきては「本日はありがとうございます」とかしこまったコミュニケーションをとっていました。

私はプロダクトの成長に伴うモバイルアプリチーム立ち上げをミッションにJMDCに入社しましたが、今後JMDC社内でアプリを管理・運用していけるような体制を作る上で、まずこういった空気を変えなければと感じたのです。

 

──空気を、ですか?

そうです。たしかに開発会社の方は社外の方ではありますが、Pep Upのモバイルアプリ版というプロダクトを作る同じチームのメンバーです。

であれば、もっと近い距離感で接してコミュニケーションコストを下げる。資料を整えるよりも、成果物に目を通してブラッシュアップするほうに時間や熱意を注いだ方が、きっといいプロダクトになるはず。ですのでチーム立ち上げの当初は、そういった空気感も変わるように今後のものづくりに必要なワークフローの見直しや、細かなルール決めに力を注いでいました。

また併行して取り組んだのが、チーム体制移行に伴うコードベースの品質向上です。
実は先ほどの3人チームのうちの1人が、外部の開発会社から引き続き業務委託で働いてもらっているメンバーなんです。Pep Upのモバイル版は、その方がゼロから約4年かけて作り上げたプロダクトと言っても過言ではなく、コードベースもその方しか正確に把握できない状態になっていたんです。

 

──非常に属人化してしまっていたのですね。

一人で開発を進めるのであれば、実際にコードを書いた自分だけが理解できていれば問題ないと思います。たとえば業務マニュアルも同じで、自分のための覚え書きと社内に共有する文章で書き方が変わるでしょう。

しかし開発をチーム体制へと切り替えるにあたっては、まず4年間積み上げられたコードを他のメンバーも理解でき、解釈の相違が起こらない形へと整えることが必要でした。

そのため一つひとつ確認をしながら、地道にフォーマットを整えていきました。プログラミングの解釈も普通の文章を推敲するのと同じで「誰が読んでも意図通りに読める」コードこそが、品質が高いということになると思っています。

 

──そういった立ち上げを経て、3人体制になってみて感じる変化はありますか?

やはり開発スピードの向上は実感しています。JMDCはスモールビジネスにありがちな「ひたすらアウトプットしなければならない」といった環境ではありませんが、すでにあるプロダクトをより良くする上でも、スピード感は大きなメリットです。切磋琢磨する機会も増え、お互いに属人化しないようにレビューし合い、コードベースの品質向上も私一人のミッションではなく、チーム全体で機能していると感じます。

 

メンバーの長所を突き詰めて表れた「4つの価値観」

──チームで成果を出すために、EMとして大切にしていることはありますか?

困ったときに「困った」と声を上げられるチームづくりを心がけています。最近よく耳にする心理的安全性は大切にしていますね。

週1回の振り返りではKPTのフレームワークを使って「継続していきたいこと(Keep)」「解決すべき課題(Problem)」「今後やっていきたこと(Try)」について話します。業務以外にも「最近家を買おうとしている」とか「ダイエット100日達成してやったぜ」みたいな雑談も含めて、リモートワークだからこそ些細なことでも話す習慣づけになる機会を設けています。

▲週次KPTの様子

 

それからエンジニアという職種だからこそ、業務を通じたスキルアップのサポートも意識しています。

 

──どういうことでしょうか?

こんな話をすると人事に怒られるかもしれませんが……(笑)。一般論としてよく耳にするのが、社内で頑張っているのになかなか給料が上がらず、転職するというケース。現状、エンジニアは圧倒的な売り手市場。簡単に給与アップが見込めるので転職を選ぶのですが、それはすごくもったいない状況だと思っています。

それならば業務の中でスキルアップしてもらい、会社がその成長した分を評価して報酬として還元する。そういう社内で正しく評価される仕組みを作りたいんですよね。それは人材が定着しやすくなる意味で、企業側にとっても意味のあることだと思っています。

なので、メンバーにはどんな仕事をやるのが好きかをヒアリングしておく。そして、その方の現状のスキルよりも難易度が少し上がるが、モチベーション高く取り組めそうな適切な課題を設定する。何か困っていたら解決をサポートする。この3つをEMとして意識しています。

 

──メンバーとしても心強いと思います。最後にこれからチームを拡大していく上で、どんな方と働きたいですか?

ちょうどメンバー募集をかけるにあたって、そこを明文化しました。

  • HRT(謙虚/尊敬/信頼)を心がけたコミュニケーションを大切にする方
  • 自身のキャリアについて、自身の意志を伴った決断を継続的に行っている方
  • 自身の志向に合う領域について、継続的な成長意欲がある方
  • 技術的な観点に固執しすぎず、プロジェクト全体を推進するのための意思決定できる方

 

▼「チームが大切にしていること」を明文化し、JDに書いた話をまとめているので、ぜひご覧ください。

https://speakerdeck.com/mrtry/a-story-about-writing-to-jd-to-clarify-what-the-team-values

 

たとえば4つ目の「技術的な観点に固執しすぎない」という観点でいえば、私たちが採用しているReact Nativeに対して「Android/iOSをまとめて開発できるのはメリットだけど、それぞれをネイティブで開発したほうがより良いプロダクトが作れる」という見方もできます。

ただ私たちのビジネスでは、そういった技術を突き詰めることよりも、形にしたりアップデートしたりできるスピード感を重視したい。そういった全体最適を考えた上での意思決定に全員が賛同できているから、チームがパフォーマンスを発揮するのだと思います。

この4つがあるからこそ気持ちよく働けているので、共感できる方にはぜひ私たちのチームに来ていただきたいです。ちなみにこの4つの項目はチーム全体でのアンケートとブレストで、みんなの長所を集めた結果です。ここに私たちの価値観が集約されているのかなと思います。

 

そのほかに求める人物でいえば、私と同じポジションを担ってくれる方でしょうか。属人化しないチーム作りを進める上で、チームリードで働いてるのが私だけという体制は大きなネックです。

プロダクト自体はゼロイチでアプリを開発するフェーズを超えて安定稼働に入りましたが、以前のReact Nativeが古くなり、最新の仕様でリニューアルしている真っ最中です。コード品質向上と同時に、JMDCのモバイルエンジニアチームを継続的にプロダクト開発ができるチーム体制にしていきたいです。再現性こそがビジネスの強さだと思うので。

 

最後までご覧いただきありがとうございました。
もし少しでも弊社にご興味をお持ちいただけましたら、こちらの採用ピッチ資料に詳しいことが記載してありますので、ぜひ一度ご覧ください。