🗳️

チームにGrowiを導入してから1年が経った

2020/11/26に公開

はじめに

今の会社に新卒で入社してもう6年が経ちました。
業務では主に、フロントエンド をReactReactNativeTypescriptで開発しています。
※部署やチームによって扱っている言語は様々で、異動やスポットで加入した際はVueやら.NETやらSalesforceやらで開発をしたりもしました。

入社した頃は、正直なところExcel至上主義な雰囲気で 「仕様書20201125v1.xlsx」 なんてファイルがゴロゴロしていたりもしました。
ドキュメントやコードの管理方法なんかもバラバラで、酷いところだとファイルサーバに直置き。あとはSVNVSSが多く、一部でPukiWiki、ちょっとトレンドに敏感な人がいるチームは早々にGitlabを入れてWikiで管理。といった感じでした。

そんな状態から段々と「しっかりドキュメントを管理しましょう」といった空気になり、扱いやすいツールは何かとあれこれ試行錯誤した結果、Growiを導入することにしました。

今回は、自分が所属するチームにGrowiを導入し約1年が経ったので導入方法と、その結果どういった変化が生まれたかを記事にしたいと思います。

そもそもGrowiとは?

CrowiというオープソースのWikiツールがあります。
サーバを用意すれば無料で利用できる優れものです。
このCrowiを拡張したのがGrowiです。

S3にデータを保持するのが推奨とのことですが、クラウドにデータを置きたくなかったのでDBとしてはmongoDBを扱うことにしました。

資料は任意の階層に格納されるため開発/言語/Javascript/フレームワーク/React保守/○○システム/2020年/対応ログのように好きなように構造を決めることができます。

セットアップ方法

以下の作業は済んでいる前提で話を進めます。

  • Dockerのインストール

下記の手順は/opt/dockerに環境構築を行う場合の例になります。

作業ディレクトリを作成+Gitからクローン

mkdir -p /opt/docker
cd /opt/docker
git clone https://github.com/weseek/growi-docker-compose.git
cd growi-docker-compose

設定の変更

docker-compose.ymlファイルを編集します。

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: ./Dockerfile
    ports:
      - 0.0.0.0:3000:3000 
    links:
      - mongo:mongo
      - elasticsearch:elasticsearch
    depends_on:
      - mongo
      - elasticsearch
    environment:
      - MONGO_URI=mongodb://mongo:27017/growi
      - ELASTICSEARCH_URI=http://elasticsearch:9200/growi
      - PASSWORD_SEED=zennzenn  # SEED用の文字列(任意の文字を設定)
      - FILE_UPLOAD : 'mongodb' # ファイル添付の保存先をmongodbにする

起動

正常に設定が完了していれば下記コマンドで動作します。

docker-compose up -d

以下のような画面が立ち上がれば成功です。
マスクしてあるところに チーム名(管理者でログイン後に設定可能) が入ります。

growi-setup

使ってみて感じたこと

以下、実際に使ってみて感じたことです。

Markdownは神

Growiを導入する前から使っていたSVNPukiwikiも、あれはあれで良いものだと思いますが、やはりMarkdownで記載できると色々と捗るなと思いました。
キャリアパスによってはMarkdownを全く使ったことがない人もいたので、そのあたりのフォローが大変でしたが後述の「プレゼン機能」なんかにも救われて、どうにか定着させることができました。
デザインですが、BootstrapPlantUMLに対応しているため、ちょっとした図形や簡単なスタイルなら画像挿入をしなくても対応できます。

また、MarpのようにMarkdownから何かしらのファイルを生成するツールとの親和性も良く、業態に合わせて柔軟に扱うことができます。

ちょっとしたメモとしても使いやすい

もともとメモや議事録はMarkdownで書いていたので、Growiのユーザページ配下にYYYYMMDD/XX打ち合わせメモといった形で記録するようになりました。
プレビュー機能も付いているので、その場で確認したいことは画面共有しながら対応できて便利でした。
階層を後から変更することもできるので「個人的なメモとしてざっくり書いておいて」後から「清書して正式な資料として別階層に移動」といったこともできます。

