エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

エムスリーエンジニアリンググループ 第1回開発合宿を開催しました

エムスリー ソフトウェアエンジニアの笹川です。 AI・機械学習チームに所属しており、データ基盤周りの整備を行なっています。 趣味は筋トレで、いいコードを書くためにBIG 3 (ベンチプレス、スクワット、デッドリフト)をメインに鍛えています (AIチームのリーダはベンチプレスの最高挙上重量で決まるという噂もあります(噂です))。

今回は、先日(7/27〜7/29)開催したエンジニアリンググループ初めての開発合宿の様子を報告したいと思います。

開発合宿を行なった背景

エムスリーでは、エンジニアは5〜8人程度のチームで日々担当プロダクト改善と、新規機能追加などを実施していますが、 工数や、施策の優先順位の問題で、既存施策の延長上にない「全く新しい」取り組みをすることは、 短期的には施策の進捗悪化などに繋がるため、簡単ではない状況があります。 そもそも「全く新しい取り組みをするべきなのか?」という問題はあるものの、 新しい技術の検証や、チーム外のエンジニアの知見を持ち寄って自由に施策を考え実現することは、 そのプロダクト(または、担当のエンジニア)への新しい刺激や、それに取り組んだエンジニア自体へのいい影響を与えることに繋がり、 この事は、短期的な悪影響を鑑みても、余りあるメリットがあると考えます。 今回は、上記をエンジニア側から提案し、上長に了承を得ることができたので、有志9名のメンバーで無事実施の運びとなりました。

道中の様子

当日は、新橋駅の乗り換えで2名が迷子(笑)になるなど、半ばお決まりの流れをだいたい踏みながら合宿所に向かいました。 当日は天気もよく、電車の車窓から見える景色の非日常感にメンバーのテンションが爆上がりでした。

f:id:hsasakawa:20180802101612j:plain
道中の様子

今回利用したのは、千葉県富津市金谷にある voido という施設です。 内房線浜金谷駅から徒歩5分ほどにある戸建住宅のようなこの施設は、テーブル、キッチン、ベッド、お風呂、洗面台など基本的な施設はもちろん、 wifi、プロジェクタ、電源タップ、USB-C対応の各種アダプタなども備え、エンジニアにはかゆい所に手がとどく素晴らしい施設でした。 タオル、歯ブラシなど各種アメニティなどもあるため、今回のように開発合宿で利用する場合は、最低限PCさえあれば大丈夫です。

合宿で取り組んだこと

合宿では、以下の2つのチームに別れそれぞれの課題に取り組みました。

  • チャットUIの問診アプリを作るチーム (以後、問診チーム)
  • 弊社サービスの AskDoctorsAndroidアプリを作るチーム (以後、Askチーム)

筆者も所属した問診チームは、LINEのようなチャットUIをベースとし、患者さんとインタラクションをしたのちに 患者さんの行くべき診療科を提案したり、反対にお医者さん側に患者さんの情報を提供する機能を実装することを目指しました。 一方Askチームは、AskDoctorsの基本的な機能を全て備えたAndroidアプリをクライアント側をKotlin、バックエンドのAPIをGraphQLで実装することに取り組みました。 どちらのチームも最終的には、社内の事業チームへ機能追加の提案に持っていくことを目標にしました。

問診チームは手を動かし始める前に、このアプリが解決する問題について議論する時間を設けました。 議論の中では、

  • 仮にスマホアプリとして実装した場合、患者さんはそもそもアプリを入れてくれるのだろうか
    • 一般にスマホアプリのDLは敷居が高い(なかなか入れてもらえない)
    • 患者さんは普段の健康な状態で、病気を想定したアプリを入れるモチベーションがあるのか
  • 病院の待合室でよくやっている紙とペンでの問診と比べて何かメリットはあるのか

など数多くの意見がでました。 最終的な結論として、病院の待合室で利用されることを想定し、紙とペンで行われている物を置き換えることで、 電子カルテへの入力の手間の削減などをメリットとして提供する、という方針となりました。 上記の議論には1日目の大半を使い、15時頃合宿所についてから実際にコードを書き始めたのは初日の21時過ぎ頃(initial commitの時間)でした。

