まずは話を聞きたい
採用サイト
技術を知る

自社サービスを支える新たな技術「Firebase」

ライティング:近藤靖彰
コミュニケーション大好きなプログラマ。対話とアイデアで課題解決できた瞬間が至福の時。Firebaseを中心にVue/React/Flutterを使っています。

目次

    Rails 以外の選択肢

    SonicGardenは知見を貯めるため、そして持続可能な開発をするため、あえてRuby on Railsを中心に開発することを行ってきました。

    一方で、我々の事業の中心である納品のない受託開発の柔軟性を持たせるためにも更なる開発スタイルも模索し続けています。

    kintoneを使った業務ハックも、その1つのスタイルとして加わったものです。 そして、さらなる新たな開発スタイルの1つとして、Googleが提供しているFirebaseを利用した開発が加わっています。

    Firebase の実践利用

    Firebaseは従来のWebアプリケーションのようにサーバーを立ち上げてそこにアプリケーションを構築していく方法とは全く別のアプローチで開発が行えるSaaS群です。 ブラウザとFiebaseが有するSaaS群と直接アクセスが行われるため、フロントエンドの開発だけでWebサービスが簡単に立ち上げられるのが特徴です。

    最初は社内ツールから利用し始め、今ではRuby on Railsと同じく納品のない受託開発でも利用されるようになっています。

    現在ではソニックガーデンの代表的な自社サービスの2つがFirebaseを利用しており、その2つがどう利用されてるかを紹介したいと思います。

    利用例1: Remotty - 仮想オフィス

    まずは仮想オフィスサービスのRemottyです。

    弊社は全社員がリモートワークを行なっている会社ですが、リモートワークを始めた当初、コミュニケーションの部分でいくつかの問題が発生しました。この問題を解決するために開発されたのがRemottyです。社内のためにできたものですが、同様の問題を抱える会社を救うためにも、現在はサービスとして一般提供しています。

    Remottyは、リモートワークを始めたときに発生しがちなコミュニケーションの質の低下を防ぐ仕組みをいくつも持っています。 代表的な機能がチャット機能ですが、リモートワークではそれだけではなかなか会話は始まりません。

    そこでRemottyでは「席」という概念を組み込んでいます。それぞれの会話は個人個人の席で行われ、その席で行われた会話が同じ部屋にいる人たちにも見えるようになっています。

    さらには、PCカメラで撮影した写真をリアルタイムで席に表示し、在席状態をわかりやすくしています。

    この、「席」への移動、会話、写真の共有などをリアルタイムに行うために、FirebaseのデータベースであるFirestoreとFirebase Storage、Firebase Authenticationを利用しています。

    Firestoreは、更新したデータをリアルタイムでブラウザに配信する仕組みを持っており、この仕組みを使うことでwebアプリではなかなか実現しづらい機能をうまく実装することができています。また、このFirestoreに加えて、Firebase Storageを使って画像を共有し、Fiebase Auntenticationで個人アカウントを管理しそれぞれの権限の中で情報が共有できるように実装しています。

    また、RemottyではSlack、Microsoft Teamsなどとの連携機能を有していますが、ここはFirebase Functionsと呼ばれるクラウド上に関数単位で機能が実装できるサービスとFirestoreを組み合わせて、各サービスのメッセージがリアルタイムにRemotty上に表示される仕組みを実現しています。

    利用例2: じぶんシリーズ - kintone連携サービス

    もう1つがじぶんシリーズです。 じぶんシリーズには、じぶんフォーム、じぶんレコード、じぶんページの3つがあり、サイボウズが提供するkintoneの活用の幅を拡げるサービスとなります。 本記事では代表して、じぶんページについて紹介します。

    多くの企業では、kintoneが提供するユーザーとは別に、kintoneの一部のデータを外部に見せたり、編集してもらったり、コメントしてもらいたい対象がおります。例えば、顧客や事業パートナーやアルバイトなどです。

    そういった、kintoneユーザーを新たに持つほどではないが、kintoneのデータを一部共有したい場合、じぶんページの独自ユーザーを登録することで、マイページを通して見せたいものだけkintoneのデータを見せることができます。

    じぶんページでは、kintoneのユーザーアカウントを持っていない相手に対し、じぶんページ内でユーザー登録を行うことで、kintoneデータの一部の閲覧権限や編集権限、コメント権限を選んで与えることができます。権限が与えられているkintone内のアプリ・レコードの情報は、じぶんページのユーザーごとに発行される「マイページ」に相手がログインすることで何時でも閲覧が可能です。

    これにより、大きく業務を改善することが可能です。例えば、顧客やパートナーへkintoneのデータをそのままコピーして、メールや電話、FAXや紙媒体で渡すような二度手間の作業はなくなります。kintoneでデータを一元管理することで、顧客やパートナーはいつでもじぶんページ上で必要な情報のみを確認できるようになります。

    じぶんページは、Firebase FunctionsにてkintoneのAPIを利用し、kintoneのデータを取得後、ログイン中の顧客などに対して、マイページ上にそのデータを表示します。

    データの中心はkintoneが担っており、じぶんページはこのkintoneのデータ(アプリやレコード、コメント)を各ユーザーごとに閲覧可能なデータだけを絞り込む機能を搭載し、表示しています。。

    Firebaseというサーバーレスなアーキテクチャを利用することで、スムーズにスケールする仕組みとなっており、ユーザーが増えても常に安定した運用を行うことができています。 また、それにより、金額的にもリーズナブルな価格でサービスを提供しております。

    Firebaseの課題と今後

    Firebaseは今までにない機能や構築のメリットはありながらも、今までRuby on Railsでは普通に開発できていたことが、Firebaseでは難しくなる場合もあります。 ただ、Firebaseも様々なアップデートが行われており、従来の方式と遜色なく開発できるようになってきています。 とはいえ、今回紹介させていただいたサービスのようにFirebaseが得意な領域がありますし、Firebaseでは開発しづらくRuby on Railsで行った方が効率がいい場合もあります。SonicGardenではそこを見極め、さらに柔軟で最適な納品のない受託開発を提供していこうと考えています。

    Firebaseは今までにない機能や構築のメリットはありながらも、Ruby on Railsで開発した方が効率が良い場合もあります。 ただ、私たちが日々成長しているのと同様に、Firebaseも様々なアップデートが行われており、Ruby on Railsじゃないと難しかった開発ができるようになってきています。 また、今回紹介させていただいたサービスのようにFirebaseが得意な領域もあります。Sonicgardenではそこを見極め、さらに柔軟で最適な納品のない受託開発を提供していこうと考えています。

    今回紹介した自社サービス

    Remotty→ https://ja.remotty.net/

    じぶんページ→ https://www.jibun-apps.jp/jibun-page/

    前の記事
    納品のない受託開発で気づいた、「無茶ぶり」の受け取り方
    次の記事
    ソニックガーデンではなぜコードレビューを重視しているのか?
    一覧へもどる
    まずは話を聞きたい