こんにちは、mahiroです。
近年、データ基盤の重要性はますます高まっています。これに伴い、データ基盤の構築・運用・管理を担うデータエンジニアの需要も増しています。ところが、その一方でデータエンジニアリングを担う人材は不足しています。
データエンジニアとして働く方々はソフトウェアエンジニアやインフラエンジニア、SREといった経歴を持ち、エンジニアとしてのスキルを持った状態でスタートしている場合が多いです。データエンジニアリングに関する書籍や資料等についても、エンジニアリングについての知識をある程度前提としているものが多く、エンジニア未経験からデータエンジニアになるのはハードルが高い*1のが現状です。
そこで、本記事では、エンジニア未経験からデータエンジニアになった経歴を持つ筆者が、エンジニアになるために学んだ内容のうち「これはデータエンジニアになってからも非常に役に立った」と感じているものを「データエンジニアになりたい非エンジニア」の方々へ向けてピックアップした上で、筆者がどのように独学したかをまとめてみました。
これらを勉強することで、データエンジニアリングの土台となる基礎が身に付き、今後の学習をスムーズに進められるようになるかもしれません。
注意
- 「これを身に付ければデータエンジニアになれる」というものではありません。
- 「これをすべて身に付けないとデータエンジニアになれない」というものでもありません。
- あくまで、筆者個人の経験をベースにしたものなので、万人に当てはまるとは限りません。
- 書籍は原則として当時採用したものをそのまま記載していますが、新しい版が出ている場合はそちらを優先的にご紹介しています。
学んだスキル・技術
情報処理技術の基礎
まずは情報処理技術の基礎をざっくりでよいので一通りは学んでおきましょう。
すべての知識がデータエンジニアリングに必要というわけではありませんが、全体像を掴んでおくことは大事です。必要になったときに思い出して調べることができるように、頭の中に地図を作成するイメージで学習しましょう。
もちろん、興味があればさらに詳しい書籍を読んだりしてもよいですが、この段階で無理にすべてを理解しようとする必要はありません。
私は「独習 情報処理技術 入門編」で学習しましたが、情報処理やコンピュータ・サイエンスの全体像を俯瞰できる教材であれば何でも構いません。基本情報技術者試験・応用情報技術者試験の参考書とかでもよいと思います。
スプレッドシート(Excel)
簡単な集計など、実務では結構使う機会があるので、不慣れな方はこの機会に身に付けておきましょう。
以下のような内容を理解して、スムーズに使える状態になっている状態が目安です。
- 相対参照と絶対参照
- 条件付き書式
- データの入力規則
- ピボットテーブル
- データ分析で頻出する関数
- SUMIF(S), COUNTIF(S) 関数
- XLOOKUP(VLOOKUP, HLOOKUP) 関数
こちらは手を動かしながら1冊走り切りましょう。上記の項目がサクっと扱えるようになると、スプレッドシートでカバーできる範囲がかなり広がるはずです。教材については、Excelの教科書のうち評価が高めのものであればどれでもよいと思います。
ここでは、私が利用した本(「たった1日で即戦力になるExcelの教科書」)をご紹介しておきます。
SQL
SQLは利用頻度が非常に高く、データエンジニアの必須スキルと言えます。データソースとなるDBからのデータ抽出(Extract)や、データ基盤に格納したデータの加工(Transform)など、様々な場面で利用することになります。
SQLについては、定番ではありますが「SQL」をおすすめします。SQLの基本をしっかり学べる良書です。こちらもきちんと手を動かして、簡単なクエリであれば反射的に書けるレベルを目指しましょう。
もし余力があれば「達人に学ぶSQL徹底指南書」にも挑戦してみるとよいです。少し難しめの内容ですが、SQLについてより深く学べます。
また、興味があれば「達人に学ぶDB設計 徹底指南書」にも手を出してみましょう。DBを設計する側の視点を持っておくことで、データソースとなるシステム担当者とのやり取りがスムーズになる場面があります。
Linux
データエンジニアはサーバにSSH接続してコマンドを実行するなど、Linux環境で操作を行う機会もあります。そのため、基本的な操作については、コマンドラインからスムーズに実施できるようにしておきましょう。
ここでは、Linuxの基本がわかりやすく解説されている「新しいLinuxの教科書」をおすすめします。これまでの例に漏れず、呼吸をするようにコマンドを叩けるようになるまで手を動かしましょう。
また、実務ではシェルスクリプトを扱う機会も出てくるので、余力があれば「新しいシェルプログラミングの教科書」もやることをおすすめします。
Python
まずは1つ、プログラミング言語を身に付けておきましょう。複雑なデータの加工や、シェルスクリプトでは煩雑になりがちな自動化スクリプトの作成など、活用できる場面は多いです。
なお、1つの言語を習得してしまえば他の言語を学ぶハードルは下がるので、特にPythonでなくてもOKですが、今回は以下の理由よりPythonをおすすめしています。
- Apache Airflow、Prefect、Dagsterといった、主要なワークフローエンジンがPythonで書かれている。
- AWS Lambda、Cloud Functions、Azure Functionsといった、主要なパブリッククラウドの提供するFaaSがPythonに対応している。
- データ変換ツールのデファクトスタンダードであるdbtがPythonで書かれており、Pythonによるデータ変換(Python models)にも対応している。
まずはPythonの基本的な書き方を習得しましょう。「独学プログラマー」がおすすめです。バージョン管理やパッケージ管理などについても併せて学習してしまいましょう。
もし「独学プログラマー」が難しければ、先にProgateをサクッと1週して文法を学んでしまうのがおすすめです。有料プランへの登録が必要ですが、1ヶ月以内にやり切れると思います。
基本的な文法をマスターしたら、公式ドキュメントの標準ライブラリにざっと目を通しておくとよいです。「こんなことができるライブラリがあったような気がする」と必要なときに思い出せる程度で大丈夫です。もし興味があるライブラリがあれば実際に動かしてみてもよいでしょう。
また、今後は様々な公式ドキュメントを読むことになるので、ぜひこの機会に慣れておきましょう。
さらに、自身の興味に応じて以下のような書籍にもチャレンジするのもおすすめです。
- Pythonのよい書き方を身に付けたい → 「Effective Python」
- Pythonについての深い知識を身に付けたい →「エキスパートPythonプログラミング」
- Pythonによる実践的な開発の知識を身に付けたい →「Pythonプロフェッショナルプログラミング」
なお、「Effective Python」については原著第3版が出版予定なのでご注意ください。
最後に
これらのスキルを身に付けていれば、わからないことを自分で調べたり、詳しい人に質問したりしながらデータエンジニアリングの学習を進めていくためのハードルがかなり下がっているはずです。ここからは、業務で必要となるスキルや、ご自身が興味のある技術をどんどん学んでいきましょう。
本記事がデータエンジニアになりたいみなさまのお役に立てば幸いです。ぜひデータエンジニアリングをやっていきましょう。
*1:たとえば、未経験者がいきなり「データエンジニアリングの基礎」を読んでも、理解するのはそれほど簡単ではないと思われます。