スプレッドシートを「データベース」として使う5つのメリット
どうも、エンジニアのgamiです。
僕は普段の仕事ではPLAIDのCustomer Engineerとして働いています。PLAIDにおけるCustomer Engineerとは、主には顧客とプロダクトの間に立ってその間を取り持つような、ジェネラリストな役割です。人間とシステムの両方に向き合って、データ設計をしたり、施策を実装したり、ドキュメントを書いたりしています。
そういった経験を積んでいると、「この業務を効率化したい」みたいな相談が社内の他のメンバーからよく来るようになります。それも、情シスやコーポレートエンジニアほどしっかりした開発をするわけでもなく、「まず簡易に自動化を試したい」とか「とりあえず直近数ヶ月をしのげればよい」みたいな軽めの要望が来ることが多いです。こうした差し込み業務には(もちろんできるだけ協力はしたいですが)あまり時間をかけてもいられません。
そんなときGoogleスプレッドシートに助けられることがよくあります。「社内メンバーが使う簡易システムを1日で作る」みたいなときには、わざわざ本格的なデータベースを用意するほどでもありません。Googleスプレッドシートを簡易的なデータベースとして使うことで、すぐに柔軟なシステムを作ることができます。
今回は、普段何気なく使っているGoogleスプレッドシートを業務システムの一部として使う可能性について紹介します。
スプレッドシートに小さなログを貯める
スプレッドシートが絡む自動化の事例を2つほど紹介します。
1つは、社内からの申請などをスプレッドシートに蓄積する自動化です。
うちの会社では社内でSlackを使っており、Slackのワークフロービルダーを使った申請フローを採用しているケースがあります。よく発生する定型的な社内申請については「このchannelのワークフローから申請してね」というルールにしています。いちいち人間がヒアリングしなくていいので楽ですね。
社員が入力した申請内容は、Slack公式の連携機能によってスプレッドシートに蓄積されるようになっています。
一般的に、商用データベース製品は大量のデータやトランザクションを高速かつ正確に扱うことに長けています。一方で、このような社内業務の自動化で使うには少しオーバースペックです。社内メンバーからの申請は多くても1日数件くらいしかありません。こうした小規模なデータを扱うのであれば、まずはスプレッドシートで十分と言えます。
本格的なデータベースではなくスプレッドシートを使うメリットは3つあります。
1つは、料金が安いことです。個人利用であれば無料で使えますし、会社でGoogle Workspaceを使っていれば追加料金無しで使うことができます。
2つ目は、データの閲覧や修正が楽であることです。社内業務に関わるメンバーは、当然エンジニアばかりではありません。一方で、データベース製品の多くはそのデータの中身を確認するだけでも一苦労です。専用のクライアントソフトウェアが必要になったり、SQLなどのクエリ文を記述する必要があったりします。スプレッドシートであれば、URLをブラウザで開くだけで全てのデータを閲覧、編集することができます。
3つ目は、権限管理が楽であることです。社内の申請データの中には、特定の社員には見せたくないものや、一部の担当部署しか編集を許可したくないものがあります。これもGoogle Workspaceを日常的に使っている前提にはなりますが、スプレッドシートであればGoogleアカウントやグループをGUIで選んで権限の付与や剥奪が簡単にできます。
スプレッドシートに格納したデータは、単に人間がそのまま見るだけではなく、分析に使ったり別のシステムや自動化フローから呼び出すこともできます。たとえばZapierを使った自動化の中では、特定のシートへのレコード追加を検知して別のサービスにデータ連携したり、逆に別のサービスから連携されたデータを元に特定のシートのレコードを検索してその結果を戻したりすることもできます。便利ですね。
スプレッドシートが大量のAPIを用意してくれているからこそ、こうした自動化が実現できるわけです。
スプレッドシートで施策の入稿をする
さらに踏み込んだ事例は、スプレッドシートをサポートやマーケティングなどの顧客向け施策のデータソースとして使うというものです。
たとえばSaaSプロダクトの顧客サポートをしていると、一部の顧客群だけに重要な案内メールや画面内ポップアップを出したいことがあります。もちろんよくある通知についてはプロダクトの機能として実装すべきですが、開発リソースは常に足りないので、通知の仕組みをプロダクトの外部にサクッと実装したいケースがありました。
具体的には、通知を作成したい社員が通知先の顧客リストと通知内容をスプレッドシートに入稿します。そのスプレッドシートの内容は、事前に組まれたジョブで定期的に読み込まれ、通知用のSaaS(弊社の場合はKARTE)に連携されます。
こうした自動化でスプレッドシートを使うメリットは2つあります。
1つは、入稿用の画面を新たに作らなくていいことです。真面目に考えると、通知内容を社内メンバーに入稿してもらうのであれば、入稿用のデータ入力画面を開発することになります。もちろん前述のようなSlackワークフローのフォームを使ってもいいですが、顧客リストのように件数が不定なデータの入稿には不向きです。スプレッドシートを使うと、入稿ルールさえ決めておけばスプレッドシートの画面を柔軟なデータ入稿画面としてそのまま利用することができます。
2つ目のメリットは、スプレッドシートの内容をそのままGoogle BigQueryのSQLから抽出できるということです。これも会社に依りますが、僕がいる会社ではBigQueryを全社的に使っており、様々なデータが社内BigQuery上に溜まっています。驚くべきことに、BigQueryではスプレッドシートのデータに対してBigQueryで使うのと全く同様のSQLでデータ抽出をすることができます。BigQueryに溜まった大量のデータと手元で編集した手触り感のあるスプレッドシート上のデータを、1つのクエリで組み合わせて扱うことができます。これは少しデータを扱ったことがある人なら誰でもわかる、非常に強力な機能です。Googleさん、神機能をありがとうございます。
スプレッドシートから広がる世界
ここまで、スプレッドシートを使った2つの自動化事例を紹介しました。
これらの事例からもわかるように、スプレッドシートはシステムと人間の距離をグッと縮めてくれます。本格的なデータベースを使う場合、その中のデータを見るのも弄るのも、一筋縄ではいかなくなります。スプレッドシートであれば、溜まったデータを見るのも間違ったデータを修正するのもサクッと簡単にできます。それでいてスプレッドシートはAPIが充実しているので、外部サービスとの連携も柔軟に組むことができます。我々が「手元の作業ファイル」だと思っていたものがそのまま「データベース」として外部サービスと直接つながるというのは、まさに感動体験といえます。
別の見方をすれば、「手元の作業ファイルがすぐに外部とつながる」というのはSaaSならではの価値であるとも言えます。たとえばデスクトップアプリケーションとしてのExcelは、あくまでもPC内のファイルを操作するものでしかありません。
一方で、スプレッドシートを始めとするSaaSプロダクトは、もともとサーバー上にあるデータを編集するように作られています。クラウドサービスだからこそ、作業している最中から外部連携するための準備が整っているといえます。
みなさんもぜひ、スプレッドシートを使った簡単な自動化や効率化を試してみてはいかがでしょうか?スプレッドシートをSlackやZapierと組み合わせることで、かなり色々なことができるということに気付けるはずです。
ここから先は
仕事を楽しくするデジタルリテラシー読本
【初月無料】デジタル時代の歩き方について考えたことを発信します。ソフトウェアの時代とは何か。エンジニアの頭の中はどうなっているのか。NoC…
サポートをいただけると、喜びドリブンで発信量が増えます!初月無料のマガジン『仕事を楽しくするデジタルリテラシー読本』もおすすめです!