バイセル Tech Blog

バイセル Tech Blogは株式会社BuySellTechnologiesのエンジニア達が知見・発見を共有する技術ブログです。

GASとFirebaseのRealtime Databaseを使ってConfluenceの定例資料を自動で準備してみる

バイセルテクノロジーズで開発部の松榮です。

私がこの会社に入って最初に言ったのはドキュメントを残す場所ってありますか?というと事でした。
最初はQiitaやesaなども検討に上がりましたが、私ともうひとりの同僚がConfluenceを利用した事があるユーザーだったのでそれで決まりました。
そこからは開発ドキュメントやその他のナレッジデータをコンフルへ集約し始めています。

またMTGの資料もConfluenceで準備する事が多く、定例なども開催するのですが資料の準備と出席者に通知が手でやるには面倒だったので自動化した内容を紹介します。

f:id:bst-tech:20201211085927p:plain

 

定例資料の準備 

組織が増えたりする事で定例MTGなども出来てきました。
当初は毎週参加者向けにMTG資料を用意して記入を促すという事をしていました。

幾つかの定例を主催している状態だったり、参加する立場だったので手で準備をしていましたが、忙しい場合には資料の準備が間に合わずMTGに資料準備無しで突入するという事が起こったりするのでMTG自体も非生産的な場となってしまう事を懸念しました。

何より自分が毎週資料をコピーして次の資料はこちらです。というアナウンスが非常に面倒だった為、非効率を無くしたくて今回の自動化に着手しました。

定例資料の自動化

実は前職でも同様の自動化は既に行っていたのですが、scriptを置いてきてしまったのでまたイチから作る羽目に。。。

今回の要件はシンプルで

  • 週次の定例資料を前回資料をベースにコピーして作成
  • 該当する定例に属するslackのchannel資料のURLを流す

特に今回は各種定例資料に関する設定情報をchannelと紐付けるという事が必要そうなので、DB的に情報を格納する場所が必要です。

構成はこちらの感じ

f:id:bst-tech-admin:20190423143915p:plain

  • GASのイベントトリガーで発火
  • GASからはfirebaseのデータを参照
  • ConfluenceのAPIを叩いてページを取得&作成
  • Slackへ通知

流れは至ってシンプルです。

ただ、なんでfirebase を使ってデータ取りたかったのかと聞かれると、その時は何となくfirebaseのrealtimedatabaseが使いたかっただけでした。

よくあるのはgoogle spredshetにデータを保存するというのはよくあるパターンかと思うのですがせっかく作るなら何か一つ新しい物を使いたかったという動機です。

実装のポイント

こんな簡単な構成ですが幾つかポイントがありました。

GASのオンラインエディタが残念すぎる

GASのオンラインエディタはとてもじゃないですが何かを書くという環境ではないです。
この問題はclaspを利用することでローカルでコーディングしたものをGASへ反映させることが出来ます。

github.com

利用は簡単なのマニュアル参照

コンフルのにはコピーAPIが無い

 UI上ではコピーができるのですが、APIにはコピーが無いためGETしてCreateする必要がありました。

というのもページ編集モードで実際には添付ファイルが無い場合には編集が出来なくなってしまうというバグなのか仕様なのかがありました。

APIでページをcreateするときに添付ファイルも作り出す必要があるのですが、GASだけでは前回の資料から添付ファイルを取得してUPするという面倒さがありました。

これに関しては前回資料をGETした際に正規表現で添付ファイルに関する記述を全てカットする方法で逃げています。
(全部コピーすると無駄に容量もとられるので結果的にはこれで良かったかなと思っています)

realtimedatabaeの良さがあまり活かせていない

realtimedatabaseのウリはdataの更新などをhookにトリガーできるという事かとおもいます。
それが、ただの入れ物になっているので非常にもったいない感がありますが実際に利用することでマニュアルを読みどんなポテンシャルをもってるのかなどがわかった部分でもあります。

今は単純に設定データとして利用しています。
というかこの構成ならgasである必要が無かったのかもしれません。。。

設定の中身は実行するタイミングや定例資料の親idなどを保持しています。

f:id:bst-tech:20201211085404p:plain

まとめ

そもそもこの仕組みを作ったのも入社後まもなくなので
既に1年以上は運用されているのですが、個人的には今でも助かるなーと思っています。

定例の当日のリマインドと定例後には翌週の資料を用意するという2つの通知があります。

スムーズな打ち合わせの為にも資料の準備が必要です。
細かな事ですが毎週同じように手で準備するのは非常に手間です。

自分は中々コードを書く事もないので、自分の業務効率化という名目で片手間には作業をしたりしています。

こんな些細な改善ではありますが、日常の不便をより快適にしていければと思っています。

 

バイセルではリアルな業務改善や楽しんでコードを書きたいと思っているエンジニアを募集しています。