【エンジニアブログ】オープンソースソフトウェアを利用したデジタルなワークスペースを作ろう

はじめに

こんにちは、パーソルプロセス&テクノロジー システムソリューション事業部 アーキテクト職の佐藤です。

画像1


前回、datadogの記事を書かせて頂きました。

▲こちらの記事もぜひご一読ください!

新型コロナウイルス感染症の拡大に伴い、リモートワークをされている方もたくさんいらっしゃると思いますが、
私の部署でもほぼ全員がフルリモートで新しい働き方を実践しています。

世の中では新しい働き方として、
- 働く場所
- 働く時間
- 雇用形態

なんてものを目にします。

1エンジニアとしては物理的な制約を取り払うだけでなく、
dockerを使って開発環境を即整備して終わったら捨てる、クラウドIDEを使う……など「PC環境すら問わず働いていければいいなー」と考えています。

とは言え、制度やセキュリティの観点でまだまだ整備が進んでいない部分もあるので、即実践とはいかないのが悲しいところです。

さて今回は、新しい働き方の選択肢として、

オープンソースソフトウェア(以降、OSS)を利用したデジタルなワークスペースを作ろう」

というタイトルで、私のチームで構築しようとしているOSSをご紹介します。

エンジニアの方であれば日頃からライブラリやフレームワークRDBMSなどでOSSを活用されて馴染みがあるかと思いますが、今回はその中でもWEBアプリとして即利用可能なものを対象としています。

インストール手順は製品によって異なりますが、dockerイメージが用意されることもあり、「10分で構築して試して即廃棄」なんていう荒業もできるので、是非お試し頂きたいです 。

具体的な手順は、Qiitaなどに様々な方が執筆されていますのでそちらをご参照ください。


抱えている課題感

OSSの紹介をする前に語らせてください。

私が現在お仕事をさせて頂いているパーソルホールディングス グループデジタル変革推進本部には、エンジニアや企画、保守運用などの様々な職種の方が所属しています。

私たちはITを軸として、パーソルグループでバックオフィス業務を行っている社員に向けたサービスを提供しています。一方で、IT分野に関わる社員(エンジニア)にとっては十分に適切なサービスを提供できていないという面もあります。

具体的な製品名は控えますが、以下のような悩みを抱えています。

- オンラインストレージが重い&検索精度が非常に低く欲しいものが見つからない
- Excel/パワポで情報共有されるので、その場で保存しないと見つからない
- チャットツールのオマケのwikiに情報がまとまっているが、他チームのwikiが見れない、または分散していて見つからない
- チャットツールのスレッドで重要な連絡が来るが、新着メッセージに埋もれてしまう


上記を端的に表現すると、
以下のような課題があります。

- 情報が集約されていないことによる探す手間の発生
⮚ そもそも無い可能性すらあり、諦める
- 他チームが何をやっているのかわからない
⮚ リモートワークでより顕著になった

「ルールを定めて運用で回避すれば?」とも言われたりしますが、エンジニアとしては「テクノロジーを使って解決したい」と思いますよね?

前述の通り、私たちはパーソルグループの社員に向けたサービスを提供しています。
そんな私たちの役割はテクノロジーの力によってグループ全体の生産性を上げることです。

そこでOSSを使って「安く早く新しい働き方を実践してしまえばいいのだ!」というのが今回の記事の内容の出発点です。

目指すべきゴール

見えている範囲でのゴールは、下図のような業務毎のWEBアプリを構築して、最終的にシングルサインオン(SSO)する、というものです。

画像2

※上記の図では一部OSSを使わない部分があるため、必ずしも正しい配置とは限りません。

現在のプロダクト構想では、(どこまでできるかはまだわかりませんが……)以下のようなものを作ろうとしています。

- コラボレーションやナレッジ、ドキュメント作成ができる使いやすいwiki
- 目的別に絞り込み可能な連絡用掲示
- Scrumの管理ツール
- Scrum運営のコンディションを把握するためのBIツール
- 既存ドキュメントの検索精度を上げるためのクローラー全文検索エンジン


OSSプロダクト高層を実現する製品7選

ここからは、このOSSプロダクト構想を実現するために「どんなOSSを使っていくのか?」をご紹介させて頂きます。

⮚ GROWI

マークダウンで書けるwikiです。
draw.ioと連携してページ内に図形を埋めることや、マークダウンの表を簡単に書けるので、既存の文字を書き絵を貼るwikiとは違い設計書類をGROWIで作っていくという用途でも利用できます。

また、スクリプトCSSのカスタマイズ機能が付いているので、好みのデザイン/UIに変えることもできます。
プロダクトとしては実際にcss/javascriptを開発して、非エンジニアでも使いやすいUIに変更しています。


現在はあらゆるドキュメント類のWEB化を目指して、部内展開を進めているところです。
このブログも最初はマークダウンで書いていたので、原稿を渡された採用広報担当の浦野も困惑したことでしょう……


⮚ Exment

Excel代替として見つけたもので、製品として使いどころは多々あると思います。
ですが、非エンジニアが頑張ってテーブルを作るのはちょっと難しいかなという印象でした。
(公式サイトのどこかにテーブルデザインはエンジニアのサポートのようなことは見たので、設計思想通りではあると思います)

