1
/
5

ヘルステックスタートアップ FiNC Technologiesの技術スタックをまとめてみた

エンジニアの岸 (@h_kishi) です。サーバエンジニアですが、最近はAIチームに所属し機械学習関連の開発をしています。

FiNC Technologiesの提供しているサービス(プロダクト)の中では、パーソナルトレーナーAI(人工知能)を内蔵しているFiNCアプリが最も知名度がありますが、その他にもいくつかのサービスを展開しています。
今回の記事では、それらの中からいくつかのサービスの紹介とそのサービスで利用されている技術スタックについて紹介をしたいと思います。
なお、インフラ環境については先日公開された「FiNC Technologiesのサービスを支える基盤技術の紹介」にて紹介されていますので、そちらをご覧ください。

FiNC Technologiesのサービスを支える基盤技術の紹介 | 株式会社FiNC Technologies
こんにちは、エンジニアの鈴木(@kenjiszk)です。FiNCでは主にボルダリングをやっています。やっぱりシステムの堅牢性を担保するには握力が大事だと考えています。今回はFiNC Technologiesのサービス基盤をどうやって握力で支えているのかを徹底解説して行きたいと思います。 ...
https://www.wantedly.com/companies/finc/post_articles/158644

※この記事は2019年3月時点での情報です

【サービス&技術スタック一覧】

  • FiNCアプリ
  • FiNCモール
  • FiNC for BUSINESS

FiNCアプリ


https://company.finc.com/service/app
FiNCアプリはパーソナルトレーナーAIを提供するヘルスケアプラットフォームアプリです。2017年3月よりサービスを開始し2019年3月現在400万ダウンロードを突破しています。
アプリを使うことで、歩数・体重・睡眠時間・食事といったライフログの記録する機能やヘルスケアの専門家が発信するコンテンツを閲覧することができます。
また、FiNCアプリは去年のGoogle Play Best of 2018の自己改善部門にて大賞を受賞いたしました。
FiNCアプリは規模が大きいので領域ごとに紹介しています。

iOS

  • 使用言語
    • Swift
  • 主なフレームワーク・ライブラリ
    • RxSwift
    • Realm
    • Alamofire
  • ライブラリ管理ツール
    • Carthage
    • CocoaPods
  • CI/CD
    • Jenkins
    • fastlane

Android

  • 使用言語
    • Kotlin
    • Java (既存コードのみ)
  • 主なフレームワーク・ライブラリ
    • Android Jetpack
    • RxJava
    • Dagger
    • Retrofit
    • Robolectric
    • Mockito
  • ライブラリ管理ツール
    • Gradle
  • CI/CD
    • Jenkins

FiNCアプリのiOSとAndroidではアーキテクチャを揃える試みを行っていて、アーキテクチャとしてはClean Architecture + MVVMを採用しています。
また、MVVMでのデータバインディングを行うために、それぞれReactive ExtensionsライブラリとしてRxSwift・RxJavaを利用しています。
こちらについては@takasekが1月に発表した「FiNCのクライアントアーキテクチャを揃える試み」にて詳しく解説しています。



バックエンド

  • 使用言語
    • Ruby
  • 主なフレームワーク・ライブラリ
    • Ruby on Rails
    • OpenAPI
    • JSON Schema
    • Swagger
    • Committee
    • Sidekiq
  • データベース
    • Amazon Aurora (MySQL)
    • Elasticsearch
    • ElastiCache
    • JanusGraph
  • メッセージング
    • Amazon SNS/SQS
  • 動画配信
    • Amazon Elastic Transcoder
  • CI/CD
    • CircleCI
    • Jenkins (CircleCIに乗り換え中)
  • エラー
    • Sentry
  • 監視
    • New Relic
    • Datadog


FiNCのバックエンド開発ではマイクロサービスアーキテクチャを採用しており、FiNCアプリのバックエンドでは約40のマイクロサービス群が稼働をしています。
FiNCのマイクロサービスに興味がありましたら、@shinofumijpの「FiNCでの5年間に渡るマイクロサービスの育て方」という発表資料をご覧ください。

上記の発表の解説記事はこちらです。


