Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pythonがエンタープライズ領域で使われる理由

 Pythonがエンタープライズ領域で使われる理由

OSCエンタープライズ 2019 (渋谷)
Manabu TERADA
PyCon JP
2019-10-10 -

0dbafc17e04503dfef253274853b2c8a?s=128

Manabu TERADA

October 10, 2019
Tweet

Transcript

  1. Python Python Python Python Python Python OSC 2019 OSC 2019

    OSC 2019 OSC 2019 OSC 2019 OSC 2019 ( ) ( ) ( ) ( ) ( ) ( ) Manabu TERADA Manabu TERADA Manabu TERADA Manabu TERADA Manabu TERADA Manabu TERADA PyCon JP PyCon JP PyCon JP PyCon JP PyCon JP PyCon JP - 2019-10-10 - - 2019-10-10 - - 2019-10-10 - - 2019-10-10 - - 2019-10-10 - - 2019-10-10 - 1 / 47
  2. Twitter Twitter Twitter Twitter Twitter Twitter ā ā ā ā

    ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 2 / 47
  3. Self introduction Self introduction Self introduction Self introduction Self introduction

    Self introduction Manabu TERADA Manabu TERADA Manabu TERADA Manabu TERADA Manabu TERADA Manabu TERADA ( ) ( ) ( ) ( ) ( ) ( ) Python Python Python Python Python Python PyCon JP PyCon JP PyCon JP PyCon JP PyCon JP PyCon JP Python Python Python Python Python Python Plone Foundation Ambassador Plone Foundation Ambassador Plone Foundation Ambassador Plone Foundation Ambassador Plone Foundation Ambassador Plone Foundation Ambassador PSF Contributing member PSF Contributing member PSF Contributing member PSF Contributing member PSF Contributing member PSF Contributing member Member of NVDA Japanese Team Member of NVDA Japanese Team Member of NVDA Japanese Team Member of NVDA Japanese Team Member of NVDA Japanese Team Member of NVDA Japanese Team ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 3 / 47
  4. PyCon JP PyCon JP PyCon JP PyCon JP PyCon JP

    PyCon JP 9 9 9 9 9 9 4 ( 2 ) 4 ( 2 ) 4 ( 2 ) 4 ( 2 ) 4 ( 2 ) 4 ( 2 ) 1000 1000 1000 1000 1000 1000 https://pycon.jp https://pycon.jp https://pycon.jp https://pycon.jp https://pycon.jp https://pycon.jp ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 6 / 47
  5. 7 / 47

  6. Python Python Python Python Python Python Python Python Python Python

    Python Python Python Python Python Python Python Python 10 10 10 10 10 10 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 8 / 47
  7. Python Python Python Python Python Python 9 / 47

  8. Python Python Python Python Python Python Python 2 vs Python

    3 Python 2 vs Python 3 Python 2 vs Python 3 Python 2 vs Python 3 Python 2 vs Python 3 Python 2 vs Python 3 2 2 2 2 2 2 Python 2 2020 1 EOL Python 2 2020 1 EOL Python 2 2020 1 EOL Python 2 2020 1 EOL Python 2 2020 1 EOL Python 2 2020 1 EOL Python 3 Python 3 Python 3 Python 3 Python 3 Python 3 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 10 / 47
  9. 11 / 47

  10. Python Python Python Python Python Python 12 / 47

  11. (2 to 3) (2 to 3) (2 to 3) (2

    to 3) (2 to 3) (2 to 3) str / unicode --> bytes / str str / unicode --> bytes / str str / unicode --> bytes / str str / unicode --> bytes / str str / unicode --> bytes / str str / unicode --> bytes / str print --> print print --> print print --> print print --> print print --> print print --> print Dive Into Python 3 (2 to 3) Dive Into Python 3 (2 to 3) Dive Into Python 3 (2 to 3) Dive Into Python 3 (2 to 3) Dive Into Python 3 (2 to 3) Dive Into Python 3 (2 to 3) http://diveintopython3-ja.rdy.jp/porting-code-to-python-3- http://diveintopython3-ja.rdy.jp/porting-code-to-python-3- http://diveintopython3-ja.rdy.jp/porting-code-to-python-3- http://diveintopython3-ja.rdy.jp/porting-code-to-python-3- http://diveintopython3-ja.rdy.jp/porting-code-to-python-3- http://diveintopython3-ja.rdy.jp/porting-code-to-python-3- with-2to3.html with-2to3.html with-2to3.html with-2to3.html with-2to3.html with-2to3.html ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 13 / 47
  12. async async async async async async type hints type hints

    type hints type hints type hints type hints (@ :=) (@ :=) (@ :=) (@ :=) (@ :=) (@ :=) f-string f-string f-string f-string f-string f-string dataclass dataclass dataclass dataclass dataclass dataclass Python Python Python Python Python Python https://speakerdeck.com/terapyon/introduce-syntax-and-history-of- https://speakerdeck.com/terapyon/introduce-syntax-and-history-of- https://speakerdeck.com/terapyon/introduce-syntax-and-history-of- https://speakerdeck.com/terapyon/introduce-syntax-and-history-of- https://speakerdeck.com/terapyon/introduce-syntax-and-history-of- https://speakerdeck.com/terapyon/introduce-syntax-and-history-of- python-from-2-dot-4-to-3-dot-6-inkyushu-2 python-from-2-dot-4-to-3-dot-6-inkyushu-2 python-from-2-dot-4-to-3-dot-6-inkyushu-2 python-from-2-dot-4-to-3-dot-6-inkyushu-2 python-from-2-dot-4-to-3-dot-6-inkyushu-2 python-from-2-dot-4-to-3-dot-6-inkyushu-2 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 14 / 47
  13. @ @ @ @ @ @ >>> import numpy as

    np >>> a = np.array([[1, 2]]) >>> b = np.array([[3], [4]]) Python3.4 Python3.4 Python3.4 Python3.4 Python3.4 Python3.4 >>> np.dot(a, b) array([[11]]) Python3.5+ Python3.5+ Python3.5+ Python3.5+ Python3.5+ Python3.5+ >>> a @ b array([[11]]) 15 / 47
  14. %s vs str.format vs f-string %s vs str.format vs f-string

    %s vs str.format vs f-string %s vs str.format vs f-string %s vs str.format vs f-string %s vs str.format vs f-string All version All version All version All version All version All version from datetime import date s = "Today: %s" % date.today() Python 2.6 + Python 2.6 + Python 2.6 + Python 2.6 + Python 2.6 + Python 2.6 + from datetime import date s = "Today: {0}".format(date.today()) Python 3.6 + Python 3.6 + Python 3.6 + Python 3.6 + Python 3.6 + Python 3.6 + from datetime import date s = f"Today: {date.today()}" 16 / 47
  15. PEP( ) PEP( ) PEP( ) PEP( ) PEP( )

    PEP( ) ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 17 / 47
  16. PEP PEP PEP PEP PEP PEP Python Enhancement Proposal Python

    Enhancement Proposal Python Enhancement Proposal Python Enhancement Proposal Python Enhancement Proposal Python Enhancement Proposal https://www.python.org/dev/peps/pep-0001/ https://www.python.org/dev/peps/pep-0001/ https://www.python.org/dev/peps/pep-0001/ https://www.python.org/dev/peps/pep-0001/ https://www.python.org/dev/peps/pep-0001/ https://www.python.org/dev/peps/pep-0001/ PEP stands for Python Enhancement Proposal. A PEP is a design PEP stands for Python Enhancement Proposal. A PEP is a design PEP stands for Python Enhancement Proposal. A PEP is a design PEP stands for Python Enhancement Proposal. A PEP is a design PEP stands for Python Enhancement Proposal. A PEP is a design PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or document providing information to the Python community, or document providing information to the Python community, or document providing information to the Python community, or document providing information to the Python community, or document providing information to the Python community, or describing a new feature for Python or its processes or environment. describing a new feature for Python or its processes or environment. describing a new feature for Python or its processes or environment. describing a new feature for Python or its processes or environment. describing a new feature for Python or its processes or environment. describing a new feature for Python or its processes or environment. The PEP should provide a concise technical speci cation of the The PEP should provide a concise technical speci cation of the The PEP should provide a concise technical speci cation of the The PEP should provide a concise technical speci cation of the The PEP should provide a concise technical speci cation of the The PEP should provide a concise technical speci cation of the feature and a rationale for the feature. feature and a rationale for the feature. feature and a rationale for the feature. feature and a rationale for the feature. feature and a rationale for the feature. feature and a rationale for the feature. 18 / 47
  17. Python Python Python Python Python Python 19 / 47

  18. 18 (1.5 ) 18 (1.5 ) 18 (1.5 ) 18

    (1.5 ) 18 (1.5 ) 18 (1.5 ) Python 3.x Python 3.x Python 3.x Python 3.x Python 3.x Python 3.x x x x x x x PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 PEP 569 -- Python 3.8 Release Schedule PEP 569 -- Python 3.8 Release Schedule PEP 569 -- Python 3.8 Release Schedule PEP 569 -- Python 3.8 Release Schedule PEP 569 -- Python 3.8 Release Schedule PEP 569 -- Python 3.8 Release Schedule 3.8.0 nal: Monday, 2019-10-14 (assuming a single release 3.8.0 nal: Monday, 2019-10-14 (assuming a single release 3.8.0 nal: Monday, 2019-10-14 (assuming a single release 3.8.0 nal: Monday, 2019-10-14 (assuming a single release 3.8.0 nal: Monday, 2019-10-14 (assuming a single release 3.8.0 nal: Monday, 2019-10-14 (assuming a single release candidate) candidate) candidate) candidate) candidate) candidate) ā ā ā ā ā ā ý ý ý ý ý ý ā ā ā ā ā ā ý ý ý ý ý ý 20 / 47
  19. 18 12 ( ) 18 12 ( ) 18 12

    ( ) 18 12 ( ) 18 12 ( ) 18 12 ( ) ( Draft) ( Draft) ( Draft) ( Draft) ( Draft) ( Draft) PEP 602 -- Annual Release Cycle for Python PEP 602 -- Annual Release Cycle for Python PEP 602 -- Annual Release Cycle for Python PEP 602 -- Annual Release Cycle for Python PEP 602 -- Annual Release Cycle for Python PEP 602 -- Annual Release Cycle for Python https://www.python.org/dev/peps/pep-0602/ https://www.python.org/dev/peps/pep-0602/ https://www.python.org/dev/peps/pep-0602/ https://www.python.org/dev/peps/pep-0602/ https://www.python.org/dev/peps/pep-0602/ https://www.python.org/dev/peps/pep-0602/ 21 / 47
  20. 5 2 5 2 5 2 5 2 5 2

    5 2 PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.8 schedule (last bug x release) 3.7.8 nal: 2020-06-27 3.7.8 schedule (last bug x release) 3.7.8 nal: 2020-06-27 3.7.8 schedule (last bug x release) 3.7.8 nal: 2020-06-27 3.7.8 schedule (last bug x release) 3.7.8 nal: 2020-06-27 3.7.8 schedule (last bug x release) 3.7.8 nal: 2020-06-27 3.7.8 schedule (last bug x release) 3.7.8 nal: 2020-06-27 (expected) (expected) (expected) (expected) (expected) (expected) ā ā ā ā ā ā ý ý ý ý ý ý ý ý ý ý ý ý 22 / 47
  21. 5 5 5 5 5 5 PEP 537 -- Python

    3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule PEP 537 -- Python 3.7 Release Schedule 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 3.7.0 nal: 2018-06-27 Security xes only, as needed, until 2023-06 Security xes only, as needed, until 2023-06 Security xes only, as needed, until 2023-06 Security xes only, as needed, until 2023-06 Security xes only, as needed, until 2023-06 Security xes only, as needed, until 2023-06 ā ā ā ā ā ā ý ý ý ý ý ý ý ý ý ý ý ý 23 / 47
  22. Python 3.4 Larry Hastings Python 3.4 Larry Hastings Python 3.4

    Larry Hastings Python 3.4 Larry Hastings Python 3.4 Larry Hastings Python 3.4 Larry Hastings https://pythoninsider.blogspot.com/2019/05/farewell-python-34.html https://pythoninsider.blogspot.com/2019/05/farewell-python-34.html https://pythoninsider.blogspot.com/2019/05/farewell-python-34.html https://pythoninsider.blogspot.com/2019/05/farewell-python-34.html https://pythoninsider.blogspot.com/2019/05/farewell-python-34.html https://pythoninsider.blogspot.com/2019/05/farewell-python-34.html ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 24 / 47
  23. 25 / 47

  24. Web Web Web Web Web Web OS OS OS OS

    OS OS IoT IoT IoT IoT IoT IoT 3D 3D 3D 3D 3D 3D ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 26 / 47
  25. ( ) ( ) ( ) ( ) ( )

    ( ) openstack openstack openstack openstack openstack openstack yum Linux yum Linux yum Linux yum Linux yum Linux yum Linux GNOME Linux GNOME Linux GNOME Linux GNOME Linux GNOME Linux GNOME Linux blender 3DCG blender 3DCG blender 3DCG blender 3DCG blender 3DCG blender 3DCG ansible ansible ansible ansible ansible ansible Sphinx Sphinx Sphinx Sphinx Sphinx Sphinx ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 27 / 47
  26. ( ) ( ) ( ) ( ) ( )

    ( ) Dropbox Dropbox Dropbox Dropbox Dropbox Dropbox Instagram Instagram Instagram Instagram Instagram Instagram Pinterest Pinterest Pinterest Pinterest Pinterest Pinterest MonotaRO Web MonotaRO Web MonotaRO Web MonotaRO Web MonotaRO Web MonotaRO Web HENNGE One SaaS HENNGE One SaaS HENNGE One SaaS HENNGE One SaaS HENNGE One SaaS HENNGE One SaaS connpass connpass connpass connpass connpass connpass ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 28 / 47
  27. Web Web Web Web Web Web 2009 Plone(Python CMS) 2009

    Plone(Python CMS) 2009 Plone(Python CMS) 2009 Plone(Python CMS) 2009 Plone(Python CMS) 2009 Plone(Python CMS) 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 OS 1 OS 1 OS 1 OS 1 OS 1 OS 1 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 29 / 47
  28. 30 / 47

  29. unittest unittest unittest unittest unittest unittest pytest pytest pytest pytest

    pytest pytest CI CI CI CI CI CI ā ā ā ā ā ā ý ý ý ý ý ý ý ý ý ý ý ý ā ā ā ā ā ā ý ý ý ý ý ý 31 / 47
  30. PR ( ) PR ( ) PR ( ) PR

    ( ) PR ( ) PR ( ) ā ā ā ā ā ā ā ā ā ā ā ā 32 / 47
  31. PEP8 PEP8 PEP8 PEP8 PEP8 PEP8 ake8 ake8 ake8 ake8

    ake8 ake8 Black Black Black Black Black Black (VSCode ) (VSCode ) (VSCode ) (VSCode ) (VSCode ) (VSCode ) ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ý ý ý ý ý ý 33 / 47
  32. (Type Hints) (Type Hints) (Type Hints) (Type Hints) (Type Hints)

    (Type Hints) Python Python Python Python Python Python (Type Hints) (Type Hints) (Type Hints) (Type Hints) (Type Hints) (Type Hints) ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ý ý ý ý ý ý ā ā ā ā ā ā 34 / 47
  33. 10 10 10 10 10 10 35 / 47

  34. CMS CMS CMS CMS CMS CMS Web 5 Web 5

    Web 5 Web 5 Web 5 Web 5 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 36 / 47
  35. CMS CMS CMS CMS CMS CMS Python Python Python Python

    Python Python ā ā ā ā ā ā ý ý ý ý ý ý ý ý ý ý ý ý ā ā ā ā ā ā ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý 37 / 47
  36. Web Web Web Web Web Web Python Python Python Python

    Python Python ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 38 / 47
  37. Web Web Web Web Web Web OS OS OS OS

    OS OS Flash Flash Flash Flash Flash Flash ā ā ā ā ā ā ā ā ā ā ā ā ý ý ý ý ý ý ý ý ý ý ý ý 39 / 47
  38. Python 3 Python 3 Python 3 Python 3 Python 3

    Python 3 Python 2 Python 2 Python 2 Python 2 Python 2 Python 2 Python 3 Python 3 Python 3 Python 3 Python 3 Python 3 Plone Python 3 6 Plone Python 3 6 Plone Python 3 6 Plone Python 3 6 Plone Python 3 6 Plone Python 3 6 Python 3 Python 3 Python 3 Python 3 Python 3 Python 3 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 40 / 47
  39. 41 / 47

  40. (Python 2 / 3 ) (Python 2 / 3 )

    (Python 2 / 3 ) (Python 2 / 3 ) (Python 2 / 3 ) (Python 2 / 3 ) Python 3 ( 10 ) Python 3 ( 10 ) Python 3 ( 10 ) Python 3 ( 10 ) Python 3 ( 10 ) Python 3 ( 10 ) ( ) ( ) ( ) ( ) ( ) ( ) ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā 42 / 47
  41. Python 3 (Unicode ) Python 3 (Unicode ) Python 3

    (Unicode ) Python 3 (Unicode ) Python 3 (Unicode ) Python 3 (Unicode ) pip pip pip pip pip pip 10 10 10 10 10 10 ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ý ý ý ý ý ý ā ā ā ā ā ā 43 / 47
  42. ā ā ā ā ā ā ā ā ā ā

    ā ā ā ā ā ā ā ā ā ā ā ā ā ā 44 / 47
  43. 46 / 47