社内での問い合わせ管理にQ&Aシステムのススメ

この記事は [OPENLOGI Advent Calendar 2017](https://qiita.com/advent-calendar/2017/openlogi) の24日目（遅刻！）として、また、実際にこのシステムを実運用に導入すべく書かれました。

## したいことと書いていること
* 重複しがちな業務関連の質問・運用対応をうまく管理したい
* Q&Aを使ってみることを検討する（wiki / ドキュメント系サービス / チャットサービスではなく）
* オープンに利用できるQ&Aシステム「Scoold」を指標に、既存システムとQ&Aシステム利用の是非を評価する

……という訳で本文です

## 同じ質問が何度も発生するのはコスト

私たちは日々コードを書いたり、数値として取得できているサーバーの状況を監視してトラブルに対応するだけでなく、もっとアナログに、サービスを使ってくださっているユーザーの皆さまや、その皆様と直接やりとりをしている社内の担当者から様々な質問・要望にお応えしています。


そして実はあなたと同じ質問を、隣の人が既にしていたことに気づいていなかったりするのです。
そして実はあなたがされたのと同じ質問を、隣の人が既に調べて答えていたことに気づいていなかったりするのです。

ここにある無駄を何とかしたい。

## すでにやっていること

1. 自動化・システム化して根本から対策
    * 私たちはシステム屋なので、コストが見合うならこれがベストですね
* FAQ・マニュアルを作る
    * システム化が見合わないorまだ手が回ってないようなものについては、FAQやマニュアルを作成し、それを見ればなんとかなるように文書整備しています。
* 過去に類似の対応がないか探す
    * この手のやり取りは、質問・要望の時点で原則文書化されており、まとめがなくても、過去のログを正しく探せば類似の対応のログを発見できることは多いです。

## それでもまだ困ってること

上記三段階で、全体的なフェーズを一通りカバーできているような気になるのですが、実は結構粗があります。

1, 2のフェーズまで移行してしまえばいいのですが、そうなるのは「ちょっと困ってきた」からこの様になっているんですね。
出来ればこの「ちょっと困った」を通らずに解決したいですよね。

また3のログについても、複数の問題があります。それは

* マイナーバージョンが発生する
    * ほぼ同内容だが細部が違う作業ログがたくさん生まれ、それらを包括的に纏める機会がなかなかやって来ない場合があります。
* ミスが遺伝する
    * ひとつひとつのログは、1回限りなので対応にミスが混ざるとそれを検証する機会がやってきにくくなり、ミスが遺伝していきます。

## どうやって対応するのか
それぞれの投稿に対してvoteで重み付けをするQ&Aのシステムを使ってみよう！

* やり方
    * その投稿を利用したらvoteするだけ！

これによって期待することは以下の通り。

* 登場頻度の多い質問・要望が自動的に上位に上がってくるので、「困る」前に対応すべきものが可視化される
* 同じログをみんなが参照するので、元投稿をブラッシュアップする動機が生まれる
* よく見られるものが単純に見やすい位置に来る

## SCOOLD
というわけで、Apache2.0で提供されている[SCOOLD](https://github.com/Erudika/scoold)で、今回の問題に向かってみようと思います。

こちらはスウェーデンのErudika社が提供しているQ&Aシステムで、同社の提供するparaio.comというバックエンドサービスと併せて利用すると、とても簡単にQ&Aシステムを構築できます。

バックエンドのparaもApache2.0での提供なので完全に自前で利用できるのですが、今回はまだ様子見なのでparaio.com上で起動してみます。
動かすだけならメチャクチャ簡単です。

### paraio.comでバックエンドの準備

アカウントを作って……
<img width="997" alt="アカウント作成.png" src="https://qiita-image-store.s3.amazonaws.com/0/26587/95519d4e-e680-774d-f8a1-14fc286dbb4f.png">

アプリを作って……
![アプリの作成.png](https://qiita-image-store.s3.amazonaws.com/0/26587/4b0d488d-a26c-bfc7-4ee2-775dc78e1031.png)

キーを手に入れる
<img width="997" alt="バックエンドできた.png" src="https://qiita-image-store.s3.amazonaws.com/0/26587/c94d4cf6-2750-f68c-a27f-716a9a859805.png">

### SCOOLDをmac上で動かす

こちらもあっという間に終わりますが、

* https://scoold.com/ からjarファイルをDL
* 入ってなければJDK8（**9だとうまく動かないので注意**）を導入
* 例に従ってapplication.confを作成
* `java -Dserver.port=8000 -Dconfig.file=./application.conf -jar scoold-*.jar` （**ドキュメント通りのオプション順だと、mac上ではうまくいきません。順番変えましょう**）

これだけ。

質問して……
<img width="827" alt="質問する.png" src="https://qiita-image-store.s3.amazonaws.com/0/26587/c8dde932-ae49-d641-19dc-4a828326e712.png">

回答して、voteもして……
<img width="836" alt="回答をもらう.png" src="https://qiita-image-store.s3.amazonaws.com/0/26587/aa9d80da-3fa6-9c47-eec4-7542143b813e.png">

よく参照されている順に並ぶ
<img width="776" alt="vote順にならぶ.png" src="https://qiita-image-store.s3.amazonaws.com/0/26587/f9cf673a-4395-8d5e-4975-0ed5a18c0a16.png">

とまあ実にお手軽に出来上がりました。

### 何とかしたいところ

しかし何もかも都合良くは行かないものです。
元々公開のサービス前提（というかStackOverflowのクローン）として開発されているので、我々の用途とは合わない部分が幾つかあります。それは、

* 自分の投稿にvoteできないこと
* 複数voteできないこと

この2点です。私たちは身内でのみ使う前提なので、必要ならどんどんvoteして順位を上げていきたいわけです。

……といったところでアドヴェントカレンダーを外れて、この先、投稿を分けて少しずつカスタマイズを進めて行きます。
本稿では、ひとまずドキュメント管理の1つのありかたとしてQ&Aサービスが利用している枠組みが便利になる局面もあるのでは？ という部分を感じていただければと思います。

ありがとうございました。