NIKKEI Digital Recruiting Site

新しいニュース体験を、チャットボットの活用

1. チャットボットとは

1-1. 背景

近年、 Facebook Massanger、LINE、WhatsApp などのメッセージングアプリケーション上で動作するチャットボットという新たなアプリケーションに注目が集まっている。これまでの既存のモバイルアプリケーションやウェブアプリケーションに加えて、顧客との接点を生む新たなサービスとして、多くの企業がその可能性に価値を見出している。最近では、Slack がソフトバンクから巨額の資金調達に成功したことが話題になった。

また、フェイスブック傘下のスタートアップ企業が開発した wit.ai やマイクロソフトが開発した LUIS などのサービスによって、自然言語処理をはじめとする人工知能技術を API 経由で簡単にボットに組み込むことができるようになり、その可能性はさらに広がりつつある。検索時代からソーシャルメディア(SNS)の時代を経て、これからはチャットボットの時代が到来するかもしれない。

1-2. 特徴

チャットボットは、従来のネイティブアプリやウェブアプリとの対比において、注目すべき特徴が 2 つある。 1 つ目は、開発にかかるコストが低いことである。既存のメッセージングアプリケーション上で動作することを前提としたほとんどのチャットボットは、デザインや UI 設計を考える手間がない。開発者は本質的なコンテンツやサービスの開発に注力できるようになり、手軽に素早くサービスを立ち上げることができる。

2 つ目は、ユーザ体験が大きく異なっている点である。より人間との親和性が高い双方向のコミュニケーションをベースとした形式でサービスが利用できるため、これまで手の届かなかった一般ユーザにも幅広く利用してもらえる可能性がある。

このように開発者側と利用者側の両方にとって魅了があり多くの可能性を秘めているチャットボットの動向は、今後も見逃せない。

2. NIKKEI for Slack とは

この度、弊社は Slack とパートナーを組み、「NIKKEI for Slack」というチャットボットをリリースした(2017 年 11 月)。今回はこのチャットボットの機能と開発技術に関する概要について簡単に説明する。

2-1. 機能紹介

まず、今回開発したチャットボットの機能としては大きく 3 つある。 1 つ目は、朝夕刊の定期配信機能だ。経済を中心とした国内外の幅広い日経のニュースを毎日定期的に Slack 上でキャッチアップすることができる。またチャンネル内のメンバー間で共有して議論するといった利用の仕方も可能だ。

2 つ目は、人気急上昇ワードの定期配信機能である。これは日経電子版での検索回数の多いランキング上位 5 つまでのキーワードを、1 日 1 回ボタンで Slack 上に配信する機能だ。ユーザはこのボタンをクリックするだけでその人気キーワードに関連する記事を毎日確認することができる。

3 つ目は、登録キーワードの自動配信機能である。今関心を持っているキーワードを Slack 上に登録しておくと、そのキーワードに関連する最新の更新記事が自動的に配信される。

2-2. 開発概要

2-2-1. Web API

Slack には豊富な種類の Web API が用意されている。また、Python や JavaScript などのプログラミング言語に対応した公式の SDK ライブラリも提供されているので、それらを利用して気軽に試すこともできる。 Web API では、チャンネルに関する情報の取得や、ファイルのアップロード、メッセージ送信など、非常に幅広い機能を利用することができる。本項では Slack へのメッセージ送信機能について取り上げる。まず、メッセージの JSON フォーマットについて紹介する。具体的には、以下のような所定のキー名を指定した JSON データを生成して、https://slack.com/api/chat.postMessage という規定のエンドポイントに対して POST メソッドを送信することで既存のチーム内のチャンネルへメッセージを送信することができる。

{
    "token": "xoxp-xxxxxxxxx-xxxx&name=something-urgent",
    "channel": "C061EG9SL",
    "title": "デモのメッセージ",
    "text": "メッセージを送信しました",
    "color": "good"
}

ここで指定する token の値は、Slack アプリのインストール時に生成されるチームに対応した xoxp あるいは、xoxb で始まる文字列を設定する。 また、 attachments をキーとした付属コンテンツ機能や、actions をキーとしたボタンやメニュー機能などの様々なキーを設定することもできる。これらのメッセージのフォーマットを確認する際には、Slack API のウェブページ上で確認することができる。 https://api.slack.com/docs/messages/builder

2-2-2. Slack のアプリ機能

次に、Slack が提供する独自のアプリ機能について説明する。今回のボット開発で利用した機能は、スラッシュコマンド、インタラクティブコンポーネント、イベントの 3 つである。

  1. スラッシュコマンドとは、Slack 上で「/」を入力することで利用できるサービスだ。事前に Slack の API のウェブページにコマンドと 1 対 1 に対応したエンドポイントを登録しておくことで機能を実装できる。

  2. インタラクティブコンポーネントは、ボタンやメニュー機能を実装する際に利用する。これは前述のコマンド機能とは異なり、エンドポイントは 1 つである。そのためボタンクリック時に送信される JSON データの_callback_id_ という名前のキーを識別子として利用することで、各種ボタンに対応した処理を実装する。

  3. イベント機能は、ウェブサイト上の設定画面で有効化し、エンドポイントの検証を行うことで利用することができるようになる。この機能によって対象のチャットボットを任意のチャンネルに招待、あるいは退場させるといったイベントの発生をトリガーに処理を実装することが可能となる。エンドポイントの検証を行う際には、Slack 側から HTTP の POST メソッドで、以下のような JSON 形式のデータが送られてくる。

{
    "token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
    "challenge":
        "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
    "type": "url_verification"
}

サーバ側では challenge キーの値をレスポンスとして返却する処理を実装しておくことで検証プロセスを完了させることができる。

以上のように、Slack では充実した API やアプリ機能が用意されている。これらをうまく組み合わせることでより使いやすく、幅広い用途でチャットボットを活用することが可能だ。ぜひ、チャットボットを活用してみて欲しい。

中嶋真広
ENGINEER中嶋真広

Entry

各種エントリーはこちらから

キャリア採用
Entry
新卒採用
Entry