Twilioでエンタープライズ向けサービスを構築してみた

[私たち](https://robotfund.co.jp/)はいわゆるFinTechと呼ばれる分野で[RPAと呼ばれる業務プロセスの自動化](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)を主に扱っている、まだ総勢10人にも満たない小さな会社です。2016年に創業し、ようやく1年とちょっとが経ちました。この度、大手金融機関様向けにTwilioを使ったサービスを導入して頂けることになりましたので、そのためにこの小さなチームがどんなことをやってきたのかを記念に書き残したいと思います。

# エンタープライズ向けサービスを[Twilio](http://twilio.kddi-web.com/)で構築するために乗り越えなかければいけなかったこと

Twilio自体、国内ではまだ大手金融機関での本格的な導入実績がなく、私たちが最初に苦労したのはまずTwilioをお客様に知ってもらうことでした。その過程で、いくつか大きな障壁であると感じた点をまとめます。

## 自動生成される日本語の音声が貧しい

きちんと動作するデモを作ってお客様にデモしたところ、まず自動音声の品質の問題でお客様の検討対象から外れてしまうのが一番最初の悩みでした。Twilioには[TwiML](https://jp.twilio.com/docs/api/twiml)と呼ばれる通話の内容を扱う便利なXMLの命令があるのですが、日本語を話させても「ちょっと日本語が上手な人」くらいのレベルでしか話すことができません。趣味や個人用途なら構いませんが、業務レベルではサードパーティーの音声を利用しないとちょっと無理だと思います。

幸いにも、text to speechのサービス、特に日本語の処理を得意とするものは探せばいくつも見つかります。しかしデフォルトでは商用サービスは構築できないという事実は特に価格競争において厳しいものがあります。

## 回線同士が相互接続できない

Twilioでは0120や0800のフリーコールが利用可能ですが、既存の大手企業であればすでにNTTやNTTコムの回線が設置されているケースがほとんどです。0120などのフリーダイヤルを利用されている場合、そのカスタマコントロール（カスコン）にTwilioの番号を指定することができません。そのため、新規案件や会社の回線ごとKDDIに乗り換えたり番号ポータビリティしてもらうなど大胆な対応が必要になりますが、私たちのような小さな会社がそんな提案をしても、まあ通用するわけがありません。

技術的には、ちょっと[スース博士の機械](https://ja.wikipedia.org/wiki/%E3%83%89%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%BB%E3%82%B9%E3%83%BC%E3%82%B9)のような仕組みになりますが、相互接続は実現できないわけではありません。でもそれは同時に、技術的には全く不健全なことです。

正直な話、ユーザー目線で考えるなら、同じ電話回線が相互接続できないなどあってはならないことですし、せっかくTwilioのような使いやすい便利な仕組みがあるのに、つまらないドメスティックな事情で実質的に大手企業の大半のシステムに導入できないなんて、もったいない限りです。

もちろん、これは電話に関わる仕事をされている方々がみなさんそう感じていらっしゃることでもあるので、いつかリーダーシップをとって改善に動いてくださる動きが出てくることを期待しています。

## そもそも大手企業ではTwilioなんて誰も知らない

確か2011年に出版された「Lean Startup」にもスタートアップが手軽に電話を敷くならTwilioだと紹介されていたはずですが、まだビジネスにおけるTwilioの地名度はかなり低いです。特に、海外ではINGのような企業への導入事例もありますが、国内においては特に大手企業の視界には入っていないと言ってもいいでしょう。実際、Twilioが相互接続できるサービスも、電話やSMSはともかく、その他はFacebookやWeChatはあってもLINEのような国内で知名度の高いものはありませんので、知らないとしても全く無理からぬことであり、国内ではなかなかアピールしづらいところではあります（もしTwilioがLINEの通話と相互接続できたらいろんなサービスを作れると思いませんか？）。

なので、まずは地道に、知ってもらうところからということで、実際に動くデモを用意してあちこち行脚することから始める必要がありました。幸いにもご縁に恵まれ、またあまりに小さい企業がもがいている姿を哀れに思っていただけたのか、ようやくサービス開始まで漕ぎ着けることができました。関係各位のお引き立てに感謝すると共に、その大胆さには敬意を払います。

## エンタープライズ向けサービスが日本では提供されていない

本国アメリカではTwilio自身がauditやログの保存など高額ではあるものの必要とされることの多いエンタープライズ向けサービスを提供しているのですが、日本ではまだ提供されていません。またAWSのダイレクトコネクトとの相互運用も東京リージョンではまだ始まっていません（これはAWS側の事情かもしれないですね）。

## 確保できる回線がそれほど潤沢ではない

Amazonが提供する[Amazon Connect](https://aws.amazon.com/jp/connect/)と比較すれば、の話ですが、用意されている回線も大規模サービスをいくつも構築する用途を考えると、あまり潤沢とはいえないのが現状です。ここは案件見合いなので、導入数を増やしていくしかないのかもしれません。もちろん、お金を出せば実現は可能なのですが、そこらへんは使う前の印象とはちょっと違うなという感じがします。

## 0120番号は在庫があまりない

だんだんと一般的な話になりつつありますが、0120番号には注意が必要です。どのサービスでも事情は同じで、Twilioを使う場合でも御多分に洩れず0120番号の在庫は常にたくさんあるわけではありません。第三者に提供するサービスを構築する際には、他所で取得してポートするといった涙ぐましい努力が必要なケースもあるかもしれません。

# まとめ

待って、確かに言いたい放題書きまくったけど、実際のところTwilioすごいんだよ！怒らないで！ぼくを嫌いになってもTwilioのことは嫌いにならないで！飴と鞭なら[飴だけください](https://www.youtube.com/watch?v=Q4BH1cyl49E)！

と。ここまで好き放題に書いてきたのに、技術的な話はほとんど登場していないことに気づかれたでしょうか。APIとしてサービスを利用するという観点では、Twilioの使いやすさは大変ありがたく、また運用も安定しているのでそれほど気に止むことはありませんでした。そもそもインターネットというもの自体が、もちろん結構頑張っていますが、同時に[日々壊れて](http://www.geekpage.jp/blog/?id=2017-9-13-1)もいるものなので、Twilioにだって障害が発生しないわけではありません。しかし、素早く構築してどんどん更新していくインターネットのサービスの流儀で電話システムを構築できる魅力にはなかなか抗えないものがあります。労働人口の確実な減少という差し迫った危機を迎える中で、これまで以上にそのプレゼンスは高まっていると思いますので、今回の案件を大きなステップとすることがお客様のご期待に応えることであり、今後の私たちチームの使命でもあります。

そんなわけで、ちょっと自慢話をしてみたくてアドベントカレンダーを利用させていただきました。次回はTwilioを使って日本語音声のテキスト化を実現したのでソースコードを添えて解説していきます。お楽しみに。