社員のプロフィールと会社の歴史を共有するためのマイクロサービス Profistory
※この記事は「富士通クラウドテクノロジーズ Advent Calendar 2017」の 21 日目の記事です。 昨日の記事は blue271828 さん の「Mackerel でゆるい Docker 監視」でした。 明日の記事は kzmake さん が「NIFCLOUD 新機能:追加 NIC」について書くようです。
ぼくが所属する富士通クラウドテクノロジーズは社員数が約 250 人おり、比較的社員数が多い会社です。
社内でよく「誰があの技術に詳しいのか分からない」「あのサービスの担当者って誰なんだろう」みたいな声が上がっていたので、
社員のプロフィールと会社の歴史を共有できる Profistory という Web サービスを作ってみました。
特長
画面イメージ
(※以降のスクショはテスト用のデータを埋め込んだものです。)
トップページ
「仕事の一覧」「社員の一覧」「タグの一覧」がサマリー表示されています。
仕事一覧 (社史)
みんなが登録した仕事の一覧を時系列で閲覧することができます。
「あの機能、誰が担当したんだろうな?」というような局面で役に立つんじゃないかと思います。
仕事詳細
仕事の詳細を開くと、その仕事に参加したメンバー、仕事にひもづけられたタグ、
それから仕事に関連する URL の情報がいい感じに表示されます。
「仕事に参加」をクリックすると、自分のプロフィールページにもその仕事が表示されるようになります。
社員詳細
自分やほかの社員のプロフィールページはこんな感じです。
自分自身につけたタグと、いままで自分が関わってきた仕事が表示されます。
SAML 認証
FJCT では社内の認証基盤として OneLogin という SaaS を導入しています。
今回、OneLogin の SAML 認証に対応したので、Slack / GitLab といった他のサービスにログインしていれば、Profistory にもログインできるという、
シームレスな SSO 連携を行うことができました。
さらに工夫した点としては、ログインするたびに SAML から受け取った情報でユーザー情報 (苗字・名前) を更新するようにしているため、
もし社員一覧のマスターに更新があったとしても、ログインさえすれば自動的に情報が更新されるようになっています。
API 対応
社内システムって API がないものが多く、スクレイピングで自動化しなければならなかったりするのがつらいので、
「せめて自分が作る社内システムは API を公開しよう」という思いで、フル機能な API が使えるようにしてみました。
詳しくはどこか別のところに書きますが、下記のような REST API (JSON 形式) が利用できます。
- 仕事に関する操作
- 社員に関する操作
- タグに関する操作
技術的な話
ソースはここにあります。
docker-compose up -d
でローカル環境上で起動させることができるので、よかったら触ってみてください。
利用技術的には、いったん伝統的な Web アプリケーション (sinatra + haml + mongoid + jquery) として作りました。
社内システムだし、とりあえず動いて、API があればいいっしょという気持ち。
あと、これを作っている間に、ruby-saml gem と config (railsconfig) gem の考慮漏れを見つけて、p-r をマージしてもらったのが楽しかったです。
おわりに
社員のプロフィールと会社の歴史を共有するためのマイクロサービスについて、プロトタイプを作ることができました。
あとはちゃちゃっと API のテスト書いて、社内に試験導入してしまいたいな。
以上、少し早いですが、よいお年を〜。