Technical Articles
「まよワン!じっこくん」とは?(アプリケーション説明とアーキテクチャ概要)
第2回 東京公共交通オープンデータチャレンジに応募した「まよワン!じっこくん」の連載記事の第2回です。
- 東京公共交通オープンデータチャレンジに応募してみた
- 「まよワン!じっこくん」とは?(アプリケーション説明とアーキテクチャ概要) ←ココ
- デザインシンキングでアプリ要件を考えてみる(デザインシンキング)
- チャットボットの開発(SAP Conversational AI)
- SAP CP上でのバックエンド開発(Node.jsとSAP HANA)
- SAP CPで開発したアプリをJenkinsでDevOps
今回は、アプリケーションの説明とじっこくんのアーキテクチャについて触れたいと思います
(一部の内容は1回目と重複していますが、ご容赦を…)
まよワン!じっこくんとは?
「まよワン!じっこくん」は、視覚障がい者の方が電車の時刻表を検索するのにシンプルなUIで簡単に使えることを目指したサービスです。LINEで友達になった後、「路線」「乗車駅*」「降車駅*」「平日/休日」「時間」を指定すると、東京メトロの駅の時刻表を教えてくれます
*ロジックの都合上、東京メトロの乗入路線駅はまだ利用できません(今後の拡張を検討中)
「まよワン!じっこくん」は何ができるの?
- 犬の「じっこくん」が東京メトロを走る電車の時刻表を教えてくれるLINEボットです
- LINEで「まよワン!じっこくん」を友達追加すると、チャット形式で条件にマッチする駅の時刻表を教えてくれます
- 路線名と乗降車駅の指定は、漢字・ひらがなの両方に対応しています。また、「明治神宮前<原宿>」→「明治神宮前」や「押上<東京スカイツリー前>」→「押上」といった正式名称ではないキーワードでも検索が可能です
- 「半蔵門線 半蔵門駅から渋谷駅まで 平日 1830ごろ」といった条件を一文で続けて入力しても検索が可能です
- 頻繁に検索する路線・乗降者駅は「いつもの」で検索が可能です
なぜ「まよワン!じっこくん」が必要?
「時刻表を表示するアプリなんていっぱいあるじゃないか」、「乗換案内があるんだから、時刻表をわざわざ見ることなんてほとんどないんじゃないの?」と思う方も多いと思います。
実は、視覚障がいを持つ多く方は電車の乗降や乗換に時間がかかり、一般的な乗換案内で提案されるとおりに移動することができません。そのため、移動の際には、ルートを確認後、電車の時刻表をスマートフォンの音声ガイドの機能を使って確認していることが、全盲の方へのインタビューや一緒に電車に乗車してみた結果わかりました。
しかし、既存の時刻表を表示するサービスでは、時刻表検索以外のメニューやボタンがあったり、入力ボックスがいくつもあったり、検索結果に多くの追加情報が表示されたりする、など音声ガイドを頼りに使おうとすると、実はこれらがノイズになり、必要な情報を確認するのにすごく手間がかかる、ということがわかりました(ここら辺の詳細は第3回のデザインシンキング編で触れてくれると思います)
そこで、私たちはこのような状況を改善すべく、
- 入力ボックスは一つ
- 必要な情報(乗りたい時間帯の時刻表)のみをテキストで表示
- 使い慣れたアプリケーションで利用可能
- 漢字への変換が不要
という特徴をもった本アプリケーションを作成しました。
使ってみていただいたフィードバック
じっこくんのリリース後、全盲の視覚障がい者の方にじっこくんを使ってもらいました。検索条件の入力、検索結果の出力ともに画面がとてもシンプルであることがとても好評でした。既に日常生活でもご活用いただいており、なんと友人や盲学校の生徒にも紹介していただいているとのことでした。もちろん、改善の要望もいただいており、「ひらがな対応」はフィードバックの結果、追加導入したものです。
なお、私自身も帰宅時に「東西線の三鷹行きが何時にくるのか?」調べるため、ちょくちょく使っています。電光掲示板だと直近2本しか表示されないのですが、電車が近づいてくると2本目も表示されず、中野行か三鷹行か確認できず地味に困っていました…しかし、じっこくんでシンプルに三鷹行の電車が何本先に来るのか確認できるようになり、その電車を待つか、今着ている中野行に乗って後で乗換えするかを決めています。
なぜ「まよワン!じっこくん」はどんな技術で出来ているの?
「まよワン!じっこくん」はLINE上で動くチャットボットです。システムのアーキテクチャは以下のようになっています。
音声ガイド:スマートフォン標準の音声ガイドを使用
フロントエンド:LINE Messaging APIを使用してLINE Botとして、ユーザとコミュニケーション
チャットボット:SAP Conversational AI(RECAST.AI)で会話を制御。データをバックエンドのNode.jsに問い合わせ
バックエンド:SAP CPで動作するNode.jsアプリケーション。SAP Conversational AIからきた検索条件に基づき、東京交通オープンデータチャレンジのAPIやSAP HANA上に格納したデータから該当の時刻表をSAP Conversational AIが理解できる形(JSON)で返す
SAP HANA:駅名・路線名などのあまり変更の少ない静的なデータをインポート。また、「いつもの」機能のための検索履歴、あいまい検索を実現するためのデータを整備
DevOps:SAP CP上で開発したNode.jsやHANAデータベースオブジェクトは、Githubで管理して、Jenkinsで本番環境に日次で自動デプロイされる形になっています
基本的な機能はSAP Conversational AIとSAP CP上のNode.js/HANAで実現させています。フロントエンドには、上述の通り、使い慣れたUIで、かつ新規インストールが不要な点を最も重視して、LINE Messing APIを利用したLINE Botにしました。
それぞれの詳細や開発の際のこぼれ話については、後続の連載で書いてもらおうと思います。
ご一読いただきありがとうございました。