一方で、作成したテーブルに対して即座にAPIを公開する機能が実装されているため、
連絡用掲示板のAPIエンジンとして利用しようとしています。

SPA用のAPIの実装って割と大変だったりするので、
認証機能付きのAPIを簡単に設定できるのは魅力的です 。


⮚ Metabase

WEBベースのBIツールです。
セットアップ5分で既存のRDBと接続してグラフ化できます。

プロダクト構想としては、後述するOpenprojectのDBに直接接続して、各Scrumチームのベロシティを即グラフ化しようとしています。


実は一般的に普及しているようなBIツールをあまり触ったことがなく、あくまでイメージですが「使いこなすまでの学習コストとライセンスが高く、使いこなせずに終わる」という印象があります。

しかし、Metabaseはセットアップが簡単で機能も丁度いいので、失敗しても1時間未満のダメージで済むんです。
(使用感もとても簡単です)

わざわざCSVExcelでグラフ化している……というような業務であればMySQLとMetabseだけで簡単にグラフが作れるので非常にオススメです。


⮚ Openproject

既存タスク管理はbacklogを利用していたんですが、
Scrumでやりたいこととはマッチしないため、Openprojectを構築して各Scrumチームに利用してもらっています。

マッチしていない具体例として

・プロダクトバックログアイテム/スプリントバックログ等の区別に工夫が必要
・タスク分解する場合、孫タスクまで作成するには工夫が必要
・カンバンはあるが親課題/子課題が混ざる

など、現在のbacklogだけでScrum運営をすると創意工夫が必要になります。

私は利用していませんが、Scrum/アジャイル開発に特化して機能が作られているようなので皆さん重宝しているみたいです。

残念ながらOSS版は機能制限があるらしく、数値(ベロシティ)の集計やグラフ化も単独ではできないのが難点です。


⮚ Alfresco

ECM(Enterprise Contents Management)と呼ばれるもので、ドキュメントを管理するためのアプリです。

裏側にlibreOfficeが入っているので、既存ドキュメントをアップロードするとPDF化してプレビューを表示できたり、
ドキュメントに対してワークフローを設定できるので、ドキュメントレビューから承認までの一連の管理プロセスでも利用できると思います。

プロダクト構想としてはGROWIを軸に据えてのドキュメント管理も担わせたいので、
Alfrescoは連絡用掲示板のドキュメントプレビューAPIとして利用しようとしています。
(例:他部署から回ってきたパワポ掲示板からAPI経由でアップロードしてプレビューのみ表示)


⮚ Fess

「5分で簡単に構築可能な全文検索サーバー」と紹介されていますが、
既存のオンラインストレージをクローリングして検索精度をあげたいと考えています。

Excelパワポも内容まで取得できるのと、裏側がElasticsearchなので、
Fessが利用できるようになれば無駄に探す時間は減ると思います。

問題は、負荷が増えるのでファイルサーバーやオンラインストレージをクローリングさせてくれる望みが薄いことです。

どう頑張ってもファイルベースでのドキュメント管理からは脱却できないと思うので

・新しいドキュメントはGROWIの中に書く、
・レガシーなドキュメントは既存のまま、検索精度だけを圧倒的に向上させる

が目標です。


⮚ Keycloak

認証認可周りは私も知識が薄いので、詳しい説明は割愛させて頂きますが……
これまでご紹介させていただいたアプリ群をシングルサインオンさせるための重要な機構になります。

マイクロサービス的にプロダクトを構想しているので、
各サービスで同じID/PWを利用できるのは、UX観点で非常にプラスになると思います。
最終的にはkeycloakと会社ADを連携することで、全ての業務ツールを1つのID/PWで利用できることを目指しています。


機能全体は試せていませんが、REST APIでの認証も対応しているらしいので、
マイクロサービスの認証基盤としてOSSをそのまま利用できるのは工数でも非常にメリットがあると思います。

マイクロサービスとkeycloakについては、以下の記事が非常にわかりやすかったです。

最後に 〜 一緒に働く仲間の生産性を高くしたい! 〜


本当はSaaSを利用したいのですが、様々な制約で利用が難しいのが実情です。
そこで安く早くデジタルなワークスペースを構築するにはOSSを利用することもベターな選択だと思います。

また、上記のOSSは色々な技術要素が含まれているので、インフラエンジニアではない私も苦労はしたもののそれなりに知識をアップデートできました。

コロナの影響で世界的に働き方が激変した今だからこそ、
エンジニアとして今までと違う新しい働き方を実践するチャンスと捉えて、
OSSを活用してみてはいかがでしょうか。

私としては、今回ご紹介したOSSを利用することで、一緒に仕事をしている仲間の働き方がより生産性の高いものとなるようにアーキテクトとして支援していこうと思います。

●●●


記事を最後までご覧頂きありがとうございました!


パーソルP&Tにご興味を持っていただけた方に、イベント開催情報やブログの更新情報をお届けいたします。今すぐの転職は考えていなくても少しでも興味をお持ちいただいた方は、SNSをフォローする感覚でご参加いただければと思います。