BETA

データサイエンス100本ノック(構造化データ加工編)はいいぞ。

投稿日:2020-06-16
最終更新:2020-07-01

はじめに

データサイエンティスト協会が、データサイエンス100本ノック(構造化データ加工編)という、構造化データの加工について学ぶ事ができる学習環境を GitHub に公開しました。
本記事では、私自身が Docker に初めて触れるので、Docker の導入からデータサイエンス 100 本ノックの入り口まで記載します。

環境構築

OS: Windows10 Home 64bit
メモリ: 8GB

Docker の導入

Docker には、"Docker Desktop" と "Docker Toolbox" の 2 種類あります。
利用している OS が Windows10 Pro 以上であれば Docker Desktop が利用できます。
これは、Hyper-V という機能が Windows10 Pro 以上でないと利用できないからです。
私の環境は Windows10 Home なので、Docker Toolbox を導入します。

導入にあたって参考にさせていただいたのは下記の記事です。
【入門】はじめての Docker Desktop for Windows のインストールと CentOS の仮想環境構築のセットアップ

Docker の割当メモリ変更

初期の割当メモリが非常に少ないので変更します。

  1. Oracle VM VirtualBox を起動してください。
  2. もし仮想マシンが起動しているのであれば停止させてください。
    docker-machine stop [仮想マシン名]
  3. [設定] -> [システム] -> [マザーボード] へ移動してください。
  4. マシンが積んでいる約半分のメモリを割り当ててください。8GB なら 4096MB など。
  5. 再度仮想マシンを起動してください。
    docker-machine start [仮想マシン名]

データサイエンス 100 本ノックのプロジェクトを取得

コマンドプロンプト等を立ち上げて、プロジェクトを clone してきます。
ただし、Windows 環境だと clone によってスクリプトの改行コードが自動的に変換され、実行に影響を及ぼす可能性があるようです。
一応コマンドは書いておきますが、 GitHub のページから zip をダウンロードしてきて展開することを強くオススメ致します。

git clone https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess.git  

共有フォルダの設定

もし 100 本ノックのプロジェクトをユーザーディレクトリ以外に配置した場合は本設定が必要です。
【必要】C:\tmp\ など。
【不要】C:\Users\user_name\ 以下のディレクトリ。

この設定がない場合、格納されたファイル群が表示されません。

  1. Oracle VM VirtualBox を起動してください。
  2. もし仮想マシンが起動しているのであれば停止させてください。
    docker-machine stop [仮想マシン名]
  3. [設定] -> [共有フォルダー] へ移動してください。
  4. 新規共有フォルダーを追加します。
  5. [フォルダーのパス] は、100knocks-preprocess を格納したパスを指定してください。
    例: C:\projects
  6. [フォルダー名] は、先頭に / をつけたフルパスを指定してください。ドライブ名のコロンは不要です。
    例: /C/projects
  7. オプションは、"自動マウント" と "永続化する" にチェックを入れてください。

データサイエンス 100 本ノックのビルド

Docker Quickstart Terminal を立ち上げてください。
データサイエンス 100 本ノックのフォルダに移動し、コンテナをビルドします。
そこそこ時間がかかるので、しばらく待ちましょう。

cd 100knocks-preprocess  
docker-compose up -d --build  

演習問題にアクセス

お好みのブラウザで、下記の URL を叩いてください。
http://192.168.99.100:8888

そうすると Jupyter Lab に入るので、左のサイドバーのフォルダマークを選択します。
そこから work フォルダを選択し、お好みの言語の .ipynb を選択してください。
演習問題に到達です!

動作確認と、100本ノックをするにあたって

Python の学習を行いたいので、 Python で動作確認を行ってみます。
work 下の preprocess_knock_Python.ipynb を起動します。
次に、ライブラリのインポート等がつらつらと書いてあるセルをクリックし、[Shift + Enter]をするとそのセルが実行されます。
何のエラーもなく実行されれば環境構築は完了です。