FiNC Technologiesのアーキテクチャの変遷を大公開 | 株式会社FiNC Technologies
エンジニアの篠塚(@shinofumijp)です。株式会社FiNC Technologies(以下「FiNC」)にてサーバーサイドの開発を主に担当しています。 ...
https://www.wantedly.com/companies/finc/post_articles/166161

BFF (Backends For Frontend)

  • 使用言語
    • Kotlin
  • 主なフレームワーク・ライブラリ
    • Spring WebFlux
    • Retrofit
    • Protocol Buffers
  • ライブラリ管理ツール
    • Gradle
  • CI/CD
    • CircleCI

BFFはその名の通りフロントエンドのためのサーバです。フロントエンドから利用しやすいように、バックエンドへのAPI利用を集約し、レスポンスデータの加工などを行います。
サーバサイドKotlinということで他とは一風変わった構成になっています。
BFFについては先日のDroidKaigiで@qsonaが発表をしていますので、興味がありましたら発表資料をご覧ください。


フロントエンド

  • 使用言語
    • JavaScript (Node.jsも利用)
  • 主なフレームワーク・ライブラリ
    • React.js
    • Redux
    • Babel

FiNCアプリの一部の機能をブラウザから利用できるようにしています。


機械学習

  • 使用言語
    • Python
  • 主なフレームワーク・ライブラリ
    • TensorFlow
    • Keras
    • scikit-learn
  • プラットフォーム
    • Amazon SageMaker

現在FiNC TechnologiesではSageMakerの利用が増えています。
@ota42yがJAWS Days 2019で推論サーバにSageMakerを利用した事例を紹介しています。

データ分析

  • 使用言語
    • Python
  • データベース
    • Amazon Redshift
  • BI
    • Redash
    • Metabase
  • その他
    • AWS Database Migration Service (DMS)
    • Amazon Kinesis Data Firehose
    • Amazon EMR
    • AWS Glue

FiNC TechnologiesではAWSのサービスをフル活用してデータ分析基盤を構築しています。

FiNC モール


https://mall.finc.com/
FiNCモールはウェルネス・ヘルスケアに特化したオンラインショップです。
サプリメント、ダイエット・フィットネスアイテム、ウェアラブル端末、遺伝子検査、食事指導コースまで様々な商品を提供します。
FiNCアプリで貯めたポイントを使うことができるのが大きな特徴です。

  • 使用言語
    • Ruby
    • JavaScript
  • 主なフレームワーク・ライブラリ
    • Ruby on Rails
    • jQuery
    • Selenium WebDriver
  • データベース
    • Amazon RDS (MySQL)
  • CI/CD
    • CircleCI

フロントエンドについて現状はjQueryベースな構成ですが、よりモダンな構成に近々生まれ変わる予定です。
SageMakerを利用した商品のレコメンデーションも開発しています。

FiNC for BUSINESS

https://company.finc.com/business/
FiNC for BUSINESSでは、人事・健保の課題をワンストップで解決するためのウェルネスソリューションサービスを提供しています。
大きく分けると、企業向けと健保向けの2つのサービスを提供しています。

  • 企業向け
    • FiNC ウェルネスサーベイ
    • ストレスチェックサーベイ
    • eラーニング
    • 健診データ管理
    • など
  • 健保向け
    • 特定保健指導
    • 健診データ管理
    • など

技術スタックは以下です。

  • 使用言語
    • Ruby
    • JavaScript
  • 主なフレームワーク・ライブラリ
    • Ruby on Rails
    • Sidekiq
    • jQuery
    • React.js
    • Redux
    • Babel
    • Selenium WebDriver
  • データベース
    • Amazon Aurora (MySQL)
    • Elasticsearch
  • データ同期
    • Embulk
  • CI/CD
    • CircleCI
    • Jenkins (CircleCIに乗り換え中)

Reactの導入などフロントエンド開発にも注力しています。
他サービスと比べて、FiNC for BUSINESSの開発チームは開発のワークフロー整備に力を入れており、しっかりとしたスクラム実践も行っています。

終わりに

FiNC Technologiesのサービスの紹介と技術スタックをまとめてみました。

