LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

人事がノーコードでFAQシステムを開発してみた話(設定完全公開)

これは Livesense Advent Calendar 2022 DAY 18 の記事です。

はじめに

こんにちは。リブセンスで人事をやっています、鶴田です。

(゚Д゚) ホ?

となった方も多いかもしれません(そうならない方が少ないかもしれない)。

ここはエンジニアブログ、なのに今回の書き手が人事...?

安心してください。

一応エンジニアリングに関係していることを書きます:

「人事だけれど情シス部門でインターンをしてノーコード開発をしたので、その制作物をお届けしよう」という、そんな回です。 「(扱っている内容的に)やさしいエンジニアブログ」的な感じで捉えてくだされば幸いです。

作ったもの

9月中旬より1ヶ月間インターンをさせていただいた情報システム部門(弊社内の名前ではコーポレートテクノロジーソリューション室、略してCTS)で使用する「社員からの問い合わせに対する一次応答システム」として、匿名で利用できる自動応答FAQを作成しました。

※「こんな単純なことも知らないなんて、と思われたくない」という公開の場での質問ハードルを軽減するため、担当者のみが入っているプライベートチャンネルを作成し、そこにSlackのワークフロー機能を利用して集めたFAQの質問を送信する形としています。

▼利用事例

なぜ作ったのか

社内では、会社が貸与しているPC等のデバイス・使用サービス関連のお困りごとをトラブルシュートするためのチャット部屋があるのですが、 「社内wikiシステムに一応答えが記載されているものの、その情報に辿り着けずに最終的に担当部署に直接質問が来る」というケースも少なくなかったそうです。

社内システム内に答えはある(検索すれば出てくる)が、「最新かつ公式」のページが検索結果上位に必ず上がるシステムではない / 検索性がよくない / そもそもFAQページがあることを知らない等で、「最新の公式情報に、その情報を探したいユーザーがたどり着けない」という状況が発生していました。

その結果、

  • どれが本当の情報なのか判断がつかず、「じゃあ担当部署に聞くしかないか」と直接連絡がくる
  • また、「こんな単純な話も知らないと思われたら...」という意識が働いてしまうことも多く、質問がDMで行われる

ことになり、その対応で工数がかかってしまう状態になっていました。

(何を隠そう、自分自身も「答えがある」対応方法について、検索で引っかかった間違った情報が載っていたページを参照して相談をしてしまった張本人でもあります...)

その部分を少しでも改善したいということで、今回のお題の一つとして上がっていたのです。

構成

SlackのワークフローとFAQの回答データを入れるDBとしてのGoogle Sheetsを、Zapierで繋ぐ形で構成しています。

ツールの選定について

今回のシステムでは、使用者はほぼ全社員が対象、またFAQの管理者はコーポレート所属の方(=エンジニアではない方)を想定しています。

そのため、ツールの選択肢は自ずと既に社内で使われているものとなり、SlackとGoogle Sheetsを使用することを決めました。

  • FAQにアクセスするためのツール:すでに社内導入されて日々のチャットに使用しているSlack
  • DB:データの追加・編集・削除が誰でも手軽にでき、使い慣れているGoogle Sheets

Zapierは、社内ですでに有料版を導入していたため、今回使用するノーコードツールとして選択しました。

設定方法

今回、設計の詳細はこのような形です。

  • Slack「質問チャンネル」のワークフローの回答を、プライベートチャンネルである「運営チャンネル」に送信する
  • 「運営チャンネル」に質問が表示されることをトリガーに、Zapierが動く
    • 「運営チャンネル」に表示された文字から質問を抽出
    • DBから、選ばれた質問に対応する回答を抽出
    • Slack(「質問チャンネル」を指定)に送信する

事前準備

事前に以下を準備します。

  • Slackアカウント(有料プラン)
    • ワークフローを使用するため有料版である必要があります
    • また、以下のチャンネルも決定/必要に応じて作成してください
      • FAQのショートカットを導入するチャンネル(もし存在していなければ)
      • FAQの問い合わせ内容を表示するプライベートチャンネル(匿名で質問できるシステムに必要になります)
  • Zapierアカウント(有料プラン)
    • 今回はマルチステップでZapを作成するため有料版である必要があります
  • 任意の Google Sheets
    • 1 枚目のシートの A1 にQuestion、B1 にAnswerというヘッダーを追加します

Google SheetsでFAQの作成をする

「ユーザーにとって役に立つツールか」という観点で見ると、実はFAQの設計が一番大事では?と思っているので、関係者の方と粒度や解答方法などの認識を揃えながら作成することをお勧めします..!

例えば今回のケースではFAQ作成に関して以下のような工夫をしていました。

  • メンテ工数を考えて、基本的に質問に対する回答が記載されている社内wikiページを記載
  • 質問事項によってはドキュメントを新規作成
  • 情報が散らばっている状態でもあったため、必要に応じて回答でリンクを教える社内wikiのページ自体を改善

▼今回設定したFAQの一部

Zapierで「質問内容をトリガーにDBからデータを引っ張る」仕組みを作る

※この記事では、Zapierを使ったことがない方やエンジニアではない方の参考にもなれるようにかなり細かく書いているので、必要な部分のみかいつまんでお読みください

