python for data analysis第1回勉強会(+git入門)

58
統計勉強会第一回 12/4 かわの まこと

Upload: makoto-kawano

Post on 17-Jul-2015

336 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: Python for Data Analysis第1回勉強会(+git入門)

統計勉強会第一回 12/4かわの まこと

Page 2: Python for Data Analysis第1回勉強会(+git入門)

今日やること• Git ~ソースコードをうまく管理しよう~

• 第一章 ~PythonDe統計のための準備~

2

Page 3: Python for Data Analysis第1回勉強会(+git入門)

Gitって?複数人でプロジェクト開発するときにつかう• プロジェクト開発に必要なのは:

• コミュニケーション能力

• 仕様書

• 共同開発環境

3

Page 4: Python for Data Analysis第1回勉強会(+git入門)

Gitって?複数人でプロジェクト開発するときにつかう• プロジェクト開発に必要なのは:

• コミュニケーション能力

• 仕様書

• 共同開発環境 ここでGitの登場

4

Page 5: Python for Data Analysis第1回勉強会(+git入門)

Gitって?複数人でプロジェクト開発するときにつかう• プロジェクト開発に必要なのは:

• コミュニケーション能力

• 仕様書

• 共同開発環境 ここでGitの登場

5

バージョン管理(ソースコードの共有)をして幸せになろう

Page 6: Python for Data Analysis第1回勉強会(+git入門)

プロジェクト開発の流れ

6

Start

メンバー間で仕様を共有

実装担当の割振・把握実装をメンバーに共有

がりがり実装

未実装部分の確認

実装終わった?

End or 振り出しYes

No

Page 7: Python for Data Analysis第1回勉強会(+git入門)

プロジェクト開発の流れ

7

Start

メンバー間で仕様を共有

実装担当の割振・把握実装をメンバーに共有

がりがり実装

未実装部分の確認

実装終わった?

End or 振り出しYes

Noここ重要

Page 8: Python for Data Analysis第1回勉強会(+git入門)

バージョン管理ってソースコードの変更ログを残しながら保存

• ファイルの変更点やディレクトリ構造のスナップショットをとるイメージ

• サーバに保存しておくとPCが逝っても大丈夫

8

Page 9: Python for Data Analysis第1回勉強会(+git入門)

バージョン管理めんどい「◯◯の機能が出来たから添付したソースをプロジェクトに追加しておいて」

• 手間がかかる

• プロジェクトが大きくなるにつれてつらい

「追加・改修したら動かなくなった」• どこを戻せばいいのかわからなくてつらい

「デモよろしく」• 作業中で今動かなくてつらい

9

Page 10: Python for Data Analysis第1回勉強会(+git入門)

バージョン管理めんどいDropboxでよくね?

10

Page 11: Python for Data Analysis第1回勉強会(+git入門)

結局Gitってなんなん?ファイルの変更点をタイムスタンプやログコメントと共にDBに保存するシステム

• ローカルマシン・遠隔サーバ上のリポジトリ(ファイルDB)にファイルを集約できる

• 複数の人間が編集したファイルを自動的に結合(マージ)してくれる

11

Page 12: Python for Data Analysis第1回勉強会(+git入門)

リポジトリとかマージって何リポジトリ(Repository)

• ファイル管理を行うプロジェクトディレクトリ

• ローカルに個人用リポジトリがあったり,サーバに共有リポジトリがある

ブランチ(Branch)

• リポジトリの枝

• 安定版・開発版・レガシー版などリポジトリを分岐させる

コミット(Commit)

• ソースコードの変更箇所をリポジトリに保存してバージョニングすること

12

Page 13: Python for Data Analysis第1回勉強会(+git入門)

リポジトリとかマージって何マージ(Merge)

• 変更ファイルの結合

プッシュ(Push)

• 共有リポジトリに自分のコミットをマージすること

プル(Pull)

• リポジトリからファイルなどをローカルにコピーすること

13

Page 14: Python for Data Analysis第1回勉強会(+git入門)

バージョン管理システムには2種類ある

中央集約型管理システム• リポジトリがプロジェクトに1つだけ

• 開発者はリポジトリからローカルにコピーして作業

分散型管理システム(←Gitはこっち)• 開発者がそれぞれでローカル環境にリポジトリをもつ

• 共有リポジトリとローカルリポジトリを同期する

14

Page 15: Python for Data Analysis第1回勉強会(+git入門)

バージョン管理システムには2種類ある

分散型管理システム(Git)中央集約型管理システム

Page 16: Python for Data Analysis第1回勉強会(+git入門)

改めてGitってLinus / Torvalds氏が開発した分散型バージョン管理

• 彼が開発していたOSのバージョン管理に使うためGit誕生

大規模プロジェクトでも安心の速度で動作

• Google Codeやら某IT企業でも導入されてます

16

Page 17: Python for Data Analysis第1回勉強会(+git入門)

GitのいいところGithubっていう神サービスがある

• https://github.com/ • 無料!

