エムスリーテックブログ

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

インターンとして新サービスの開発に携わらせていただきました

初めまして。エムスリーエンジニアリングGでインターンに参加した柏です。

この記事では、私が実際に携わらせていただいた「医師版Stack Overflow(仮)」での業務の内容と、あまり知られていない(気がする)エムスリーの良さについてお伝えします!

f:id:shumbo:20190919173435j:plain
受付で写真を撮らせていただきました

自己紹介・エムスリーでインターンするまで

私は、普段は米国カリフォルニア州にあるUniversity of California, Santa CruzでTechnology and Information Managementというコンピュータサイエンスとビジネスを足して2で割ったようなメジャーを専攻している大学2年生です。

夏に帰国する時間を有意義に使いたいと考えインターンを探していたところ、エムスリーを見つけました。

父が医師をしていることもあってエムスリーのことはかねてより知っており、医療業界で大きな存在感を持つWebサービスの裏側を見てみたいと感じていました。その時はアメリカにいたのですがオンラインで選考を進めていただき、実際にインターンとして採用していただく流れとなりました。

業務内容

面接の際に「ただエンジニアとしての技術力を高めるのではなく、プロダクトを作る一人として成長したい」とお伝えしたところ、インターンでは「医師版Stack Overflow(仮)」として開発が進められている新サービスに配属していただきました。詳しくはこちらの記事を読んでいただければと思いますが、簡単に言えば医師の知識や経験を「Q&A」をベースに共有できるサービスです。

具体的には、そのサービス上にて医師が質問や回答をする際に表示する情報を設定する「マイページ」の実装をフロントエンド・バックエンド共に任せていただきました。

新しいサービスであるため、インターン開始時点では仕様も固まりきっていませんでした。チームのメンバーとのミーティングや会話から作るもののイメージを固め、文章にまとめ、データベースを設計し、実装を行い、レビューの対応を行い...と、インターンでありながらサービスの一部分が出来上がるまでに必要な全てのステップを一緒に踏ませていただきました。

f:id:takao-mizuno:20190919201618p:plain
インターン期間の取り組みの流れ

技術スタック

新しいサービスをゼロから開発するということで、プロジェクトは技術的にも挑戦的です。そのコードベースで仕事をすることは非常に勉強になりました。

プロジェクトの基本的な技術スタックは

  • Kotlin + SpringBoot + Clean Architecture
  • OpenAPIを用いたバックエンド, フロントエンドの雛形生成
  • Vue + TypeScript

のようになっています。

主にフロントエンドで活動してきた私は、これまでKotlinもSpringBootも扱ったことがありませんでした。加えてClean Architectureによって各メソッドが高度に抽象化されていることから、最初はバックエンドにAPIを追加するためにどこに手を加えればいいのか全く分かりませんでした。

f:id:takao-mizuno:20190919201813p:plain
経験技術と使用技術

それらの技術を身につけるのことは簡単ではなく、ある程度時間も費やしてしまったのですが、今では「Kotlin + SptingBootで開発したことがある」と胸を張って言えるようになりました。Clean Architectureへの理解も深まり、これは今後どの言語でどのようなプロジェクトに取り組むとしても役に立つと思います。

多少経験のあるフロントエンドに関しては、VuexのStoreの使い方やコンポーネントの切り分け方など模範解答がないトピックについて他のエンジニアの方とディスカッションすることができ、実際のコードと合わせて自分の知見を深めることができました。学生だと設計などについてディスカッションをする機会は本当に少ないので、貴重な経験をさせていただきました。

チームの一員としてプロダクトの設計にも参加

インターンでありながらチームの一員として迎えていただき、新サービスに関する定例会議や仕様検討会議、スプリントレビュー/プランニングにも参加させていただきました。インターン開始時は仕様が固まりきっていない要件もあり、どのようにエンジニアが作業できる段階まで進められていくのか、その一部始終を見せていただきました。

