Chatwork(チャットワーク)の便利なメッセージ検索小技
こんにちは!企画開発部マーケティンググループの井畑です。
ビジネスでのコミュニケーションを円滑にするために、ファブリカコミュニケーションズではチャットツール「Chatwork(チャットワーク)」を導入しています。

今回はそんなChatworkの紹介と、僕が日々使っているちょっとした小技についてお話したいと思います。
Chatworkってどんなツール?
ChatworkはChatwork株式会社が提供している、ビジネスコミュニケーションに特化した電話・メールに代わるチャットツールです。
ビジネスでのコミュニケーションで多く使われてきた手法として、電話やメールがありますが、電話はタイミングが合わないと相手に繋がらず、メールは手軽に連絡が取りづらいという問題があります。そこで、円滑なコミュニケーションを実現するためのツールとして、気軽に連絡が取れるチャットツールが注目を集めており、Chatworkは2019年5月末日時点で222,000社に導入されています。
Chatworkではテキストメッセージだけでなく、ExcelやWord、PDFファイルなどのビジネスシーンで利用するファイルはもちろん、メールでは送るのが難しい大きい容量の画像ファイルや動画ファイルなどもアップロードできるため、ファイルの受け渡しも非常に便利です。
ファブリカコミュニケーションズでは、プロジェクトごとにグループチャットを作成して、プロジェクトごとの連絡や進捗管理を行っています。また、全社員向けの連絡チャットや事業部同士の連絡チャットがあったり、管理職のメンバーだけが見れる連絡チャットがあり、会議の時間短縮に繋げたりしています。
Chatworkのメッセージ検索
そんな便利なツールのChatworkですが、仕事で関わるプロジェクトや事業部が多くなればなるほど、グループチャットが増えて管理が大変になっていきます。どのチャットでどんな内容で発言したか忘れてしまったり、うっかり自分宛てのメッセージを見逃してしまったり…なんてことも度々起こってしまいます。
自分の発言履歴や自分宛てのメッセージを一覧で確認できたら良いのにと思っても、特定ユーザーの発言履歴を全て検索する方法はChatworkから公開されておらず、発言履歴を見ることはできないと思っている方が多いようです。
管理しているグループチャットが多すぎて、どのチャットでどんな内容で発言したか覚えていられないという方は他にも多くいると思うので、そんな方向けに自分の発言履歴や自分宛のメッセージをそれぞれ検索する小技を紹介します。
自分や他人の発言履歴を見る方法
Chatworkにはスマートフォン版アプリもあるのですが、こちらはPC版のブラウザとアプリでしかできない方法です。(2019年7月10日現在)
まず、チャット画面の上部にある「チャット名、メッセージ内容を検索」ウィンドウに句点「。」のみを入力して検索をかけます。
そうすると、句点を付けていない発言も全て検索することができるので、検索ボタン右の「検索オプション」をクリックして、発言者や発言日を絞り込むことで、特定ユーザーの発言履歴を見ることができます。
これでどのチャットでどんな内容で発言したか覚えていなくても、大体の期間さえ覚えていれば発言を検索することができます。
ただこちらの方法は現在の検索エンジンのインデックスの特徴を利用したものであるため、そのうち修正されて正式に発言履歴機能が実装されるかもしれません。
自分や他人へのTO(指定)やRE(返信)を見る方法
こちらはPC版とスマートフォン版の両方で使える方法です。
チャット画面の上部にある「チャット名、メッセージ内容を検索」ウィンドウに、検索したい対象ユーザーの表示名を入力して検索をかけます。
そうすると、TOやREがついた発言を全て検索することができます。あとは状況に合わせて「検索オプション」で絞り込みをかけることもできます。
自分へのTOやREを一日の最後に検索かければ、チャットの見逃しや返信漏れも無くなるのでおすすめです。
検索アルゴリズムについて
どうして「。」で検索すると全履歴が出るのか?ですが、これはおそらく検索アルゴリズムが関係していると思われます。
こういった検索機能を作る際、大量の文章を高速に検索する必要があるため、インデックスという目次データを生成します。このインデックスを作る方法として二つのメジャーな方法があります。一つは形態素解析(morphological analysis)もう一つが「N-gram」という方式です。
形態素解析とは
形態素解析とは任意の文字列を「意味を持つ最小単位(品詞)」に分解することです。文章の内容をコンピュータに判断させる自然言語処理(NLP)を行うためには欠かせない基本技術となっています。
例えば「今日は、真夏日を記録した。」という文章を、形態素解析すると「今日」「は」「、」「真夏日」「を」「記録」「した」「。」と言う形になります。
この様に分解された品詞そのものをインデックス(検索対象目次)にすると、意味のある単語での検索ができるため、検索ノイズが少なくなります。また、助詞や助動詞などの機能語や句読点など、文章の中で一般的に使われるため検索対象として適さないものは除外して検索できるメリットがあります。一方で、品詞に分解するためには、意味のある単語を事前に辞書に登録しておく必要があります。そのため、辞書に無い新しい単語などでは、検索性能が悪化するデメリットがあります。
N-gramとは
N-gramとは任意の文字列を連続するN個の文字で分割する手法のことで、Nが1のときユニグラム(unigram)、Nが2のときバイグラム(bigram)、Nが3のときトライグラム(trigram)と呼ばれます。このN-gramを使って検索インデックスを作成する例を見てみましょう。
例えば「今日は、真夏日を記録した。」という文章を、バイグラムでインデックス作成すると、「今日」「日は」「は、」「、真」「真夏」「夏日」「日を」「を記」「記録」「録し」「した」「た。」と言う形になります。
N-gramでは、N文字以上の文字列について検索漏れがなくなるというメリットがあります。一方で検索ノイズが多いというデメリットがあります。例えば全ての都道府県名をバイグラムでインデックスし「京都」を検索すると「東京都」も検索対象となります。
Chatworkの検索アルゴリズム考察
当初、Chatworkの「。」で検索をすると全ての書き込みが検索対象となるという挙動は、検索ノイズが増えるものであることから、N-gramによる実装が関係しているのか?という仮説を持ちました。そこで調べてみると、Chatworkでは2014年ごろから検索機能にAmazon CloudSearchを採用している様です。Amazon CloudSearchは基本的には形態素解析をインデックスに利用しているため、当初の仮説とは異なる結果でした。
今回紹介した一つ目の小技「。」による全書き込みの検索はストップワードに設定されている品詞に何か原因があるみたいです。句点「。」以外に2バイトの閉じかっこ”」”でも同じ様な挙動が行われます。
二つ目の小技、人物名の検索についてはおそらくN-gramの挙動です。チャット投稿のうち、名前や会社名については形態素解析のインデックスが効きにくいため、ここはN-gramで処理をしているのでしょう。確かに名前の一部(山田太郎であれば「田太」)で検索をしてみても検索結果に出ていますね。
Chatworkでは日々数億以上のメッセージ検索が行われるため、レスポンスや可用性を高めるためにAmazon CloudSearchを導入したそうです。この様なユーザービリティへの配慮が今のChatworkの根強い人気に繋がっているのかも知れないですね。
Chatworkには他にも便利な技がたくさん!
Chatworkをコミュニケーションツールとして利用することで、普段のコミュニケーションのログが残るので、過去にどんな議論が行われたかや問題が起きた時にどうやって解決したかを見ることができて非常に便利です。また、自分の発言を遡ることでどの時間に何をしていたかが分かり、日報を書く際にも大いに役立っています。
今回紹介したもの以外にも、ChatworkにはAPIを使って届いたメールの内容を自動で通知する方法や、Googleスプレッドシートで更新された情報を自動で通知する方法など、業務効率がアップする技がたくさんあります。
また、Zapierという外部サービスを使えばノンプログラマーの方でもいろいろな業務が自動化できるので、次回はそんな業務効率アップに関する技を紹介していけたらと思います。