ネットワーク環境がなくてもコミット可• スタバでドヤる時に

• 中央集約型だとネットワーク環境ないとダメ('ω'乂)

Branch, Reset, Mergeが高速• ふーん

17

Page 18: Python for Data Analysis第1回勉強会(+git入門)

ここから手動かすよ

Page 19: Python for Data Analysis第1回勉強会(+git入門)

インストールmacだし,homebrew入ってるよね?ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

sudo brew install git で一発!

19

Page 20: Python for Data Analysis第1回勉強会(+git入門)

準備(ローカル編)ユーザ情報の設定

• ユーザ毎にログイン名や連絡先を登録

• Githubに合わせると楽かもしれない

ローカルリポジトリを作成

20

% git config --global user.name “<your_name>” % git config --global user.email [email protected]

% cd <your_directory>/ % mkdir python_analysis_code % cd python_analysis_code % git init

Page 21: Python for Data Analysis第1回勉強会(+git入門)

さっそくまずファイルつくろ?

状態statusを見てみよう

• Untracked files:にREADMEがあるはず

• お初なファイルだからgitも驚いてる

21

% touch README

% git status

Page 22: Python for Data Analysis第1回勉強会(+git入門)

さっそくファイルをaddする

statusを見る

• Changes to be committed:に入ったはず

• ステージに乗ったとか言うはず(今後gitが追跡してくれる)

22

% git add README

% git status

Page 23: Python for Data Analysis第1回勉強会(+git入門)

さっそくcommitする

• コミットログは短く,わかりやすいものを

statusを見る

• nothing to commit, working directory cleanとか出てたらOK

23

% git commit -m “first commit”

% git status

Page 24: Python for Data Analysis第1回勉強会(+git入門)

ここからちょっと難しいブランチ覚えてる?

• 作業を分岐させる

ブランチを見てみよう

• できてたでしょ? *は今自分がいるブランチ24

% git checkout -b issue1

% git branch issue1 % git checkout issue1

or

% git branch

Page 25: Python for Data Analysis第1回勉強会(+git入門)

結局ブランチ何

25

masterブランチ

issue1ブランチ

Page 26: Python for Data Analysis第1回勉強会(+git入門)

結局ブランチ何

26

Page 27: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験まずブランチを戻そう

確認

• ちゃんとmasterに*ついてる?

27

% git checkout master

% git branch

Page 28: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験さっきのREADMEに書こう

さっそくadd / commitする

そういえば今までどんなことしたっけ?

28

% vim README さいこうだよ!かっこいいよ!

% git add README % git commit -m “READMEに1行追加”

% git log

Page 29: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験さっきのブランチに切り替える

• どうやるか覚えてる?

29

Page 30: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験さっきのブランチに切り替える

ファイルを更に編集しよう

終わったらadd / commitしてね• もうだいじょうぶだよね?

30

% git checkout issue1

% vim README さいこうだよ!かっこいいよ!でもわたしなんかだめだめだよ….

Page 31: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験さっきのブランチに切り替える

ファイルを更に編集しよう

終わったらadd / commitしてね

もうだいじょうぶだよね31

% git checkout issue1

% vim README さいこうだよ!かっこいいよ!でもわたしなんかだめだめだよ….

% git add README % git commit -m “返事した”

Page 32: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験issue1ブランチの変更点をmasterブランチにマージしよう!

…のまえに確認しよう

• 一行しか書いてないよね?

32

% git checkout master % less README

Page 33: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験ついにマージする時がきた

確認だッ!!

• どうなったよ?

33

% git merge issue1

% less README

Page 34: Python for Data Analysis第1回勉強会(+git入門)

ブランチ体験もうissue1ブランチとはお別れの時(削除)

本当にもういないの…?

34

% git branch -d issue1

% git branch

Page 35: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦 よくある問題isコンフリクト

Page 36: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦まずブランチ2つ(issue2, issue3)つくろう

• もういけるよね?

36

Page 37: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦まずブランチ2つ(issue2, issue3)つくろう

もういけるよね?

一応確認

• issue2に*ついてるよね

37

% git branch issue2 % git branch issue3 % git checkout issue2

% git branch

Page 38: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦さらにファイルを編集

add / commit しましょ

38

% vim README さいこうだよ!かっこいいよ!でもわたしなんかだめだめだよ…. そんなことないよ!僕よりイケてるよ!

% git add README % git commit -m “励まされた”

Page 39: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦issue3ブランチにチェックアウト

確認してみる

ファイルを編集しちゃおう

39

% git checkout issue3

% less README

% vim README さいこうだよ!かっこいいよ!でもわたしなんかだめだめだよ…. そうかも…ダメかもしれない….

% git add README % git commit -m “追い込まれた”

Page 40: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦issue2ブランチをmasterにマージしちゃおう

確認してみる

• masterのREADMEにも励まされたのが入ってるよね

40

% git checkout master % git merge issue2

% git log % less README

Page 41: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦issue3ブランチをmasterにマージしちゃおう

