自己紹介
初めまして。Messaging-Tech Productの松本です。
MOBI AGENTのバックエンドの開発を約一年半ほど担当しています。
今回は、MOBI AGENTで使っている技術を紹介します。
MOBI AGENTとは
始めに、MOBI AGENTの紹介です。
MOBI AGENTは、コンタクトセンターに対応する顧客サポート向けの有人チャットシステムです。
WebやLINEなどのSNSアプリで顧客チャネルからチャットでの問い合わせ対応ができます。
また、チャットボット「MOBI BOT」と連携をして、シナリオを用いた自動応答に対応することもできます。
他の機能として、問い合わせメッセージの感情をオペレーター画面に表示したり、問い合わせ数や問い合わせが完了するまでの対応時間等の統計情報を表示するなど、コンタクトセンター向けの機能を有しています。
技術紹介
ここから、MOBI AGENTで使用している、技術やアーキテクチャを紹介します。
本題に入る前ですが、Go言語や、Hazelcastなどのミドルウェアを使っていたりしていますが、機能の一部であるため、今回は省略させていただきます。
Scala
MOBI AGENTのバックエンドは、Scalaで記述されていて、全てAPIとして実装されています。Scalaは、オブジェクト指向と関数型プログラミングの両方を備えた特徴があります。JVM上で動作するため、Java言語で書かれたライブラリを使用することが可能です。
MOBI AGENTに携わってからScalaを触りましたが、Javaの仕様より書き方が複数あり、最初のうちはIDEの補助なしだと難しい印象ですが、慣れるとエラーの制御がしやすいのと、「null」が含まれないので、安全で制御しやすい言語だと思っています。
MongoDB
データベースは、MongoDBを使用しています。
MongoDBはドキュメント指向データベースで、データ構造を柔軟に変更できるため、仕様変更が頻繁に起こるシステムには最適です。
データの中身はJSONなので、Web開発者であれば、馴染みやすいです。リリース時に構造の変更が伴う場合、データのマイグレーションを行なっていますが、データ操作をJavaScriptで書けるので非常に便利です。
まだ、触ったことがない方は、試してみてはいかがでしょうか。
フロントエンド
フロントエンドは、主にReactとTypeScriptを使用しています。 機能は、大まかに言うと3つの要素で構成されています。それぞれバックエンドAPIサーバーと通信をしながら、機能を提供しています。
フロントエンドの機能
1. 顧客の問い合わせが可能なWeb小窓
2. オペレータが顧客と対話するチャット画面
3. ダッシュボードや設定などの管理画面
問い合わせ時にフロントエンドのソースコードを見る時があるのですが、TypeScriptは型がはっきりしているのでわかりやすくていいと思います。
インフラ
インフラは、AWSで構築されています。
バックエンドは、主にAmazon EC2上で動作しており、一部、AWS FargateやLambdaで構成されています。他には、検索でAmazon OpenSearch Serviceを使っていたり、ログはCloudWatchで確認ができます。
一番使用しているのは、問い合わせ時のログ検索で、CloudWatchを使用しています。
検索で使用するクエリーは取っ付きにくいですが、速度は早くて助かっています。
まとめ
特徴や使用感などを交えて説明させていただきましたが、いかがでしたでしょうか。
大枠ですが、製品のシステムを理解できたかと思います。
この記事により、知らない技術に興味を持っていただけたら幸いです。