PyCon mini Sapporo 2019 #pyconsap LTでの発表。
1Z$PONJOJ4BQQPSP@tacck1)1FS͕ฉ͖͍ͨ1ZUIPOͷ͍͔ͭ͘ͷ͜ͱ2019/05/111)1FS1ZUIPO1ZUIPO1ZUIPO1ZUIPO1ZUIPO1ZUIPO1ZUIPO1ZUIPO1ZUIPO1)1FS1)1FS1)1FS1)1FS1)1FS1)1FS1)1FS1)1FS
View Slide
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL୭• ໊લtacck / ݪ • ॴଐגࣜձࣾϊʔεσΟςʔϧ• ࣄϞϏϦςΟIoTࣄۀ ͷԿͰ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL1ZUIPOJTUBͷօʑ༷ʹ ͍͍ͨ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLͦͷલʹ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLීஈ1)1FSͬͯ·͢• ࣄͰझຯͰɻ• ͦΕҎ֎ʹɺJavaॻ͍ͨΓɺJavaScriptॻ͍ͨΓɻ• ࣄͰPythonॻ͍ͯͳ͍Ͱ͢ɻɻɻ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLͦΜͳࢲͰ 1ZUIPOΛ৮Δ͕࣌͋Γ·ͯ͠
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL֓ཁϒϥβAWS IoTηϯαʔ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL֓ཁϒϥβAWS IoTηϯαʔ͜͜ʹPython
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL֓ཁϒϥβAWS IoTηϯαʔηϯαʔ͔Β σʔλऔಘ͢ΔPythonαϯϓϧ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL֓ཁϒϥβAWS IoTηϯαʔAWS IoTϔσʔλૹ৴͢Δ Pythonαϯϓϧηϯαʔ͔Β σʔλऔಘ͢ΔPythonαϯϓϧ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL֓ཁAWS IoTϔσʔλૹ৴͢Δ Pythonαϯϓϧηϯαʔ͔Β σʔλऔಘ͢ΔPythonαϯϓϧ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL֓ཁηϯαʔ͔Β σʔλऔಘ͢ΔPythonαϯϓϧAWS IoTϔσʔλૹ৴͢Δ Pythonαϯϓϧ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLΩϝϥ߹्ϓϩάϥϜ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL• ͱΓ͋͑ͣαϯϓϧϓϩάϥϜΛ ͚ͬͭͯ͘ಈ͔ͯ͠ΈΔ• ಈ͖࢝ΊͨͷͰͦͷ··ಈ͔͠ଓ͚Δ• ҰिؒܦͭͱԿΛ͍͔ͬͯͨΕΔ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL߹्ϓϩάϥϜര
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL߹्ϓϩάϥϜരΈͳ͞Μ ࠇຐज़ͬͯ·͔͢?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLΠϯσϯτͷ୩
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL• Πϯσϯτͷਂ͕͞ϒϩοΫΛද͢• ͜Εྑ͍• ͨͩɺ͍ίʔυΛεΫϩʔϧ͍ͯ͘͠ͱ ৺ʹҾ͔͔ͬΓ͕ੜ·ΕΔ͜ͱ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLϒϩοΫ࢝·ͬͨ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLϒϩοΫ·ͨ࢝·ͬͨ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLϒϩοΫऴΘ͔ͬͨͳ?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLϒϩοΫऴΘͬͯͳ͔ͬͨ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLϒϩοΫऴΘͬͯͳ͔͕ͬͨ͜͜Πϯσϯτͷ୩
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL…
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL…“ } ” ͍ͭग़Δͷ!!!!!(ग़·ͤΜ)
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL…“ } ” ͍ͭग़Δͷ!!!!!(ग़·ͤΜ)Ͳ͏ͬͨΒ ׳Ε·͔͢?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLλϓϧͷṖΛ͑
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL(( ,),)
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL(( ,),)λϓΔ?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLJNQPSU͍͠
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL• ͿͬͪΌ͚ “import” ͕Θ͔Βͳ͍• “from” ͕ग़Δͱ͞ΒʹΘ͔Βͳ͍• PHPͱPythonͰॻ͖ൺͯ͠Έͨɻ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL1)1ͰΫϥεΛ͏ͱ͖
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.phpSubFolderBar.phpFolder (ύοέʔδ໊: App)
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.phpSubFolderBar.phpFolder (ύοέʔδ໊: App)namespace App\SubFolder;class Bar{…}ΫϥεͱϑΝΠϧ໊جຊతʹ1ର1
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.phpSubFolderBar.phpFolder (ύοέʔδ໊: App)namespace App;use App\SubFolder\Bar;class Foo{public function someFunc(){$bar = new Bar();}}
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.phpSubFolderBar.phpFolder (ύοέʔδ໊: App)namespace App;use App\SubFolder\Bar;class Foo{public function someFunc(){$bar = new Bar();}}“ύοέʔδ໊” + “SubFolder” + “Ϋϥε໊”Ͱɺ “Bar.php” ͷΫϥεΛࢀরɻ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.phpSubFolderBar.phpFolder (ύοέʔδ໊: App)namespace App;use App\SubFolder\Bar;class Foo{public function someFunc(){$bar = new Bar();}}“ύοέʔδ໊” + “SubFolder” + “Ϋϥε໊”Ͱɺ “Bar.php” ͷΫϥεΛࢀরɻ͜ͷΫϥεͰΫϥε໊͚ͩͰݺͼग़͠Մೳ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL1ZUIPOͰΫϥεΛ͏ͱ͖
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolderBar.pyFolder
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolder (ύοέʔδ໊)Bar.py (Ϟδϡʔϧ໊)Folderclass Bar:…class Hoge:…ϑΝΠϧ໊Ϟδϡʔϧ໊ϑΝΠϧʹෳΫϥεهࡌՄೳPHPͩͱ “ϑΥϧμ໊” ͕ “Ϟδϡʔϧ໊” తͳҐஔ͚
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolder (ύοέʔδ໊)Bar.py (Ϟδϡʔϧ໊)Folderimport SubFolder.Barclass Foo:def someFunc(self):bar = SubFolder.Bar.Bar()
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolder (ύοέʔδ໊)Bar.py (Ϟδϡʔϧ໊)Folderimport SubFolder.Barclass Foo:def someFunc(self):bar = SubFolder.Bar.Bar()“ύοέʔδ໊” + “Ϟδϡʔϧ໊” + “Ϋϥε໊”“Bar.py” ͷΫϥεΛࢀর͍͍ͨ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ͜ͷϞδϡʔϧͰ “SubFolder.Bar” Λ༻
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolder (ύοέʔδ໊)Bar.py (Ϟδϡʔϧ໊)Folderfrom SubFolder.Bar import Barclass Foo:def someFunc(self):bar = Bar()fromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ͜ͷதͷ “Ϋϥε” Λ༻͢Δએݴimportͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧͰ༻
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolder (ύοέʔδ໊)Bar.py (Ϟδϡʔϧ໊)Folderfrom SubFolder.Bar import Barclass Foo:def someFunc(self):bar = Bar()͜ͷॻ͖ํΛ͢Δͱɺ PHPͱಉ͡Α͏ͳײ͡ͰΫϥεΛࢀরͰ͖Δɻfromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ͜ͷதͷ “Ϋϥε” Λ༻͢Δએݴimportͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧͰ༻
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFoo.pySubFolder (ύοέʔδ໊)Bar.py (Ϟδϡʔϧ໊)Folderfrom SubFolder.Bar import Barclass Foo:def someFunc(self):bar = Bar()fromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ͜ͷதͷ “Ϋϥε” Λ༻͢Δએݴimportͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧͰ༻͜ͷॻ͖ํΛ͢Δͱɺ PHPͱಉ͡Α͏ͳײ͡ͰΫϥεΛࢀরͰ͖Δɻ͜ΕͰ ྑ͍ΜͰ͔͢Ͷ?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL1ZUIPOJTUBͷօʑ༷ɺ ɹ༏͘͠ڭ͍͑ͯͩ͘͞
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL13
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLhttps://phpcon.hokkaido.jp/
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDLFOE