RareJob Tech Blog

レアジョブテクノロジーズのエンジニア・デザイナーによる技術ブログです

Bubbleで開発したサービスがリリースされました

こんにちは。新会社になってから初の投稿です。
レアジョブテクノロジーズCEOの山田です。
レアジョブ時代は執行役員CTOを担っておりましたが、分社化に伴いCEOに就任しました。

先日、新サービスとして、グローバルビジネスで必要な英語コミュニケーションスキルをシーンごとに習得できるオンラインプログラム「グローバルスキルPowerトレーニング(以下、Power)」をリリースしました。
「Power」は、開発にNoCodeのBubbleを採用しましたので、選定理由や実装した機能、そしてメリット・デメリットを紹介していきます。

なお、本サービスは、現業と平行して捻出出来る時間だけでPowerの開発に参加出来る、というイレギュラーな形でメンバーを募集する新たな試みのプロジェクトチームで推進してきました。

www.rarejob.co.jp

実現するサービス要件

Powerでは、システム化する前にテストマーケティングしフィードバックを得ながら教材やレッスン内容を改善しつつ、ニーズを探ってきたこともあり、 ある程度の需要は見込めたものの不確実性が高く、また実運用に乗せないと見えないことも多かったので、まずはMVPとしてお客様と講師に提供し、FBを得ながら拡張していくことにしました。
サービスが提供する機能は、1 on 1オンラインレッスンを提供するためのスケジュールと進捗管理が主となり、実現するサービス仕様は以下のようなものでした。

  • レアジョブ英会話を提供している講師でPowerでのレッスン提供の認定を受けた講師がレッスンを提供
  • 講師はPowerの開講時間を登録でき、その期間はレアジョブ英会話、Powerが混在するスケジュールとなる
  • 生徒は、空き時間の検索、レッスンの予約・キャンセル、教材のDLが出来る
  • また、レッスンはカリキュラムで指定された順番に受講していく
  • 講師が来ないなどのトラブル報告が出来る
  • 運用者の役割は、生徒、講師の登録、スケジュール管理、トラブル管理など多岐に渡る
  • 日本、フィリピンなど利用者のタイムゾーンが違う など

Bubbleの選定理由

まず、NoCodeを選定した背景としては、各プロジェクトの状況からアサイン出来るメンバーがほとんどいないが需要に応えるために早期にシステム化する必要がある、 NoCodeでもMVPで定義した機能は実現出来そうの2点でした。
Bubbleは学習コストは高いものの、

  • 複雑な処理を実装でき、DBもあり、想定する機能は実現出来る
  • 学習するためのコンテンツが豊富にある
    • How to build では有名サービスをBubbleでどう実装するか説明されている
  • 外部APIとの連携も簡易に行える
  • Pluginが豊富で実装すべき機能を軽減出来る
  • バージョン管理、バージョン間のマージができ、運用にも耐えられる
  • 独自ドメインの設定が出来る
  • 情報量も多く、コミュニティも大きい

など、比較したNoCodeサービスより提供されている機能が豊富で、MVPとMVP以降の拡張を実現出来る可能性が高いため採用に至りました。
ただし、コスト面では他のNoCodeサービスより(アプリケーション毎の課金のため)少々高く、また、どのNoCodeサービスもそうかもしれませんがパフォーマンスに不安がありました。

構成

Powerシステム構成

本システムでは、講師が複数サービスにレッスンを提供するためスケジュール管理を一元化することが前提ということもあり、弊社独自のプラットフォームをベースに Bubbleでは、サービス独自の情報を保持し、ユーザーへのフロントエンド部分を実装するという構成になっています。
また、アカウント管理もプラットフォームが担っているため、ログイン機能はOAuth2を採用しています。

実装した機能

ログイン、検索、予約、進捗可視化をメイン機能として実装しており、以下が出来ることでそれらの機能が実現出来ています。

  • OAuth認証
  • プラットフォームAPI利用
  • Bubble DBに対するCRUD処理
  • 時間による表示内容、処理の制御
    • Local Timezoneでの時間制御
  • バージョン毎に環境変数を定義し、環境変数に応じた処理の制御、表示の制御
    • 定義値の管理機能も有しています
  • Bubbleアプリケーション間のAPIを介したデータ同期
    • BubbleアプリケーションでもAPIを外部公開できる
  • スケジューラーによるバックグランド処理
  • 運用システムのIPアドレス制限 などあり、デザインを実現するための部品も揃っており、またHTMLやJSなども挿入可能です。

利用Plugin

Plugin 用途
API Connector 外部API利用向けのインターフェース
Browser Push Notifications ブラウザプッシュ通知
Browser Timezone and Locale タイムゾーンの取得
Data Converter 変数の型変換(テキスト型⇒日付型など)
Ipiphy 利用者IPアドレス取得
CSV Creator 取得したデータからCSVファイル作成しDL
Sidebar Menu サイドメニュー