プレゼンテーション機能が便利

本家Crowiに備わっているかわかりませんが、プレゼンテーション機能というものがあります。
現在表示しているページを項目ごとにスライド形式で表示してくれる機能ですが、これが非常に使いやすかったです。
というのも、チーム内で技術的な勉強会を開くにあたって予め作成しておいた資料をそのまま使い回すことができたからです。
勉強会後は資料ページにメンバーからのフィードバックをコメントとして書いてもらうこともできたため、開催側としても非常にありがたかったです。

バックアップは自動化した

保存先にS3を使っている場合できるか分かりませんが、バックアップを自動化しています。
内容としては、毎日mongoDBdumpを取って所定の場所に一定期間格納するという簡単なものです。

閲覧制限がちょっと難あり

Growiでは記事の閲覧制限をかけることができます。
「リンクを知っている人」や「自分のみ」の他に「グループのみに公開」というものがあります。
これは例えば「正社員のユーザだけのグループ」といった感じで自由にグループを作れるのですが、この制限をかけるグループを複数指定できません。
なので「正社員」と「アルバイト」という2つのグループに対してのみ閲覧できるようにしたい場合は、両方のメンバーを内包したグループを1つ作る必要があります。
※今現在使っているバージョン(v3.6.7)の話のため、最新版では解消されているかもしれません。

どんな変化があったか

導入してからだいたい1年ぐらい経過した時点での変化です。
大きくは以下2点だと思います。

ドキュメントに書き起こす頻度が上がった

やはり簡単に書けるという効果が大きいようで、導入前はちょっとした作業メモなら個人の端末にxxx作業.txtとった感じで残されるだけだった情報がGrowi上がってくるようになりました。
ちょっとしたメモでも、新入社員や異動してきて間もない人にとってはありがたい情報のようで「Growiで検索したら情報が出てきた」といった声も聞こえるようになりました。

情報が一か所に集まった

元々使っていたツールに不満があるケースが多かったようで、そこまで啓蒙活動をせずともGrowiを使うということが定着しました。
その結果、分散されていた資料が集まってきたため、アクセスがしやすくなりました。
※基本的に社内ツール的な位置づけのため、外部の方とやり取りするような資料は対象外となっていることが多いです。

今後やっていきたいこと

続いて今後の展望です。

資料の重複への対応

初期の運用時にあまり細かくルールを決めていなかったため、同じような内容の資料が別階層に書かれることがしばしばあります。
例えばAチーム/開発環境セットアップ/NodeインストールBチーム/技術資料/Javascript/Node/セットアップのような感じです。
現在は「技術系資料は共通/技術資料/の下にまとめる」といった運用にしていますが、それでも重複が見られます。

※特にNode周りが顕著で、人によっては「Reactの開発環境を作るにはNodeは不可欠だから、一緒にインストール手順を書こう」といった感じで気を利かせてReact/初期セットアップに書いてくれたりしますが、そこは既に作られているNode/インストールへのリンクを貼るだけに留めてほしいところです・・・

検索した時に同じような情報が引っかかってきたり、書かれている内容が古かったりするのでこのあたりの対応をどうすべきかが検討事項です。

溜まってきた資料の整理

1年で1000ページ強の資料が作成されました。
今後はアクセスのしやすさを求めようと思います。
具体的にはGrowiのタグ機能を使って検索の利便性を向上させたり、年末の時間を使って資料の階層を整理しようかなと思います。

まとめ

今回はGrowiを導入して、チーム内の資料管理に活用した内容を記事にしました。
Growiはナレッジベースとしてはなかなか優秀で、大きな問題もなく運用できていますし、
さらに使い勝手が良さそうなツールに切り替える際もMarkdownでエクスポートできるので、移行がスムーズになるのではないかと思っていたりもします。

上記の閲覧制限の話等、ちょっと取っつきにくいところもあるので、もし導入を検討されている方がいましたら参考になるかなと思います。

Discussion