このシリーズでは、データサイエンス初心者でもできるようにDocker(ドッカー)を用いて分析環境を構築していきます!
このシリーズを読むことで、Dockerとはなにかを理解できるだけなく、Dockerによる分析環境ができるようになります!
Docker(を含めたインフラ分野の知識)はデータサイエンティストではもはや実務では必須の知識です。
今回の記事では以下のことを扱います!
- Dockerのコマンドオプションを学ぶ
- Dockerコンテナ上でjupyternotebookを起動しを株価を描画する
Dockerは、現在データサイエンスを専攻している大学生は授業で習っており、今すぐにでも覚えるべき知識です。
今回株価を描画するにあたって、株価の取得元としてバフェットコード様のサイトを利用させていただきます!
それでは、Dockerを学んでいきましょう!
※今回の記事はMacOSでかつバージョンが10.14以上(CtalinaまたはMojave)を想定しています。
WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
LINEのメッセージ欄に各記事のキーワードをお送りいただければ、ダウンロードリンクを送付いたします!
ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!

目次
Dockerのコマンドオプションを学ぼう!

前回Dockerの基本コマンドを学んでいきましたが、その中で一部説明を省いた部分がありました。
例えば、”docker run -d -it -p 80:80 nginx”の”-d -it -p”などの説明は前回飛ばしました。
実は、これらのコマンドオプションと呼ばれるものを理解していないと今後dockerを触ることが難しいのが正直あります。
イメージ、ゲームで基本コマンドを学んだらその後応用のコマンドを学んでいく感じです!
コマンドオプションを学び、Dockerを使える人になりましょう!

Dockerコマンドオプション① -it
まずは-it です!
こちらのオプションは、キーボード上で打ったコマンドを元にコンソールに標準出力するようになるオプションです。
イメージ、使用しているターミナルと会話をすることができるようになる、ものであると思ってください。
こちらのコマンドオプションは、基本的に-iと-tの2つの組み合わせで使われます。
言葉で伝えるより実際に触ってみたほうが理解しやすいのでデモをしてみます!
今回は、pythonのイメージを使い試してみます!
下記のようなコマンドを打ち、pythonコンテナを起動させ、ターミナルと会話ができるようにします!
このとき、プラスワンの知識になりますが、docker run <イメージ名> <コンテナ起動時に打つコマンド> で、pythonコンテナ起動時に何のコマンドを呼び出すのかを指定します!
今回は、bashコマンドを呼び出します!
UNIX系OSで標準的に用いられるシェルプログラムの一つ。
docker run -it python bash

そうすると、画像のようにpythonコンテナ起動させ、bashを呼び出し、ターミナルと会話ができるようになりました!
もし、ターミナルと会話ができなくなる状態を試したい場合は、
docker run python bash
をし変化をみるのも学習としてアリです!
Dockerコマンドオプション② -p (ポート)
次は、-p (ポート)です!
このオプションは、ホストコンピュータのポートとコンテナのポートを紐づけするためのオプションです!
ネットワークを介してPCやコンテナにアクセスするさいの接続口
これを利用することで、ホストコンピュータである我々のPCからコンテナにアクセスし、やりとりをすることができるようになります!
言葉で伝えるより実際に触ってみたほうが理解しやすいのでデモをしてみます!
今回は、Nignxのイメージを使い試してみます!
下記のようなコマンドを打ち、Nginxコンテナを起動させ、 ホストコンピュータ側からポート番号80の接続口を通して、80番にあるNginxコンテナにアクセスできるようにします!(このとき-itでターミナルと会話できるようにしています!)
docker run -it -p 80:80 nginx

実際にアクセスできるか確認してみましょう!
今回は、ローカル環境で動かしているため、localhost(ipアドレスが127.0.0.0.1)の80番ポートにアクセスします!
つまり、localhost:80 にアクセスするのですが、実は80番はNginxのようなWebサーバーではよく使われるポートであるため、:80を抜かしlocalhost だけ記載し省略してもアクセスできます!
アクセスすることができました!
ctrl + c をおし、ターミナルを停止させ次にいきましょう!
Dockerコマンドオプション③ -d(デタッチド)
次は、-d(デタッチド)です!
このオプションは、コンテナをデタッチド・モードで起動できるようにするためのオプションです!
コンテナを起動させたまま、docker内から離れることができるモード
イメージ、冬場に人がいなくてもストーブをつけっぱなしにする、ような感じです!(違うかも)
反対に、-d をしていない場合はフォアグラウンドモードといいます。
dockerを起動させなにかしらコマンドを打った後、exitをし終了するとコンテナが停止するモード
言葉で伝えるより実際に触ってみたほうが理解しやすいのでデモをしてみます!
今回もNignxのイメージを使い試してみます!
下記のようなコマンドを打ち、先ほど入力したコマンドに -d を付け加えて起動させてみます!
docker run -it -d -p 80:80 nginx