実装で苦労した点

絶対的にこれが出来ないというものは、これまで触ってきた中でなさそうですが、ひと手間かけないとやれないことは割とあると感じました。

  • 日付型の扱い
    • プラットフォームAPIでは、RFC3339をサポートしており、一発で変換出来ないのでいくつかの処理に分けて実装した
    • 使われるタイムゾーンが分かりにくくデバックしながら正しい状態にするのにかなり時間を要した
  • 繰り返し処理 ※一番の不満
    • 例えば、APIからリストを取得し、一件毎に何か処理しながらDBに登録ということが簡単に出来ない
    • これを実現するには、私が知る限りでバックグランド処理に渡すのが実現方法
  • APIのHTTP Statusによるエラーハンドリングが出来ない
    • 4 xxと5xxで処理を分けるということが出来ないので、エラーだったらというざっくりした処理で回避するしかない
  • OAuthは動的に変更不可
    • 弊社のように環境毎に指定するURLが異なる場合は、管理方法を厳密なルール設計が必要
    • 本件は、運用リスクが大きいため、Bubble社へリクエストしています
  • 定期実行処理の最小単位が日単位
    • 時間や分単位でスケジュール決めて処理をしたい場合、イベントトリガーでスケジュールイベントとして日時を指定して、処理を登録する

メリット・デメリット

所感として、機能的にシンプルで、小規模であればかなり有用だと思いますので、今回のようなMVPには適していると思います。
サービス規模が拡大していく中で、継続するかの判断が必要となりますので、将来的に別システムにスイッチすることも視野に入れて選定した方がいいと考えています。
Powerでは、プラットフォームにサービスの重要なマスタデータは、保持しているので同じ構成であればリプレイスは難易度として高くないので、その点もNoCodeを採用したポイントとなっています。

メリット

当然、BubbleはNoCodeツールなので、すべての開発スキルを有している必要はなくアプリケーション開発を行えることが出来るのでエンジニアコストを抑えて開発することが可能です。
繰り返しの内容も含みますが、私が使ってみて実感した代表的なメリットは次の通りです。

  • (機能を把握し使い方に慣れれば)初期開発費用を抑えて短期間でリリースが可能
  • ページ、機能やAPIを追加してデプロイするまでのプロセスが短いので運用工数が少ない
  • Pluginも充実しており、やりたいことを実現する機能がカバーされている
  • ナレッジが豊富、学習コンテンツが充実している
  • サポートが丁寧に対応してくれる
    • 時差があるので返信はすぐには来ないです
    • Bubble本体のバグがあり指摘したら、早期に修正しリリースしてくれました

デメリット

前述の「実装で苦労した点」以外で、以下のデメリットもありますので、Bubbleの採用を検討する際の参考にして頂ければと思います。

  • 非エンジニアだと難易度が高い(学習コストが高い)
    • カバーしている機能が広い反面、使いこなすまである程度の時間が必要
    • 無料でもやれる範囲が広いので、無料で実装慣れしてから有料化するのが効率的
    • ドキュメントも豊富にあるが、公式How to動画を見るのが楽
    • 正しく使うには、設計力が重要
  • 処理速度が遅く、チューニングが難しい
    • Pluginで処理が遅くなることが多いので、Pluginの比較も重要
  • デバック出来る部分が限られている
    • ワークフローで定義した処理はデバッグモードとログで詳細がわかるが、それ以外(条件に応じて表示内容を変えるなど)の不具合調査は、試行錯誤することになる
  • 処理内容の可読性が弱い
    • GUIで処理定義していくが、どのような処理が組み込まれているかひと目でわからない
    • 設定処理毎にコメント残す、ドキュメント化するなどの工夫が必要
    • App search toolというどこで何が使われているか検索するツールを駆使する
    • 大人数でやるには向かない

今後の展望

事業計画上は、当面Bubbleアプリケーションでも問題ないと考えているので、要望対応をしつつ、AIを活用した機能拡張を考えています。
VoicePenbyword_VocionなどBubbleで作られた生成AIサービスも出てきており、Azure OpenAI pluginもリリースされるということなので、動きをウォッチしつつ色々と試していきたいと思います。

最後に

今回紹介したBubbleのようなNoCode、話題のChatGPTに代表される生成AIで、技術選定の選択肢が増え、また想像を超える早さで進化しています。
弊社は、「マナビ、アップデート」をミッションに掲げ、我々が提供するプロダクトで学びを進化させ社会貢献していきます。
同時に、新しい技術をTry&Errorして、組織としての「マナビ、アップデート」も行い、プロダクトの成長に繋げていきます。
ChatGPTに関する発表は近々あるのでお楽しみに。

ということで、一緒にチャレンジしてくれる人を募集しています!
少しでも興味ありましたら、カジュアル面談でも如何でしょうか?
rarejob-tech.co.jp