【2024年版】理屈はさておき、Dockerを使って、あっという間にPythonの機械学習の環境構築をする|WindowsとMacの説明あり

Python環境構築

この記事の執筆・監修

キノコード
キノコード    

テクノロジーアンドデザインカンパニー株式会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

はじめに

こんにちは、キノコードです。 この動画は、Docker社さまのスポンサーで制作しています。

Dockerを使えば、パソコンが変わっても同じ環境を作ることができる便利なソフトウェアです。 例えるなら、あなたのパソコンの中にもう一つバーチャルなパソコンを作るようなイメージです。

こんな悩みを抱えていませんか?

「パソコンの環境が変わるたびに、設定やツールのインストールに手間がかかる。」 「開発チーム全員が同じ環境で作業できず、エラーや不具合が発生する。」 「機械学習やAI開発の環境構築が難しく、手順がわからない。」 そこでこの動画では、これらの悩みを解決できる方法を解説しています。 Dockerを使えば、どんなパソコンでも同じ環境を簡単に構築でき、チーム全員が同じ開発環境で作業できるようになります。

弊社にはエンジニアが複数人いますが、全員が同じ環境で開発ができるようにDockerを使っています。 Dockerは、今やエンジニアの必須のツールとなっています。

この動画では、機械学習やAI開発に必要な環境を作り、動かしてみる、ということをゴールに説明をします。 具体的には、JupyterLabを開発環境として、データ解析にPandas、データ可視化にMatplotlibとSeaborn、機械学習にはscikit-learnが使えるような環境を作ります。 そして、作成した環境で、機械学習の入門に相応しいと言われている「タイタニック号の生存予測」をしてみましょう。

キノコードのチャンネルでは、プログラミングに必要な環境構築やプログラミング学習についての情報を配信しています。 今後も様々な情報を発信しますので、チャンネル登録をお願いいたします。

レッスンで使ったファイルはこちら

キノクエストでアカウントの新規登録に進み、メール認証を完了します。

ログインした状態(プラン選択画面が表示されます)で下記のボタンをクリックしてください。

Dockerのいいところ

Dockerは、コンテナ仮想化の技術を使ったソフトウェアです。アメリカのDocker社が提供しています。 コンテナ仮想化の技術とは、コンテナという箱のようなものに、OSやソフトウェアがインストールされた環境を閉じ込めておくようなイメージです。 Dockerのいいところを挙げると、次の5つです。

  • 一貫した環境:Dockerを使えば、開発環境と実行環境を同じにできるため、環境の違いによる問題がなくなります。これにより、個人プロジェクトでも動作が安定します。
  • 簡単なセットアップ:複雑なソフトウェアをインストールする必要がなく、Dockerイメージを使うだけで簡単に環境を構築できます。
  • 軽量で高速:Dockerコンテナは軽量で起動が速いので、個人のPCのリソースを有効に使えます。これにより、複数のアプリケーションを同時に試すことができます。
  • プロジェクトの整理:コンテナごとにプロジェクトを分けられるので、異なるプロジェクトが干渉し合うことなく作業できます。
  • 簡単なバックアップと共有:Dockerイメージとしてプロジェクトを保存でき、他の人と簡単に共有できます。再設定の手間を省けるので便利です。

手順

それでは、機械学習やAI開発に必要な環境を作りましょう。 手順は次の通りです。

  1. Dockerのインストール
  2. Dockerfile/ymlファイルの作成
  3. コンテナの構築
  4. 機械学習コードの実行

以上の手順にそって、説明を進めます。

Dockerをインストール

では、Dockerをインストールしましょう。 Dockerを手軽に操作ができるように作られているDocker Desktopをインストールします。 Docker Desktopは、Dockerのコマンド操作に不慣れな方も、簡単にDockerコンテナを管理したり操作したりすることができます。 では、こちらの公式ページを開きましょう。 Macの方、Windowsの方で一部異なります。 また、Docker Desktopのインストールに必要なシステム要件がありますので、確認しましょう。

