ガルーンポータル活用Tips #8「FAQを検索できるポータル」

目次

はじめに

中堅・大規模組織向けグループウェア「サイボウズGaroon」のポータル活用企画第8弾。
今回はGaroonのHTMLポートレットとkintoneを活用し、FAQを効率よく検索できるポータルを作成します。

kintoneの強みは、さまざまなデータを蓄積し、関係者と共有できる点です。
しかし、情報が増えるにつれて、目的の情報を迅速に見つけられないことがあります。

そんなとき、Garoonのポータルからkintoneアプリに蓄積されたマニュアルなどを簡単に検索できれば、ユーザーの利便性向上が期待できます。

この記事に紹介される内容は、Cybozu Days 2023の次のセッションで紹介されたシダックス社の事例の一部です。
発表資料もしくは掲載記事を併せて確認しておくと、よりイメージしやすくなります。
『ポータル管理をもっと楽に!クラウド版Garoonで実現する情シスのためのおてがる管理術』 (External link)

こんなときに便利です

  • 大量の情報から必要なものをすばやく検索したい。
  • 部分一致で検索したい。
    kintoneには、「部分検索ができない」などの制限があります。
    詳細は次のヘルプを参照してください。
    検索したいデータがヒットしません (External link)
  • 同義語や表記揺れも含めて検索したい。
    たとえば、アプリに「パソコン」と「PC」といった用語が混在している場合、通常は「パソコン」というキーワードで検索しても、「PC」を含むレコードがヒットしません。
    なんと今回紹介するサンプルプログラムでは「PC」もヒットします。

完成イメージ

次の動画のように、GaroonのポータルにFAQ検索パーツが配置されます。
検索窓にキーワードを入力すると、インクリメンタルサーチや部分一致検索に加え、同義語や表記揺れの検索ができます。
検索結果のリンクをクリックすると、該当ページに遷移します。

システム構成

当記事のサンプルコードのライセンス

後述に掲載されている「Garoonポートレットkintone連携プログラム」(以下、本件著作物といいます)は、シダックス株式会社より提供されたものです。
本件著作物をご利用いただくことで、利用者は次のすべての事項に同意したものとみなされます。

  1. 自社が契約する環境に対して導入し自己使用することを目的とする場合に限り、本件著作物の複製(ダウンロードを含む)、改変、翻訳、翻案を許諾します。
  2. 本件著作物の取得者は、有償無償を問わず、本件著作物および本件著作物の二次的著作物について第三者に提供(頒布、公衆送信、送信化、貸与、譲渡、再使用許諾等を含みます)してはなりません。
  3. 本件著作物は現状有姿で、何らの保証もなく提供されます。
  4. 作者および著作権者は、本件著作物に起因して生じる一切の損害について何らの責任も負わないものとします。
  5. 作者および著作権者は、本件著作物の利用方法に関するサポートは行いません。

kintoneの設定

Garoonのポータルからデータを参照させるためのkintoneアプリを作成していきます。
作成するアプリは、システム構成図に示した「FAQキーワード集」と「FAQリンク集」の2つです。
以下のリンク先から「Garoonポートレットkintone連携プログラム」をダウンロードして解凍します。
Garoonポートレットkintone連携プログラム

ダウンロードする前に、必ず「当記事のサンプルコードのライセンス」をお読みいただき、内容に同意のうえ利用してください。

解凍したファイル中のキーワード集 テンプレート.zipリンク集 テンプレート.zipはアプリのテンプレートです。
それらを利用してアプリを作成します。
作成方法は次のヘルプを参考してください。
テンプレートファイルからアプリを作成する (External link)

作成したアプリのアプリIDは、のちほど使うので、メモしておきましょう。
たとえば、アプリのURLがhttps://sample.cybozu.com/k/100/の場合、アプリIDは100になります。

フィールド名 説明
表示テキスト 検索結果に表示されるリンクのテキストを指定します。
検索用のほかのテキスト 他のキーワードを設定します。
例:表示テキストに「会社携帯をなくした」、検索用のほかのテキスに「会社携帯を紛失した」を入力すると、どちらのキーワードでも同じレコードが検索結果に表示されます。
リンク 検索結果で表示されるリンク先のページです。
例:「会社携帯をなくしたときの対処方法」を記載しているレコードのリンク
表示する組織 指定された組織だけが検索でヒットします。
表示しない組織 指定された組織からの検索ではヒットしません。

FAQキーワードアプリの説明

フィールド名 説明
正式名称 正式に使用される用語を指定します。
ほかの表現 略語や同義語などを指定します。
例:正式名称が「パソコン」で、ほかの表現が「PC」とした場合、「PCを借りたい」で検索すると、システム内部では「パソコンを借りたい」も同時に検索されます。

Garoonの設定

次は、GaroonのHTMLポートレットを利用して、検索機能を実装してきます。

HTMLポートレットで使用するファイルの準備

まずは、HTMLポートレットで使用するファイルを準備しておきます。
先ほど解凍したファイルの中のindex.html、garoon-faq.js、garoon-faq.css、garoon-faq-fix-layout.cssを使用します。
それぞれの用途は以下のとおりです。

