スプレッドシートとAWSLambdaで無料BI作ったぞ

スプレッドシートBIはこんな感じ

商品データとか日付とかカテゴリーを入力して、検索するとスプレッドシートベースで数値とグラフが更新される。対象データを少なくするためデータの期間は直近2年間に限定。

ミニアプリ製作サービス「Mini Apps」

内製はできない、でも外注は高い、そんな困りごとを解決するミニアプリ製作サービスです。自社アプリ延べ400社導入、業務アプリ系受託開発30件以上のIndentが最小工数でアプリ開発を実現。15万円からのアプリ開発。
Mini Apps

本案件に至る経緯

営業拠点毎のデータを「なんかいい感じ」に操作すると「ぴゃっ」って表示出来たらいいよね。という話になった。

「ぴゃっ」って・・・。

やれやれ…。けだるそうに、ペンを回しながら、僕は重い口を開いた。

「それはですね。BIでやればいいんですよ。」

「ビジネスデータをBIを使って表示する」という悪魔的発想を披露したその時・・・。打ち合わせ現場は、溢れんばかりの拍手喝采となった。会議室だけでなく、フロア全体に広がった拍手の輪は、甘美なメロディを奏でながら、東京タワーあたりまで響きわたったと聞いている。あなたにも聞こえていたかもしれない。

それもしかたない。この世の中の1%も知らないであろう真実を披露したのだから。

「わが社の命運は君に託した」
「これで売上10倍行けそうです!」
「水晶を撫でてたら経営が上向いた」
「母親の病気がなくなりました」
「モテるようになった^^!」
「VCから一兆円の資金調達完了です!」
…etc

そんな賞賛の声を軽く制止しつつ、会議を悠然と後にして。ゆっくりと椅子に座りながら僕は仕事に取り掛かり始めた。

まぁ、Tableauである。BIと言えばTableauである。そんな小学1年生並みの思考回路で、担当に見積り取ってみた。これで仕事は99%終わった。そう思った。

しかし1週間後見積りが来ると愕然とした、口をあんぐりと開けて視点は定まってなかったといってもいい。今でも左目の焦点はあってない。

「…高い…な。」

仕方がない、想定する利用方法は相当アカウントを必要とする。BIの老舗のTableauであれば、このくらいの金額は妥当である。しかしどうする…お偉方にさんざんご宣託を与えた後だけに困った。僕は「教祖ポジション」から失墜してしまうのか?

やれやれ…。けだるそうに、左腕を安全ピンで刺したり抜いたりしながら、僕は言った。

「BIをスプレッドシートで作ってみようじゃないの」

全体設計


はいということでね。早速システムの全体設計いってみようかな。

フロント=スプレッドシート

まず、BI のフロント部分、これねスプレッドシートでやります。巷ではVue.jsとかダッシュボード使われてたりするけどね。これねスプレッドシートでやります。

僕もね、Vue.js使えないわけじゃないの。うん。使えるの。でもね。これねスプレッドシートでやります。うん。

驚いた?でもね、これ始めてからおじさん血圧下がったりね。調子いいからね。うん。

POST機能=GoogleAppScript


次にGASね。これ問い合わせたい内容をチェックボックスで読み取ってPOSTするまでの役割。GASは最近V8使えるようになったね。でも書きにくいね。JS一族だからね。仕方ないよね。

検索API=APIGateway+Lambda

次にPOSTを受け取るAPI部分。ここをAPIGatewayとLambdaで書いてる。普通の複合検索で使うようなパラメータを受け取って処理。

Lambdaは、Pythonで書いて。処理はPandasでpickleにしたデータを読んだり読まなかったり。DataFrameはいいゾー。

データベース=S3+AI

最後ね。これね、一番重要。僕のことを嫌いになっても、これだけは知って帰ってほしい。アーティフィシャルインテリジェンスって知ってる?略してAIね。

知らなくても、大丈夫。ITって難しいからね。

でね、うちの用意したAIは派遣の人です。意味わかる?人間なんだよAIが。毎月、基幹システムのネットワークに入ってCSVダウンロードするの。人間がね。

この発想を思いついたときは、椅子から転げ落ちたね。誰かに発想盗まれないかな?ってめっちゃ心配になったくらいよ。脳みそを金庫にしまったから、ようやく安心して寝付けたんだけどね。

そこから更にすごいよ?GoogleコラボレートリーにCSVあげてもらって、予め書いてるコードを実行してもらうのね。上から順番にね。

順番間違えるとね。うまくいかないの。これ結構素人さんがやっちゃう落とし穴ね。

上から実行すると、あら不思議。これまでの期間のデータと統合されてpickleデータになって、S3にとんでくの。AIすごくない?

「シンギュラリティ」がウチ限定で来てるってこと。羨ましいかな?

なんでスプレッドシートでBI作ったのか?

ここまで読んで、賢明なあなたは「?」がいっぱい浮かんでると思う。

あなた「AIの理論は完璧だけど・・・他はツッコミ所(≒マウントとってボコりたい)満載じゃね?」

分かる、その気持ちよく分かる。

だからね、何でわざわざこんな構成にしたかってことを丁寧に説明するよ。いつもだったら2000円/分 請求するけどね。今回は特別無料。

その1:なんでRDS使わないの問題

あなた「なんでCSV(pickle)なんだよwwwRDS使えよwww」

それに対するAnswerはこれだね。

僕「なんでCSV(pickle)なんだよwwwRDS使わせろよwww」

こんなんで作ったらレスポンス遅いしな。そら、RDSで作るべきでしょ。でももしそれが、「運用0円」でって条件なら?答えはあるかな?

その2:Lambdaのtmpフォルダ破裂問題

あなた「え?じゃあ、一回一回LambdaがS3からHTTPダウンロードしてるの?そもそもLambdaのtmpフォルダって512MBの上限あるけど大丈夫?」

僕「大丈夫じゃないよ。キャッシュは使うようにしてるけど、遅延の一番の原因はこれ。後10年後には世界のtmpフォルダも埋まってるだろうしね。これが俗に言うIPv4枯渇問題だよね。」

そういうことね。つまりなるべくデータも小さくしないといけない。

「カリッカリにチューニングしますね!」ってC言語の人がドヤって言う、あれね!違うけど、あれだよ!

あなたがスプレッドシートBIを作るべき934個の理由

見出しには「数字」使うといいらしい。ただ934個もなかった・・・。

作って感じたメリットデメリット

ここまでだいぶふざけてきた分疲れてきたね。でも続けるよ。いいね、ここで聞いたことは誰にも話さない。シェアしない。これはお父さんとの約束だ。

通りすがりの重課金エンジニアガチ勢に、釘バットで後頭部をフルスイングされる。そんな事態は避けたいからね。こっちは幼子だっているんだよ。

だから平穏のなかで「ふふっ、、」って、あなたが笑ってくれるだけでいい。つまり静かに暮らしたい。吉良吉影だよ。かっこいいね。

一流のジョークはこれくらいにして、話戻すけど。スプレッドシートBIは、使ってみると「まぁまぁ」いい。そこら辺はメリットデメリットがやっぱりあると感じてる。

メリット:維持費がかからない

LambdaもAPIGatewayもGoogleAppScriptもAI(派遣の人)も全部タダ(※)。大企業がBI SaaS使おうとなると少なくとも数十万、高いと数百万円を月に払わないといけない。
※人件費は目に見えないしタダ

その点から見ると、スプレッドシートBIの費用感はタダ。

デメリット:やっぱりレスポンス結構遅い

S3→Lambda→Pandas演算→PythonのGSpreadでスプレッドシートに書き込みって段階でめっちゃ遅い。Lambdaのコールドスタート問題もある

今までビジネスBIで「うわ・・・QVめっちゃ遅いんですけど・・・」とか思っててごめん。って謝りたくなるくらい遅い。

でも、使う人は今どんどんコロナウィルスの影響で在宅勤務になってるくらいだしね。時間余ってるだろうし。いいよね。なんなら、レスポンス帰ってくるまで、コーヒーでも飲んでれば言いわけだから。

それが上質な時間・丁寧な暮らしだと、なんで思えないのかな。不思議だよ。

スプレッドシートBIが向いてそうな会社

ここまで読んでくれた人に朗報。以下5つからスプレッドシートBIを使うと良さそう。すごく気分が上がり↑そう↑な会社の特徴を伝えるぞ。

1. エクセル厨が多い会社

フロントがエクセルライクなスプレッドシートであることに安心感を覚える人も多い。また、BIで取り出したデータを二次加工することが、非ITの人でもやりやすいのは大きい。エクセルで全て回してるって大企業は多いと思うけど、そんな場合には合うかもしれない。

2. 運用コストゼロ(!)推奨会社

意外と大きな企業の方が、運用コストゼロでやりたいって言う要望強いかも。業務委託費は出せても継続課金系は承認フローが長いから、気が向かないっていうパターンも多いかも。

そう言う場合、スプレッドシートBIは運用コストゼロだから、宝物になる。

3. お試し部署が多い会社

Tableauで引っ掛かったんだけど、アカウント数が膨大になると結構費用がかさむ。その点、スプレッドシートはコピーすればいくらでも複製可能(※)。追加のコストもかからない。
※認証系はご自身で。

4. ほどほどのデータ量の会社

必要項目を絞れば200万〜300万行くらいは全然いけるなと感じた。ただ、時系列データが細かかったり、ディメンジョンが細分化する企業データとかだとそんなデータ量は軽く超える。ただ、事業会社の程々のデータ量ならこう言うスプレッドシートBIみたいな簡易なものの方がいいのかな。

5. 非IT企業

社内にエンジニアいるなら、Redashでやるなりすればいい。RedashもSQLだけじゃなくて、Pythonコードもかけたと思うし、早いし、いろいろなアウトプットがあって楽。

ただ、あんまりITITしてない企業だと、Redash合わない気がしてる。感覚だけど。

諦めないで!

やっぱり色んなしがらみを見渡す中で、BI SaaSを導入するってことだけでも難易度高い会社もあったりするわけです。お金の面やセキュリティ。長期間のSaaSなら無表情で情シスに刺されることもある。シャドーITを許容するわけじゃないんだけど、ビジネスの現場では「あ、、、うん。仕方ないよね」って場面は多々ある。あとBIは結局保守が大変。多分利用する人たちのデータとITリテラシーが同じじゃないから。どーせ保守が発生するなら、タダであたり散らせるスプレッドシートBIは一つの解な気がしている。

「諦めないで」

って真矢みきも言ってたし、色んな環境下にはあろうがビジネスパーソンのあなたにも諦めずに頑張って欲しく、これを書いた次第。それではアディオス。エビオス錠。

ミニアプリ製作サービス「Mini Apps」

内製はできない、でも外注は高い、そんな困りごとを解決するミニアプリ製作サービスです。自社アプリ延べ400社導入、業務アプリ系受託開発30件以上のIndentが最小工数でアプリ開発を実現。15万円からのアプリ開発。
Mini Apps

この記事に関連する記事