ご挨拶
どうもお久しぶりです、gucciです。
あと3ヶ月ほどで入社して4年が経とうとしています。時の早さに驚きが隠せません。
1年経つのが本当にあっという間ですが、よく過去を振り返る際にスポーツやイベント行事とマッピングして記憶することはありますよね。
今年は、我が東京ヤクルトスワローズがセ・リーグ制覇を成し遂げましたので忘れられない1年となりました。
コロナ禍で声を出しての応援はできませんが、やはりスポーツはいつの時代も熱くなれるとってもいいものですね。
スポーツから話を広げてみますと、
近年スポーツにおいてデータというのがかなり重要なファクターとなってきております。
例えば野球だと、投球を球速だけではなく回転数や回転軸で測り解析したり、
打者の打球方向の傾向から算出した守備シフトを敷いたり、
テレビで見ているとAIキャッチャーが次の球を予測したりといった面白い試みも見られます。
サッカーでも選手がどのぐらいスプリントしているか、パス成功率はどのぐらいかなどがすぐに可視化されるようになりました。
日常においても、スマホやIoT家電から大量のユーザデータが送受信される時代になり、
ビッグデータを分析し企業がデータドリブンで意思決定を行うような場面も増えてきていると思います。
大量のデータをもとに機械学習したAIの活用も増えてきました。
そう、まさに大ビッグデータ時代と言えると思います。
そんな時代においてデータエンジニアというのを生業にしている技術者がいます。
かくいう私もアスタミューゼでデータエンジニアになり3年が経過しようとしています。
そんなデータエンジニアがどういう存在なのかどんなことが求められるのかを今回はご紹介したいと思います。
プログラムや詳細な技術のお話しはでてきません。どちらかといえば非エンジニアの方が対象かなと思いますのでご了承くださいませ。
データエンジニアってなにしてるの?
大規模データ基盤の構築・運用をしている人です。
データ基盤とは、データの取得・保管・加工・分析・提供を担う一連のシステム群のこといいます。
ちょっと何言っているかわからないですよね。
簡単なイラストで例えてみましょう。
食材を調達して、料理として提供するまでをいらすとやさんに助けてもらって表現します。
とってもシンプルですね。
様々な場所から適切な食材を調達して、適切な形で保管・格納してあげることでシェフが自慢の腕を振るえます。
ではもし、超一流のシェフを集めたのに食材がなかったらどうしましょう。
こうなりますね。
他にも、食材はあるがどの冷蔵庫に何が入っているかわからない、とっ散らかっていて全く整理整頓されていないといった場合は肝心の料理パフォーマンスが一気に低下すると思います。
これをデータの話に置き換えてみますとこんなことが言えると思います
- そもそもデータがない。取得・蓄積のノウハウがない。
- データはあるのに全然整備されていないから活用できない。
- データサイエンティストがデータ整備の部分に多くの時間を取られモデル作成や分析に注力できない。
データを使える形で整備・提供し、適切に分析ができたらどんなに嬉しいでしょう。
そう、まさにこれがデータ基盤の構築です。
また必要であれば食材の下ごしらえまでやってあげたらシェフは大助かりですね。料理のみに集中し最大限のパフォーマンスを発揮することができます。
様々な用途に応じて多様な形式のデータを活用できるように設計・構築・運用を行なっている人が、データエンジニアというわけです。
データサイエンティスト・データアナリストとの違いは?
よくデータエンジニアはデータサイエンティストやデータアナリストと並べられることがあります。
簡単にそれぞれの特徴を挙げると以下です。
- データエンジニア
- データ基盤を構築・運用して、データを活用できる形にする。
- データアナリスト
- データを分析し、データに意味を持たせることにより意思決定を可能にする。
- データサイエンティスト
- データを用いてアルゴリズム、統計分析、機械学習などを行い、未来予測やAI活用を行う。
上のイラストで挙げているシェフの部分がデータアナリストやデータサイエンティストに該当すると思われます。
とはいえこれらは密接に関連しています。
簡単にイラストで表すと以下のようになります。
明確な境界線というのはなく、なかにはデータ収集・整備から行うデータサイエンティストもいれば、データ活用・分析して意思決定を行うデータエンジニアもいると思います。
このように、データに軸を置いてお仕事している人という意味では仲間であり、
実際にデータ活用することを想定して基盤を作る必要があるのでとても密接に関わっている職種と言えます。
データエンジニアに必要なスキルってなに?
データはどんどん巨大になってきています。
ネットワーク通信が加速度的に成長し、反面ストレージコストはどんどん下がってきています。
これにより大量に多様なデータがじゃぶじゃぶ出てくるので、ビッグデータという言葉が出てくるわけです。
こういったデータをどう捌くかがデータエンジニアの腕の見せ所です。
ではデータエンジニアに必要なスキルはどのようなものがあるでしょうか?
大雑把にいうと以下の要素が重要だと思います。
- データベースの設計・運用
- パイプラインの設計
- 分散処理
- データの加工
一つ一つみていきましょう。
データベースの設計・運用
「データベースの寿命って実はめちゃめちゃ長いんです」とは弊社のデータベース大臣のお言葉です。これは胸に刺さりました。
蓄積されたデータは非常に価値が高いもので、データを捨てるのは多大な損失となります。
そこで、長年の運用に耐えられるような柔軟なデータベースを設計できると、後から変更が必要になっても最低限の修正で済むためみんなが幸せになれます。
逆に入れ物がひどいと、抽出が困難になりデータ自体を有効活用するのが難しくなってしまいます。
RDB が主流ではありますが NoSQL の方が適している場合もあるでしょう。
近年ではどちらの力も併せ持った NewSQL も登場しています。
データのいわゆる入れ物であるデータベースを、データモデルに適切なアーキテクチャ選定・設計・運用することがとても大事になってきます。
パイプラインの設計
前述のイラストで紹介したように、様々な食材(データ)を簡単に料理(データ分析)できる形にしてあげることがとても重要です。
データを取得しデータを加工しデータを使える形にしてあげる、そうした連続した処理を繋げることでパイプラインというのが構築されます。
そして、このプロセスを全て機械に任せることができれば、データ活用に多くの時間を割くことができますし、また新たなデータへと手を伸ばすこともできます。
データにはそれぞれ性質がありどのようなパイプラインが適しているのかも多種多様です。
リアルタイム性が求められるならストリーミング処理が必要ですし、
日次や週次での定期実行であればバッチ処理で事足ります。
上流から下流へと滞りなくデータを処理して流してあげるパイプラインを設計することが運用という側面で重要になってきます。
人手でのバケツリレーではなく、機械による水道管を引いてあげるようなイメージです。
分散処理
何万件、何億件というデータを処理しようした場合に1つのコンピュータでやっていては何日、何ヶ月経っても終わらない可能性もあります。
大量データを扱うときにはたくさんのコンピュータで処理した方が絶対効率がいいですよね?
そんな処理のことを分散処理といいます。
今の時代はマネージドな分散処理システムも多数存在しているので以前より遥かに分散処理はしやすくなりましたね。
なにより、大量のデータを短時間で処理できたらかっこいいですよね。
データの加工
一番大事なことを忘れてました。
仕入れた食材を加工できないとお話しになりませんね。
世の中には本当に様々なデータが存在します。
- ファイル形式
- csv、tsv、xml、excel、json、html ...
- 文字コード
- UTF-8、Shift-JIS、EUC ...
- 同じ文字と思いきや
- 大文字小文字、全角半角、思わぬ箇所に制御文字が隠れていたり、タイポがあったり ...
多すぎますね。困ったものです。
人間が入力するようなデータには必ずちょっとしたミスも潜んでいます。
たとえ1%しか例外が存在しないという場合でも100万件の場合は1万件、1億件なら100万件にも及びます。
このような多様なデータを加工して共通のフォーマットに落とし込み特定の箱に格納してあげる必要があるわけです。 こうした、データ加工・変換・格納のプロセスをまとめて ETL という言葉でよく表現します。
- Extract(抽出)
- Transform(変換)
- Load(格納)
データの処理自体が ETL ですし、広義な意味ではパイプラインも ETL と言えますね。
ぜひ ETL の名前だけでも覚えて帰ってください。
データエンジニアってなにが楽しいの?
『データ量や要件に応じてアーキテクチャを選定し、データベースを設計し、ETLを実装してパイプラインを構築する(ドヤァ』
・・・こういうとカッコいいですが、実際は結構泥臭い側面も多いです。
実際に生のデータを見るのが非常に重要ですので、
抽出前のデータ、変換後のデータ、想定しない例外のデータ、などなどデータ自体と向き合う時間は必ず要るものでそこがとても大事な時間です。
「最近全然コード書いてないよ!」ということもままあります。
データモデルが把握できていない段階では「なんだよこのデータ、全然知らんよ!わからん!」となると思います。
マイナス面を先に言ってしまいましたが、
自分の集めたデータのことを「このデータめっちゃお客さんに刺さります」と営業の方に言ってもらえたり、
データアナリストが素晴らしい分析をした物凄いレポートを見せてもらったり、
データサイエンティストがどんでもないアルゴリズムでデータ活用をしている姿を見ていると、
「あぁ、データ、役に立ってるんだな・・・」と実感できます。
裏方のような役割で花形とは違うかもしれませんが、そのデータから様々な価値が生まれていると考えると、裏方も悪くないかもしれませんね。
さいごに
いかがだったでしょうか。
かなり抽象度の高い内容だったので、結局なにしているか全然わからなかったという方もいるかもしれません。
「データエンジニアっていうのが存在するんだな」と認識してもらえればもうバッチリです。
また、エンジニアの方は「データエンジニア、ちょっと面白そうやん」と思っていただけたら幸いです。
これからもっともっとデータが重要な時代になってくると思います。
よりリアルタイムなデータが活用されていくでしょう。
あと数年〜数十年は、データ整備には人間の手がまだ必要だと思います。
データエンジニア、やってみましょう。
そして、弊社で共にデータ基盤を作りましょう。
最後に、アスタミューゼではアプリエンジニア、デザイナー、プロダクトマネージャー、データエンジニア、機械学習エンジニアなどなど絶賛大募集中です。
どしどしご応募ください。お待ちしております。
最後までお読みいただき、ありがとうございました。