61

Click here to load reader

2017823 pythonを始めよう

Embed Size (px)

Citation preview

Page 1: 2017823 pythonを始めよう
Page 2: 2017823 pythonを始めよう

自己紹介

Page 3: 2017823 pythonを始めよう

自己紹介

吉海 将太

前職でUnity(C#)、Webアプリ(Python, Docker)、Pepperアプリ(Python)の開発に携わりました。今は、バックエンドの開発(Python, Go, AppEngine) インフラの構築(Kubernetes, Google container Engine)を担当してます。

Software Engineer

Kabuku, Inc.

https://www.kabuku.co.jp/

Page 4: 2017823 pythonを始めよう

自己紹介

Twitterやってます。@yoshikai_

スプラトゥーン2とシャドウバースをちょくちょくやってます

下記のイベントで登壇したり

Kubernetes Meetup Tokyo #4 at 2017/04/20

Kubernetes Meetup Tokyo @ Google Cloud Next Tokyo LT

golang.tokyo #5 at 2017/04/27

Page 5: 2017823 pythonを始めよう

会社説明

Page 6: 2017823 pythonを始めよう
Page 7: 2017823 pythonを始めよう
Page 8: 2017823 pythonを始めよう

今日のターゲット

Page 9: 2017823 pythonを始めよう

今日のターゲット

● Python未経験者

● Python初心者

Page 10: 2017823 pythonを始めよう

今日のゴール

Page 11: 2017823 pythonを始めよう

今日のゴール

● Pythonについてざっくり知ってもらう

● 家に帰ったらPythonを触る

● 履歴書にPythonでの開発経験ありとかけるようになる

Page 12: 2017823 pythonを始めよう

今回の流れ

● Pythonについて○ 特徴や他の言語との比較など

● Pythonを学ぼう

● Pythonで開発しよう○ 弊社の開発フローを紹介

● 最近のTopic● ハンズオン

○ Anaconda 使います

○ 勉強会のページにPython3.5って書いてあるんですが 3.xでも大丈夫です

Page 13: 2017823 pythonを始めよう

Pythonについて

Page 14: 2017823 pythonを始めよう

Pythonの特徴

● 読みやすい文法

● 直感的なオブジェクト指向

● 手続き型のコードによる、自然な表現

● パッケージの階層化もサポートした、完全なモジュール化サポート

● 例外ベースのエラーハンドリング

● 高レベルな動的データ型

● 拡張とモジュールはC/C++で書くのが容易

● 事実上すべてのタスクをこなせる、広範囲に及ぶ標準ライブラリとサードパーティの

モジュール

● 今最も熱い言語

Page 15: 2017823 pythonを始めよう

とてもクリーンで読みやすい文法

Page 16: 2017823 pythonを始めよう

Pythonの良いところ

● かぎかっこで囲む必要がなかったりと書くの楽

● ゆるい感じの書き方で動く

● 読みやすい

● 何をやるにもモジュールがあるので開発効率が最高

Page 17: 2017823 pythonを始めよう

Pythonの気になるところ

● 動作速度が遅い

● タブで区切る文法が独特

● 日本語の情報が若干すくない(最近はそうでもない)

● Python2とPython3で互換性がない

● 2バイト文字の扱いが微妙(Python2のみ)

Page 18: 2017823 pythonを始めよう

他の言語との比較

Page 19: 2017823 pythonを始めよう

他言語との比較

Page 20: 2017823 pythonを始めよう

他言語との比較

Page 21: 2017823 pythonを始めよう

他言語との比較

Page 22: 2017823 pythonを始めよう

Top Programming Languages 2017 by IEEE Spectrum

Page 23: 2017823 pythonを始めよう
Page 24: 2017823 pythonを始めよう

Python 事例

● Dropbox● Pepper● Google (App Engine)● Instagram● Walt Disney● NASA

Page 25: 2017823 pythonを始めよう

Pythonの使い所

● Webアプリの開発

● AI、統計、科学計算

モジュールが豊富で書くのが楽なので、開発スピードが求められる案件に向いている

ただ、C++、Goなどと比べて処理速度や動作速度が劣る場合が多いので、高速な処理

速度が必要な箇所はPython以外を使うと良い

Page 26: 2017823 pythonを始めよう

Pythonを学ぼう

Page 27: 2017823 pythonを始めよう

オススメの書籍

初心者向け

みんなのPython 第4版(表紙がファンシーでかわいい)

中級者向け

Effective Python (必読)

効率的で優れたプログラムはどのように書けばよいのか、を指南。

ベストプラクティス、ヒント、落とし穴の避け方や達人プログラマのコードなどを紹介し、効

果的な優れたPythonプログラムを書くノウハウをまとめています。

Page 28: 2017823 pythonを始めよう

Python Japan http://www.python.jp/

● 和訳ドキュメント

● ニュース

● イベント

● 求人情報

● コミュニティ

最近、Slackのチャンネルが出来ました

http://www.python.jp/news/pythonjp_slack.html

Page 29: 2017823 pythonを始めよう

公式ドキュメント

日本語

https://docs.python.jp/3/

英語

https://docs.python.org/3/

知りたいことがあったらまず公式ドキュメントを読もう!

Page 30: 2017823 pythonを始めよう

公式チュートリアル

Python チュートリアル

https://docs.python.jp/3/tutorial/index.html

Page 31: 2017823 pythonを始めよう

カンファレンス

PyCon JPPyCon JPは、Pythonユーザが集まり、PythonやPythonを使ったソフトウェアについて

情報交換、交流をするためのカンファレンスです。

Page 32: 2017823 pythonを始めよう
Page 33: 2017823 pythonを始めよう

実際に手を動かす

WebアプリでもDeepLearningでも何でもあるPythonなら楽しく学習出来ます!

あとは、コードレビューしてくれる人がいると尚良いです。

例:

Webアプリ開発したい! → DjangoやFlask!

DeepLearning ! → TensorFlow, Chainer

強化学習 → ChainerRL

Page 34: 2017823 pythonを始めよう

Pythonで開発を始めよう

Page 35: 2017823 pythonを始めよう

Python3とPython2今から始めるならPython3がオススメ

Python2は2020年に終了予定!!(結構先^^;)

何月何日は未定

ただ、一部ライブラリーが2.7系でないと動かないので注意が必要

3と2のコードはだいたい一緒だが、完全互換ではないので後から移行するのは大変

ちなみに、3系、2系両対応のコードを書くことは可能です。

Page 36: 2017823 pythonを始めよう

コーディング規約 PEP8Pythonのコードは基本的にpep8に準拠して書きます。

pep8をチェックするツールが提供されておりCIツールでチェックすることが可能です。

下記のような規約があります。

● 1レベルインデントするごとに、スペースを4つ使いましょう。

● すべての行の長さを、最大79文字までに制限しましょう(弊社ではignore)● クラスの名前には通常 CapWords 方式を使うべきです

Page 37: 2017823 pythonを始めよう

Python開発環境の構築

ANACONDAがオススメ

主要ライブラリをオールインワンでインストール出来て、すぐに開発に取りかかれます

https://www.continuum.io/downloads

Page 38: 2017823 pythonを始めよう

Jupyter Notebookブラウザから使えるインタラクティブシェル

補完、グラフの表示が出来ます。

ちょっとしたことを試すのに便利です。

Page 39: 2017823 pythonを始めよう
Page 40: 2017823 pythonを始めよう

オススメのIDE

Page 41: 2017823 pythonを始めよう

PyCharmの機能

● コード補完

● pep8準拠の警告表示

● Docker連携

● デバッカー、リモートデバッカー

● DjangoやAppEngineのRun● Unittest(カバレッジをPythonファイルの行の色で表示)

● 豊富なplugin(Vim)

Page 42: 2017823 pythonを始めよう

PyCharm使った開発

● PyCharmが指摘してきた箇所を直しながらコードを書く○ pep8に違反している箇所など

警告が出てる時

問題ないとき

緑になる

Page 43: 2017823 pythonを始めよう

ライブラリーの紹介

Page 44: 2017823 pythonを始めよう

ライブラリー

Web系

● Django (フルスタックのフレームワーク)● Flask (マイクロフレームワーク)● requests(Httpのクライアントライブラリー

DeepLearning

● TensorFlow● Caffe● Chainer (日本製!)● Keras

Page 45: 2017823 pythonを始めよう

ライブラリー

ユニットテスト系

● Nosetest (弊社で使ってます)● Pytest (テストのレポートがかなり詳細に表示されて便利)

Page 46: 2017823 pythonを始めよう

ライブラリーを使う時の注意点

● 最初に標準ライブラリーで実現出来ないか調べる○ https://docs.python.jp/3/library/○ 依存関係を増やさないためにも標準ライブラリーを使おう

● 十分にメンテされているライブラリーか?○ 十分にテストされているか?

○ 更新が止まっているモジュールでバグを踏むと悲惨

○ Pythonのバージョンが上がった場合に動かなくなる可能性がある

Page 47: 2017823 pythonを始めよう

ライブラリーの探し方

# Anaconda系

Anaconda cloud

https://anaconda.org/

# pip (pythonのパッケージ管理ツール)

PyPI - the Python Package Index

https://pypi.python.org/pypi

Page 48: 2017823 pythonを始めよう

弊社の開発フロー

Page 49: 2017823 pythonを始めよう

弊社の開発フロー

● git-flowで開発

○ 新規機能をfeature branchにcommit○ そのfeature branchをdevelopにマージするプルリクエストを作る

○ プルリクエストに対して

■ CIのチェック

■ 人によるコードレビュー

Page 50: 2017823 pythonを始めよう

CI (JenkinsかBitbucet pipeline)

弊社の開発フロー

pep8のチェック

Unitテスト

開発用のbranchにpush

$ pep8

$ nosetest --with-coverage

Page 51: 2017823 pythonを始めよう

最近のTopic

Page 52: 2017823 pythonを始めよう

今流行りのTypeHintsが使えるように!

関数のアノテーションの例

TypeHintsあり

TypeHinstなし

def greeting(name): return 'Hello ' + name

def greeting(name: str) -> str: return 'Hello ' + name

Page 53: 2017823 pythonを始めよう

最新のPython

Python 2.7.13

3の安定版は Python 3.6.2

アルファで3.7系があります。

Python3.7のスケジュール

Page 54: 2017823 pythonを始めよう

おまけ

Page 55: 2017823 pythonを始めよう

Pythonの歴史

名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイ

ソン』

● 1991年 Python 0.90● 2010年7月 Python2.7● 2017年1月 Python3.6

Page 56: 2017823 pythonを始めよう

カブクではエンジニアを募集してます!

● サーバーサイドエンジニア

○ Python, Google Cloud Platform● フロントエンドエンジニア

○ TypeScriptやAngular

https://www.kabuku.co.jp/#jobs

Page 57: 2017823 pythonを始めよう
Page 58: 2017823 pythonを始めよう

ハンズオン

ターミナルで下記のコマンドを入力してjupyter notebookを起動して下さい

コマンドを実行したディレクトリにファイルが作れるのでファイルが保存できるディレクトリ

で実行して下さい

http://localhost:8888

公式チュートリアルの形式ばらない Python の紹介をやります

https://docs.python.jp/3/tutorial/introduction.html

$ jupyter notebook

Page 59: 2017823 pythonを始めよう

ハンズオン

Page 60: 2017823 pythonを始めよう

ハンズオン

Page 61: 2017823 pythonを始めよう

演習問題 FizzBuzz1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わり

に「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には

「FizzBuzz」とプリントすること。