第6章 データエンジニアリング基礎(環境構築・データ収集)
DS検定のコンテナ・API・JSONとYAML
DS検定(リテラシーレベル)の第6章では、分析の環境を作る技術と、データを集める技術が★1つ星で出題範囲に入っています。環境を作る側は、コンテナ技術とDockerイメージ、クラウドのマネージドサービス、JSONとYAMLの設定ファイルです。データを集める側は、SDKとAPI、Webクローラー、HTTPSとSFTPです。このページでは、3つのアプリを動かすときのOSの数と、同じ設定をJSONとYAMLで書き比べる例で確かめます。どれも、仕組みを説明でき、決まった形式を読み書きできるレベルが問われます。
このページは試験の学習用の整理です。数字や設定の内容はすべて説明用の架空の値です。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- コンテナは、アプリごとに隔離されたプロセス。複数のコンテナが同じカーネルを共有するので、3つのアプリでもOS全体を3つ用意するVMより軽い
- Dockerイメージは、実行に必要なファイル・ライブラリ・設定をまとめたパッケージ。作成後は変更できない
- JSONは波括弧とカンマ、YAMLはインデントとハイフンで書く。YAMLは#でコメントを書け、タブをインデントに使ってはならない
- データ収集は、提供元のAPI・SDK、静的ページのスクレイピング、HTTPS・SFTPでの格納と受け取りが、それぞれ別の★1つ星項目
公式チェックリストの★1つ星の項目
データサイエンティスト協会の公式スキルチェックリスト(データエンジニアリング領域)で、このページの範囲にあたる★1つ星の項目は、次の6つです。
| 項目 | ★1つ星で求められること |
|---|---|
| コンテナ技術・Dockerイメージ | コンテナ技術の概要を理解し、既存のDockerイメージで分析環境を作れる |
| マネージドサービス | Amazon SageMaker、Azure Machine Learning、Google Cloud Vertex AI、IBM watsonx.ai Studioなどで機械学習モデルを開発できる |
| YAML・JSON | プロジェクトで指定される形式を理解し、構成・設定ファイルを適切に記述・管理できる |
| SDK・API | 対象プラットフォームが提供する機能(SDKやAPIなど)の概要を説明できる |
| Webクローラー・スクレイピング | Webサイト上の静的コンテンツを分析用データとして収集できる |
| HTTPS・SFTP | 通信機能を用い、データを収集先に格納するための機能を実装できる |
★1つ星は、コンテナを自分で設計する力ではなく、既存のDockerイメージを使って分析環境を作れるかどうかです。★2つ星にはDockerイメージの管理やKubernetesなどのコンテナオーケストレーションが入っており、このリテラシーレベルの範囲を超えます。
コンテナとVMで、3つのアプリのOSの数を数える
Docker公式ドキュメントでは、コンテナを、アプリの構成要素ごとに隔離されたプロセスと説明しています。ホストに事前に入れた依存関係に頼らず、必要なものを自分で備えているので、どこでも同じように動きます。一方、仮想マシン(VM)は、独自のカーネル・ハードウェアドライバ・プログラム・アプリを含むOS全体です。
分析用の3つのアプリ(データ取り込み、前処理、モデルの学習)を隔離して動かす場合を数えます。
| 方法 | OS(カーネル) | 理由 |
|---|---|---|
| VM(1アプリにつき1台) | 3つ | アプリごとに、カーネルやドライバを含むOS全体が必要 |
| コンテナ(3つのコンテナ) | 1つのカーネルを共有 | 複数のコンテナが同じカーネルを共有する |
VMでは3つのアプリに3つのOSが必要ですが、コンテナなら1つのカーネルを共有できます。Docker公式ドキュメントも、1つのアプリを隔離するためだけにVMを起動するのは負荷が大きいと述べています。コンテナが軽いのは、カーネルを共有し、OS全体を含まないからです。
コンテナの元になるのがDockerイメージです。公式ドキュメントでは、コンテナの実行に必要なファイル・バイナリ・ライブラリ・設定をまとめた標準化されたパッケージで、作成後は変更できず、ファイル変更を表すレイヤーの積み重ねでできていると説明されています。変更できないので、同じイメージから起動すれば、誰の環境でも同じ状態の分析環境になります。
同じ設定をJSONとYAMLで書き比べる
次の設定(分析ジョブの名前、使うデータ、実行する手順)を、JSONとYAMLで書き比べます。内容はどちらも同じです。
JSON
{
"job": "sales-report",
"data": "sales.csv",
"steps": [
"load",
"clean",
"train"
]
}YAML
# 分析ジョブの設定
job: sales-report
data: sales.csv
steps:
- load
- clean
- trainRFC 8259では、JSONのobjectを波括弧内の名前と値のペアの集合とし、名前の後をコロン、ペア間をカンマで区切ります。arrayは角括弧内の値の並びで、文字列は二重引用符で囲みます。YAML 1.2.2の仕様では、マッピングはコロンでキーと値を対応させ、シーケンスは各要素をハイフンと空白で示し、階層はインデントで表します。
書き比べると、違いは3点です。1つ目は区切りで、JSONは括弧とカンマ、YAMLはインデントとハイフンです。2つ目はコメントで、YAMLは#で書けますが、JSONの文法にはコメントの規則がありません。3つ目はインデントで、YAMLでは階層そのものを表すため、移植性のためにタブを使ってはならないと仕様に書かれています。JSONでは構造文字の前後の空白に意味はありません。JSONは括弧で構造を示し、YAMLはインデントで構造を示します。なお、YAML 1.2は、JSONの厳密な上位集合になることを主な目的にしています。
API・SDK・スクレイピング・HTTPS・SFTPの使い分け
データを集める手段は、提供元が何を用意しているかで変わります。公式チェックリストの★1つ星は、手段ごとに別の項目になっています。
- API・SDK:クラウドサービスや分析ソフトウェアが提供する機能です。概要を説明できることが求められます
- Webクローラー・スクレイピング:Webサイト上の静的コンテンツを分析用データとして集めます。対象サイトの利用規約は事前に確認します
- HTTPS・SFTP:機器やシステムが持つ通信機能で、データを収集先に格納します。データ共有の領域では、SFTPサーバーなどからデータファイルをダウンロードして表計算ソフトに取り込む項目も★1つ星です
提供元がAPIやSDKを用意している場合は、まずその機能で取得できないかを確かめます。マネージドサービス(Amazon SageMaker、Azure Machine Learning、Google Cloud Vertex AI、IBM watsonx.ai Studioなど)は、分析環境をクラウド上で提供するサービスで、機械学習モデルの開発に使います。試験では、サービス名と「分析環境をクラウドで提供する」という役割を結びつけられれば十分です。
DS検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
DS検定で、DockerやYAMLを書けるレベルまで必要ですか?
公式スキルチェックリスト(data_engineering.csv)の★1つ星は、コンテナ技術の概要の理解と、既存のDockerイメージを使った分析環境の構築、YAMLやJSONで書かれた設定ファイルの記述・管理です。ゼロから環境を設計する力ではなく、仕組みを説明でき、決まった形式で設定を読み書きできるレベルが目安です。
コンテナと仮想マシン(VM)は、何が違いますか?
Docker公式ドキュメントでは、VMは独自のカーネル・ハードウェアドライバ・プログラム・アプリを含むOS全体で、コンテナはアプリの構成要素ごとに隔離されたプロセスで、複数のコンテナが同じカーネルを共有すると説明されています。1つのアプリを隔離するためだけにVMを起動するのは負荷が大きい、とも書かれています。
JSONとYAMLの書き方の違いは何ですか?
JSONは波括弧の中に名前と値をコロンで結び、ペア間をカンマで区切り、文字列は二重引用符で囲みます。YAMLはインデントで階層を表し、リストは行頭のハイフンと空白で示します。YAMLは#でコメントを書けますが、JSONの文法にはコメントを書く規則がありません。
APIとスクレイピングは、どちらでデータを集めるのがよいですか?
提供元がAPIやSDKを用意しているなら、その機能で取得するのが基本です。公式チェックリストでは、SDKやAPIの概要の説明と、Webクローラー・スクレイピングで静的コンテンツを集めることが、別々の★1つ星項目になっています。スクレイピングを行う前に、対象サイトの利用規約を確認してください。