Windowsの方は、ちょっと注意が必要です。

  • 「Windows 10 Pro、Enterprise、Education - バージョン 1903以降の場合」は、インストール時に、Hyper-Vおよびコンテナ機能を有効にするオプションが表示されます。 Hyper-Vは、Windowsの仮想化技術であり、Docker Desktopはこれを利用して仮想環境を構築します。 ただし、VirtualBoxなど他の仮想マシンソフトウェアを利用している場合、Hyper-Vが有効になることで他の仮想マシンソフトウェアが正常に動作しなくなる可能性があります。 他の仮想マシンソフトウェアを利用している方は、互換性を確認してみてください。 その上で、競合する場合は、Hyper-Vを無効にして、WSL 2をベースにすることをお勧めします。 一方、WSLはWindows上でLinux環境を提供する仕組みです。 WSL2の特徴は軽量で高パフォーマンスなことです。 Hyper-Vを使うとより高度な仮想化技術が可能となりますが、推奨はWSL2をベースにした構築です。

それでは、WSL 2の有効かどうかを確認してみましょう。 無効になっている場合は、チェックを入れて有効化にすることでインストールができます。

その後、インストール中に表示される、WSL 2ベースのエンジンを有効にするオプションを選択してください。 なお、これは、Docker Desktopの設定からWSL 2バックエンドを有効にするオプションを選択すれば、この構成に切り替えることができます。

それでは、ご自身の環境を確認しながら、適切なインストーラーをダウンロードします。 インストーラーの指示に従い、インストールしましょう。

Windows 10 Homeエディションの場合は、WSL 2バックエンドを使うかどうかを確認するメッセージや設定画面が表示されることがあります。 メッセージに従い、インストールを進めましょう。

インストールが終わったら、Docker Desktopを起動してみましょう。

初回起動時に、環境に応じてメッセージが表示されることがあります。

  • Macの場合は、「Docker Desktopが権限を要求します」と表示されたら許可を選択してください。

では、dokerが使える状態かも確認してみましょう。 ターミナルやコマンドプロンプトを開きます。 そしてこのコマンドを実行しましょう。

docker --version

ここで、Dockerのバージョンが表示されれば、正常に動作していることがわかります。 バージョンが表示されなかった方は、次の点を確認してみてください。

  1. Docker Desktopがバックグラウンドで動作しているか タスクバーやメニューバーにDockerのアイコンが表示されていなければ、Docker Desktopを起動してください。
  2. インストールの失敗 システム要件をもう一度確認してみましょう。また、古いバージョンのDockerDesktopがある場合は、アンインストールをしてからもう一度インストールを試してください。
  3. Hyper-Vの有効化 WindowsでHyper-Vを使用する場合、Hyper-Vが有効になっているか確認します。手動で有効にするには、管理者としてログインし、Hyper-Vを有効にしてください。
  4. WSL 2の設定 Windows 10 Homeの場合、WSL 2の設定を確認します。Docker Desktopの設定で「WSL 2 based engine」のオプションがオンになっていれば、有効です。
  5. Dockerサービスの状態 Dockerサービスが起動しているか確認します。停止している場合は、Docker Desktopの「Restart Docker」オプションを使って再起動してみてください。
  6. ファイアウォールやセキュリティソフトの設定 一部のファイアウォールやセキュリティソフトがDockerの動作をブロックしていることがあります。ファイアウォールやセキュリティ設定を確認し、Dockerを信頼されたアプリケーションとして追加してください。

Dockerfileの用意

次に、Dockerfileを作りましょう。 Dockerfileとは、ソフトウェアの環境を構築するための「設計図」のようなものです。 Dockerfileに、ソフトウェアが動作するために必要なOS、依存関係、設定などを記述します。 それを元にDockerイメージが作成され、イメージをもとに実際に動くコンテナが作成されます。 Dockerイメージとは、アプリケーションやサービスを実行するために必要なファイルや設定が詰め込まれた「パッケージ」のようなものです。 このイメージを使うことで、どの環境でも同じ設定でソフトウェアを動作させることができます。

デスクトップに「MyDocker」というフォルダを作り、ここにDockerfileを作ります。 Dockerfileは、テキストエディタなどを使って、このように記述します。 ここには、DockerコンテナにLinuxのubuntuを立てて、そのubuntu上にライブラリをインストールする記述をしています。 インストールするライブラリについては、別のファイル「requirements.txt」に具体的に記載をしています。 PandasやMatplotlib、scickit-learnなど、機械学習に必要なライブラリをピックアップしました。 このDockerfileとrequirementsファイルは、概要欄にダウンロード方法を記載しましたので、ご活用ください。 ファイル名をDockerfileとしましょう。最初のDは大文字です。 拡張子はつけません。自動でついてしまった場合は、削除しましょう。 こうすることで、Dockerが自動でこのファイルを認識できるようになります。

ymlファイルの用意

続けて、ymlファイルを作りましょう。 ymlファイルとは、YAML形式で書かれたファイルです。 インデントによって階層構造を表現するため、シンプルで直感的な記述が可能です。 よって、設定ファイルやデータ構造を表現することに適しています。 ymlファイルにはコンテナ構築の設定に必要な情報を記述します。 Dockerfileと同じ場所に「docker-compose.yml」という名前で保存しましょう。 こちらもダウンロード方法を備考欄に記載しています。ご活用ください。

なお、Readme.txtというファイルに、Dockerfileやymlファイルにどんなことを書いているのかの説明文を記載しました。 理解を深めたい方はこちらも参考になさってみてください。 また、キノコードが運営するプログラミング学習サービス「キノクエスト」には、Dockerについてもっと詳しく知ることができる「Docker入門」があります。

コンテナ構築

では、作成したDockerfileとymlファイルをもとに、Dockerコンテナを作成しましょう。 まずはこれらのファイルが保存されているディレクトリに移動します。 ターミナルやコマンドプロンプトで、次のコマンドを実行します。

cd /Users/kinocode/Desktop/MyDocker 

移動したら、次のコマンドを実行します。 このコマンドは、DockerfileをもとにDockerコンテナを作成し、起動するコマンドです。

docker compose up --build

リターンキーで実行です。(時間がかかります) これでコンテナの作成と起動が完了しました。

コンテナのJupyterLabにアクセス

それでは、JupyterLabを開いてみましょう。 次のURLにアクセスします。このURLは、先ほどのymlファイルで設定したものです。

http://localhost:8888/

ここで、JupyterLabの画面が表示されたら成功です。 ここには、コンテナ内のディレクトリが表示されています。 workspaceを展開すると、あなたのパソコンのデスクトップのフォルダMyDockerが反映されていることがわかります。

タイタニック号の生存予測

実際に、機械学習のコードを試してみましょう。 機械学習の入門的テーマとも言われる、タイタニック号の生存予測問題を解いてみます。 用意として、次のファイルをダウンロードしてください。

zipファイルを解凍すると、次の5つのファイルを確認できます。 それぞれ、学習用のデータ、訓練用のデータ、提出用のサンプルデータのCSVファイル、pythonのサンプルコードです。

  • train.csv
  • test.csv
  • sample_submission.csv
  • sample.ipynb

それでは、サンプルコード通りにプログラムを動かしてみましょう。

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
from sklearn.datasets import fetch_openml
data = fetch_openml(data_id=40945, as_frame=True)
data.head()

(以下省略)

このように、機械学習のコードを動かすことができました。 今回はコードの説明を省略しましたが、プログラミング学習サービス「キノクエスト」の機械学習実践講座にて詳しく説明をしています。 キノクエストには、機械学習や強化学習、画像認識、データ分析、生成AIなどをハンズオンで学習することができます。 ほかにも、Webアプリ開発やスマホアプリ開発、TableauやPowerBI、ExcelやWordなどまで学び放題です。 すぐ実務に活かしたい方も、基礎からじっくりと学習したい方も、幅広く豊富な講座の組み合わせでスキルアップをめざせます。 概要欄に紹介サイトのURLがありますので、そちらからご確認ください。

コンテナの停止と起動方法

