見出し画像

【2023年1月版】 “データサイエンス100本ノック(構造化データ編)”をwindows10,11で動かすwsl2を利用したdocker環境構築編

こんにちは。分析屋の桜井です。

他の書籍などに取り組んでいて後回しになっていたデータサイエンス100本ノックの環境を作成しようとしたところ、特にwindows10でのwsl2の環境構築が以前のやり方の記事であったりすることが多かったので改めて記事にまとめてみようと思います。

GitHub - The-Japan-DataScientist-Society/100knocks-preprocess: データサイエンス100本ノック(構造化データ加工編)

流れとしては以下です。

  1. wsl(windows subsystem for linuxのインストール)

  2. wslにdocker環境を作成

  3. データサイエンス100本ノックの環境を作成

  4. 実際に起動

今回docker desktopは使いません。(組織の規模により有料ライセンスの為)

また前提条件はWindows 10 バージョン 2004 以上 (ビルド 19041 以上) または Windows 11 が適用されている事になります。これより前のバージョンはインストールの方法が旧手法になる為、事情がない限りアップデートしてしまう方が良いです。

windows環境から挑戦したい方も多いとおもいますので参考になれば幸いです。
最後に本環境構築でも面倒くさい!という方のために楽をする方法も紹介します。
それでは始めていきましょう。

▼wsl(windows subsystem for linuxのインストール)

上記前提バージョンより、コマンド一つでPCの設定からUbuntuの設定までを一括で行ってくれるようになりました。PowerShell もしくはコマンドプロンプトを管理者権限で実行し以下のコマンドを入力します。

wsl --install

以前windows10では細かい手順が存在しwslのバージョンを手動でwsl2に変換する等煩わしい部分が存在しましたが現在はこれだけで大丈夫です。上記コマンドだけで

wsl --install -d Ubuntu

と同じ挙動をしてくれますので本環境構築の場合storeで検索して任意のバージョンのubuntuを選ぶ必要も特にありません。筆者の環境では最初のコマンドのみでUbuntu 22.04.1 LTSが選択されました。もちろんそれ以外の物でも良いので

wsl --list --online

のコマンドを入力して一覧にでた好きな物を使っても良いです。コマンドが走るとしばらく待たされますので指示がでたらマシンを再起動をします。

再起動後にLinuxのターミナルが自動起動します。

ここでエラーが出る場合、BIOSでの仮想環境機能がOFFになっている可能性があります。
その場合はBIOSに入りintelのCPU場合はVT-Xを、ryzenのCPUの場合はSVMを有効にする必要があります。BIOSへの入り方は端末ごとに違うため検索をしてみてください。

エラーが出ない場合はユーザー名とパスワードの設定を求められます。
windowsとは異なるものの為、ここでは好きな物を設定していただいて構いません。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not neet to match your Windows username.
For more information visit: https://aka.ms/wslusers

## 先にユーザーネームを決定
Enter new UNIX username:

## その後にパスワードを要求される
Enter new UNIX password:

入力が完了すると晴れてwindows上でubuntuが動作するようになります。

全て英語なので取っつきにくいかもしれませんがエラーメッセージが出た場合に検索するのが面倒になりますので日本語化はオススメしません。

上記手順の公式リンク:https://learn.microsoft.com/ja-jp/windows/wsl/install

▼wslにdocker環境を作成

これまでの作業で起動するようになったUbuntu上で特定の環境構築を楽にしてくれるdockerをインストールしていきます。

docker自体の敷居が高く感じられる事もあるかもしれませんが、データサイエンス100本ノック(構造化データ編)ではpythonやPostgreSQLを使用し、ブラウザからアクセスして演習に集中できるよう全体が構築されている為に、一から同じ環境を作る方が圧倒的に大変な作業になるので本手順を踏んでいます。

本手順は簡易的な解説に留め、コマンドを実行していきます。

スタートメニューからUbuntuを選択し起動すると、ターミナルが出ますのでこちらを操作していきます。1行ずつ実行するのが事故がなくどこまで作業が進んだかもわかりやすいと思います。

# パッケージ一覧を更新
sudo apt update

# 公式が用意してくれているシェルスクリプトをダウンロード
curl -fsSL https://get.docker.com -o get-docker.sh

# ダウンロードしたスクリプトを実行する
# しばらく待ちます。
sudo sh ./get-docker.sh

# dockerがインストールされているか確認
# Docker version 20.10.22, build 3a2c30bなどと表示されたらOK
sudo docker -v

# 今後の操作を楽にするために現在のユーザをdockerグループ参加させる
sudo usermod -aG docker $USER

ここまででdockerのインストールは完了です。一度ubuntuを再起動します。

上記手順の公式リンク:
https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script

次の操作としてdocker-conposeをインストールしていきます。

