久々に個人開発のはなしです.
昨年(2020)の話になりますが,
- 自分が気になる世の中のニュース(野球とかグルメとかいろいろ)だけをいい感じに集めてまとめて読みたい
- その中でも特に⚾, 速報とかいい感じに通知させたい
...という目的でデータ収集と通知の仕組みを自分用のプロダクトとして構築・運用をスタートしました.
今年も上記のプロダクトをいい感じに運用しているのですが,
- 毎日見るのにGUIが欲しくなってきた
- 複数のデータソース(BigQuery, 生のCSV/JSON, Spreadsheet, etc...)を一つにまとめて見たい
- 毎日Slackなどに通知するようなモノもほしい
という要望が出てきたので, これらの要望に応えるためRedashを使うことにしました.
このエントリーでは,
- 個人開発に使える無料データ可視化・分析環境と使い分け
- 今どきのRedashの構築・運用そしてお金のはなし
- 今後どうしていきたいか
という話についてまとめます.
なお, 個人開発の話ではありますが起業したて〜大きくなる直前のベンチャー・スタートアップの実務でも使える・参考になる内容かと思います.*1
TL;DR
- 約4,000円/月(もっと下がるかも)のコストが許容できるユースケースがあればRedashを自分で持つのはアリな気がする
- いい感じのGUIと複数データソースを使うならRedash, サッとやるならData Portal, 公開していいデータはFlourishがいいと思う
おしながき
個人開発のデータ分析・可視化
本題のRedashの話の前に,
- ツールを選ぶ基準
- それぞれのツールの長所短所
をサクッと書きます.
世の中にはデータを可視化したり分析したりするツール・サービスはたくさんありますが今回は比較対象として,
この3つを紹介したいと思います.
Data Portal
Googleが提供しているデータ可視化・視覚化のクラウドサービスです.
今回Redashを構築する前はData Portalをがっつり使ってました.
上記はSpreadsheetに記録した自分のダイエット記録(詳しくはnoteを御覧ください*2)を可視化している例となりますが, これぐらいのグラフがシュッと作れちゃいます.
プログラミングも不要(必要 or 好みでクエリを書くこともできる)で,
- 無料
- BigQueryとか色んなデータソースが使える
- 公開・非公開をgmailなどで制御できる(Spreadsheetなどと同じ)
一見すると文句ないように見えますが,
- スマホの画面サイズに対応していない. 気になった時にスマホで見よう!となっても, PCサイズで出てくるので見にくい.
- プログラミング不要なかわりに, データの目盛りや細かいチューニングなどが若干やりにくい.
- 通知機能的なやつはついてない.
という欠点が気になるようになってきました.
Flourish
Flourishはイギリスの会社が出しているデータ可視化のプラットフォームです.
これもData Portal同様, 複数のデータソースをつかってグラフを書いたり可視化したりするのが得意なサービスです.
前回のエントリーでも, ダルビッシュ有さんの成績予測の可視化に使いました.
CSVファイルをアップロードして画面をポチポチするだけでこのレベルのグラフが作れちゃいます.
ウィジェット埋め込み, 画像の出力両方とも対応かつ無料でこれも凄くいい感じなのですが,
- プライベートなデータはpublic版ではできない.
- personal版(有料)は$69/月(年間契約で$55/月)と, 個人で使うのには少々お高い(参考:Flourish Pricing).
ブログやnoteに貼る画像やウィジェットはこれでメチャクチャ良さそうですが, 個人の環境として使うのにはコスト的な意味で難しいなという印象です.
Redash
以前から使っているData Portal, 今年から使い始めたFlourishと色々考えましたが,
- Data Portalは無料でいい感じだけどスマホ対応・チューニング・通知が
- Flourishは色々素晴らしいけどお金が(ry
だし困ったな...というところで最後に候補として考えたのはRedashでした.
クラウドサービスと, 自分でホスティングするOSS版があります.
RedashはWeb系のサービスを出してる会社やスタートアップで「ひとまずデータ分析環境ほしい」というときの選択肢として有名で, 私も以前構築・運用していた時期がありました.
ちなみに現職のJX通信社でもほぼ毎日使っています.
Redashは「SQLをゴリっと書いてグラフにして毎日更新する」みたいな可視化に強く,
- 複数のデータソースを使える
- Slackへの通知も楽勝でできる
- Query Resultsという仕組みで複数のデータソース結合ができる
- SQLで言うところのJOINだったりWITHみたいなやつを外部データソースと繋いでいける
- 例えば, BigQueryとSpreadsheetのデータを特定のキーでJOIN, みたいなことができる
- Pythonのコードでデータ取得・加工ができる
といった, 「かゆいところに手が届く」のも魅力だったりします.
可視化の雰囲気はこんな感じです.
クラウドサービスは$49/月と少々お高いので使うのは控えましたが, OSS版ならサーバー代だけでいいのもあり, 個人としては初めてRedashを使う決断をしました.
その他の候補について
勿論他にも, メジャーどころだとTableauやLockerなど魅力的なサービス・プロダクトがあるのですが, どれも個人で使うのにはハードルが少々高い(Tableau Publicが候補としてありえるぐらい)でした.
欲しい物をもう一度書くと,
- 毎日見るのにGUIが欲しくなってきた
- 複数のデータソース(BigQuery, 生のCSV/JSON, Spreadsheet, etc...)を一つにまとめて見たい
- 毎日Slackなどに通知するようなモノもほしい
これにピッタリフィットしたのがRedashという結論でした.
Redashを構築・運用する
というわけでRedashを立てることにしました.
以前仕事で構築した経験がある(リンク先はMac上ですがこの後GCEで立てて運用しました)とはいえ, 5年近いブランクがあったので現状を整理しつつ, 変化があったところも踏まえた上でやりました.
全体像
BigQueryおよびデータ収集のクローラー含めた構成はこちらです.
Cloud Functionsでクローラーとインポーターを稼働(トリガーはCloud SchedulerとPub/Subを利用), 結果をBigQueryに貯めてそこからRedashを使うという構成になっています.
昨年作った以下のプロダクトにBigQueryが加わったイメージです.
RedashそのものはGCE(Google Compute Engine)にVMを立てて運用しています*3.
Redash環境の構築
GCP上でのRedash構築は以下を参考にしました, 結論から言うと公式ドキュメントと紹介したQiita記事の通りやれば割と楽勝でイケます.
ロードバランサーは立ててない(立てる必要がない)ので, VM上で直接Let's EncryptのSSL証明書を仕込んでやる方法(つまり上記二つのドキュメントと同じ方法)を取りました.
Setting up HTTPS with LetsEncrypt for Redash Docker Deployment · GitHub
Google Domainsで取得した独自ドメインを使ったのでDNSもGoogle Domainsでやりました.
構成...という程じゃないですがRedashのために作った環境の全容はこれです.
個人的に気をつけたポイントとしては,
- インスタンスはケチらず
n1-standard-1
を採用. ランクを落として安くしても良かった*4が安定した運用を最優先. - ロードバランサーを立ててDNSの向け先をそっちにする(証明書も任せる)構成も考えたが, 必要性が無い割に考える点が多くなりそうだったので回避.
といったところです.
運用とコストについて
環境としては昨日立ててこれからガチ運用という感じですが,
- 当初の目標は達成できそう
- 毎日見るのにGUIが欲しくなってきた
- 複数のデータソース(BigQuery, 生のCSV/JSON, Spreadsheet, etc...)を一つにまとめて見たい
- 毎日Slackなどに通知するようなモノもほしい
- スマホでも見やすい
- チョット思いついたことをクエリ書いてグラフに...がやりやすくなった
ので今後もいい感じに使えそうです.
さて肝心のコストですが,
- n1-standard-1 を一ヶ月運用すると日本円で¥3,700〜¥4,000円程度
- 上記コストはずっとオンデマンドで使う場合の想定, これを継続利用割引(所謂リザーブドインスタンス)にすると最大20%安くなる
- うまく運用に乗ったら継続利用にして値段抑える
事ができるかなと思っています.
もっとも, Redash以外のプロダクトはタダ同然の金額で運用しているので, 月々¥4,000で済むならいいかって思っています.
これで個人開発や野球データサイエンティスト活動が捗る事を考えたら必要経費な気もします.
結び - 個人開発におけるデータ分析と可視化
というわけで, 必要になったので久々にRedashを立てた...という備忘録と共に「個人開発におけるデータ分析と可視化」における環境とコストの話を書いてみました.
今の構成で一ヶ月程度運用してどうなるか楽しみですし, 学びも得ることもありそうなので楽しみです.
今後のデータ可視化・分析は,
- このブログや登壇時のスライドなど, 「全世界に公開するもの」はFlourish
- 個人的なデータ分析・可視化はRedash
で行うつもりです.
これで「仮説→検証→フィードバック」のサイクルがより高速に回ると嬉しいな...
特にプロ野球・メジャーリーグはシーズン真っ盛りでネタが多いのでそっち方面のネタをこの環境でガンガン出していく所存です.
【Appendix】真似する方は読んでほしい
「よし, 真似してみよう!」という方は是非この辺を追ってもらえるといいのではないでしょうか.
ブログ
個人開発関連はこちら
本文中で触れていませんが, 「データ分析人材として検証のスピードを上げる」目的で環境を整えています&そのモチベーションはこの辺に色々書いてます
書籍
*1:この辺, 個人開発と規模がそんなに変わらないと思うので.
*2:ダイエットとリングフィットの記録. 余談ですが今でも続いています.
*3:細かい話をすると, Redashのみサーバーを立てて運用してることになります. 完全なサーバレスって難しい...
*4:この記事を元に真似する方は落としてやっても大丈夫だと思います. ネット上の記事ではインスタンスサイズを落としても動くよーとある, 実際動くし良いのですが, 渡しの場合はお試しじゃなくてガチのデータ分析環境として運用することを想定しているので素直にオススメに従いました.