2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
急成長中のレシピ動画サービス『クラシル』を運営するdelyが、 これまでのグロース戦略、エンジニアリング方針、ユーザー調査手法等についてお話しします!(全6記事)
リンクをコピー
記事をブックマーク
深尾もとのぶ氏(以下、深尾):みなさんこんばんは。今日はデータウェアハウスについてお話しさせていただこうと思いますが、データウェアハウスとはなにかご存じですか?
(会場挙手)
あんまりいらっしゃらないですね。データウェアハウスというのは、昔はすごく大きい会社で何億円というお金をかけて作っていた、大量のデータを分析するときに使っていたものです。簡単に言うと、ビッグデータでSQLが回せるみたいなものです。
3〜4年ぐらい前から、AWSのRedshiftというサービスが出てきて、それでかなり身近になりました。そこがさらに進化して、昨年ぐらいからGlueというのが出てきました。これを使うと、例えばS3にCSVファイルなどを置くと、それがSQLで使えるというように、簡単に作れるようになったという話をしたいと思います。
自己紹介でSREという紹介がありましたが、僕はプロの料理人を8年ぐらいやっていました。今はSREをやっているんですが。SREというのはインフラエンジニアなんですけど、今日お話しするのは、最近始めたデータ可視化推進室のことがメインになります。
クラシルの分析基盤。今作っているデータウェアハウスが4世代目で、最近、2つのダッシュボードを作っています。Redshiftと先ほどお話ししたGlueの話、最後の時系列テーブルは今日の感じだとあまり役に立たない話かもしれません。
まずは分析基盤について。データウェアハウスを含めた分析基盤は大きく分けてこの3つのレイヤーがあると思います。
ダッシュボード。みなさんも見るんじゃないかなと思うんですけど、Re:dashとかGoogle Analyticsとか、そういったダッシュボードの可視化のレイヤー。
あとは、分析のレイヤー。SQLを回すようなBigQueryというのはたぶん知っているかな。今日お話しするRedshiftとか。
そこに向けてデータを貯めるログ収集基盤も必要で、マネージドのKinesisというサービスがあったり、自社で構築するFluentdといったOSSのサービスがあったり。
Google Analyticsはこの3つのレイヤーに跨っているサービスになります。今日お話しするのはこの全部3つ含めた話になります。
今まで4世代を渡ってきたんですが、第1世代はGoogle Analytics、第2世代Logpose。弊社はちょくちょくONE PIECEが絡んできます。第3世代はFirebase Analytics。そして現在作っているのが、第4世代、Eternalposeです。
まず第1世代がGoogle Analyticsです。長所短所なんですが、開発コストが圧倒的に安い。無料でも簡単に導入できる代わりに制限があります。基本的にはSQLが使えなくて、高額のオプションでBigQueryにエクスポートできますが、基本的には無料なので、簡単なかわりに制限がいろいろとあります。
そこで、第2世代で自社で最初に構築したのがLogposeです。Fluentdを使ってBigQueryにデータを送るというものを作りました。そうすることによって、SQLが使えるようになったり、GA(Google Analytics)のときは制限があったんですが、スケーラビリティを確保をして、データが増えてもBigQueryで集計ができるようになりました。
短所としては、最初に作ったのでデータの設計、テーブル設計が必ずしもよくなかったので、スケールするたびにスキーマを変更したり、もしくはSQLを組み立てるのが大変だったり。あとは、Fluentdは自社で管理しなければいけないので、ログ基盤の管理が大変だったりという短所がありました。
そこでマネージドのサービスに乗せ替えようということで、第3世代、GoogleのFirebaseのAnalyticsを使いました。これでログ基盤の管理が不要になりました。これがいいのは、データをBigQueryにエクスポートすることができるので、従来の長所だったBigQueryも使えることです。
一方で、仕様変更があってBigQueryにエクスポートするときに、データの仕様が変わったり、BigQueryに出してそこでクエリかけると、1つのカラムにデータが全部乗ってしまったりして、カラムで絞ってもクエリ料金が高額になってしまいました。
あとは、全体的にFirebaseは機能が未完成というか、まだ発展途上な感じがありました。APIや、Predictionsという機能がちょっと使いづらかったです。
そこで今作っているのが第4世代です。Sunnyというのは自社基盤の自社開発のダッシュボードで、MetabaseというのはRe:dashのようなオープンソースのダッシュボードです。データベースにつないでSQLを投げられるというダッシュボードになります。Eternalposeというのは自社のログ収集基盤です。
これはうちがつけた名前とサービスの名前が混ざっているんですが、「Sunny」というのは僕が勝手につけた名前ですね。弊社のビジョンに「BE THE SUN」というものがあるのですが、『ONE PIECE』のサウザンドサニー号から取っています。「Eternalpose」も『ONE PIECE』から取っているんですけど、Metabaseというのは、そういうオープンソースのサービスがあります。
2つのダッシュボード。なぜ2ついるのか? 最初はMetabaseだけで十分かなと思ったんです。最初にCTOから、ユーザーヒアリングの話や、サイクルを小さく回すみたいな話があったと思うんですが、僕もそこはやって。
最近、このプロジェクトが始まった時に、そのプロセスで僕もやったほうがいいかなと思って、営業さんに聞いたり、マーケの人に聞いたり。ユーザーヒアリングをしながらいろいろ聞いてみました。
Metabaseでもけっこういろんなことができるんですね。SQLでデータベースにつないでクエリを投げたり、Re:dashよりも、例えばパラメータを指定しやすい。ダッシュボードを作るときに、カレンダーで日付を絞って、その期間のクエリを投げるということをSQLを書かなくてもできるのがMetabaseのいいところです。
これさえあれば、日付を指定して動画のIDを指定すれば、SQLを書かなくても動画の再生数が出せたり、「これがあったらもう万能だよね」ってエンジニアとしては思うんですけど、実際にこれをドヤ顔で「こんなの作ったらどうだろう?」って聞いてみたら、「いや、そんなの大したことない」と。
ただ、昨日ヤフーとの提携の話がありましたけど、うちにたまたまヤフーでマーケティングをやっていた子がいて、その人に聞いてみると、ヤフーにはSQLなんか書かなくても、サービスに沿ったダッシュボードがあると。例えばヤフーだったら、「Yahoo!ニュース」とか「ヤフオク!」とかそんなメニューが並んでいて、そこをポチッとクリックすれば、もうそのヤフオク!のデータがわーっと出てくると。
それがうちも必要だと感じて作り始めたのが、先ほど話したSunnyです。これは、CoreUIというBootstrapというCSSのフレームワークを使って、自社で開発してるものになります。
検索エンジニアの話がありましたが、例えば検索、昨日の検索のトップ100が簡単に1クリックで見れるとか、そこに出てきた一番目が例えばキャベツだったら、キャベツをクリックしたらキャベツの過去3ヶ月の検索回数がグラフで出るといった、そういったものになります。
これがその長所・短所ですね。裏側はこんな感じになっていて、その中心にあるのがRedshiftとかGlueというサービスです。クラシルのアプリで行動ログをKinesisというAWSのマネージドのサービスで集計して、S3にログを置いて、それをGlueでクロールしてやると、自動でテーブル定義が作られるんですね。なので、JSONを置けばもうそこでテーブルが作られて。
これは別のAthenaというサービスでSQLを叩くことができるんですが、Athenaよりも僕はRedshiftを使っています。
RedshiftとかGlue、なぜそこがいいのかという話をすると、まずAthenaとRedshiftを比べたときに、Athenaはわりとシンプルで、しかもフルマネージドで低い学習コスト。エンジニアだったら低い学習コストで始められます。ほぼSQLを投げるだけなので。
一方で、Redshiftはなにがいいのかというと、1つは定額料金。Athenaはクエリ投げるごとに課金が発生するんですが、Redshiftは定額料金です。その分インスタンスのサーバー代金はかかりますが。
あと、SELECT INSERT。SELECTした結果を自由にほかのテーブルにINSERTできるというメリットもあります。
CTAS。これがけっこういいんですけど、SELECT INSERTに近いんですが、SELECTした結果でテーブルを作ることができるんですね。これはなにうぃ言っているかわからないと思う方もいるかと思いますが、これがけっこう大きいです。
あとは、Postgres互換だったり、Athenaよりも速かったりします。簡単ではないかもしれませんが、簡単に言うとこういうことです。カラム定義も、データのロードも、不要。
もともとAthenaや従来のRedshiftは、S3にデータを置いたら、そのS3のファイルのパスを指定して、なおかつ、そのファイルのフォーマット。「idがint型で、nameがstring型で」みたいなものを定義しなきゃいけなかったんですが、GlueとRedshiftを使うとそれが全部いりません。
最初に設定さえしておけば、あるディレクトリにファイルをどんどん置いておくと。そこをGlueが勝手にクローリングして、勝手にテーブル定義を定義してくれる。それに対してRedshiftで、先ほどのCTASのCreate Table As Selectなんですけど、それでSELECTした結果を別のテーブルにも入れることもできます。
そうすることによって、例えば全体のログがあって、全部のログが入ったテーブルがあって、そこから検索データだけをSELECTして検索のテーブルを作ったり、動画の再生数だけ集計してそのテーブルを作るといったことが、ほぼ自動でというか、SELECT文さえ書けば自由にできます。そこが一番のメリットかなと思います。
そんな感じで、S3に置いて、それをクローリングしたら、あとはCTAS。そうすればRedshiftでクエリが実行できます。それを可視化したのがMetabaseやSunnyです。
これがCTASで、「外部スキーマ」と書いてあるのは、GlueでクローリングしたS3上のJSONファイルです。CSVでも大丈夫です。内部スキーマはRedshiftの中にあります。
中に入れるとクエリ書き放題なんですね。そのまま外部スキーマのまま使ってもいいんですが、中に入れると、さらに集計が速くなったり、あとは何回投げても定額料金、お金かからなかったり、より便利になるという感じですね。
これに関してはあとで興味ある人は聞いてください。今日Redshiftに関してお話しして、10分だったのでわからないこともあったと思いますが、このあと懇親会あるのでいろいろ聞いてください。ありがとうございました。
(会場拍手)
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略