OLTA TECH BLOG

テクノロジーと好奇心で事業を成長させる

TECH BLOG

データサイエンティストがウェブ開発に取り組んだ話(後編)

こんにちは、OLTA(オルタ)プロダクトグループの北川です。OLTAでデータサイエンティストとして与信モデル開発やデータ分析、データ基盤周りの開発を担当しています。2021年には、人生初のウェブアプリ開発も行いました。

前編ではなぜウェブ開発に取り組んだかの背景と目的についてお話しました。当記事ではウェブ開発に取り組んだ結果、得られたことをデータサイエンティストの視点からお伝えできればと思います。

良かったこと

データサイエンティストのキャリアを考える上で、ウェブ開発に取り組んで良かったことはたくさんありました。当初の目標である「バックエンド側の業務フローロジック変更とアプリからデータレイクへ転送する仕組みの理解」という点では、作業者レベルの細かい粒度まで解像度を高めることができました。どのリクエストをフックにどのクラスのプロパティがセットされ、そのデータがどうやってDBに記録され、どのバッチによりDBからBigQueryへ転送されるか、というフローが可視化されました。結果、アプリのリリースのPRをみるとどこに影響があるかを自分で調査できるようになりました。

アプリからBQの流れ(開発後)

事前に予期しなかった副次的な学びもありました。ウェブ開発の作法を体験することで、データサイエンティストの開発環境などに応用できることも多くあると感じました。そのうちいくつかはOLTAでもすぐに採用して、ML Opsまではいかずともチーム開発体制の整備も進みました。

チーム開発体制のノウハウがすごい

MLモデル開発やデータ分析を行う際、Jupyter Notebookで分析プログラムを書き捨てることも多いと思います。分析プログラムが分析結果次第では使えない場合も多いという性質上、スピード感を持って納品できるという点ではメリットも大きいですが、メンテナンス性が悪くなったり分析コードが属人的になり可読性が悪いなどのデメリットも大きいです。

一方、ウェブ開発では複数人による継続的な改善が求められるため、コードの履歴管理やレビュー体制、formatter / linterによるスタイルガイドラインの強制など色んな仕組みが導入されていることを知りました。

真っ先に着手できることとして、MLチームでもGitHubによるソースコードの管理を導入しました。これによりリポジトリ内の過去の検証コードの検索性が向上して車輪の再発明を防いだり、レビュー体制が導入されるなどのチーム開発体制の第一歩を踏み出しました。またSQLスタイルガイドラインを制定し、GitHub Actions + SQLFluffによるガイドライン強制の仕組みを導入して、複雑になりがちなSQLコードの管理が劇的に改善しました。

プロダクトの品質担保の仕組みがすごい

ウェブ開発では単体テストからE2Eテストまで様々な仕組みで品質を担保していることを学びました。データサイエンティストでもテストの仕組みは使えそうだと思い、テストコードをこまめに書く習慣を身につけました。将来的にはデータ基盤の日次バッチ処理にテストコードを走らせて出力に差異が出た場合アラートを出す、などの仕組みを導入してデータ品質の担保をする体制づくりなどもやってみたいと考えています。

コンテナによる開発環境構築がすごい

前述の通りMLモデル開発の現場ではJupyter Notebook書き捨てなどの現状があり、モデルが正式に採用された場合、本番環境でのPythonのバージョンとの整合性チェックなどを別途行っています。この辺のバージョン管理や環境設定の共有化などをコンテナ技術を応用して効率化できないかと考えています。

感想

率直な感想としては、アプリでどうデータが生成されるか、どのようにDBへ転送されるか、を具体レベルで理解できるようになり、データエキスパートとして大きく成長できたと実感しています。これだけでもデータサイエンティストが上流工程のアプリ開発を理解する価値はあると思います。副次的な効果としては、ウェブ開発体制の様々なノウハウがML開発現場にも応用できそう、というインサイトをたくさん得られたことです。

データサイエンティストは、モデル実装力や数理統計スキルなどのハードスキルに加えて、ドメインエキスパートとのコミュニケーションや業務ドメイン知識のキャッチアップ能力、ビジネスアナリスト(BA)能力などのソフトスキルも高度に求められます。当然ここをコアスキルとして持っている前提ですが、ハードスキル面では上流のアプリ開発やデータ基盤など興味ある領域で尖らせつつ、業界ドメイン知識やBA能力などのソフトスキルも蓄積していく、という流れは競争激化するデータサイエンティストのキャリアラダーとして合理的だなと感じました。

最後に、今回の取り組みがスムーズに進んだ環境として会社のカルチャーも大きかったことも付け加えたいです。OLTAはウェブエンジニア⇔データサイエンティストの技術知識の交流や業務越境が推奨されており、勉強会やペアプロなどを実践しています。普段からこういった取り組みができていたからこそ、素人の自分がウェブエンジニアの助けを借りながら開発からリリースまでスムーズにできたことはとても大きかったと実感しています。こういったエンジニアチームのカルチャーは多様性を生み長期的に足腰の強い組織形成につながるのでは、という期待もあります。

フロントエンド側の開発もチラッと垣間見ましたが、あまりに守備範囲が広くなりすぎるのでそっと閉じました。それでもウェブ開発は面白いと感じたので、本業のモデル開発をやりつつプライベート含め今後も続けていきたいと思っています。

最後に

OLTAではTech Visionの元、一緒にユーザーに価値を提供し、その結果事業を成長させるサービス作り続けるための仲間を募集しています。 もし、この投稿にご興味を持っていただいたら、ぜひカジュアルにお話しさせてください。