見出し画像

メバイスの採用しているWeb技術を紹介します🥳

はじめまして!株式会社MEBAIS でPdM補助・エンジニア採用サポート・Notion整理業など、色々を業務委託でお手伝いさせてもらっております、徳田です。インターネットネームは はぜ @haze_it_ac です。

今回はMEBAISに興味を持っていただいたWebエンジニアに向けて、どんな言語やフレームワーク等を使っているかを紹介していきたいと思います。

前提

当note公開段階では、MEBAISはペルソナとなる顧客に試していただき、必要とされるプロダクトかどうかを検証している、いわゆるプロトタイプ・仮説検証フェーズです。
仮説検証フェーズが完了し、β版(≒顧客への有償提供バージョン)やProduction版(≒正式リリースバージョン)を開発する段階に移る際、採用技術が大きく変わる可能性があります。

採用技術(概要)

  • Web API(RESTful, JSON):

    • 言語: Ruby

    • フレームワーク: Ruby on Rails

    • ライブラリ等: ActiveModelSerializers, Puma, Sidekiq, wareki, RSpec など

    • デプロイ先: Heroku, Heroku Redis, Heroku Worker

  • DB:

    • RDBMS: PostgreSQL

    • デプロイ先: Heroku PostgreSQL

  • Web Frontend(SPA):

    • 言語: TypeScript

    • フレームワーク: React, Next.js

    • ライブラリ等: ReactQuery(TanStack), ReactHookForm, dayjs, Bootstrap など

    • インフラ: Vercel

  • 共通

    • ユーザ認証: ステートフル(独自実装)

    • 画像・PDF等の置き場: Google Cloud Storage

技術選定解説

フロントエンド・バックエンド共に、開発に携わっている業務委託のエンジニアに技術選定をしてもらっています。

どちらもそのフレームワークの中で比較的一般的とされる構成で作られており、コード量も多くないため、Railsを・Next.jsを普段業務で触っている方であれば読み解くのにそう時間は掛からないと思います。

今後本リリースに向けて動く上で大きく変わる可能性があります。(今後関わる方には是非「こうしたい」といった意見をいただきたいです…!)

Backend

RailsのAPIモードで作られた、MVCです。ViewにはActiveModelSerializersを使っています。
特出すべき点は、一部services層やdecoratorに処理を集約していること、POROを使ったModelの実装を行っていることぐらい…?

RSpecはログイン処理・ファイルアップロード処理など、壊れるとまずそうな処理単位で書かれています。書く基準は現時点では決まっていません。

ML(レコメンドシステム)とは、Cloud StorageとPub/Subを介してCSVで結果をやり取りしています。
MLのAPIを直接Railsから叩いたり、逆に叩かれたりはしていません。今後もこのままかどうかは微妙。

Frontend

ReactQueryを使い、 `src/utils/api` にAPI Adapterを置いています。
ロジックは `src/hooks` に固めています。

表示に関するテストは検証段階でUIが頻繁に変わることが想定されるため、今は書かれていません。

DB、インフラ

運用コストを極力下げるため、PaaSを活用しています。人件費を増やすよりも、楽にするためにお金を払う方針で今のところはやっています。
Herokuに乗っかっていることもあり、DBはPostgreSQLを採用。

今後(β版以降)の展望・変更予定

  • ユーザ認証が独自の実装のため、Auth0やFirebaseなどへの移行を検討したい。セキュリティリスク・顧客への説明の簡易化・開発コスト低減などが目的。

  • OpenAPIを使い、Schema駆動での開発に。Schema通りのレスポンスができているかをテストしていきたい。

  • フロントエンドのテストを書いていく。何をどう書くか、担保する基準など。

  • バックエンドのテストを追加。Model Spec等。

  • Bootstrap。UIを作り込むタイミングで剥がす(作り直す)ことになりそうだとは思っているが、どう進めるか、代わりにどのCSSフレームワーク/ライブラリを使うかは未定。

  • フレームワーク・ライブラリのバージョンが最新に追いついていないのでバージョンアップをしたい。

  • ライブラリ選定見直しを全体的に。今RailsのJSON Serializerって何が良いんだっけ…?とか。

エンジニアとしての面白いポイント

  • 顧客とやり取りするデータが結構でかく(現状数百MBクラス)て、取り扱い方を実装上工夫していたりする。

  • ML(レコメンドシステム)との連携。Google Cloud Storage ・ Pub/Subで現状データをやり取りしていますが、後々違う方式にするかも。しないかも。

    • 機械学習でのレコメンドシステム・その継続学習がMEBAISの強み・既存のレセプト関連サービスとの差別点です。
      顧客がうまく学習・活用できるようにどう作っていくかはサービス開発者の腕の見せどころです。裏側の取り扱い含め、画面上での見せ方含め。

  • 顧客との距離が近く、実際に使ってもらって意見をもらったり、どう考えているかを聞く機会があります。

    • 仮説検証フェーズだからこそできるような取り組みも多いです。

    • 画面設計・デザイン等も顧客と話したり会社全体で議論したりして決めていきます。

    • 今はFigmaで顧客とコミュニケーションを取ろうと準備しているところです

おわりに

紹介は以上です。イメージはつきましたでしょうか。
現時点では小さく凝った部分が少ないアプリケーションコードなこともあり、記事もあっさりしていますが、上述の内容がさらっとわかれば、実際のコードもすらすら読めるのではないかと思っています。

メバイスでは仮説検証を高速に回して顧客の価値を定めていく段階に興味がある、これから大きくなっていくSaaSの開発をしたい・自分で良い設計を考えたい・人に使ってもらえるサービスを作りたい、といった気持ちのWebエンジニアを募集しています。
この記事を読んで興味を持った方は是非、面談でお待ちしています!


この記事が参加している募集

企業のnote

with note pro

この記事が気に入ったらサポートをしてみませんか?