1.大枠の流れ(以下の英語で書かれている順で、それぞれのワークフローを使用します)

2.各セクションでの基本設定

各セクションでは、それぞれ、以下の設定を行います。★は、各セクションで基本的に同じ作業を行います

  • Choose app&event - ★
  • Choose account -★
  • Set up trigger
  • Test trigger -★

★の作業について

  • 「Choose app&event」のセクションでは、「1.大枠の流れ」で記載されている英語のアクションを指定します
    • 3.詳細設定にある、各スクリーンショットの一番上の灰色の部分も、検索の際に参考にできます
  • 「Choose account 」のセクションでは、 認証に使用するアカウントを指定します
  • テストを行い、問題なく送信ができていれば設定が完了しています
3.詳細設定 ※詳細設定はスクショの画像を真似いただければOKです

【フロー1】トリガー:Slackのワークフローで「フォームの回答が送信される先のチャンネル」を指定
まずは、Slackのどのチャンネルに届いた情報をもとにZapierを発動させるのか。そのトリガーを設定していきましょう。

  • Choose app&event : New Message Posted to Channel in Slack
  • Choose account : 設定で使用するアカウント

【フロー2】質問内容を抽出(formatterツールで、Split Textを選択。ワークフローで送信される文字情報を*で隔てると最後の情報が質問内容のため、その部分を指定)
Slackのワークフローで回収する情報は、「*」で区切られた状態で指定のチャンネルに送られます。そのルールを生かして、Formatterツールを使用して、DBからデータを呼び起こすための情報のみを抜き出します。

  • Choose app&event :Text Formatter by Zapier
  • Choose account : 設定で使用するアカウント

【フロー3】質問した内容を元にデータベースを参照するように設定
フロー2で、質問内容が抽出されました。その質問をDBと照合させ、同じ文言が「Question」にあるDBの「Answer」が返答されるように設定します。

  • Choose app&event : Lookup Spreadsheet Row in Google Sheets
  • Choose account : 設定で使用するアカウント
  • 認証アカウントを指定した後、データベースとなるGoogle Sheetsが入っているチームドライブ、シート名、タブを指定します

【フロー4】参照した内容を、回答送信として使用したいチャット宛・任意のテキストで送信するように設定

  • Choose app&event : Send Channel Message in Slack
  • Choose account : 設定で使用するアカウント
    • 実際のSlackの画面ではこのように表示されます

      *

Slackワークフローの設定

Slack「質問チャンネル」のワークフローの回答を、プライベートチャンネルである「運営チャンネル」に送信する設定をしていきます。

  • ショートカット>FAQを実施したいチャンネルを選び、任意のショートカット名を選ぶ(今回はFAQ_CTS)
  • フォームを送信する>質問のタイプを選択するで「一覧から選択」

ZapierではDBの「Question」の文言をトリガーにアクションを発動させる設定をしているため、「運営チャンネル」に送られる文言をDBの文言「Question」に合わせていきます。

  • 「リストアイテム」にGoogle Sheetsの「Question」枠に記載した内容をコピーして貼り付ける

  • 一番最後の「提出された回答をチャンネルまたはDMで他のメンバーに送信する」のボックスにチェック 

その他の工夫

設定自体以外の工夫として、以下の点を工夫しました。

  • ユーザーへの定着のしやすさを鑑みて、ワークフローはすでに使用されていたお問い合わせチャンネルに追加しました
  • 親しみやすさを持ってほしい、ということで社内のオリジナルキャラクター(リブっぺ)を"案内人”として設置しました
    • 「リブっぺ」については注釈をご参照ください: *1

おわりに

今回、自分が会社の情シス部門にインターンとして参加させていただき、実際にノーコードで"開発すること"を経験させていただき、 ❶コード書けなくても"開発"はできる("開発"という言葉のハードルが下がった)!その感謝の気持ちを何かの形で伝えたい! ❷他の会社のコーポレートの方中心にお役立ちになれる可能性が1mmくらいはありそうだから外に出そう! というモチベーションで、ノリと勢いで記事を作成しました。何かの参考になりましたら幸いです!!

(「人事ですけど記事書いていいですかね...」という無謀な質問を快諾してくださったエンジニア広報チームのみなさん、ありがとうございます!!)

人事が情シスでインターンをして感じたこと、学んだこともあったので、そちらはまた別の機会に寄稿できればと思っています!

また、今回はryo_kawamataさんのこちらの記事を参考に執筆させていただきました! 記事の書き方だけではなく、ツール選定なども含めとても参考になりました!ありがとうございます!

*1:「リブっぺ」は社内コミュニケーション活性のために誕生した非公式キャラです。 数年前に社内FAQ要素も含めた、お助けbotキャラとして誕生。一定定着はしていたのですが(ファンもおり、botを会話ができるSlackチャンネルまであったほどでした)、機械学習がうまくいかず会話が成立しない時があったり、botのメンテ工数の大きさ等でここ1~2年は殆ど使われていない状況でした 。 本社の住所が変わる等、botの回答内容自体も大々的な改修が必要だったため、いっそのこと新しいシステムの上で活躍してもらおう!と、以前のbotを解消し、今回のFAQに転生してもらいました!