見出し画像

MICINに入社して見つけたプロダクト開発の最初の一歩

こんにちは!

MiROHAの開発をしているエンジニアの小林です。MiROHAでは主にバックエンドを担当しています。

この記事は MICIN Advent Calendar 2022 の7日目の記事です。
前回は、酒井さんのApp Runner で構築する Rails アプリケーションでした。

今回の記事は、「MICINに入社して見つけたプロダクト開発の最初の一歩」というタイトルでこの3ヶ月の学んだことについて書いていこうと思います。

はじめに

私は今年9月にMICINに入社しました。前職はMICINと同じく医療系の会社で治験関連のシステム開発・運用保守や、医療ビックデータのデータ分析等をしていました。

扱っていた治験関連のシステムはASPサービスで、言語はJavaでした。業務は、新規追加機能の開発より受託案件の運用とカスタマイズがメインでした。カスタマイズもコーディング不要の部分がほとんどで、特に直近の2年間くらいはデータ分析関連と要件定義の仕事が中心で、本当にコーディングの時間が少なくなっていました。

MICINに転職したきっかけは、新規プロダクトの開発にコーディングするエンジニアとして携わりたいという気持ちからでした。

入社後の仕事の変化

これまでの働き方に比べて、変わったことが大まかに三つありました。

一つは、プログラミングする時間が格段に増えました。それが転職時の希望でしたので、本当によかったと思っています(希望通りの働き方をさせてもらい、ありがとうございます)。

二つ目は、使用する技術が大きく変わったこと。現在MiROHAは、フロントがReact + TypeScript、バックエンドはGo言語が採用されています。どれも見聞きしたことはあるが経験はないものだったので、早急なキャッチアップが必要になりました。

三つ目は、本格的なスクラム開発になったこと。これまでの経験では1人で1案件を対応する経験が多く、1つの案件を1人のエンジニアが対応するという体制でスクラム開発という形ではありませんでした。

これらの変化から使用する技術から開発手法に至るまで、幅広い知識の更新が必要になりました。

どのような勉強をしたか

上記の通り、業務上すぐに必要な知識が多かったので、まずは浅くても広く学ぶことにしました。

具体的には、社内の人に薦めてもらったものも含む入門書や、動画を漁った感じです。

以下に入社後勉強したものを一部紹介します。

⒈A Tour of Go

Go言語 の公式チュートリアル

Goの基本的な書き方が学べます。Goに興味があればとりあえず触ってみるのがいいと思います。

A Tour of GoにはWebアプリの開発でよく使われるライブラリの解説はほとんどないため、Contextの使い方やHttpServerの組み立て方等について別途書籍や記事で勉強し、MiROHAの開発に参加しました。

2. 現場で役立つシステム設計の原則

現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法

1 である程度MiROHAのバックエンドのコードも読めるようになったところで、ドメイン駆動設計(以下、DDD)の入門書としても有名なこちらを読みました。この本ではDDDの礎であるオブジェクト指向設計について語られており、オブジェクト指向の考え方を活かしたコードの書き方、設計の考え方を知れたと思います。

実装パターンやDB設計だけでなく開発の進め方まで幅広く言及されていて参考になりました。

3. オブジェクト指向でなぜ作るのか

オブジェクト指向でなぜつくるのか 第3版

2を読んで、オブジェクト指向言語とはなんだろうかと思い、この本を読みました。以前は割と感覚的にオブジェクト(Javaの場合はクラス、Goの場合は構造体)を作成してしまっていましたが、オブジェクトとして切り出す時の判断基準やどのオブジェクトにどんな振る舞いをさせるのが良いか等のオブジェクト指向設計の考え方が少し見えるようになったと思います。

11章の「オブジェクト指向からアジャイル開発が生まれた」という話は、なるほどと思いました。オブジェクト指向、DDD、アジャイル開発が独立したものではなく、それぞれ深い関連があると理解できたのはこの本を読んでからだったと思います。

4. カイゼン・ジャーニー

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

3を読んで、アジャイル開発への興味が湧き、こちらを読みました。物語形式のため、読みやすくアジャイル開発で取るべきアクションを理解しやすく、行動に移しやすい本でした。

現在、アジャイルサムライをMiROHAチームで輪読していますが、こちらはよりアジャイルソフトウェア開発宣言に即した解説が中心のため、どちらも読んでみるのが良いかなと思います。

5. ドメイン駆動設計入門

ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本

4とほぼ同時期に読んでいました。クリーンアーキテクチャは過去に読んだことがあったため、用語や考え方は多少馴染みがありましたが、3を読んだ後にこの本を読むとオブジェクト指向設計の応用としてのDDDを理解することができたと思います。

今振り返ってみて感じること、今後の展望

環境を変えたことは、学習のいいきっかけになりました。開発の進め方から実装パターンまで多くの知識、考え方がシステム開発には必要で、その一つ一つは独立したものではないと実感できたことはとてもよかったと思います。また、技術は本は読むだけでなく、実装して身につくものと改めて感じました。過去に読んだ本も改めて読み直すと新たな発見がありそうです。

これまでは入門書を中心に読んでいましたが、今後はDDDの設計思想や実装パターン、それからGo言語の設計思想をより深く理解することを目的に、より詳細な(より小難しい)本を読んでいこうと思っています。

まとめ

今回は私のこの3ヶ月間の勉強を振り返ってみました。やはり学習は実践できて身になるものだと実感しています。学んだことを仕事や個人開発でアウトプットしていく時間も大切にしたいところです。

いろいろな本を読み漁ることができた要因の一つとして、Go言語の言語仕様が簡潔なこともあったと思います。Go言語未経験者の私でも、言語仕様の理解に多くの時間を割かずに他の勉強を始めることもできました。このGo言語の学習コストの低さは、技術ではなく機能単位で分割したタスクを開発していくスタイルにもマッチするのではと思います。実際MiROHAにおけるスクラム開発では、エンジニアはそれぞれ得意分野はありつつも、全員フロントもバックエンドもどちらの開発も携わることができています。

明日は、草間さんの「新米PdMの成長日誌」です。お楽しみに!


MICINではメンバーを大募集しています。
「とりあえず話を聞いてみたい」でも大歓迎ですので、お気軽にご応募ください!
MICIN採用ページ:https://recruit.micin.jp/