分析システムの環境構築
第8章「データエンジニアリング」では、データを集め・整え・使える形にするための技術的な土台を扱います。最初のレッスンとなるこのページでは、オープンデータを活用する分析システムの要件整理から、サーバーやクラウドでの環境構築・運用、コンテナ技術、ノーコード/ローコードツール、クラウドの機械学習マネージドサービス、YAML/JSONによる設定ファイルの記述までを一気通貫で見ていきます。
「サーバー」「コンテナ」「クラウド」と聞くと身構えてしまうかもしれませんが、どれも「分析のための作業スペースをどう用意するか」という話です。身近な例えを使いながら、ひとつずつやさしく整理していきましょう。
1. データエンジニアリングとは何をする仕事か
これまでの章では、データを分析して意味を読み取る「データサイエンス力」を中心に学んできました。しかし、分析するためのデータは、最初から都合よく整った状態で目の前に置かれているわけではありません。データを集め、正しく保管し、使える形に加工し、必要な人に届けるという一連の裏方作業があって、はじめて分析が成立します。この裏方の技術領域をデータエンジニアリング※1と呼びます。
料理にたとえると、データサイエンス力が「盛り付けられた料理を味わい、評価する力」だとすれば、データエンジニアリング力は「食材を仕入れ、下ごしらえをし、調理器具を整える力」にあたります。どれほど優れた分析手法(レシピ)を知っていても、素材(データ)を用意する仕組みがなければ何も作れません。第8章では、この「仕込みの技術」を、環境構築から始めて順に学んでいきます。
第8章はカタカナ用語がいっぱい出てくるけど、身構えなくて大丈夫。「分析のための作業場をどう準備するか」の話だと思って読み進めてみて!
2. オープンデータを活用する分析システムの要件整理
分析システムを作る第一歩は、どんなデータを、何のために、どう使うのかという要件を整理することです。特にDS検定でよく出てくるのがオープンデータ※2の活用です。オープンデータとは、国や自治体、公的機関が二次利用を許可した形で公開しているデータのことで、e-Statの統計データや気象庁の気象データ、自治体の人口データなどが代表例です。
オープンデータを分析に使う場合も、いきなりダウンロードして分析を始めるのではなく、まず「何を明らかにしたいのか」「どのデータが必要か」「どのくらいの頻度で更新されたデータが必要か」「社内の既存データとどう組み合わせるか」といった要件を整理することが欠かせません。これは第1章で学んだ「目的 → 問い → データ」という順序そのものです。
- 出店計画を立てるために、自治体が公開する町丁目別の人口・年齢構成データが必要 → 更新頻度は年1回で十分
- 店舗周辺の来客予測のために、気象庁の過去の気温・降水量データが必要 → 過去5年分をまとめて取得すればよい
- 感染症対策の需要予測のために、厚生労働省の公開データを日次で参照したい → 自動取得の仕組みが必要
オープンデータの活用でも、要件整理の基本は変わりません。「目的」「必要なデータ項目」「更新頻度」「既存データとの組み合わせ方」の4点を最初に言語化しておくと、後工程(収集・蓄積・加工)の設計がぶれません。
3. サーバー1〜10台規模のシステム構築と運用
分析システムの規模はさまざまですが、DS検定リテラシーレベルで想定されるのは、サーバー1〜10台程度の中小規模システムです。大企業の巨大データセンターというより、部署やチームで使う分析基盤のイメージです。こうしたシステムの構築・運用では、あらかじめ用意された手順書※11にもとづいて、サーバーのセットアップ、ソフトウェアのインストール、動作確認などを正確に実行できることが求められます。
運用フェーズで特に重要なのが、バックアップとアーカイブの定常運用です。バックアップは「今のデータをすぐ復旧できるように複製しておくこと」、アーカイブは「使用頻度の落ちた古いデータを長期保存用の場所に移しておくこと」を指します。オンプレミス環境※3(自社でサーバーを保有・運用する形態)でも、IaaS※4(クラウド上で仮想サーバーを借りる形態)でも、データベースに対して定期的にバックアップを取得し、不要になったデータを計画的にアーカイブする運用ルールを決めておく必要があります。
- 毎晩深夜にデータベース全体のバックアップを取得し、7世代分を保持する
- 3年以上前の販売データは、参照頻度が低いため低コストのストレージにアーカイブする
- 月次でバックアップからの復元テストを実施し、いざというときに本当に戻せるか確認する
バックアップは「取得すること」よりも「ちゃんと復元できること」が本質です。バックアップを取っているつもりでも、実際に復元してみたら壊れていた、というのはよくある失敗例です。
「バックアップ取ってたのに、いざという時に開けなかった…」は運用あるあるの失敗例。試験でも「バックアップやアーカイブの定常運用」というキーワードでそのまま出てくるから覚えておいてね。
4. コンテナ技術とDockerイメージの活用
分析環境を構築するとき、「このパソコンでは動くのに、別のパソコンでは動かない」という問題がしばしば起こります。OSのバージョンや、インストールされているソフトウェアの微妙な違いが原因です。この問題を解決する技術がコンテナ※5です。
コンテナは、アプリケーションの実行に必要なプログラムや設定を「ひとまとめの箱」に詰めて、どの環境でも同じように動かせるようにする仕組みです。代表的なコンテナ技術がDocker※6で、あらかじめ作られた「設計図」にあたるDockerイメージを使えば、Pythonの分析環境やデータベースなどをコマンド一つで自分のパソコンに再現できます。DS検定リテラシーレベルでは、自分でイメージをゼロから作るというより、既存のDockerイメージを活用して効率的に分析環境を構築できることが求められます。
- Jupyter Notebookの公式Dockerイメージを取得し、コマンド一つでPythonの分析環境を起動する
- チームメンバー全員が同じDockerイメージを使うことで、「自分の環境だけ動かない」というトラブルを防ぐ
- 案件ごとに異なるバージョンのライブラリが必要な場合、コンテナを分けて共存させる
コンテナは「引っ越しのときの段ボール」のようなものと考えるとイメージしやすいです。中身(アプリと設定)を箱ごと運べば、新しい部屋(別のパソコンやサーバー)でも同じように荷ほどき(実行)できます。
5. ノーコード/ローコードツールとクラウドの機械学習サービス
すべての分析システムをプログラミングでゼロから作る必要はありません。近年は、ノーコード/ローコードツール※7を組み合わせることで、コードをほとんど、あるいはまったく書かずに業務アプリやデータ連携の仕組みを作れるようになっています。要件に応じて複数のツールを組み合わせ、必要なアプリやツールを設計できることが、この分野のスキルとして求められます。
機械学習の分野でも、クラウド事業者が提供するマネージドサービス※8を使えば、モデルの学習環境を自前で構築する手間を大幅に減らせます。代表的なものに、Amazon SageMaker、Azure Machine Learning、Google Cloud Vertex AI、IBM watsonx.ai Studioなどがあり、いずれもブラウザ上でデータの前処理からモデルの学習・評価・公開までを一貫して行える環境を提供します。
| 提供元 | 機械学習マネージドサービスの例 |
|---|---|
| Amazon Web Services | Amazon SageMaker |
| Microsoft Azure | Azure Machine Learning |
| Google Cloud | Google Cloud Vertex AI |
| IBM | IBM watsonx.ai Studio |
「ノーコード」はコードを書かない、「ローコード」は最小限のコードで済ませる、というニュアンスの違いだよ。試験では固有名詞よりも「組み合わせて要件に応じたツールを設計できる」という考え方が問われるよ。
6. YAML・JSONによる構成・設定ファイルの管理
クラウドサービスやコンテナ、ノーコードツールの多くは、動作の設定を「設定ファイル」として記述します。よく使われる形式がYAML※9とJSON※10です。どちらも人間にも読みやすく、プログラムからも扱いやすいという特徴を持つ、構造化されたテキスト形式です。
JSONは中括弧{ }と角括弧[ ]を使って「キーと値」の組み合わせを表現する形式で、Web APIのやり取りでも標準的に使われます。YAMLはインデント(字下げ)で階層構造を表す形式で、記号が少なく人間が読み書きしやすいため、システムの構成ファイルによく使われます。プロジェクトごとに指定される形式を理解し、正しいインデントや記法にしたがって構成・設定ファイルを記述・管理できることが、分析基盤を扱ううえでの基本スキルです。
- YAML:
database:の下に字下げしてhost: localhostとport: 5432を記述し、接続設定をまとめる - JSON:
{"database": {"host": "localhost", "port": 5432}}という形で同じ内容を表現する - コンテナの構成ファイル(docker-compose.yml)で、使用するイメージ名や環境変数をYAML形式で管理する
YAMLはインデントのズレがそのままエラーの原因になります。タブとスペースを混在させない、階層のずれに注意するといった基本を押さえておきましょう。
まとめ
このレッスンでは、分析システムを構築・運用するための土台となる技術と考え方を見てきました。最後に振り返っておきましょう。
- 要件整理 ― オープンデータを活用する場合も、目的・必要データ・更新頻度・組み合わせ方を先に整理する
- サーバー運用 ― 手順書にもとづくサーバー構築・運用と、バックアップ/アーカイブの定常運用を確実に行う
- コンテナ技術 ― Dockerイメージを活用し、環境差異のない分析環境を効率的に構築する
- ノーコード/ローコード・クラウドMLサービス ― 要件に応じてツールを組み合わせ、SageMakerやVertex AIなどのマネージドサービスでモデル開発を行う
- 設定ファイル管理 ― YAMLやJSONの形式を理解し、構成・設定ファイルを正しく記述・管理する
次のレッスンでは、こうして整えた環境の上で「データをどう集めるか」、つまりWebスクレイピングやAPI、ファイル転送といったデータ収集の技術を扱います。
- データエンジニアリング … データの収集・蓄積・加工・共有など、分析の土台となるシステムやしくみを設計・構築・運用する技術領域のこと。↩
- オープンデータ … 国・自治体・公的機関などが、誰でも二次利用できる形式・ライセンスで公開しているデータのこと。e-Statや気象庁の統計データなどが代表例。↩
- オンプレミス … サーバーやネットワーク機器を自社内に設置し、自社で保有・運用する形態のこと。クラウドの対義語として使われる。↩
- IaaS(Infrastructure as a Service) … サーバーやストレージなどのITインフラを、インターネット経由でサービスとして借りられる形態のこと。↩
- コンテナ … アプリケーションの実行に必要なプログラムや設定をひとまとめにし、どの環境でも同じように動かせるようにする仮想化技術のこと。↩
- Docker … コンテナ技術を提供する代表的なソフトウェア。あらかじめ用意された「Dockerイメージ」をもとに、誰でも同じ実行環境を再現できる。↩
- ノーコード/ローコードツール … プログラムのコードをほとんど、またはまったく書かずに、画面操作だけでアプリやシステムを組み立てられるツールのこと。↩
- マネージドサービス … サーバーの構築や保守などをクラウド事業者側が肩代わりしてくれる、利用者はすぐに使い始められるサービス形態のこと。↩
- YAML … インデント(字下げ)で階層構造を表現する、人間にとって読み書きしやすい設定ファイル形式のこと。↩
- JSON(JavaScript Object Notation) … 中括弧と角括弧を使って「キーと値」の組み合わせを表現するデータ形式のこと。Web APIのデータ交換でも標準的に使われる。↩
- 手順書 … 作業の手順を誰が行っても同じ結果になるように、順番や操作内容を具体的に書き記した文書のこと。システム運用では属人化を防ぐために重要視される。↩