Python PR

WSL2とDockerとVSCodeのRemote Containersで最高の開発環境をつくる

WSL2 + VSCode + DockerでPython開発環境をつくる
記事内に商品プロモーションを含む場合があります

こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。

WSL2 + Docker + VS Code の Remote – Containers のPython開発環境が最高だったので、構築方法と実践チュートリアルを紹介します。

いままでのPython開発環境

WSL + VS Code のPython開発環境については下記で紹介しました。

VSCodeからWSLを使う
【WSL】Windows10とUbuntuとVSCodeで快適なプログラミング環境を構築Windows Subsystem for Linux(WSL)とVisual Studio Code(VSCode)で快適なプログラミング環境を構築する方法を説明します。C言語とC++とPythonなどのプログラミング言語を使う人にオススメの記事です。...

上記と本記事では以下の点が異なります。

  • WSL1 ⇒ WSL2 に移行
  • Docker 導入
  • VS Code の Remote – Containers 導入

各種のインストール手順を説明します。

WSL2インストール

Windows 10 用 Windows Subsystem for Linux のインストール ガイド|公式 に従い、WSL2 をインストールします。最初に以下の注意点を確認しておきましょう。

Windows 10 のバージョンが WSL2 の実行に関する要件を満たしていること

BIOS画面からCPUの仮想化を有効にする

以下を参考にBIOS画面からCPUの仮想化を有効にします。

BIOS画面の表示方法はPCによって異なります。私が使っている HP の場合、PC起動時にF10を連打すれば、BIOS画面が立ち上がります。

Linux ディストリビューション:Ubuntu 20.04 LTSのインストール

あとはインストール ガイドの通りにやればOKです。手順6で任意のLinux ディストリビューションをインストールします。悩む人には Ubuntu 20.04 LTS をオススメしておきます。

以上で WSL2 のインストール完了です。

スポンサーリンク

Visual Studio Codeインストール

Visual Studio Code(通称VS Code)を公式サイトからインストールします。

以下の手順で VS Code から WSL2 に接続できます。

  1. VS Code左下の「><」をクリック
  2. Remote-WSLを選択
  3. 左下が「>< WSL: Ubuntu」になったら、ターミナルを開く

問題なければ、下図のように表示されます。Windowsマシンで VS Code + Ubuntu ターミナルが使える時点で既に快適です。

VSCodeからWSL2に接続

Docker Desktopインストール

続いて Docker Desktop をインストールします。インストール途中で WSL2 を利用するか聞かれるので、チェックを入れます☑

先ほどのターミナルに docker -v と入力し、問題なければ下図のように Docker バージョンが表示されます。

WSL2 + VSCode + Docker

この時点で WSL2 + Docker + VS Code の環境構築完了です。

VS Code 拡張機能:Remote – Containersインストール

最後に VS Code 拡張機能の Remote – Containers をインストールします。あと拡張機能の Docker も便利なので、インストール推奨です。

以下の手順で VS Code から Docker に接続できます。

  1. プロジェクトフォルダにDockerfile または docker-compose.ymlを用意
  2. プロジェクトフォルダをVS Codeから開く
  3. VS Code左下の「><」をクリック
  4. Reopen in Container を選択
  5. From Dockerfile を選択
  6. 左下が「Dev Container: Existing Dockerfile」になったら接続成功

※次章の「チュートリアル」で詳しく説明します

Remote – Containers の使い方から後述するDockerfileの書き方まで、以下の記事が大変参考になりました。

実践 Dockerチュートリアル -Pythonで機械学習アプリ開発-

構築した開発環境を使って、簡単な機械学習サンプルコードを動かしてみます。

適当な場所に下記構成のプロジェクトフォルダ:docker-ml を作成します。

Dockerfile

Python公式イメージに依存関係管理ツールの Poetry を入れたDockerfileを作成します。

下の2行を追加すれば、イメージのビルド時(コンテナ生成時)に pyproject.toml で定義した各パッケージを自動でインストールしてくれます。

pyproject.toml

pyproject.toml には main.py の動作に必要なパッケージをバージョン指定で定義します。

(※) poetry init で pyproject.toml の雛形を作成できます

機械学習サンプルコード main.py

機械学習ソースコードを作成し、main.py という名で保存。モデル保存用フォルダ:modelも事前に作成します。

以上でプロジェクトフォルダ:docker-ml の中身を全て用意できました。

Dockerコンテナ内で機械学習

プロジェクトフォルダをVS Codeから開き、VS Code左下の「><」をクリック後、Reopen in Container を選択します。

WSL2 + VSCode + Docker 接続

From Dockerfile を選択すると、イメージのビルドが実行されます(初回のみ)。

WSL2 + VSCode + Docker 接続

左下が「Dev Container: Existing Dockerfile」になったら接続成功です。

WSL2 + VSCode + Dockerで機械学習

ターミナルに以下のコマンドを入力し、main.pyを実行します。

poetry run python main.py

スコアレポートなどが表示され、学習済みモデルがmodel/decisiontree_model.pklに保存できればOKです。

以上で「実践 Dockerチュートリアル -Pythonで機械学習アプリ開発-」終了です。

【おまけ】チュートリアル後の次ステップ -オリジナル機械学習アプリをつくろう-

main.py 実行後に表示される predict: [‘Adeli’] というのは、predict() による「学習済みモデルで未知のデータを推論した結果」です。

はやぶさ
はやぶさ
main.py の責務は訓練のみにする予定でした。つまり train() のみ作成する予定でしたが、サービスで predict() も作成しました。

本チュートリアルの次ステップとして、main.py から predict() を切り離し、推論専用のオリジナル機械学習アプリ app.py を作成してみましょう。

例えば、本記事の predict() では未知のデータ[39.2, 17.7, 181, 3740]をコード内にべた書きしてますが、外部から受け取るようにし、推論結果を返すような機械学習アプリを作るのはいかがですか?

はやぶさ
はやぶさ
ぜひ自分のアイデアを形にしてみて下さい。
スポンサーリンク

まとめ

WSL2 + Docker + VS Code の Remote – Containers のPython開発環境が最高だったので、構築方法と実践チュートリアルを紹介しました。

Docker入門機械学習アプリ開発の勉強にもなると思うので、参考になれば嬉しいです。

【おまけ】に書いた「オリジナル機械学習アプリ開発」にも、ぜひ挑戦してみて下さい。

現役エンジニアおすすめの仕事道具
【仕事効率化】現役エンジニアおすすめの仕事道具(キーボード・文房具など)現役エンジニアの”はやぶさ”が仕事効率UPのために使っている仕事道具(キーボード・マウス・文房具など)を紹介します。自分に合う道具を使って気持ちよく仕事をしましょう!...

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python