Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python札幌201406

3,502 views

Published on

Published in: Technology
  • Sex in your area is here: ❶❶❶ http://bit.ly/39sFWPG ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD TH1S BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Python札幌201406

  1. 1. Python札幌201406 >>> "Python3へ" >>> "Djangoフレームワークの近況とこれから" >>> "ApacheSparkとPythonを使ってデータ分析"
  2. 2. お前、誰よ? • 岡野 真也 (tokibito) • 住んでた場所: 大阪→和歌山→北海道(北見)→北海道(札幌)→東京 • 株式会社ビープラウド • 受託開発(Webシステム、Android/iOSアプリなど) • システム開発コンサルティング • プログラミング研修 • Pythonは8年ぐらい使ってます • Djangoは7年ぐらい使ってます(0.95~) ↑ ビープラウドが作ってる
  3. 3. 今日のテーマ >>> "Python3へ" >>> "Djangoフレームワークの近況とこれから" >>> "ApacheSparkとPythonを使ってデータ処理" 3つのうち、後ろ2つはアンケートで希望の多かったものです。
  4. 4. Python3へ
  5. 5. Python3とは? • 最新版のPython • 最新バージョンは3.4.1
  6. 6. 言いたいこと • できるだけPython3を使いましょう
  7. 7. Pythonのバージョンについて • 現在、Pythonのバージョンは2系(2.x)と3系(3.x)がある • 2系はまだ現役で使われている • 機能追加は3系のみ • 2系はバグ・セキュリティの対応のみ • 2系の最新版は2.7.7 • 2.8はリリースされません(重要) • PEP-404 Python 2.8 Un-release Schedule • 2.7からのアップグレードはPython3系です
  8. 8. なぜ最新版を使ってないの? • 2系から3系になるときに、互換性の無い変更があった • →移行にはコードの修正が必須 • Python3リリース当初は、2系で動いていたサードパーティモジュー ルがほとんど動かなかった • →移行するためにはサードパーティモジュールのPython3対応も必要 • 既存のコード資産が多く移行が大変 • →移行にはコスト・時間がかかる • 一部のLinuxディストリビューションではPython製のツールが多く、一度にす べて移行するのが難しかった
  9. 9. 2系と3系の違い • print • 2.x: print "hoge" • 3.x: print("hoge") • 文字列型(str) • 2.x: "日本語" ← !!! • 3.x: "日本語".encode('utf8') # 2系のstr型に相当するものはbytes型 • 文字列型(Unicode) • 2.x: u"日本語" • 3.x: "日本語" ← !!! # 2系のunicode型に相当するのはstr型 • 3.3以降では u"日本語" が使えるようになった • 除算 • 2.x: 5 / 2 # => 2 • 3.x: 5 / 2 # => 2.5
  10. 10. 2系と3系の違い • 辞書のitemsメソッド • 2.x: {"a": 1}.items() # => [('a', 1)] というリストが返される • 3.x: {"a": 1}.items() # => dict_items([('a', 1)]) というイテレータが返される • 標準モジュールのUnicode対応 • 2系では入力がstr型(非Unicode)だったものが、3系のstr型(2系のunicode型 相当)に対応した • csvモジュール • 標準モジュールのAPI変更 • パッケージ名が変更されていたり • urllib • 2.x: urllib.urlopen() • 3.x: urllib.request.urlopen() • 他多数
  11. 11. 2系はいつまで使えるの? • 公式のPython2.7系メンテナンス期限は2020年まで • Linuxなどのディストリビューションのサポート期限まで • RHEL7はPython2.7だけど2024年までサポートされるらしいよ
  12. 12. Python3を使う利点は? • 文字列型がUnicodeになったのでマルチバイトの文字列操作のハマ りどころが減ってる • csvモジュールとか! ※3系で追加された機能の多くは2.7にバックポートされてる →移行しやすくするためです
  13. 13. サードパーティモジュールのPython3対応状 況 • 大きめのプロジェクトでも、おおむね対応済み • 2.7と3.3, 3.4に対応してるものが多い • 2.6をサポートしなくなってきている • PyPIのダウンロード数上位のPython3対応状況 • 163/200 (2014/6/7) • フォークされたプロジェクトで対応してるものもある • http://python3wos.appspot.com/
  14. 14. 2系と3系どちらを使えばいいの? • 今現在、業務で使うなら2系(問題なければ3系でも可) • 弊社で使ってるモジュールのうち2系でしか動かないもの • mercurial • fabric • ansible • Skype4Py • GoogleAppEngineやAzureなどのPaaSがサポートしているのは2系 • これから勉強を始めるなら3系 • 3系の最新バージョン(3.4)
  15. 15. 3系に対応するには • 2系に対応しない場合 • 3系の文法に書き換える • 3系の標準モジュールに対応させる • 2系と3系で動くようにする場合 • 2系と3系で動く文法に書き換える(2系の古いバージョンを切り捨てる) • try .. exceptなど • 3.0~3.2に対応しようとすると大変なので切り捨てても良い • 互換性を吸収するモジュールを用意する(compat) • 2to3やsixを使う
  16. 16. 2系から3系への移行に便利なツール • 2to3 • Python2のコードをPython3対応に変換する • 変換したコードが必ず正しく動く保証はない • 変換に時間がかかるため開発時のテンポが悪い • six • Python2とPython3の差異を吸収するためのAPIや定数を提供 • 型の差異(例. Python2: int & long, Python3: int) • 文法の差異(例. metaclass,) • バイナリ列と文字列の扱い • tox • マルチバージョンでのテスト実行(コマンド一発で復数のvirtualenv作成) • GitHub+TravisCIで使うとさらに良い
  17. 17. 2系から3系への移行のアプローチ例 1. テストコードがない場合→テストコードを書く 2. toxでテストできるようにする 3. 2.7未満のバージョンを使っている場合→まずは2.7で動くようにす る 4. サードパーティモジュールを3系対応のものに変更する • バージョンアップで対応できるものもある • Python3に対応したフォークを使う手もある 5. 2系でしか動かない文法を、2.7と3.4で動くものに修正する • sixを利用するのも良い 6. 2系と3系で互換性がない部分が動くように修正する • sixを利用するのも良い • ファイル入出力や文字列のエンコーディング周り • 標準モジュールの違い
  18. 18. まとめ • 業務ならPython2を使わざるを得ない状況がまだある • サードパーティ製モジュールは割とPython3に対応してきてる • できるだけPython3を使いましょう
  19. 19. 参考 • http://www.slideshare.net/naoina/python-kyoto-study • http://www.slideshare.net/aodag/bpstudy54-python3 • http://docs.python.jp/3.3/howto/pyporting.html
  20. 20. Djangoフレームワークの 近況とこれから
  21. 21. Djangoの近況 • 最新の安定バージョンは1.6.5 • 1.6のリリースは2013/11/6 • 最新のLTSリリースバージョンは1.4.13 • 開発中の1.7系は1.7.b4 • alpha→beta→RC→final
  22. 22. Djangoのメンテナンスポリシー • 1つ前の安定版までメンテナンスされる • 1.7がリリースされると、1.5はメンテナンス終了
  23. 23. 最近のリリースのペース • Django 1.3 (2011/05) • Django 1.4 (2012/03) • Django 1.5 (2013/02) • Django 1.6 (2013/11) 9~11ヶ月ぐらいでリリースされてる →リリースから2年程度でメンテナンス終了する可能性が高い
  24. 24. LTSリリースとは? • 長期サポート(Long-term support)リリース • Django1.4が最初のLTSリリース(2013/09のDjangoConでアナウンスされた) • 安定版のリリースから3年以上のサポートが保証される • Django1.4のリリースは2012年3月 • 1.4LTSは2015年3月までメンテナンスされる
  25. 25. 最近のリリースの内容 • 1.4~1.6
  26. 26. Django1.4 • タイムゾーンサポート • デフォルトのプロジェクトレイアウトを変更 • Python2.5以上 • その他 • https://docs.djangoproject.com/en/dev/releases/1.4/
  27. 27. タイムゾーンサポート • データベースにUTCで保存し、設定でローカル日時に変換して使用 • settings.USE_TZ = True の場合のみ • django.utils.timezoneモジュール import datetime from django.utils.timezone import utc now = datetime.datetime.utcnow().replace(tzinfo=utc)
  28. 28. デフォルトのプロジェクトレイアウトを変更 • 旧 • project/manage.py • project/settings.py • project/urls.py • project/app/models.py # アプリケーションのレイアウトは変更無し • 新 • project/manage.py • project/project/settings.py • project/project/urls.py • project/project/wsgi.py • project/app/models.py • PYTHONPATHが重なる問題が解消した
  29. 29. Django1.5 • カスタムユーザーモデルのサポート • Python3サポート(実験的) • Python2.6.5以上 • その他 • https://docs.djangoproject.com/en/dev/releases/1.5/
  30. 30. カスタムユーザーモデルのサポート • django.contrib.authのUserモデルを差し替えられるようになった • settings.AUTH_USER_MODEL = 'myapp.MyUser' • 以前は追加の情報を別モデル(別テーブル)に持たせてJOIN
  31. 31. Python3サポート • エンコーディング変換周りがPython3に対応 • django.utils.encoding.force_textやdjango.utils.encoding.smart_bytesなど • モデルの__unicode__メソッドは、Python3では__str__ • @python_2_unicode_compatibleデコレータ from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class MyClass(object): def __str__(self): return "Instance of my class"
  32. 32. Django1.6 • プロジェクトとアプリケーションのテンプレートをシンプルに • データベース接続の持続(Persistent database connection)をサポート • Python3(3.2, 3.3)正式サポート • その他 • https://docs.djangoproject.com/en/dev/releases/1.6/
  33. 33. プロジェクトとアプリケーションのテンプレー トをシンプルに • 旧 • settings.py 158行 • アプリケーションのテンプレート • tests.pyにサンプルコードが含まれてた • view.pyはコメントのみ • 新 • settings.py 82行 • アプリケーションのテンプレート • tests.pyはimportのみ • views.pyにrender関数のimport追加 • admin.py追加
  34. 34. Django1.7 (開発中のバージョン) • スキーママイグレーション • アプリケーションロードのリファクタリング • カスタムクエリセットのメソッドをマネージャから呼び出し可能に • Python 2.6サポートを削除 • Python 3.4正式サポート • その他 • https://docs.djangoproject.com/en/dev/releases/1.7/
  35. 35. スキーママイグレーション • migrate, makemigrationsコマンドの追加 • Southの統合(KickStarterでの募金により17,952ユーロ(245万円程度)集まっ た) • Southからの移行についてもドキュメントに書かれている • https://docs.djangoproject.com/en/dev/topics/migrations/ syncdbコマンドは非推奨となりmigrateに置き換えられた $ python manage.py migrate # マイグレーションの実行 $ python manage.py makemigrations # マイグレーションの作成
  36. 36. アプリケーションロードのリファクタリング • アプリケーションロード時のフックポイントが増えた • 今まではmodels.pyがロードされた際にシグナルの登録などをしていた • urls.pyで実行していたadmin.autodiscover()はreadyメソッド内で実行に変更 • 新しく追加されたAppConfigクラスをアプリケーションとして INSTALLED_APPSに指定可能 • 同じアプリケーションで設定だけを変更して復数登録したりできるようになっ た • 参考 • http://d.hatena.ne.jp/nullpobug/20140301/1393660554
  37. 37. カスタムクエリセットのメソッドをマネージャ から呼び出し可能に • models.QuerySet.as_manager()が追加され、Managerインスタンスを 生成できるようになった • カスタムで定義したQuerySetのメソッドをメソッドチェーンで使いやす くなった • 今まではQuerySetとManagerの両方にメソッドを用意しないといけなかった
  38. 38. カスタムクエリセットのメソッド class FoodQuerySet(models.QuerySet): def pizzas(self): return self.filter(kind='pizza') def vegetarian(self): return self.filter(vegetarian=True) class Food(models.Model): kind = models.CharField(max_length=50) vegetarian = models.BooleanField() objects = FoodQuerySet.as_manager() # Managerインスタンス生成 Food.objects.pizzas().vegetarian() # メソッドチェーンで利用可能
  39. 39. どのバージョンを使えば良い? • 基本的に最新の安定バージョンを使えばよい • 非公開(ドキュメントに書かれてない)のAPIと非推奨のAPIを使ってい なければ、マイナーバージョンの1つか2つぐらいまでなら移行は楽 • Python3ならDjango1.6以上
  40. 40. まとめ • Djangoの開発は今も活発です • メンテナンス期限をバージョンではなく期間で保証するLTSリリースと いうものがでました • DjangoはPython3で使えます
  41. 41. 参考 • https://docs.djangoproject.com/en/dev/
  42. 42. Apache SparkとPythonを 使ってデータ分析
  43. 43. Apache Sparkとは? • HadoopのMapReduceを置き換えるプログラミングモデル • 繰り返し処理を高速にするためHDFSの入出力をキャッシュ • データ処理の記述はDSL • scala • Java • Python Sparkについての詳しくはドキュメントとか @oza_x86 さんのスライドを 見るとよさそう http://www.slideshare.net/ozax86/spark-shark
  44. 44. Apache Hadoop • 分散処理基盤 • 構成 • HDFS (分散ファイルシステム) • MapReduce (分散処理フレームワーク)
  45. 45. Sparkの処理でPythonを使う • PythonでHDFS上のデータを処理できる • pysparkコマンド • Pythonの対話モード • ipythonも使える
  46. 46. これで何がうれしいの? • 1台のマシンでは処理しきれないような大容量のデータに対して、た くさんのマシンリソース(メモリリソース)を使って、Pythonでデータを 処理できる • 自前でリソース管理とか分散処理の仕組みを実装しなくていい
  47. 47. pysparkコマンドを使ってみる マスターノードを指定して起動 $ MASTER=spark://localhost.localdomain:7077 pyspark IPYTHONを使う場合 $ IPYTHON=1 MASTER=spark://localhost.localdomain:7077 pyspark スクリプトファイルを実行(pysparkモジュールの関数やクラスを使用) $ pyspark main.py
  48. 48. Python対話モードで操作 >>> sc # 対話モードで起動すると有効になっているコンテキスト変数 <pyspark.context.SparkContext object at 0x182c150> # HDFS上のファイルからデータセットを作成 >>> textFile = sc.textFile('/tmp/ken_all_utf8.csv') # データセットに対して操作 >>> textFile.filter(lambda row:u'札幌' in row).count() 823
  49. 49. スクリプトファイルで実行 # coding: utf-8 from pyspark import SparkContext def main(): sc = SparkContext('local', 'MyApp') textFile = sc.textFile('/tmp/ken_all_utf8.csv') result = textFile.filter(lambda row: u'札幌' in row) print result.count() if __name__ == '__main__': main()
  50. 50. データセットを操作するAPI • Transformations • map(func) # 行単位でfuncを実行してデータを変換、加工 • filter(func) # 行単位でfuncを実行してデータをフィルタ • join(otherDataset, [num Tasks]) # データセットを結合 • … • Actions • reduce(func) # データセットをfuncで集約 • count() # 行数を返す • saveAsTextFile(path) # データセットをHDFSへ保存 • … • http://spark.apache.org/docs/latest/programming-guide.html • これらのAPIを使ってデータを処理、分析する
  51. 51. ハマったところ • 日本語の扱い • 半角カナ混じりのcp932エンコードされたファイル(KEN_ALL.CSV)を直接使お うとしたら、filterでマッチしなかった • エンコードエラーにもならなかったので、どこかで強制変換されておかしくなってるか も? • UTF-8のファイルにしてみたら問題なかった • Pythonのバージョン • Sparkを動かしているPythonバージョンとpysparkコマンドで使用するPython のバージョンが一致していないと動かなかった • Python3未対応
  52. 52. 試してみるには? • Clouderaのquickstart-vm(5.0以上)にApacheSparkが含まれているの で、これを使うのが簡単
  53. 53. まとめ • ApacheSparkを利用するとHDFS上のファイルを処理できる • pysparkコマンドを使ってApacheSparkをPythonで利用できる • pysparkモジュールのAPIを使ってデータの加工、変形、解析ができ る →ApacheSpark + Python(pyspark) で大容量のデータ解析できる!
  54. 54. 参考 • http://spark.apache.org/docs/latest/ • http://www.slideshare.net/ozax86/spark-shark

×