こちらをすると、先ほどと違い、起動させたままdockerコンテナから離れたことがわかります!
実際にlocalhostにアクセスすると、Nginxのページにいくことができます!
また、”docker ps ”をしても、nginxコンテナが立ち上がっていることがわかります!

確認できたことところで、一旦こちらのコンテナは停止させ次に行きます!

Dockerコマンドオプション④ -v(ボリューム)
次に-v(ボリューム)コマンドです!
こちらは、ある起動させたいコンテナに、ローカルPCにあるファイルをマウントさせ、起動しているコンテナ上でローカルPCのファイルを扱うことができるコマンドです!
ファイルを共有利用させること
言葉で伝えるより実際に触ってみたほうが理解しやすいのでデモをしてみます!
今回もNignxのイメージを使い試してみます!
今回は、index.htmlが中にあるhtmlフォルダをマウントさせます!
予め皆さんのほうでindex.htmlが中にあるhtmlフォルダを作成してくださるとありがたいです!

ちなみにindex.htmlの中身には”Hello World”と記載させています!

では実際に-vを利用します!
下記のようなコマンドを打ち、htmlフォルダをマウントさせ、Nginxのウェルカムページを”Hello World”が記載されているindex.htmlに差し替えてみます!
docker run -it -d -p 80:80 -v $(pwd)/html:/usr/share/nginx/html nginx

localhostにアクセスすると、ローカルPCにあるhtmlフォルダ内のindex.htmlファイルがマウントされていることがわかります!

これでオプションについてなんとなく理解することができました!
Dockerコンテナ上でPythonを動かしてみよう!

コマンドオプションをみていったところで実践に移っていきます!
今回はjupyternotebookを起動し株価を描画させてみます!
バフェットコードをつかい株価をダウンロードする
それでは実践させてみましょう!
準備としてworkdirフォルダを作成し、workdirフォルダに移動します。

その後、ここに株価のcsvデータを持ってきます!
今回株価を描画するにあたって、株価の取得元としてバフェットコード様のサイトを利用させていただきます!
バフェットコード様のサイトにログインし、株価のダウンロードのタブを開きます!

今回は例として、Zホールディングス(旧ヤフー)の直近2年間の株価を取得します。
期間を指定すると、右上のダウンロードボタンを選択できるようになるため、ボタンをクリックします。

その後、workdirフォルダに先ほど取得したcsvデータを持ってきます!

これで準備ができました!
Docker上でjupyternotebookを起動させ、株価を描画する
それでは早速jupyternotebbokを起動させましょう!
下記のようなコマンドをうち株価を描画させます!
docker run -it -d -p 8888:8888 -v $(pwd):/home/jovyan/work jupyter/scipy-noteb
ook start-notebook.sh --NotebookApp.token=''
余談になりますが、めちゃくちゃ長いコマンドです、、!
実は、このような長いコマンドを打たなくても起動させる方法(docker-compose)は
ありますが、その方法は第5回にて説明します!
それでは、localhost:8888にアクセスします!
すると、jupyternotebookがあることがわかります!

こちらのworkフォルダを選択し中に入るとcsvデータがあることがわかります!

この状態でcsvデータがあるフォルダ内でnotebookのファイルを作成します!
その後、下記のようなコードをかき、csvデータを読み込ませると、データが確認できます!

その後、下記のようなコードをかくと、株価を描画させることができます!

このように株価を描画させることができました!
おまけ- 株価変動が最も大きいときのイベントを特定する
ここからはおまけです!
株価変動が最も大きいときのイベントを特定する、といったことをしていきます!
これをおこなうことで、株価変動がおこった際の原因追求をすることができます!
下記のようなコードを書き、前日比のリターンの差が最も大きい日にちとそのときのリターンを求めます!

今回ですと、Zホールディングスでは2020年7月31日に約18%ものリターンがあったことがわかります!!!
これをもとにZホールディングス関係で2020年7月31日におこったことを調べると、
PayPayブランドの統一の発表や四半期決算説明会が行われたことがわかります!

引用:Zホールディングスの金融サービスを「PayPay」ブランドに統一
このように、dockerをつかい本格的な分析をすることができました!
(adsbygoogle = window.adsbygoogle || []).push({});
まとめ
今回は、
- Dockerのコマンドオプションを学ぶ
- Dockerコンテナ上でjupyternotebookを起動しを株価を描画する
といった流れをおこなっていきました!
次回は、Dockerfileの使い方を理解し、自作のDockerイメージを作る流れを行っていきます!
Dockerのシリーズを通し、データサイエンティストへの一歩を歩みましょう!
WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!