ファイル名 必須 説明
index.html 必須 検索UIを作成するためのHTMLファイルです。
garoon-faq.js 必須 検索を実行するJavaScriptファイルです。
garoon-faq.css 必須 検索ポートレット内のデザインを実装するためのCSSファイルです。
garoon-faq-fix-layout.css 状況によっては必要 検索中に画面全体のレイアウトが動いてしまう場合に使用します。
このファイルはGaroon全体のスタイルを変更するため、他の部分で問題が起きる可能性があることに注意してください。
JavaScriptファイルの編集

garoon-faq.jsをテキストエディタで開き、次の項目を編集します。
「FAQリンク集アプリのアプリID」と「FAQキーワード集アプリのアプリID」はそれぞれ先ほど作成したkintoneアプリのアプリIDで書き換えてください。

1
2
3
4
5
/** リンク集のkintoneアプリID。 */
const LINKS_APP_ID = [FAQリンク集アプリのアプリID];

/** 代替表現のkintoneアプリID。 */
const ALTERNATIVES_APP_ID = [FAQキーワード集アプリのアプリID];
その他設定可能な項目

garoon-faq.jsの冒頭部分で設定可能なリストです。
必要に応じて値を変更してください。

変数名 初期値 説明
NUM_DEFAULT_LINKS 5 検索クエリを入れていないときに表示されるリンクの数です。
NUM_MAX_LINKS 20 表示されるリンクの最大数です。
MIN_SCORE 0.5 検索結果に表示するかどうかを決める一致率です。
0から1の範囲で指定します。
LONG_TTL 3*24*60*60*1000 ページを開いたとき、キャッシュが以下の期間よりも古ければ最新情報を取りにいきます。
初期値は3*24*60*60*1000(3日)です。
SHORT_TTL 5*60*1000 検索ボックスにフォーカスを当てたとき、キャッシュが以下の期間よりも古ければ最新情報を取りにいきます。
初期値は5*60*1000(5分)です。
ELEMENT_ID 'shidax-garoon-faq' 値を変更しないでください。

FAQポートレットの作成

以下の手順にしたがってポートレットを作成します。

  1. 「Garronシステム管理」>「各アプリケーションの管理」>「ポータル」から「HTMLポートレット」を開きます。
  2. [HTMLポートレットを追加する]をクリックします。
  3. 次の項目を入力します。
    • ポートレット名
      名前は任意ですが、今回は「FAQポータル」とします。
    • Myポータル
      「Myポータルでの利用を許可する」にチェックを入れます。
    • ポートレットの内容
      index.htmlファイルの中身を貼り付けます。
  4. [追加する]ボタンをクリックします。

JavaScript/CSSの適用

  1. 「HTMLポートレットの詳細」画面で、「JavaScript / CSSによるカスタマイズ」をクリックします。
  2. 次の項目を設定します。
    • カスタマイズ
      「適用する」を選択します。
    • JavaScriptカスタマイズ
      「ファイルの追加」からgaroon-faq.jsを追加します。
    • CSSカスタマイズ
      「ファイルの追加」からgaroon-faq.cssを追加します。
      必要に応じて、garoon-faq-fix-layout.cssを追加してください。
  3. [設定する]をクリックします。
information

cssは最初にgaroon-faq.cssのみを指定して動作確認してください。
もし、検索中に画面全体のレイアウトが動いてしまう場合は、garoon-faq-fix-layout.cssファイルをcssに追加してください。
なお、garoon-faq-fix-layout.cssはGaroon全体のスタイルを変更するため、検索ポートレット以外の部分でも表示に問題がないことを確認してください。

動作確認

テストデータの作成

kintoneアプリに次のレコードを追加します。

FAQ リンク集
レコード 表示テキスト 検索用のほかのテキスト(改行区切り) リンク 表示する組織
1 cybozu_developer_network cydn https://cybozu.dev/ja/ [自分が所属する組織]
2 kintone キントーン https://kintone.cybozu.co.jp/ [自分が所属する組織]
3 Garoon ガルーン https://garoon.cybozu.co.jp/ [自分が所属する組織]
4 Mailwise メールワイズ https://mailwise.cybozu.co.jp/ [自分が所属する組織]
5 サイボウズコミュニティ community https://community.cybozu.dev/ [自分が所属する組織]
FAQ キーワード集
レコード 正式名称 ほかの表現(改行区切り)
1 cybozu サイボウズ

以下のリストに沿って検索結果を検証します。

入力文字 検索結果 備考
network cybozu_developer_network 部分一致検索が可能であるため。
cydn cybozu_developer_network FAQ リンク集アプリでcybozu developer network検索用のほかのテキスト(改行区切り)cydnが登録されているため。
サイボウズ cybozu_developer_network FAQ キーワード集アプリでcybozuほかの表現(改行区切り)サイボウズを登録しており、内部ではサイボウズcybozuの両方が同時に検索されるため。
saibozu cybozu_developer_network 表記揺れを含めて検索できるため。

正常に検索出来ればOKです。

おわりに

以上、Garoonとkintoneを使ってFAQを簡単に検索できるカスタマイズを紹介しました。
ぜひ「誰でも使いやすい社内ポータル」を目指して試してみてください。

ガルーンポータル活用Tips

information

このTipsは、2024年10月版のGaroonとkintoneで動作を確認しています。