FiNCモールやFiNC for BUSINESSなどをFiNCアプリと別のサービス(プロダクト)として紹介していますが、実質はマイクロサービスの一つなのでAPIやメッセージングを利用して他のマイクロサービスと連携しています。
他に、今回は紹介しませんでしたがFiNC Technologiesでは実店舗のプライベートジムの運営も行っています。社員は割引が適用されるので私も何度か利用しています。
もしこの記事を読んでFiNC Technologiesのサービスに興味を持たれた方がいましたら、ぜひお気軽に有楽町のオフィスに遊びに来てください。

iOSエンジニア
1000万DLを目指すヘルスケアアプリ開発を担うiOSエンジニアを募集!
FiNC Technologiesは「すべての人にパーソナルAIを」をミッションに掲げる、ヘルスケア×テクノロジーの会社です。 機械学習やディープラーニングなどの技術を活用し、お客様にパーソナライズしたサービスを届けることで、最適な選択と継続を支援し、人々を技術で健康にすることが私たちの仕事です。 現在はヘルスケアプラットフォームとして複数のサービスを展開しており、ヘルスケアアプリ「FiNC」を中心としながら、ディープラーニングを活用した食事の画像解析・姿勢分析、機械学習を活用した睡眠時間予測など「あなた専属のパーソナルAIトレーナー」となるようなアプリケーションを開発しています。 FiNCアプリを中心に、サブスクリプション型 有料サービス 「FiNCプレミアム」、ヘルスケア特化のEコマース 「FiNC Mall」、B2B SaaS「FiNC For BUSINESS」など多角的に事業を展開しています。 参考:CTOが語る、460万DLを突破したFiNCの現在地と「パーソナルAI」への未来 https://www.wantedly.com/companies/finc/post_articles/155281
株式会社FiNC Technologies
Androidエンジニア
1000万DLを目指すヘルスケアアプリ開発を担うAndroidエンジニア
FiNC Technologiesは「すべての人にパーソナルAIを」をミッションに掲げる、ヘルスケア×テクノロジーの会社です。 機械学習やディープラーニングなどの技術を活用し、お客様にパーソナライズしたサービスを届けることで、最適な選択と継続を支援し、人々を技術で健康にすることが私たちの仕事です。 現在はヘルスケアプラットフォームとして複数のサービスを展開しており、ヘルスケアアプリ「FiNC」を中心としながら、ディープラーニングを活用した食事の画像解析・姿勢分析、機械学習を活用した睡眠時間予測など「あなた専属のパーソナルAIトレーナー」となるようなアプリケーションを開発しています。 FiNCアプリを中心に、サブスクリプション型 有料サービス 「FiNCプレミアム」、ヘルスケア特化のEコマース 「FiNC Mall」、B2B SaaS「FiNC For BUSINESS」など多角的に事業を展開しています。 参考:CTOが語る、460万DLを突破したFiNCの現在地と「パーソナルAI」への未来 https://www.wantedly.com/companies/finc/post_articles/155281
株式会社FiNC Technologies
Railsエンジニア
大量のライフログを所有するサービスの開発を担うRailsエンジニア募集!
FiNC Technologiesは「すべての人にパーソナルAIを」をミッションに掲げる、ヘルスケア×テクノロジーの会社です。 機械学習やディープラーニングなどの技術を活用し、お客様にパーソナライズしたサービスを届けることで、最適な選択と継続を支援し、人々を技術で健康にすることが私たちの仕事です。 現在はヘルスケアプラットフォームとして複数のサービスを展開しており、ヘルスケアアプリ「FiNC」を中心としながら、ディープラーニングを活用した食事の画像解析・姿勢分析、機械学習を活用した睡眠時間予測など「あなた専属のパーソナルAIトレーナー」となるようなアプリケーションを開発しています。 FiNCアプリを中心に、サブスクリプション型 有料サービス 「FiNCプレミアム」、ヘルスケア特化のEコマース 「FiNC Mall」、B2B SaaS「FiNC For BUSINESS」など多角的に事業を展開しています。 参考:CTOが語る、460万DLを突破したFiNCの現在地と「パーソナルAI」への未来 https://www.wantedly.com/companies/finc/post_articles/155281
株式会社FiNC Technologies
株式会社FiNC Technologies では一緒に働く仲間を募集しています
24 いいね!
24 いいね!
同じタグの記事
今週のランキング