2017823 pythonを始めよう
TRANSCRIPT
自己紹介
自己紹介
吉海 将太
前職でUnity(C#)、Webアプリ(Python, Docker)、Pepperアプリ(Python)の開発に携わりました。今は、バックエンドの開発(Python, Go, AppEngine) インフラの構築(Kubernetes, Google container Engine)を担当してます。
Software Engineer
Kabuku, Inc.
https://www.kabuku.co.jp/
自己紹介
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
会社説明
今日のターゲット
今日のターゲット
● Python未経験者
● Python初心者
今日のゴール
今日のゴール
● Pythonについてざっくり知ってもらう
● 家に帰ったらPythonを触る
● 履歴書にPythonでの開発経験ありとかけるようになる
今回の流れ
● Pythonについて○ 特徴や他の言語との比較など
● Pythonを学ぼう
● Pythonで開発しよう○ 弊社の開発フローを紹介
● 最近のTopic● ハンズオン
○ Anaconda 使います
○ 勉強会のページにPython3.5って書いてあるんですが 3.xでも大丈夫です
Pythonについて
Pythonの特徴
● 読みやすい文法
● 直感的なオブジェクト指向
● 手続き型のコードによる、自然な表現
● パッケージの階層化もサポートした、完全なモジュール化サポート
● 例外ベースのエラーハンドリング
● 高レベルな動的データ型
● 拡張とモジュールはC/C++で書くのが容易
● 事実上すべてのタスクをこなせる、広範囲に及ぶ標準ライブラリとサードパーティの
モジュール
● 今最も熱い言語
とてもクリーンで読みやすい文法
Pythonの良いところ
● かぎかっこで囲む必要がなかったりと書くの楽
● ゆるい感じの書き方で動く
● 読みやすい
● 何をやるにもモジュールがあるので開発効率が最高
Pythonの気になるところ
● 動作速度が遅い
● タブで区切る文法が独特
● 日本語の情報が若干すくない(最近はそうでもない)
● Python2とPython3で互換性がない
● 2バイト文字の扱いが微妙(Python2のみ)
他の言語との比較
他言語との比較
他言語との比較
他言語との比較
Top Programming Languages 2017 by IEEE Spectrum
Python 事例
● Dropbox● Pepper● Google (App Engine)● Instagram● Walt Disney● NASA
Pythonの使い所
● Webアプリの開発
● AI、統計、科学計算
モジュールが豊富で書くのが楽なので、開発スピードが求められる案件に向いている
ただ、C++、Goなどと比べて処理速度や動作速度が劣る場合が多いので、高速な処理
速度が必要な箇所はPython以外を使うと良い
Pythonを学ぼう
オススメの書籍
初心者向け
みんなのPython 第4版(表紙がファンシーでかわいい)
中級者向け
Effective Python (必読)
効率的で優れたプログラムはどのように書けばよいのか、を指南。
ベストプラクティス、ヒント、落とし穴の避け方や達人プログラマのコードなどを紹介し、効
果的な優れたPythonプログラムを書くノウハウをまとめています。
Python Japan http://www.python.jp/
● 和訳ドキュメント
● ニュース
● イベント
● 求人情報
● コミュニティ
最近、Slackのチャンネルが出来ました
http://www.python.jp/news/pythonjp_slack.html
公式ドキュメント
日本語
https://docs.python.jp/3/
英語
https://docs.python.org/3/
知りたいことがあったらまず公式ドキュメントを読もう!
公式チュートリアル
Python チュートリアル
https://docs.python.jp/3/tutorial/index.html
カンファレンス
PyCon JPPyCon JPは、Pythonユーザが集まり、PythonやPythonを使ったソフトウェアについて
情報交換、交流をするためのカンファレンスです。
実際に手を動かす
WebアプリでもDeepLearningでも何でもあるPythonなら楽しく学習出来ます!
あとは、コードレビューしてくれる人がいると尚良いです。
例:
Webアプリ開発したい! → DjangoやFlask!
DeepLearning ! → TensorFlow, Chainer
強化学習 → ChainerRL
Pythonで開発を始めよう
Python3とPython2今から始めるならPython3がオススメ
Python2は2020年に終了予定!!(結構先^^;)
何月何日は未定
ただ、一部ライブラリーが2.7系でないと動かないので注意が必要
3と2のコードはだいたい一緒だが、完全互換ではないので後から移行するのは大変
ちなみに、3系、2系両対応のコードを書くことは可能です。
コーディング規約 PEP8Pythonのコードは基本的にpep8に準拠して書きます。
pep8をチェックするツールが提供されておりCIツールでチェックすることが可能です。
下記のような規約があります。
● 1レベルインデントするごとに、スペースを4つ使いましょう。
● すべての行の長さを、最大79文字までに制限しましょう(弊社ではignore)● クラスの名前には通常 CapWords 方式を使うべきです
Python開発環境の構築
ANACONDAがオススメ
主要ライブラリをオールインワンでインストール出来て、すぐに開発に取りかかれます
https://www.continuum.io/downloads
Jupyter Notebookブラウザから使えるインタラクティブシェル
補完、グラフの表示が出来ます。
ちょっとしたことを試すのに便利です。
オススメのIDE
PyCharmの機能
● コード補完
● pep8準拠の警告表示
● Docker連携
● デバッカー、リモートデバッカー
● DjangoやAppEngineのRun● Unittest(カバレッジをPythonファイルの行の色で表示)
● 豊富なplugin(Vim)
PyCharm使った開発
● PyCharmが指摘してきた箇所を直しながらコードを書く○ pep8に違反している箇所など
警告が出てる時
問題ないとき
緑になる
ライブラリーの紹介
ライブラリー
Web系
● Django (フルスタックのフレームワーク)● Flask (マイクロフレームワーク)● requests(Httpのクライアントライブラリー
DeepLearning
● TensorFlow● Caffe● Chainer (日本製!)● Keras
ライブラリー
ユニットテスト系
● Nosetest (弊社で使ってます)● Pytest (テストのレポートがかなり詳細に表示されて便利)
ライブラリーを使う時の注意点
● 最初に標準ライブラリーで実現出来ないか調べる○ https://docs.python.jp/3/library/○ 依存関係を増やさないためにも標準ライブラリーを使おう
● 十分にメンテされているライブラリーか?○ 十分にテストされているか?
○ 更新が止まっているモジュールでバグを踏むと悲惨
○ Pythonのバージョンが上がった場合に動かなくなる可能性がある
ライブラリーの探し方
# Anaconda系
Anaconda cloud
https://anaconda.org/
# pip (pythonのパッケージ管理ツール)
PyPI - the Python Package Index
https://pypi.python.org/pypi
弊社の開発フロー
弊社の開発フロー
● git-flowで開発
○ 新規機能をfeature branchにcommit○ そのfeature branchをdevelopにマージするプルリクエストを作る
○ プルリクエストに対して
■ CIのチェック
■ 人によるコードレビュー
CI (JenkinsかBitbucet pipeline)
弊社の開発フロー
pep8のチェック
Unitテスト
開発用のbranchにpush
$ pep8
$ nosetest --with-coverage
最近のTopic
今流行りのTypeHintsが使えるように!
関数のアノテーションの例
TypeHintsあり
TypeHinstなし
def greeting(name): return 'Hello ' + name
def greeting(name: str) -> str: return 'Hello ' + name
最新のPython
Python 2.7.13
3の安定版は Python 3.6.2
アルファで3.7系があります。
Python3.7のスケジュール
おまけ
Pythonの歴史
名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイ
ソン』
● 1991年 Python 0.90● 2010年7月 Python2.7● 2017年1月 Python3.6
カブクではエンジニアを募集してます!
● サーバーサイドエンジニア
○ Python, Google Cloud Platform● フロントエンドエンジニア
○ TypeScriptやAngular
https://www.kabuku.co.jp/#jobs
ハンズオン
ターミナルで下記のコマンドを入力してjupyter notebookを起動して下さい
コマンドを実行したディレクトリにファイルが作れるのでファイルが保存できるディレクトリ
で実行して下さい
http://localhost:8888
公式チュートリアルの形式ばらない Python の紹介をやります
https://docs.python.jp/3/tutorial/introduction.html
$ jupyter notebook
ハンズオン
ハンズオン
演習問題 FizzBuzz1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わり
に「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には
「FizzBuzz」とプリントすること。