🙄

データ基盤チームで社内インターンをやってみて

2023/12/26に公開

この記事はMICIN Advent Calendar 2023の23日目の記事です。

https://adventar.org/calendars/9595

前回は吉永さんの「ブラウザのタブ間で認証状態を同期する」でした。

今回は8月から10月まで私が参加したMICINの第1回社内インターン制度についてご説明するのと、インターンで配属されたデータ基盤チームでの稼働を通じて技術的に学んだことなどをご紹介させていただきます。

社内インターンについて

社内のエンジニアを対象に3ヶ月間、現在の所属部門での業務を続けながら、メンバーが希望する部門にて週換算で1日分、新たなミッションに携わることができる仕組みです。

インターン制度の目的としては以下の2つがあります。

  • エンジニアの自らの意志によるスキル向上・キャリア開発
  • 部門を超えたノウハウの共有・シナジーの創出

私がインターンに応募するにあたり、募集されているポジションがいくつかありました。

  • 他事業部でのアプリケーション、ツールの開発、サポート
  • データ基盤チームでの基盤構築のサポート

などがあった中、今回私はデータ基盤チームでの社内インターンを選択しました。

データ基盤チームで行なっていることについては
https://zenn.dev/micin/articles/2023-12-10_dataplatform
に詳細に記載されているのでぜひご一読ください。

データ基盤チームに応募した理由

私が今回データ基盤チームに応募した理由は2点あります。

1つ目はデータベースやSQLをより本質的に理解してみたかったことです。

私は普段業務でサーバーサイドのコードをRuby on Railsを使って書いています。RailsだとActiveRecordクエリインターフェースを使うことで直接SQLをかかずともデータベースからレコードを取得したり、更新したりなどのデータベースを操作することが可能になります。
ActiveRecordを使って、データベースの操作をRubyのコードで感覚的に書けるのはRailsの良いところです。しかし直接SQLを書かないため、サーバーサイドでデータベースアクセスをするコードを書いているけれど、私はデータベースやSQLのことを本当に理解しているだろうかという課題意識を持っていました。
そこでデータ基盤プロジェクトへの参加を通じて、データベースや生のSQLにもっと直接的に触れてみたかったというのがあります。

2つ目は普段の業務と違う技術、業種に触れてみたかったことです。
社内インターン制度に応募するにあたり、募集のあるプロジェクトは複数ありました。その中でデータ基盤は、アプリケーションの運用を通じて作成されるデータを使ってビジネス側が要求する情報を手に入れるようにするというものでした。他の選択肢と比較して普段の業務と違う形態だったことにとても興味を持ちました。

データ基盤チームで技術的に学んだこと

dbt(data build tool)

dbtはSQLを活用してデータ変換する際に役立つツールです。dbtは、データウェアハウス内のテーブルを作成・管理するためのコマンドラインツールです。
「データウェアハウス」とは、企業や組織がビジネス上の意思決定をサポートするために、様々なソースから集められた大量のデータを格納、管理、分析するためのシステムです。
MICINだとデータウェアハウスにBigQueryを使っています。

自分が行った業務はデータベースに保管されているテーブル情報をもとにdbt用のSQLを書き、BigQueryに出力される仕組みを構築することでした。

Fivetran

業務を行う中でビジネス側が要望する情報のデータ元はプロダクトで運用されているテーブルデータだけなく、Google Sheetsに記載されたデータの場合もあります。
しかし、Google Sheetsの内容をそのままdbtで参照できないのでスプレッドシートに記載された内容をBigQueryなどのデータウェアハウスにデータ元として同期する必要があります。そんな時に使うのがFivetranです。

Fivetranはクラウドベースのデータ統合ソリューションであり、企業がさまざまなデータソースからデータを自動的に集約し、BigQueryなどのデータウェアハウスに保存するために使われます。

Google Sheetsの更新を検知し、BigQueryにリアルタイムにデータ連携するといった設定も可能です。

Fivetranを使った業務として自分はGoogle Sheetsに表形式で記載されたデータをBigQueryに連携してデータをBigQuery上に出力したりしていました。

社内インターンを通じて学んだこと、良かったこと

インターンを通じてデータ基盤チームに応募した理由で書いた2つの応募理由は叶えられたかなと考えています。
まず、「普段の業務と違う技術、業種に触れてみたかった」というところでdbtやFivetranのような普段アプリケーション開発をしていて使わないツールに触れることができたのは大きな刺激になりました。

アプリケーション開発をしているとき、データというとリレーショナルデータベースのテーブルに保存しているものを参照するのが普通です。
しかし、Fivetranを使うことでリレーショナルデータベース以外の様々なデータソースをFivetranでデータ化できるのにはとても驚きました。

さらにSQLはあくまで特定のテーブルや複数のテーブルを組み合わせてデータを操作するための言語というイメージがありました。
ただ、dbtではアプリケーション開発で使うようなフレームワーク同様にファイル構成をレイヤーごとに分けて、SQLを書く際に他のSQLを参照したりといった依存関係を定義できます。
上記のようにSQLを使って膨大なテーブルを効率的に管理する仕組みがアプリケーション開発同様に存在することに驚きました。

「データベースやSQLをより本質的に理解してみたい」に関してはdbtを使った開発を通じて生のSQLを書くことができました。
ただビジネス側が要求する仕様や要件に沿った情報を取得するのに、基本的なSQL構文だけでは取得できないこともありました。

そういった課題を解決する過程で他のSQLの関数や構文にも触れることができ、インターンを始める前と比べてSQL特有の知識が増えたかなと思います。

普段業務で触らないツールやフレームワークを使うので当初キャッチアップに不安がありましたが、データ基盤チームのメンターの方にわからないことがあれば都度聞いて、丁寧に教えていただきました。

そのためスムーズに業務に携わることができたのはとても良かったです。

社内インターンを通じて課題に思ったこと

今回社内インターンに参加してみて、当初メインの業務とのダブルワークで当初毎週1回の頻度で規則的に稼働する予定でした。
しかし、メインの業務との兼ね合いで、本来データ基盤で稼働する日をずらして終盤週2日で稼働していたりと1週間まるまるデータ基盤の稼働ができない週があったのが課題としてありました。

メイン業務がインターン業務にあまり影響を与えないようなベストな稼働の仕方を次にインターンをされる方、自分の会社で社内インターン制度を取り入れてみたい方はぜひ検討してみると良さそうです。


MICINではメンバーを大募集しています。
「とりあえず話を聞いてみたい」でも大歓迎ですので、お気軽にご応募ください!

https://recruit.micin.jp/

株式会社MICIN

Discussion