Askチームは、実装する対象が決まっており、合宿所に向かう電車の中で基本的なデザインについて作業をしていたので 合宿所について早々コーディングに取り組んでいました。 コーディングには、VS CodeLive Share が威力を発揮し、 クライアント側の実装ではペアプロを別々の端末から行うなどして効率的に開発していました (同一のファイルを別々の人が編集したことで、コミットする際に、作業者が該当の変更に覚えがなくstashする面白事案も発生しました笑)。

f:id:hsasakawa:20180802101602j:plainf:id:hsasakawa:20180802100939j:plain
コーディングに取り組む様子

合宿初日の夜は、赤坂の弊社オフィスで実施されたM3 Tech Talk(隔週実施)にSkypeでリモート参加しました。 リモート参加は初の試みでしたが、音質や、画像に関しては、高品質とは言えないものの、 会場の空気を感じられ、会場とのやりとりもでき、合宿チーム側はワイワイ盛り上がっていました。 なお、M3 Tech Talkは社外の方の参加も可能ですので、ご希望の方はぜひ下記からご応募ください!

2日目は、一日中コーディングに励んでいましたが、この日は台風12号が接近し日中から夕方にかけて海が近い合宿所のあたりも大荒れでした。 家族が不安になって連絡してきたメンバーなど2名は途中で帰宅することとなりましたが、 途中で帰宅した2名も含め参加メンバーに特に被害はなく無事に合宿を終えることができました。 この日は、外が荒れていたこともあり全員集中して取り組むことができ、2チームともほぼこの日のうちにおおよその成果物ができあがっていました。 おおよそプロトタイプの完成の目処がたっていたので、夜ご飯を食べたあとに、今回取り組みで使った技術などを発表する即席のLT大会を実施しました。

f:id:hsasakawa:20180802101539j:plain
LT大会の様子

振り返りと成果発表会

3日目は各チーム疲れが見える状況でしたが、朝からプロトタイプの細かな修正を実施し、 お昼頃から合宿のラップアップとして、今回の合宿の振り返りと成果報告の発表会をしました。 振り返りのKPTでは、

  • ロケーションや、会場が素晴らしかった
  • 開発に没頭できてよかった
  • 新しい技術をガッツリ触って試すことができてよかった

というKeepや、

  • もう少し東京から近いところで実施してもいいかもしれない
  • チームごとに事前準備をもう少ししておくべきだった
  • 依存関係のある作業を分担したため、前行程が終わるまで後行程担当の人の手が空いてしまう時間があった

などのProblemもありました。 次へのTryも具体的に決めることができたので、次回以降でどんどん実施して改善していきたいと思います。

成果発表会は、各チーム今回取り組んだ成果物と、それまでのプロセスについて発表しました。 成果発表会には、弊社VPoEの山崎が自慢のバイク(Triumph Daytona 675R)で駆けつけ、 発表内容について、山崎含め、チーム内外から質問、議論が活発に行われました。

まとめ

f:id:hsasakawa:20180802100327j:plain
最後に撮った集合写真

本稿ではエムスリー初の開発合宿の様子について報告しました。 振り返ってみると、前述した「全く新しい」取り組みを実施するという目標は達成でき、成果物を作ることができました。 個人的にも、一つのプロダクトに対して、「何を解決するか」にフォーカスしてしっかり時間をとって議論することができたことは いい刺激になりました。 成果物に関しては、今後各ステークホルダーへ提案に行く予定です。 次回の合宿では今回の振り返りの内容を踏まえて、どんどん改善して、より有意義な時間としたいと思います。

P.S.

今回利用した合宿所 voidoの方には、個人的に備品として懸垂バーと、腹筋ローラーの追加をお願いしておきました(してません)。

エンジニア募集

エムスリーでは自身で手を動かし、技術で医療の課題を解決するエンジニアを募集しています。 この記事(or 他の記事も)を読んで興味を持った方はぜひ下記リンクよりご応募ください!