では、コンテナの停止と起動方法です。Docker Desktopで操作します。 コンテナを停止するには停止したいコンテナの「STOP」をクリックします。 そして、コンテナを起動したい場合は、起動したいコンテナの「START」をクリックします。 コンテナの起動を確認したら、ブラウザでJupyterLabのURL(http://localhost:8888/lab)にアクセスします。 これで起動できました。

Docker便利機能

この動画では、Dockerで機械学習ができる環境を作成する方法を説明しました。 パソコンが変わっても、誰でも同じ環境で開発をすることができます。 これで、例えば会社のパソコンと自宅のパソコンで同じ環境にすることができます。 複数人が同じ環境で開発をすることができます。 これだけでも便利ですが、Dockerにはさらに便利な機能が用意されていますので、2つ紹介します。

Docker Scout

Docker Scoutは、コンテナの保守の役目をします。 主な目的はセキュリティの脆弱性や更新の必要があるライブラリを検出し、安全性を保つことです。 自分で確認せずとも通知があるのは便利ですね。 詳しくはDockerのサイトをご確認ください。 こちらも概要欄にリンクがあります。

Docker init

次に紹介するのはDicker initコマンドです。 Docker initは、開発者の環境に応じて、Dockerfileやdocker-compose.ymlを自動的に生成してくれる便利なコマンドです。 例えば、Pythonアプリケーションを選択することで、基本的な設定が自動で作成され、簡単にコンテナを立ち上げることができます。 ただし、全ての依存関係は自動的に処理されないため、requirements.txtなどのファイルは別途作成する必要があります。 このコマンドを使うことで、開発者の手間や間違いによるエラーなどを減らすことが期待できます。 簡単にデモをしますので、どのように使うのかをイメージしていただければと思います。

  1. ターミナルなどで「docker init」と入力すると選択画面が表示されます。
  2. 例えば、Pythonを選択すると、次に、Pythonのバージョンやポート番号などを入力して進んでいきます。
  3. 最後にプログラムファイルなどを指定し、コマンドを入力します。
  4. すると、起動コマンド(docker compose up --build)や接続先(http://localhost:8888 )が表示されます。
  5. また、これらのファイルが作成されました。

注意点としては、2つです。

  1. requirements.txtは自動生成されないので、手動で作成する必要があります。
  2. Dockerfileやyamlファイルを開いて確認する必要があるため、Dockerの知識が必要です。

とはいえ便利なコマンドですので、必要に応じて活用いただけたらと思います。

よく使うDockerコマンド10選

ここまでの説明で、Dockerの起動や停止など、基本的な使い方はDockerDesktopを使うことで簡単にできることがわかりました。 もう少し詳しく知りたいという方のために、よく使うDockerのコマンドを10個紹介します。

1. docker ps

現在動作中のコンテナの一覧を表示します。

2. docker ps -a

停止中のコンテナも含め、すべてのコンテナの一覧を表示します。

3. docker run [イメージ名]

指定したイメージを使って、新しいコンテナを作成・実行します。

4. docker stop [コンテナID]

指定したコンテナを停止します。

5. docker start [コンテナID]

指定したコンテ内を起動します。

6. docker rm [コンテナID]

停止した指定のコンテナを削除します。

7. docker rm -f [コンテナID]

指定したコンテナを強制削除します。

8. docker images

ローカルに保存されているDockerイメージの一覧を表示します。

9. docker rmi [イメージID]

不要になったDockerイメージを削除します。

10. docker logs [コンテナID]

指定したコンテナのログを表示します。

おわりに

この動画では、Dockerで機械学習ができる環境を作成する方法について説明しました。 面倒な環境構築が悩みの種と感じていらっしゃる方のサポートになれば幸いです。 キノコードが運営するプログラミング学習サービス「キノクエスト」には、Dockerについてもっと詳しく知ることができる「Docker入門」があります。 ほかにも、機械学習をさまざまなテーマについてハンズオンで学習できる「機械学習実践」「機械学習応用」「強化学習」「画像認識」があります。 また、開発をする人が知っておきたい「Git/Github入門」や、ビジネスパーソンなら活用シーンの多い「ChatGPT入門」など、幅広いジャンルの学習をすることができます。

詳しくは概要欄にあるURLの紹介ページからご確認ください。

法人でDockerをご利用の場合は

Docker Scout や Docker Business に関する詳細はエクセルソフト社のウェブサイトをご覧ください。ウェビナーやオンデマンド動画などの無償サービスも提供しています。
エクセルソフト社ウェブサイト

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト