前置き
私はデータエンジニアとして働いており、業務では大規模なデータを取り扱うので相応のデータ基盤の開発を行っております。
そのデータ基盤では多数のメンバーが携わりながら開発や保守運用を行なっているのでデータ基盤の開発をしていくのは大掛かりかつ大変だなと思う一方、個人でスモールスタートする形でデータ基盤を作るとしたらどう作ったら良いかというのが気になり、個人開発の範囲で作ってみようと思いました。
どんなデータ基盤を作るのか?
- 主にAWSを用いてデータソースの取得からデータレイクへのデータ連携、そしてETLツールを用いてDWHへデータをロードするデータ基盤を作りたいと思います
- 最終的にBIツールを用いてDWHへ連携したデータを可視化するところまでやります
- 具体的に連携するデータとしては、技術サイト(ZennやQiita)の日毎のタグトレンド情報です
- なぜこのデータかというと、技術サイトによってトレンドの技術に違いがあるのかが気になったのでこのデータを日次連携して分析することで解明したかったからです
システム構成図
簡易的ですが構成図としては下記のように実装しました。
BIツールとしては、Amazon QuickSightを使いたかったのですがコストの都合上Google Looker Studioを使用しております。
処理の流れ
- APIを叩いてタグ情報を取得するlambda関数を日次で実行
- 取得されたデータをS3へ格納
- 格納されたS3データを元にGlueジョブでデータを抽出・加工してRedshiftへ連携
- Looker StudioでRedshiftを読み込んでレポートを表示
作成したレポート
(数年ぶりにレポート作りました。見づらかったらすみません🙇)
Qiitaのタグ情報レポート
Zennのタグ情報レポート
データからわかったこと
タグ数の割合の違い
- Qiitaでは、全体的に歴史のある言語・フレームワーク(Ruby・Rails・PHPなど)が上位に入りつつDockerやAWS、Pythonなど近年の定番技術も高いシェアを維持している
- Zennでは、RustやNext.js、Flutter、Goなど比較的新め・モダンな技術が高い存在感を示している
日次増加率の傾向
- Qiita側では-0.25から+0.2程度の比較的小さな変動範囲になっている
- 一部タグでやや低下傾向があるものの、全体に大きく伸びているタグと大きく減少しているタグが激しく分かれているわけではない
- Zenn側では-0.05から+0.35程度の範囲でQiitaと比べるとやや変動幅が広い
- 一部タグでプラスの増加率が大きく、特にnext.jsやフロントエンド関連タグが伸びており、これからも伸びていきそう
- Qiitaと比べて規模が比較的小さい分、特定の技術への記事が集中したらその分伸び率が大きくなりやすそう
「技術サイトによってトレンドの技術に違いがあるのか?」
この疑問からデータを収集して分析しましたが下記の点で違いがありそうだと感じました。
- Qiitaは古参ユーザ層を含む幅広い技術が投稿されやく、Zennは最新技術(特にWebフロントやAI, Rust等)に注目が集まり投稿されやすい
- Qiitaの方がユーザ数の母数が多いため、新規トレンドが急激に伸びるのが顕在化しにくそうな一方でZennは総数が少ないため一気に伸びる現象が起きやすく、伸び率の変化が見やすい。
- そのため、トレンドを素早く把握したいならZennを見て、幅広い歴史のある技術の知見を探したいならQiitaを見る、という使い分けが出来そう。
最後に
実際にデータ基盤を作成してみましたが、そこまで大きなデータを取り扱われなければ簡単に実装できると感じました。BIツールを用いたレポート開発は普段の業務で行わないので上手くレポート開発出来るか不安でしたが、自分なりにデータを可視化して分析することができたので良い経験になりました。
また、今回は2週間半程度のデータで分析しましたがもっと長期のデータを取り込んで分析したらまた別の見え方が見えてくると思います。データはたくさん溜めて分析するとまた価値が出てくるので次は数ヶ月または数年単位でデータを収集して再度データ分析をしてみたいと思います!