Rtoaster SDKのリニューアルプロジェクトに迫る!

ブレインパッドの自社プロダクト「Rtoaster(アールトースター)」のSDKのバージョンアップが予定されていると聞きつけ、SDK開発をリードしているエンジニアにインタビューを行いました。日頃のプロダクト開発の様子をお届けしますので、ぜひご一読ください。

こんにちは。ブレインパッド人事部の見谷です。

ブレインパッドは、企業のデータ活用・DXやデジタルマーケティングを支援するデータビジネス・プラットフォーム「Rtoaster」をはじめとした、さまざまなプロダクトを開発・提供しています。

Rtoasterは通常、Webサイトを運営している企業様に対してデータを用いたデジタルマーケティングの機能を提供していますが、ネイティブアプリをお持ちの企業様にも同様の機能を提供することを可能にするのが「SDK」です。
今回はそのSDKのバージョンアップのプロジェクトについて、お話を聞いていこうと思います!

ーー森口さん本日はよろしくお願いします。はじめに、簡単に森口さんの自己紹介をお願いできますか?

Rtoaster SDKチームにてリードエンジニアをしています、森口です。
経歴は、新卒で組み込みシステムを開発するソフトウェア会社に入社し、その後その会社からスピンアウトする形で設立されたMynd(マインド)株式会社に立ち上げメンバーとして入社しました。Mynd社では機械学習を用いたニュースアプリの開発に携わりました。その後、Mynd社がブレインパッドの子会社となりブレインパッドグループにジョインしました(その後、2021年12月にブレインパッドがMynd社を吸収合併)。

ーーSDKのリニューアルのプロジェクトについて概要を教えていただけますか?

その前に、SDKについて簡単に紹介します。通常RtoasterはWebサイトに導入するために専用のタグの埋め込みやJavaScriptをコーディングするのですが、ネイティブアプリに導入するためのライブラリがSDKです。

ver4までは下位互換性を保つように仕様を変えずに機能を追加してきましたが、少しずつ機能拡張に無理が出てしまうようになりました。そのため今回バージョンアップするver5ではゼロベースで仕様の見直しと開発を行い、効率よく機能追加ができる状態にすることを目標として開発しています。

ーー抜本的な見直しが行われたのですね。プロジェクトを進める上で苦労したことはありますか?

これまでの仕様を見直した結果、一つの流れでまとめられる処理がさまざまな箇所に分割されていて、処理全体の流れが掴めない箇所が散見されていました。例えば、モバイル環境における通信が不安定な状況であってもできる限りサーバーにデータを送信できるようリトライをする処理があるのですが、このリトライによって処理の順番が入れ替わっても問題無いようにする処理が複数箇所で定義されていたために煩雑な仕様となっていて、それらの交通整理を行う必要がありました。
全体像を掴むためにも、この交通整理が非常に大変でした。最終的にはシンプルにすることができたので、本当に取り組んで良かったなと思っています。

SDKならではの苦悩とは?

ーー今後もSDKを持続的に成長させるには、なくてはならないプロジェクトだったのですね。SDKならではの大変さはありましたか?

ネイティブアプリはお客様がアプリ開発ベンダーにアプリ開発を委託している場合が多く、お客様の要望に対してSDKを上手く活用していただくための手法を、お客様を介してアプリ開発ベンダーに伝えるのが難しい場合があります。
加えて、Webサイトの場合はテスト用のWebサイトを使ってテストを行うため、お客様のテストの状況を把握することができますが、ネイティブアプリにおいては、SDKを組み込んだ動作のお客様アプリの実装状況が直接見られないため、何か問題があった時の切り分けには難しさがあります。またその後、アプリストアの審査を通していただく必要があるため、お客様には気が抜けないハードルが多々あります。
このように万が一、問題が発生したとしても、私たちが直接作業することができないことがほとんどです。そのため、SDKによる処理はサーバー側に処理を寄せるなどの工夫が必要で、問題が起きにくく、更に問題が起きても柔軟に対応できる設計が求められます。

ーー関係者が多く、とても配慮が求められるのですね…!チーム開発という点で、工夫されていたことがあればぜひ教えてください。

開発チーム内でのコミュニケーションの取り方は意識したポイントです。
SDKチームは3名で開発をしており、普段はリモートワークがメインなのですが、集中して議論をする必要があるときは対面でMTGを実施するようにしました。やはり対面で議論をした方が話しやすい側面はあるなと思いました。
また、今回は完全リライトということもあり品質担保という点で、3名全員による全ソースコードのモブレビューをリアルタイムコード共有ツールを導入してリモートで行っています。
それ以外にも技術的な実装のトレンドも取り入れつつ、導入のしやすさを担保するというバランスにも気を配りました。

ーーエンジニアの声から取り入れられた技術はどんなものがあったのでしょうか?

例えば、今後の拡張性を考慮してDI(依存性の注入)を用いた構成にしています。通常ではDIを用いるために外部ライブラリを使用することが多いのですが、外部ライブラリの利用に懸念を持たれるお客様もいらっしゃるため、独自のDIコンテナを持つ仕組みにしています。
また、トラッキングやレコメンドのパラメータ設定の際に、多種多様なパラメータが存在することからBuilderパターンを導入しているのですが、Kotlinにおいてはapply記法を用いることでより簡易に記述できるようにしています。

今後の展望

ーー今回のSDKのバージョンアップのプロジェクトで森口さんが得られた経験はどんなことがありましたか?

ゼロからリライトするというのは貴重な経験だったなと思います。
加えて、前のバージョンでは取り組めなかったことにもチャレンジできる環境になってきたので、将来目指したいものへの解像度が上がってきたのも大きいです。

ーーそれでは最後にSDKチームの展望を聞かせてください!

RtoasterのWeb版において実現できている導入のしやすさ、管理画面からの操作のしやすさが、アプリ版はまだまだだと思っています。
今後もSDKの機能を追加しながら、Rtoasterをアプリへ組み込んでいただくベンダーさんの負荷も軽減できるようにしていきたいです。

Rtoasterは15年以上の歴史がありますが、その間に社会ではフィーチャーフォンからスマホへの転換がありました。SDKにおいても今後大きな変化が予想されます。

変化が起きたとしても、ネイティブアプリでRtoasterが使われ続けるために、SDKはどうあるべきかを考えていきながら、さらに改良していきたいです。

ーーこれからも変化を楽しみながら社会にデータ活用を浸透させていきたいですね。森口さんの常に顧客のことを考えながら「本質に向き合う」姿勢に私自身も刺激を受けました。森口さん、本日はありがとうございました!

ブレインパッドでは、自社プロダクトの開発エンジニアを積極的に採用しています。ご興味がある方はお気軽にご連絡ください。

■ ブレインパッドの求人一覧
www.brainpad.co.jp