Box Content APIとAWS Lambdaで議事録ファイル自動生成

記事タイトルとURLをコピーする

技術2課の白鳥です。

ついに AWS Summit Tokyo が始まり、本エンジニアブログも関連記事で賑わっています。一方、実は Box World Tour 2016 Tokyo も近づいてきていますので、この記事ではあえてBoxの話をします。

はじめに

サーバーワークスでは、業務で使用するファイルの保存・共有にBoxを使っています。Boxは、主に法人向けに提供されている、クラウド上にファイルを保存するサービスです。企業がもつ機密情報を保存するにふさわしいセキュリティ機能(例1例2例3)と、モバイルデバイスとの連携などの利便性(例1例2)を兼ね備えたサービスです。さらに、APIでの操作ができるため、他のSaaSやAWSなどのクラウドと連携させることができます。この記事では、Box, AWS, Slackの3つを組み合わせて、週次定例会議の議事録ファイルの作成を自動化した例を紹介します。

議事録準備における課題

サーバーワークスでは、会議の議事録には共有や同時編集するのに便利なBox Notesを使っています。技術2課では、毎週金曜日に週次定例会議を行っていまが、その議事録もやはりBox Notesです。便利なBox Notesではありますが、毎週の会議のために新規ファイルを作成するとなると、以下のような課題がありました。

  • キーボードショートカットでのファイルコピーができない

フォーマットを使いまわすため、議事録準備の際には議事録のテンプレートファイルをコピーします。しかし、BoxはブラウザからGUIで操作するため、Ctrl + C やCtrl + Vによるファイルのコピーができません。よって、GUIの操作でファイルを探し、コピー先のフォルダを指定してコピーするという数段階の手順を踏むことになります。一部ショートカットが提供されている操作もありますが、日頃からショートカットを使いこなすエンジニアたちにとってはまだ手数が多く感じられるようです。

  • 課員への通知が必要

議事録には、会議の前に事前に記入する部分があるため、ファイルを生成したら課員にリンクを通知する必要があります。手動でファイルを用意する場合、ファイルへのリンクも手動で生成し、Slack等でペーストして通知する必要がありました。

  • たまに忘れる

議事録の準備はローテーションで当番を決めて行っているのですが、やはり人が行う作業ですので、忘れてしまうことがあります。 要するに「めんどくさいし忘れる」ということですね。面倒なことは自動化すればよいのです。ということで今回は、AWS LambdaからBox Content APIをたたいて、議事録Box Notesの作成を自動化してみました。

構成

今回のシステムの構成図を以下に示します。

regular-boxnotes

構成図にしたがって、処理の流れを説明します。(2) ~ (5) が OAuth 2.0 のアクセストークンを更新するための処理、(6) ~ (7) が Box Noteをコピーするための処理、(8) ~ (10) が Box NotesのURLを生成し、Slackで通知するための処理になります。

(1) 毎週、技術2課の週次定例会が終わるころにLambda関数が発火

(2) DynamoDBより、Refresh Token, Client ID, Client Secret を読み出す

(3) Access Token の更新をリクエスト

(4) 新しい Access Token, Refresh Tokenを発行

(5) 新しいAccess Token, Refresh Token を DynamoDB に保存

(6) Box Note のコピーをリクエスト

(7) テンプレートの Box Notes を、別名でコピー

(8) Box Notes の共有URLをリクエスト

(9) 共有URLを発行

(10) 共有URLをSlackへ通知 これらの処理が正常に動作すると、以下のような通知が Slack の技術2課の channel に来ます。 slack_memo_bot

自作したくなった読者の皆様に贈るリンク

  1. The Content Platform for Developers | Box このページからbox連携アプリづくりをはじめます
  2. Box Developer Platform APIのコマンド一覧です
  3. Box Token Generator Boxアプリの Redirest URI として設定すると、Access Token, Refresh Token を表示できます
  1. の Box Token Generator について補足しておきます。Boxはアプリケーションのユーザ認証をOAuth 2.0で行うため、初回 Access Token を Redirect URI に向けて発行します。しかし、今回のようなサーバレスな構成では初回 Access Token を受け取れないため、代わりにBox Token Generatorを使う必要があります。Box Developersから公式にリンクされているので、怪しいアプリではないと思いますが、外部アプリに有効な Access Token を保持させないようにするために以下の2点を実施した方がよいと思います。
  • Access Token, Refresh Token を入手できたら、Redirest URI の設定から Box Token Generator を外す
  • すぐに Access Token を更新し、古い Token を無効にする

AWS, Box, Slackあたりを組み合わせると、他にもいろいろできそうです。面白いものができたら、またこちらで共有します。