PHPerが聞きたいPythonのいくつかのこと - PyCon mini Sapporo 2019 #pyconsap

PHPerが聞きたいPythonのいくつかのこと - PyCon mini Sapporo 2019 #pyconsap

PyCon mini Sapporo 2019 #pyconsap
LTでの発表。

13725f35541aa680ed5f85d16b85947a?s=128

Kihara, Takuya

May 11, 2019
Tweet

Transcript

  1. 1Z$PONJOJ4BQQPSP @tacck 1)1FS͕ฉ͖͍ͨ 1ZUIPOͷ͍͔ͭ͘ͷ͜ͱ 2019/05/11 1)1FS 1ZUIPO 1ZUIPO 1ZUIPO 1ZUIPO

    1ZUIPO 1ZUIPO 1ZUIPO 1ZUIPO 1ZUIPO 1)1FS 1)1FS 1)1FS 1)1FS 1)1FS 1)1FS 1)1FS 1)1FS
  2. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ୭ • ໊લ tacck / ໦ݪ ୎໵ •

    ॴଐ גࣜձࣾϊʔεσΟςʔϧ • ࢓ࣄ ϞϏϦςΟIoTࣄۀ ͷԿͰ΋԰
  3. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1ZUIPOJTUBͷօʑ༷ʹ
 ࢕͍͍ͨ

  4. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ͦͷલʹ

  5. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ීஈ͸1)1FS΍ͬͯ·͢ • ࢓ࣄͰ΋झຯͰ΋ɻ • ͦΕҎ֎ʹ͸ɺJavaॻ͍ͨΓɺJavaScriptॻ͍ͨΓɻ • ࢓ࣄͰPython͸ॻ͍ͯͳ͍Ͱ͢ɻɻɻ

  6. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ͦΜͳࢲͰ΋
 1ZUIPOΛ৮Δ͕࣌͋Γ·ͯ͠

  7. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL

  8. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ֓ཁ ϒϥ΢β AWS IoT ηϯαʔ

  9. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ֓ཁ ϒϥ΢β AWS IoT ηϯαʔ ͜͜ʹPython

  10. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ֓ཁ ϒϥ΢β AWS IoT ηϯαʔ ηϯαʔ͔Β
 σʔλऔಘ͢Δ Pythonαϯϓϧ

  11. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ֓ཁ ϒϥ΢β AWS IoT ηϯαʔ AWS IoTϔ σʔλૹ৴͢Δ


    Pythonαϯϓϧ ηϯαʔ͔Β
 σʔλऔಘ͢Δ Pythonαϯϓϧ
  12. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ֓ཁ AWS IoTϔ σʔλૹ৴͢Δ
 Pythonαϯϓϧ ηϯαʔ͔Β
 σʔλऔಘ͢Δ Pythonαϯϓϧ

  13. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ֓ཁ ηϯαʔ͔Β
 σʔλऔಘ͢Δ Pythonαϯϓϧ AWS IoTϔ σʔλૹ৴͢Δ
 Pythonαϯϓϧ

  14. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Ωϝϥ ߹੒्ϓϩάϥϜ

  15. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL • ͱΓ͋͑ͣαϯϓϧϓϩάϥϜΛ
 ͚ͬͭͯ͘ಈ͔ͯ͠ΈΔ • ಈ͖࢝ΊͨͷͰͦͷ··ಈ͔͠ଓ͚Δ • ҰिؒܦͭͱԿΛ΍͍͔ͬͯͨ๨ΕΔ

  16. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ߹੒्ϓϩάϥϜര஀

  17. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ߹੒्ϓϩάϥϜര஀ Έͳ͞Μ΋
 ࠇຐज़΍ͬͯ·͔͢?

  18. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Πϯσϯτͷ୩

  19. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL • Πϯσϯτͷਂ͕͞ϒϩοΫΛද͢ • ͜Ε͸ྑ͍ • ͨͩɺ௕͍ίʔυΛεΫϩʔϧ͍ͯ͘͠ͱ
 ৺ʹҾ͔͔ͬΓ͕ੜ·ΕΔ͜ͱ΋

  20. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫ࢝·ͬͨ

  21. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫ·ͨ࢝·ͬͨ

  22. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘ͔ͬͨͳ?

  23. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘͬͯͳ͔ͬͨ

  24. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘͬͯͳ͔ͬͨ ͕͜͜ Πϯσϯτͷ୩

  25. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘ͔ͬͨͳ?

  26. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘͬͯͳ͔ͬͨ

  27. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘ͔ͬͨͳ?

  28. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ϒϩοΫऴΘͬͯͳ͔ͬͨ

  29. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL …

  30. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL … “ } ” ͸͍ͭग़Δͷ!!!!! (ग़·ͤΜ)

  31. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL … “ } ” ͸͍ͭग़Δͷ!!!!! (ग़·ͤΜ) Ͳ͏΍ͬͨΒ
 ׳Ε·͔͢?

  32. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL λϓϧͷṖΛ௥͑

  33. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ( ( ,) ,)

  34. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ( ( ,) ,) λϓΔ?

  35. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL JNQPSU೉͍͠໰୊

  36. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL • ͿͬͪΌ͚ “import” ͕Θ͔Βͳ͍ • “from” ͕ग़Δͱ͞ΒʹΘ͔Βͳ͍ •

    PHPͱPythonͰॻ͖ൺ΂ͯ͠Έͨɻ
  37. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1)1ͰΫϥεΛ࢖͏ͱ͖

  38. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App)

  39. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App) <?php namespace

    App\SubFolder; class Bar { … } ΫϥεͱϑΝΠϧ໊͸ جຊతʹ1ର1
  40. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App) <?php namespace

    App; use App\SubFolder\Bar; class Foo { public function someFunc() { $bar = new Bar(); } }
  41. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App) <?php namespace

    App; use App\SubFolder\Bar; class Foo { public function someFunc() { $bar = new Bar(); } } “ύοέʔδ໊” + “SubFolder” + “Ϋϥε໊” Ͱɺ “Bar.php” ಺ͷΫϥεΛࢀরɻ
  42. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App) <?php namespace

    App; use App\SubFolder\Bar; class Foo { public function someFunc() { $bar = new Bar(); } } “ύοέʔδ໊” + “SubFolder” + “Ϋϥε໊” Ͱɺ “Bar.php” ಺ͷΫϥεΛࢀরɻ ͜ͷΫϥε಺Ͱ͸ Ϋϥε໊͚ͩͰݺͼग़͠Մೳ
  43. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1ZUIPOͰΫϥεΛ࢖͏ͱ͖

  44. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder Bar.py Folder

  45. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder class Bar:

    … class Hoge: … ϑΝΠϧ໊͸Ϟδϡʔϧ໊ ϑΝΠϧ಺ʹෳ਺ΫϥεهࡌՄೳ PHPͩͱ “ϑΥϧμ໊” ͕ “Ϟδϡʔϧ໊” తͳҐஔ෇͚
  46. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder import SubFolder.Bar

    class Foo: def someFunc(self): bar = SubFolder.Bar.Bar()
  47. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder import SubFolder.Bar

    class Foo: def someFunc(self): bar = SubFolder.Bar.Bar() “ύοέʔδ໊” + “Ϟδϡʔϧ໊” + “Ϋϥε໊” “Bar.py” ಺ͷΫϥεΛࢀর ࢖͍͍ͨ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ ͜ͷϞδϡʔϧ಺Ͱ “SubFolder.Bar” Λ࢖༻
  48. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder from SubFolder.Bar

    import Bar class Foo: def someFunc(self): bar = Bar() fromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ ͜ͷதͷ “Ϋϥε” Λ࢖༻͢Δએݴ importͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧ಺Ͱ࢖༻
  49. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder from SubFolder.Bar

    import Bar class Foo: def someFunc(self): bar = Bar() ͜ͷॻ͖ํΛ͢Δͱɺ
 PHPͱಉ͡Α͏ͳײ͡ͰΫϥεΛࢀরͰ͖Δɻ fromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ ͜ͷதͷ “Ϋϥε” Λ࢖༻͢Δએݴ importͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧ಺Ͱ࢖༻
  50. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder from SubFolder.Bar

    import Bar class Foo: def someFunc(self): bar = Bar() fromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ ͜ͷதͷ “Ϋϥε” Λ࢖༻͢Δએݴ importͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧ಺Ͱ࢖༻ ͜ͷॻ͖ํΛ͢Δͱɺ
 PHPͱಉ͡Α͏ͳײ͡ͰΫϥεΛࢀরͰ͖Δɻ ͜ΕͰ
 ྑ͍ΜͰ͔͢Ͷ?
  51. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1ZUIPOJTUBͷօʑ༷ɺ
 ɹ༏͘͠ڭ͍͑ͯͩ͘͞

  52. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 13

  53. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL https://phpcon.hokkaido.jp/

  54. 1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL FOE