Scalaを導入した話について(前編)

Scalaを導入した話について(前編)


はじめまして
キャリアDiv. マーケティング企画統括部 データアナリティクス部 マーケティングテクノロジーグループのよしだといいます。

役割としてはデータエンジニアですが、フロントエンドからクラウドでの環境構築まで幅広く手がけています。

チームの紹介

マーケティングテクノロジーグループでは、主に各部門のKPI集計や可視化を生業としています。

可視化には、多くの人に利用してもらうため、Webアプリケーションを採用しています。

なぜWebアプリケーションかというと、特殊なツールやテクニックを使うことなく、簡単に欲しいデータを見やすい形で提供することが出来ると考えているからです。

もちろん既成のBIツールも利用していますが、それぞれの日々の業務に必要なデータでも共通で利用できるものについては、Webアプリケーションに寄せていくようにしています。

日々利用してもらうサービスだからこそ、ユーザのフィードバックを活かし、弛まぬ改善が必要になっています。

その為にも新しい技術への挑戦を忘れず、ユーザから本当に必要とされるプロダクトをいかに作り上げて進化させていくチームにしていきたいと考えてます。

なぜScalaを導入しようとしたのか?

移行を決断した背景

日々のKPIのデータを得るには、見たい指標や切り口に応じた集計処理が必要になっています。

その際に、様々なデータを集約してKPIの集計に必要なデータの前処理を行う必要があります。

上記のWebアプリケーションを開発した当初に比べ、対象となるデータの規模が大きくなり、また範囲も増えました。

その為、このまま処理を積み上げていくと、将来的にKPIのデータをユーザが欲しい時に届けることが難しくなるということが分かりました。

解決したい課題

様々なデータを集約する処理や、今後のデータの増加に合わせて柔軟に対応する機能を実現するには、並行・並列で処理できるようにするのが良いのではないかと考えました。

但し、並行・並列処理を適切に行うには、知識や経験が必要であり、さらにサポートできる言語やフレームワークが必要です。

そこで注目したのが、Scalaでした。

Scalaを選択した理由

Scalaを選択したのは、以下の3つの理由でした。

  • 型推論が強力な静的型付け言語であること。
  • 並列処理の記述が容易であること。
  • 国内での導入事例が増え、日本語で良い資料にたどり着ける事が出来る様になった。

私がやりたいと思っていたのが一番の原動力ですが、採用してもらうにはメリットやデメリット等の情報をチームに説明する必要がありました。

導入する前に準備したこと

Scalaをチームに導入する為に、以下の行動をとりました。

  • 他の企業の導入事例の調査
  • 勉強会の方針と資料の作成
  • 小さいプロジェクトをやり切る

Scalaのコミュニティーの勉強会に積極的に参加して、現在利用している企業がどの様な経緯で導入に至ったかや、導入に際してどの様な懸念事項があってどう解決したのか等リサーチしました。

学習コストが高い、採用が難しい、教えられる人がいない等ハードルが高い印象が大きかったのですが、カバーできる部分については自分自身が担えるようになろうと思いました。

自分だけではカバー出来ない部分については、社内勉強会を通してチームと一緒に考えていこうと思い、方針と資料の作成をして共有するようにしました。

まずは、簡単なツールを作るプロジェクトを自分で立てて環境構築から運用まで体験し、自分たちのチームや導入予定のプロジェクトではどこが問題になるのかを洗い出しました。
ベストプラクティスに出来るだけ合わせるようにルールや環境を整えるところから始めました。

次回

今回は、抱えていた課題を解決する為にScalaを選択して、導入するまでの経緯を説明させていただきました。
後編では、導入時の状況、導入した結果、今後の展望等を予定しております。

お楽しみに。