エンジニアの岸 (@h_kishi) です。サーバエンジニアですが、最近はAIチームに所属し機械学習関連の開発をしています。
FiNC Technologiesの提供しているサービス(プロダクト)の中では、パーソナルトレーナーAI(人工知能)を内蔵しているFiNCアプリが最も知名度がありますが、その他にもいくつかのサービスを展開しています。
今回の記事では、それらの中からいくつかのサービスの紹介とそのサービスで利用されている技術スタックについて紹介をしたいと思います。
なお、インフラ環境については先日公開された「FiNC Technologiesのサービスを支える基盤技術の紹介」にて紹介されていますので、そちらをご覧ください。
※この記事は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
- 使用言語
- 主なフレームワーク・ライブラリ
- ライブラリ管理ツール
- CI/CD
Android
- 使用言語
- 主なフレームワーク・ライブラリ
- Android Jetpack
- RxJava
- Dagger
- Retrofit
- Robolectric
- Mockito
- ライブラリ管理ツール
- CI/CD
FiNCアプリのiOSとAndroidではアーキテクチャを揃える試みを行っていて、アーキテクチャとしてはClean Architecture + MVVMを採用しています。
また、MVVMでのデータバインディングを行うために、それぞれReactive ExtensionsライブラリとしてRxSwift・RxJavaを利用しています。
こちらについては@takasekが1月に発表した「FiNCのクライアントアーキテクチャを揃える試み」にて詳しく解説しています。
バックエンド
- 使用言語
- 主なフレームワーク・ライブラリ
- Ruby on Rails
- OpenAPI
- JSON Schema
- Swagger
- Committee
- Sidekiq
- データベース
- Amazon Aurora (MySQL)
- Elasticsearch
- ElastiCache
- JanusGraph
- メッセージング
- 動画配信
- Amazon Elastic Transcoder
- CI/CD
- CircleCI
- Jenkins (CircleCIに乗り換え中)
- エラー
- 監視
FiNCのバックエンド開発ではマイクロサービスアーキテクチャを採用しており、FiNCアプリのバックエンドでは約40のマイクロサービス群が稼働をしています。
FiNCのマイクロサービスに興味がありましたら、@shinofumijpの「FiNCでの5年間に渡るマイクロサービスの育て方」という発表資料をご覧ください。
上記の発表の解説記事はこちらです。
BFF (Backends For Frontend)
- 使用言語
- 主なフレームワーク・ライブラリ
- Spring WebFlux
- Retrofit
- Protocol Buffers
- ライブラリ管理ツール
- CI/CD
BFFはその名の通りフロントエンドのためのサーバです。フロントエンドから利用しやすいように、バックエンドへのAPI利用を集約し、レスポンスデータの加工などを行います。
サーバサイドKotlinということで他とは一風変わった構成になっています。
BFFについては先日のDroidKaigiで@qsonaが発表をしていますので、興味がありましたら発表資料をご覧ください。
フロントエンド
FiNCアプリの一部の機能をブラウザから利用できるようにしています。
機械学習
- 使用言語
- 主なフレームワーク・ライブラリ
- TensorFlow
- Keras
- scikit-learn
- プラットフォーム
現在FiNC TechnologiesではSageMakerの利用が増えています。
@ota42yがJAWS Days 2019で推論サーバにSageMakerを利用した事例を紹介しています。
データ分析
- 使用言語
- データベース
- BI
- その他
- AWS Database Migration Service (DMS)
- Amazon Kinesis Data Firehose
- Amazon EMR
- AWS Glue
FiNC TechnologiesではAWSのサービスをフル活用してデータ分析基盤を構築しています。
FiNC モール
https://mall.finc.com/
FiNCモールはウェルネス・ヘルスケアに特化したオンラインショップです。
サプリメント、ダイエット・フィットネスアイテム、ウェアラブル端末、遺伝子検査、食事指導コースまで様々な商品を提供します。
FiNCアプリで貯めたポイントを使うことができるのが大きな特徴です。
- 使用言語
- 主なフレームワーク・ライブラリ
- Ruby on Rails
- jQuery
- Selenium WebDriver
- データベース
- CI/CD
フロントエンドについて現状はjQueryベースな構成ですが、よりモダンな構成に近々生まれ変わる予定です。
SageMakerを利用した商品のレコメンデーションも開発しています。
FiNC for BUSINESS
https://company.finc.com/business/
FiNC for BUSINESSでは、人事・健保の課題をワンストップで解決するためのウェルネスソリューションサービスを提供しています。
大きく分けると、企業向けと健保向けの2つのサービスを提供しています。
- 企業向け
- FiNC ウェルネスサーベイ
- ストレスチェックサーベイ
- eラーニング
- 健診データ管理
- など
- 健保向け
技術スタックは以下です。
- 使用言語
- 主なフレームワーク・ライブラリ
- Ruby on Rails
- Sidekiq
- jQuery
- React.js
- Redux
- Babel
- Selenium WebDriver
- データベース
- Amazon Aurora (MySQL)
- Elasticsearch
- データ同期
- CI/CD
- CircleCI
- Jenkins (CircleCIに乗り換え中)
Reactの導入などフロントエンド開発にも注力しています。
他サービスと比べて、FiNC for BUSINESSの開発チームは開発のワークフロー整備に力を入れており、しっかりとしたスクラム実践も行っています。
終わりに
FiNC Technologiesのサービスの紹介と技術スタックをまとめてみました。
FiNCモールやFiNC for BUSINESSなどをFiNCアプリと別のサービス(プロダクト)として紹介していますが、実質はマイクロサービスの一つなのでAPIやメッセージングを利用して他のマイクロサービスと連携しています。
他に、今回は紹介しませんでしたがFiNC Technologiesでは実店舗のプライベートジムの運営も行っています。社員は割引が適用されるので私も何度か利用しています。
もしこの記事を読んでFiNC Technologiesのサービスに興味を持たれた方がいましたら、ぜひお気軽に有楽町のオフィスに遊びに来てください。
株式会社FiNC Technologies では一緒に働く仲間を募集しています