Slide 1

Slide 1 text

Dockerを使った可 視化環境の作り方 はんなりPython+PyData Osakaの可 視化特集 2019/03/24 @masayuki14

Slide 2

Slide 2 text

Masaといいます もりさきまさゆき @masayuki14 プロ主夫 フリーランス (パートタイム) ‐ ソフトウェアエンジニア ‐ データベーススペシャリスト ‐

Slide 3

Slide 3 text

このアイコン Follow me !!

Slide 4

Slide 4 text

自己紹介 コミュニティ はんなりPython (第3金曜開催@京都) ‐ OSS Gate (京都, 大阪, 東京) ‐ スプーキーズアンバサダー

Slide 5

Slide 5 text

スプーキーズ@京都 ボードゲーム制作 Web系システム ソーシャルゲーム開発 Webエンジニア積極採用中!!

Slide 6

Slide 6 text

スプーキーズ@京都 もくもく会 モクモクモック 2019/03/28 モクモクモック(末木会)#6 ‐ 勉強会 テクテクテック 2019/04/10 テクテクテック #8 サーバ監視や負荷 テストどうやってるの? ‐

Slide 7

Slide 7 text

Dockerを 使った可視化 環境の作り方

Slide 8

Slide 8 text

Dockerを使った可視化環境 の作り方 Docker環境までの道のり 1. Docker環境の紹介 2.

Slide 9

Slide 9 text

Dockerを使った可視化環境 の作り方 Docker環境までの道のり 1. Docker環境の紹介 2.

Slide 10

Slide 10 text

Docker環境までの道のり 可視化アプリをつくろう!! 困ったことがたくさん できることから少しずつ Dockerで開発環境ができてた

Slide 11

Slide 11 text

可視化アプリを作ろう! ハンズオンでDash 簡単にできそう 興味のあるデータがない 懇親会でわいわい アイデアが降りてきた

Slide 12

Slide 12 text

遊園地の待ち 時間を可視化 しよう!

Slide 13

Slide 13 text

USJ! TDL! TDS!

Slide 14

Slide 14 text

可視化アプリを作ろう! というわけで 待ち時間可視化アプリの 開発を始めるが・・・。

Slide 15

Slide 15 text

Python 難しい

Slide 16

Slide 16 text

困ること 多すぎ

Slide 17

Slide 17 text

ところでぼくの基本スペック プログラミング 10年以上 ‐ Pythonコミュニティ 1年ちょっと ‐ Python 3ヶ月 ‐

Slide 18

Slide 18 text

困ったこがたくさん 環境どうしよう MacのプリインストールPython ‐ Dashのためのライブラリ ‐ PC汚したくない ‐ pyenv venv わからん ‐

Slide 19

Slide 19 text

困ったこがたくさん Python慣れてない やりたいことがすぐできないストレス ‐ ライブラリ知らない ‐ 書きながら動かしたい ‐

Slide 20

Slide 20 text

困ったこがたくさん Pandas慣れてない CSVはあるけど目的の形にできない ‐ データ操作のストレスが爆発 ‐ 処理が重い ‐ データだけみたい時こまる ‐

Slide 21

Slide 21 text

困ったこがたくさん PC2台 デスクトップ ‐ ラップトップ ‐ 環境揃えたい ‐

Slide 22

Slide 22 text

なんとか ならんか

Slide 23

Slide 23 text

近道は ない

Slide 24

Slide 24 text

こつこつ やるしか ない

Slide 25

Slide 25 text

できることから少しずつ 環境どうしよう Docker使おう!! ✓ 使い捨てでいいや ✓ バージョンとか気にしなくていい ✓ PC汚れない ✓

Slide 26

Slide 26 text

できることから少しずつ Python慣れてない JupyterNotebook!! ✓ 書いて動かすを繰り返す ✓ 試行錯誤を保存 ✓

Slide 27

Slide 27 text

できることから少しずつ Pandasなれてない MySQLでやる!! ✓ 慣れてる ✓ Pandasは最低限 ✓ そのうち慣れるやろう ✓

Slide 28

Slide 28 text

できることから少しずつ PC2台 docker-compose.yml ✓ Infra as a code ✓ 宣言的な記述で管理 ✓ リポジトリで共有 ✓

Slide 29

Slide 29 text

基本にある考え ゴール重視 可視化アプリが動くこと ‐ できること重視 Pandas覚えたいわけじゃない ‐ 射撃しつつ前進 Joel on Software 読んでくれ ‐

Slide 30

Slide 30 text

Joel on Software

Slide 31

Slide 31 text

こつこつ 進めた結 果

Slide 32

Slide 32 text

Docker環 境のでき あがり

Slide 33

Slide 33 text

Dockerを使った可視化環境 の作り方 Docker環境までの道のり 1. Docker環境の紹介 2.

Slide 34

Slide 34 text

Dockerとは 引用元: https://knowledge.sakura.ad.jp/13265/

Slide 35

Slide 35 text

Dockerとは こんな図でわかるわけない 仮想環境とかよくわからん つよい人の理論 Windowsつらい

Slide 36

Slide 36 text

Dockerとは (雑な解説) コンピュータの中に箱を用意 必要なものを詰め込む いい感じにつかう はんなりPythonに来て たまに使うから ‐

Slide 37

Slide 37 text

できあがったDocker環境 +--------+ +-------+ +---------+ | | | | | | | Dash | ----- | MySQL | ------ | Jupyter | | | | | | | +--------+ +-------+ +---------+ | | +---------+ | | | +----------- | adminer | | | +---------+

Slide 38

Slide 38 text

Dockerfle FROM python:3.7 # for dash RUN pip install dash==0.36.0 RUN pip install dash-html-components==0.13.5 RUN pip install dash-core-components==0.43.0 RUN pip install dash-table==3.1.11 RUN pip install dash-daq==0.1.0 RUN pip install pandas RUN pip install mysql-connector-python==8.0.15 RUN export LANG=ja_JP.UTF-8

Slide 39

Slide 39 text

docker-compose.yml version: '3.7' services: dash: build: context: ./dockerfiles dockerfile: Dockerfile.dash command: ["python", "/work/dash/app.py"] working_dir: /work depends_on: - db volumes: - ./:/work - ./logwh:/log ports: - 8050:8050

Slide 40

Slide 40 text

docker-compose.yml db: image: mysql:8.0 command: - --default-authentication-plugin=mysql_native_password - --secure-file-priv=/log restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQ_DATABASE: pydata ports: - 3306:3306 working_dir: /work volumes: - ./db/mysql/datadir:/var/lib/mysql - ./db/mysql/log:/var/log/mysql

Slide 41

Slide 41 text

Infra as a Code Dockerfle docker-compose.yml etc… 環境を再現しやすくなる

Slide 42

Slide 42 text

Demo https://git.io/fjJvi

Slide 43

Slide 43 text

まとめ Dockerを使って問題解決! 可視化関係なかった! はんなりPython来てね

Slide 44

Slide 44 text

ありがと うござい ました