…あれ?3行目のとこどうすんの?

41

Page 42: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦とりあえずやってみよう

ほらやっぱりコンフリクト(競合)おきた

ファイルはどうなったん?

42

% git merge issue3

Auto-merging README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result.

% vim README

Page 43: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦こんな感じだよね

43

さいこうだよ!かっこいいよ!でもわたしなんかだめだめだよ…. <<<<<<< HEAD そんなことないよ!僕よりイケてるよ! ======= そうかも…ダメかもしれない…. >>>>>>> issue3

←もともとあったやつ

←マージしようとした奴にあったやつ

Page 44: Python for Data Analysis第1回勉強会(+git入門)

ブランチ実戦ここは直すしかない

コンフリクトも修正したし,コミット

44

さいこうだよ!かっこいいよ!でもわたしなんかだめだめだよ…. そんなことないよ!僕よりイケてるよ! そうかも…ダメかもしれない….

% git add README % git commit -m “issue3ブランチをマージ”

Page 45: Python for Data Analysis第1回勉強会(+git入門)

Gitの動きはだいたいわかったよね?

【参考】サルでもわかるGit入門 http://www.backlog.jp/git-guide/ 【Special Thanks】karasuさん できる!プロジェクト管理

Page 46: Python for Data Analysis第1回勉強会(+git入門)

そういえばGithubって?何回か出てきたサーバの共有レポジトリを無料で作れちゃうすごいサービス

• https://github.com

詳しいことはまた今度.

ちなみに,GithubはPublicにしかできないので,

もし誰にも見られたくない,っていうのであれば,

Bitbucketがオススメです.

46

Page 47: Python for Data Analysis第1回勉強会(+git入門)

まとめGitを使えばかわいいは作れる!

【参考】サルでもわかるGit入門 http://www.backlog.jp/git-guide/

【Special Thanks】karasuさん できる!プロジェクト管理

47

Page 48: Python for Data Analysis第1回勉強会(+git入門)

つかれたから休憩 このあとは統計だよ

Page 49: Python for Data Analysis第1回勉強会(+git入門)

Python for Data Analysis

Page 50: Python for Data Analysis第1回勉強会(+git入門)

What Is This Book About?Pythonでデータを操作・処理・整理・理解するための基礎を教えてくれる

• 実践的な科学計算

• 手法の解説はしないよ

50

Page 51: Python for Data Analysis第1回勉強会(+git入門)

Why Python for Data Analysis?

近年アプリ・学問において科学計算で使われるようになってきた

• データ分析・計算・可視化で優れてる

• CythonとかでCやC++とのインターフェースが用意され,コンパイルも速くなってきてる

• RやMATLABと違って科学計算だけでなくProductにも使える

• JavaやC++には速度負けるけど,プログラミングの時間は短縮できるし,トレードオフでしょ(いけるならCとかのほうがいい)

51

Page 52: Python for Data Analysis第1回勉強会(+git入門)

Essential Python LibrariesNumPy

• 配列とか高速に使える

pandas• データ構造とかをよしなに扱える

matplotlib• グラフとか可視化最強

IPython• リッチなインタラクティブコンソール

SciPy• いろいろな科学計算が入ってる

52

Page 53: Python for Data Analysis第1回勉強会(+git入門)

ここからオリジナル

Page 54: Python for Data Analysis第1回勉強会(+git入門)

おすすめコンソールiterm2

• http://iterm2.com/ • Preference>Profiles>Command

• /bin/zsh

~/.zshrcを作成,編集すると幸せになれる• 痒いところに手が届くようになるよ

• 他人のを参考にするといい

• https://gist.github.com/mollifier/4979906/ • http://shepherdmaster.hateblo.jp/entry/20110924/1316881131

54

Page 55: Python for Data Analysis第1回勉強会(+git入門)

おすすめエディタSublimeText3

• http://www.sublimetext.com/3/

設定とかプラグイン• http://qiita.com/mattuso/items/

259f60b3d3bc46bf983c

55

Page 56: Python for Data Analysis第1回勉強会(+git入門)

pyenvpythonには

• 2系3系と言われるバージョンがある

• いろいろなディストリビューションがある

使い分けちゃおう!っていうのがpyenv

56

Page 57: Python for Data Analysis第1回勉強会(+git入門)

pyenv インストール諸々インストール

設定(~/.zshrc追記)

使い方

57

% sudo brew install pyenv

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi export PYENV_ROOT=/usr/local/opt/pyenv

% pyenv install 2.7.8 % pyenv install anaconda-2.1.0

% pyenv global anaconda-2.1.0 % pyenv local anaconda-2.1.0

Page 58: Python for Data Analysis第1回勉強会(+git入門)

ライブラリのインストールpip使えば世界は救われる

matplotlibはちょっとだけ特殊

58

% pip install numpy scipy pandas ipython

% brew install freetype % brew install libpng # 確かかなり重要 % pip install matplotlib

※sudoは適宜つけてくだしあ