# パッケージ一覧を更新(一応)
sudo apt update

# 指定したディレクトリに実行ファイルを配置
# コピペが上手く行かない場合はメモ帳に
# sudo curl -SL の後ろにhttps://~をコピーして1行のコマンドにして貼ってください。
sudo curl -SL    https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# docker-composeコマンドを実行する権限を付与する
sudo chmod +x /usr/local/bin/docker-compose

# docker-composeのバージョンを確認
# バージョンが表示されたら成功
docker-compose -v

上記手順の公式リンク:https://docs.docker.com/compose/install/other/

またwsl上ではとある理由でdockerの自動起動がデフォルトではできない為、以下のコマンドを入力する必要があります。

# dockerの起動
sudo service docker start

自動起動するように設定する事は可能ですが、手間のかかる手順なので本記事の環境構築は都度起動とします。以下の記事で詳しく丁寧に解説されているのでわかる方は参考にすると良いかもしれません。筆者も設定しないと...

Snow System様のリンク:
Windows 10 or 11 (WSL2)のUbuntuでsystemctlを利用する方法(systemdをPID1で動作させる方法)

▼データサイエンス100本ノック(構造化データ加工編)の環境を作成

ここまででようやく下地が完成し実際にデータサイエンス100本ノック(構造化データ加工編)を進めます。

本来であればpythonの実行環境を構築し、データベースの環境を構築し...と言う手順が多数あるはずなのですが、dockerをインストールした事によりコマンド3行で済んでしまいます。自前で用意するとライブラリのバージョン等を事前に作成されているせていファイルに従い自動で行ってくれる訳です。

ここではコマンドは上記通りに実行したものとしてコマンドを提示します。
作業ディレクトリなどを変更した場合、適宜読み替えて下さい。
(本記事ではUbuntu起動した直後の/homeにいる前提です。現在の作業ディレクトリを確認したい場合pwdと入力してください。)

実行するコマンドは以下です。

# 公式のリポジトリをクローンする
# こちらのコマンドも上手く張り付けられない場合はメモ帳などで
# 一行に体裁を整えて張り付けて下さい
git clone https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess

# cloneしたディレクトリに移動する
cd 100knocks-preprocess/

# 環境を構築するコマンドを実行する(時間がかかります)
sudo docker-compose up -d --build

▼実際に起動

ここまでが完了したらwindowsのブラウザからアクセスする設定ファイルの作成をします。

C:\Users\[windowsのユーザ名]の位置に.wslconfigという名称のファイルを作成して下さい。(メモ帳でできます。エンコーディングutf_8で改行コードは特に設定する必要はありません。)作成しましたら以下のように書き込み、保存。Ubuntuを再起動してください。

localhostForwarding=True

以上でwslで立ち上げたローカルサーバーにwindowsのブラウザからアクセスができるようになります。

最後に以下のコマンドを実行することによって起動が完了します。

# 先ほど再起動してdockerが動いていないのでdockerを起動
sudo service docker start

# 上記のインストールだと権限関係のエラーが出ることがあるので以下を実行
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

# それぞれのコンテナを起動する
docker start dss-notebook
docker start dss-postgres

それではwindowsのブラウザからアクセスしてみましょう。
ブラウザのアドレスバーに以下を入力。Jupyter Labが表示されたら成功です。

http://localhost:8888/

内容の進め方やファイルの配置等は公式にありますのでそちらを読みながら100本ノックを進めて行きましょう!

環境構築お疲れ様でした。

▼余談(もっと楽がしたい人向け)

  • ubuntuはよくわからないのでだるい

  • dockerは一生使わないと誓っている

  • .wslconfigがよくわからない

  • さっさと演習のみを解きたい

などいろいろな理由があるかと思います。

実はpythonとSQLに関してはローカルに環境を作成しなくても実行できる環境を有志が作成したものがあります。

以下にリンクを共有しますのでどうしても環境作成は面倒だという方はこちらから取り組むのが良いかと思います。どちらもgoogleアカウントのみで大丈夫です。

Google Colabratoryは起動し直す度に初期化される為、毎回起動し環境構築し直すのに時間がかかるのが難点ですが圧倒的に操作は少ないので楽はできます。

python編:GitHub - The-Japan-DataScientist-Society/100knocks-preprocess: データサイエンス100本ノック(構造化データ加工編)

SQL編:データサイエンス100本ノックをGoogle Colaboratoryで実践【SQL編・Python編】|根元@ルートアシスト|note

▼最後に

上記で作成した環境は今後個人開発で遊べたり、業務で役に立つこともあるかと思いますので是非チャレンジしてみて下さい。

この記事が参考になりましたら「スキ」を押していただければと思います。

株式会社分析屋について

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。