株式会社メドレーDeveloper Portal

2016-08-26

プロダクト品質向上のためのフルスタック開発〜メドレーにおける機能ベース開発について〜

文責:徐 聖博(ダーツプロ

こんにちは!メドレーのダーツプロこと徐です。 

社会人歴・エンジニア歴 3 年目ながら、メドレーでは口コミで探せる介護施設の検索サイト「介護のほんね」の開発・運用を 1 人で担当しています。(インフラ整備からフロントエンド開発まで行っています) 

f:id:yamadagenki:20160725165814p:plain

現在筆者が一人で担当している介護施設の口コミサイトである「介護のほんね

前職では Web ゲームのバックエンド開発(PHP)を担当していて、メドレーに入った時点では

  • 「インフラ?経験無いです…」
  • 「フロントエンド?Javascriptで書くんですよね…?」
  • Ruby on RailsRubyなら書くだけかけますけど…」

という状態でした。今回はそんな自分が、入社後半年でフルスタックエンジニアとして介護のほんねを 1 人で担当できるまでに至った、メドレーの開発体制について紹介します。

メドレーのプロダクト

メドレーには Web アプリケーションからiOSのアプリケーションまで様々なプロダクトがあります。

サーバーサイドにRuby on Railsを用いるプロダクトを初め、PHPを使ったプロダクトもあり、構成はプロダクトにより様々です。フロントエンドでは、AngularJS や Mithril のMVCフレームワークを使用したり、CoffeeScriptや Babel なる AltJS を用いて開発しており、幅広い技術を採用しています。

f:id:yamadagenki:20160610160409p:plain

サーバーサイドをRuby on Railsで書き、Mithril を使い SPA で作られている「CLINICS」。インフラは、Heroku を採用。

f:id:yamadagenki:20160610162818p:plain

CLINICSでは、メドレーで初となるiOSアプリをリリース。

f:id:yamadagenki:20160610160403p:plain

PHPの爆速 Phalconフレームワークを使用したオンライン病気事典「MEDLEY

このように多種多様な技術を用いながら、どのプロダクトにおいてもメンバーはそれぞれインフラからフロントエンドまで幅広い開発をしています。しかし、もともとフルスタックエンジニアだったという人は少なく、尖った強みを持ちながら、メドレーに入社後、徐々に対応範囲を広げてきたというケースが多いです。 

これは、メドレーにおける”機能ベース開発”という進め方が大きく関係しています。

機能ベース開発が、エンジニアをフルスタックにする

メドレーでは、基本的に機能ベースで ISSUE ・タスクを切り分け、それぞれの ISSUE ・タスクを週のはじめのミーティングにおいて担当者を決めていきます。 

f:id:yamadagenki:20160824092401p:plain

それぞれ業務の幅が広いタスクがたくさんあり、週のはじめに担当を決めていく

インフラやフロントエンドの得手不得手は各々ありますが、基本的には関係なくタスクが割り振られ(もしくは挙手制で)作業を進めていきます。

「知識が足りない・全く経験がないタスクが回ってきた!(> <)」などという場合も、お互い協力・教えあいながらタスクをこなしていくので、経験のないチャレンジングなタスクに挙手できたりします。 

システム全体を把握して開発することで、プロダクト全体の品質向上

このタスクベース開発体制を続けていると、システム全体の開発に携わることが多くなります。入社当時はバックエンドしか知識がなかったエンジニアも、開発する機能が増え、プロダクト全体の構成を把握する機会が増えるため、入社から半年〜1 年経つ頃には、1 つのサービスを一通りインフラからバックエンド、フロントエンドまで触ることになります。 

f:id:yamadagenki:20160824093922p:plain

Elasticsearch の基盤整備から、DB のスキーマ設計、バックエンド・フロントエンドの作りこみまで 全て一人で開発したジョブメドレーのトップ画面

こうしてシステム全体を把握することで、エンジニアたちがそれぞれ他の分野を考慮したプログラムを書けるようになり、APIの設計・ユーザインタラクション開発や、インフラ構成を配慮したキャッシュ機能開発など、一貫性をもった開発が可能となります。

もちろんもともと、特定分野に強みを持つエンジニアが集まっていますので、それぞれ得意分野を活かしつつも、お互いの領域が理解できることで、社内のプロダクトの全体的な最終的な品質向上を実現できていると感じています。

まとめ

今回はメドレーにおける機能ベースの開発体制を紹介しました。

メドレーでは、このようにどのプロダクトでも個人が機能ベースで開発をしていきます。そのため、入社時点で経験がない分野でも一年ほど開発に携わることで、一通りのインフラからフロントエンドまでの開発をこなせる知識がつき、僕も一人で 1 つのプロダクトを担当できるまでになりました。

しかし、これは機能ベース開発だけのおかげではなく、様々な分野のとても気さくなシニアエンジニアが集まり、気軽に質問できる開発部の雰囲気も大いに関係していると思っています。僕自身この 1 年で、さまざまな分野に挑戦しましたが、各領域のプロがレクチャーしてくれることで、その分野に自信をもって取り組めるようになったと感じています。

また、メドレーに集まるエンジニアは皆開発が大好きです。各々が日々技術に対して貪欲で、勉強が好き・開発が好きという個人の努力により、知らない困難なタスクも進んで開発した結果フルスタックエンジニアになります。これが最終的なプロダクト品質へのこだわりになり、品質の高いプロダクトができているのだと思っています。

フルスタックな開発がしたい、システム全体考えた品質の高い開発をしたいような方は是非メドレーで一緒に働いてみませんか?

勉強大好き、開発するのが大好き!ダーツが大好き!(?)というようなエンジニアをメドレーでは募集しています。 

ぜひ、よろしくお願いします!

www.wantedly.com

株式会社メドレーDeveloper Portal

© Medley Developer Portal