定例会議では、サービス全体に関わるリリースまでの流れやサービスの名称の検討、重要な仕様についての話し合いなどが行われました。扱う議題は簡単には答えが出ないものばかりでしたが、職種関係なく参加している全員がより良いプロダクトのために議論しているのが印象的でした。大きな議題であった新サービスの名称については、私の提案したアイデアを発展させる形で話が進められています!

より具体的な仕様を決定する仕様検討会議では、それぞれのページのデザインや挙動について話し合いました。エンジニアとして決まったことを実装するのは当たり前ですが、エムスリーではその意思決定にも関わることが求められます。特に自分が担当していたマイページに関しては、明文化されていなかった仕様や開発していて気付いた点などについて指摘させていただき、実際の画面を作ることにも少しだけ貢献できたかと思います。

社員の方との交流

開発は少数精鋭のチームで行われているため業務で日常的に関わる方は5-6人ほどでしたが、お昼の休憩などを通して他のチームや職種の方とも交流させていただきました。

エンジニアの方とランチに行かせていただいた際には、大学時代に研究されていたことや好きなプログラミング言語の仕様など、エンジニアならではの話題で盛り上がりました。今後の進路やキャリアで決められていないことも多いのですが、そういったことに関しても親身に相談に乗っていただき、改めて自分のことを考え直すいい刺激にもなりました。

エンジニアだけでなく、プロダクトマネージャーや記事の編集を担当されている方など、普段あまり関わらない職種の方とお話する機会もいただき、業務の話や私の大学の話で盛り上がりました。

他にも休憩時間にボードゲームに誘っていただくなど、インターン期間中は常に楽しく過ごさせていただきました。

エムスリーってこんな会社

エンジニアとして絶対学びがある

エムスリーでは、多くのエンジニアが「フロントエンド」「バックエンド」などの枠に囚われず仕事をしています。1インターンも例外ではなく、担当する部分に関係する全ての知識を持つことが要求されます。

あらゆる言語やフレームワークに精通している人はいないと思うので、タスクをこなす新たな学びがあります。コードレビューでは「ただ動く」以上のコード品質を求められるので、慣れていない言語であっても高い品質のコードを書くことを目指すようになります。

エムスリーでエンジニアとして働くとは、常に技術を学んでいくことと言っても過言ではないと思います。もちろん大変ではありますが、領域に囚われず技術を身に着けたいエンジニアとしては最高の環境でした。

正しいことが正しい世界

エムスリーには、「正しいことが正しい」という文化がとても強く根付いています。

広くは組織のルール、身近なところでは会議で意思決定をする際など、あらゆる場面で「なぜその選択が正しいのか」という理由付けが求められます。合理的であれば受け入れられ、そうでなければ考え直す必要があります。

例えば、社内のルールや導入されているツールの一部を見ると、必ずしも最先端とは言えないかもしれません。しかし、その背景には費用対効果、セキュリティ面など必ず合理的な判断があります。

逆に非合理的な仕組みは徹底的に排除されています。そのおかげで、インターンでありながらも躊躇せず疑問点があれば質問したり、自分の意見を述べたりすることができました。役職や年齢に縛られず、実力で公平に評価される職場です。

他の会社にできないことができる

エムスリーが運営する「m3.com」は日本の臨床医の約9割、薬剤師の半数以上が会員2である巨大プラットフォームです。

私はそのプラットフォームに乗る新しいサービスを担当させていただいたわけですが、「これは他の会社ではできないな」と感じることも多々ありました。

プラットフォーマーならではの強みを活かしたサービスの企画・開発ができるのはエムスリーならではかなと思います。

あなたもエムスリーでインターンしてみませんか?

私はエムスリーでのインターンを通して、夏休みを本当に有意義なものにできたと感じています。

インターンは通年受け付けていて、スケジュールも柔軟性を持って組んでくださいます。私も学校やその他の用事のスケジュールに合わせて日程を組んでいただき、心置きなくインターンに取り組むことができました。

興味がある方は、ぜひ下のリンクからエントリーしてみてください!

jobs.m3.com


  1. 最近では職種を限定した募集もしています

  2. https://corporate.m3.com/press_release/2019/20190108_001448.html