データエンジニアとは
データエンジニアという仕事についてデータサイエンティストと対比させて書いてみようと思います。 ここでは「データサイエンティスト」がどういった職業なのかは、大まかに知っている前提で話を進めます。 それこそ「データサイエンティスト」とググれば説明は(質はともかく)沢山出てきます。
データを魚に、データサイエンティストを料理人にたとえたら
データサイエンティストとデータエンジニアは料理人と八百屋(魚屋肉屋)みたいな関係じゃないかと思います。
優れた料理人というのはわかりやすいですよね。美味しい料理(=優れた分析)を作れるシェフです。 勿論、どんな料理でも作れる人もいるかもしれませんが、料理人にも得意分野があります。(イタリアン、和食、フレンチ、etc)
「優れた分析」「良い分析」とは何か?というのは(これはこれで突き詰めると難しい話になるのですが) それはデータビークルの西内氏のブログでも読んでもらうことにして http://www.dtvcl.com/blog/ 話を進めます。
さて、料理人は材料が用意されなければ、料理はできないわけです。 そこでデータエンジニアの出番というわけです。 魚屋に例えると、 データを集めてきて(魚を集めてきて)、生簀(データレイク)や倉庫(データウエアハウス)に貯めて、きちんと魚の種別ごとに分類して、 在庫管理(決まった時間間隔できちんと取りに行けているか)をして、品質管理(取得元で不具合が発生していないか)をして、不良品の魚を取り除いて(クレンジング)、時には料理人が料理しやすいように2枚や3枚に開いておろしたり(Transform)して、 料理人に出荷します。
料理人でも色々います。スキルが高いプロの料理人は 「とにかく鮮度と鮮度と形が良い魚をタイムリーに提供してくれ」 という注文をしてするでしょうし、逆に (ファミレスのバイトの調理の人などは)レンジでチンすれば料理になってお客さんに提供できるように、下ごしらえまで全部したものを提供してくれ という料理人もいるでしょう。
(この後者を料理人(データサイエンティスト)と言えるのかどうかは別にして事実としてこういう需要もあります)
もっとも、 「いや、俺はデータサイエンティストだけど、自分が分析したいデータは自分の力で集めることができるし、データをクレンジングしたりなども自力で全部できるスーパーマンだぞ!」 という方もいらっしゃるでしょうが、それはデータエンジニア(魚屋)としてのスキルも持ち合わせているデータサイエンティスト(魚の料理人)ということ になるかと思います。
実際一部のプロの料理人でも自分で魚釣りに行って、釣った魚を調理するということもありますし。
データエンジニアに求められる能力
以下、データエンジニア特有の必要スキルを書きます。
- SQL(単に書けるだけでなくテーブル構造に適したクエリーを作成でき、かつチューニングまでできる)
- DBAレベルのDatabaseManegementSystemの知識(OLTP側だけでなく、DWH方面の経験も)
- データモデリング・正規化・設計能力
- システムアーキテクトレベルのコンピュータシステム全体の知識(特にAWSなどクラウド知識は近年は必須)
- 様々なデータソースから迅速かつ正確かつ変化にタイムリーに対応しながらにデータを取って来れる(ETL)能力
- データを定期的&自動的に取って来れるようにETLバッチを構築・運用できる能力
- データサイエンティストが使うツールや言語への知見
こんな感じでしょうか? (勿論これ以外にデータサイエンティスト的な能力やらコミュニケーション能力とかも勿論あった方が良いです・・・)
他サイト情報
ちなみにここ https://learningnetwork.cisco.com/docs/DOC-31728 ではデータサイエンティストをロックスターに例えて、データエンジニアをギタークルーのような裏方に喩えてます。