問題を解くにあたって、下記に出題意図が記載されているので確認して解いていきましょう。
/docker/doc/100knocks_questions.pdf

また、データ同士の結合などの問題もあるので、下記の ER 図も利用すると便利です。
/docker/doc/100knocks_ER.pdf

詰まった箇所

どれがクリティカルな原因かは分かりませんが、実行の際に詰まって変えたポイントを記載しておきます。
どれも、/docker/doc/100knocks_guide.pdf を良く読めば回避できたものなので、自戒を込めて共有します。

  • git clone でプロジェクトを落とした
    • Windows 環境であれば、zip で落としてきて展開するほうが無難
  • docker-compose をコマンドプロンプトから実行していた
    • Docker Quickstart Terminal から実行しなければいけない

何本か打ってみた感想

  • 同じ問いに対して、それぞれの言語でどう書くのか学べる
  • 普段、自分が解決しているやり方、書き方とは異なる書き方が知れる
  • 至れり尽くせりというか、環境も資料も整っていて本当に無料でいいのかと不安になった
  • 素晴らしい教材ありがとうございます!

Docker操作補足

コマンドは、特に記載がなければ Docker Quickstart Terminal で叩いてください。

補足1: 中断の仕方及び終了の仕方

  1. docker-compose stop でコンテナの停止
  2. docker-machine stop [仮想マシン名] で仮想マシンを停止。
    default で実行しているのであれば、docker-machine stop でも良いです。

補足2: 再開の仕方

  1. Docker Quickstart Terminal を開いて仮想マシンを立ち上げる。
    • もしくは、docker-machine start [仮想マシン名] で仮想マシンの立ち上げ。
  2. cd して 100knocks-preprocess まで移動
  3. docker-compose start でコンテナの立ち上げ
  4. http://192.168.99.100:8888 にアクセス
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

気になった技術や、開発を楽にするテクニックなどについて書きます。 基本的に備忘録として記事を投稿します。

よく一緒に読まれる記事

3件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
06/30 17:48

こんにちわ、ゆづるさんのデータサイエンス100本ノックの記事を見て興味を持ち、環境構築初心者ですが、Docker Toolboxを使用し、始めてみましたが、http://192.168.99.100:8888からLabに移行後の画面でworkフォルダ以下にipyndファイルが表示されません。 VirtualBoxの共有設定もメモリ設定も記事の通りに行ったと思うのですが、原因がわかりません。何度か全部アンイストールしてやり直してるのですが改善されず途方にくれています。 このような現象に心当たりありましたら、アドバイス頂けると嬉しいです。

06/30 21:25

@c9c5A8x21S57ZfTH コメントありがとうございます! 私の記事が切っ掛けになったことを嬉しく思います。

ご質問いただいな内容について調査致しました。 本件、原因は Docker の共有フォルダの設定間違いだと考えられます。 これは、私の記載に誤りがあり、またデータサイエンティスト協会のスライドを参考にしても解決できない問題でした。 記事は後日修正致します。

正しい共有フォルダの設定方法について。

  1. docker-machine stop などで 仮想マシンを停止した状態にする
  2. 共有フォルダの設定を開く
  3. "フォルダーのパス" には、100本ノックのフォルダが格納された親フォルダを指定する。 仮に、C:\Projects とします。
  4. "フォルダー名" には、/C/Projectsを入れてください。
  5. 自動マウント、永続化にチェックを入れる

動作確認は行いましたが、それでも動かない場合はまたご一報ください。

また、この共有設定についてですが、ユーザーディレクトリ配下(C:\Users\ 配下)に100本ノックのファイルを置いた場合は設定不要となります。 いざという時は、そちらに配置してみてください。

コメントくださったお陰で、自分の知識を改めるきっかけになりました。 ありがとうございます。

07/01 03:39

@yuduru 返信ありがとうございます。アドバイスを参考にフォルダを適切に配置し試行したところ、ファイルを反映することが出来ました。初歩的な質問でしたが、返信していただけた事に感謝しております。これからも購読させていただきます。