Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPerが聞きたいPythonのいくつかのこと - PyCon mini Sapporo 2...
Search
Kihara, Takuya
May 11, 2019
Technology
0
1.1k
PHPerが聞きたいPythonのいくつかのこと - PyCon mini Sapporo 2019 #pyconsap
PyCon mini Sapporo 2019 #pyconsap
LTでの発表。
Kihara, Takuya
May 11, 2019
Tweet
Share
More Decks by Kihara, Takuya
See All by Kihara, Takuya
ライブコーディングで知るAmplify Gen 2 #AWSAmplifyJP
tacck
1
82
AWS Amplify Gen 2 GA記念 ~Gen1との違いを確認
tacck
0
130
Amplify Gen2 が GA したよ! #jawsug_sapporo #jawsug
tacck
0
210
Flutter で "Hello World!! #ゆるWeb札幌
tacck
0
110
AWS Lambda で LLRT を動かしてみた #北海道まったりLT大会
tacck
0
110
地方から始める登壇のステップアップ 〜Java Do から JJUG CCC への登壇参加記録 #javado
tacck
0
160
ゆるWebの新型コロナ Before/After とこれからのこと #seb_yearend
tacck
0
37
AWS Amplify と Amazon Bedrock を使ってオレオレ生成AIサイトを作る #ゆるWeb札幌
tacck
0
250
「普通」のエンジニアとしての生存戦略〜または、いかにして技術を楽しむか。 #情報メディア入門
tacck
0
110
Other Decks in Technology
See All in Technology
APIのドキュメント化何使ってますか?
miu_crescent
2
160
データウェアハウス製品のSnowflakeでPythonが動くって知ってました?
foursue
1
150
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
39k
バックログを導入し やっぱやめた話
ota42y
0
170
自社開発した大規模言語モデルをどうプロダクションに乗せて運用していくか〜インフラ編〜
pfn
PRO
4
700
中規模・ミドルTier開発組織におけるDevRelの戦略と実行と成果 - DevRel Guild Conference Mini -
leveragestech
2
260
開発者体験を意識した開発チームの生産性向上の取り組み
ham0215
3
650
スーパーマリオRPGのリメイク版の変更点からみるUX
nishiharatsubasa
1
120
waitany と waitall を作った話
mrkn
0
110
エンジニアリングマネージャーが紐解く、事業視点から組織文化まで、包括的アプローチの探求 / READYFOR
9ma3r
13
2.2k
20分で分かるIAM全機能 (拡大版) / 20240903-jawsug-yokohama-iam
opelab
3
120
React Aria で実現する次世代のアクセシビリティ
ryo_manba
3
320
Featured
See All Featured
A Philosophy of Restraint
colly
202
16k
Music & Morning Musume
bryan
46
6k
Atom: Resistance is Futile
akmur
261
25k
Docker and Python
trallard
39
3k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
Testing 201, or: Great Expectations
jmmastey
35
6.9k
Being A Developer After 40
akosma
82
580k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
28
2.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
29
2.2k
BBQ
matthewcrist
83
9.1k
How STYLIGHT went responsive
nonsquared
93
5.1k
Transcript
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
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ୭ • ໊લ tacck / ݪ •
ॴଐ גࣜձࣾϊʔεσΟςʔϧ • ࣄ ϞϏϦςΟIoTࣄۀ ͷԿͰ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1ZUIPOJTUBͷօʑ༷ʹ ͍͍ͨ
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 !UBDDL … “ } ” ͍ͭग़Δͷ!!!!! (ग़·ͤΜ) Ͳ͏ͬͨΒ ׳Ε·͔͢?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL λϓϧͷṖΛ͑
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ( ( ,) ,)
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL ( ( ,) ,) λϓΔ?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL JNQPSU͍͠
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL • ͿͬͪΌ͚ “import” ͕Θ͔Βͳ͍ • “from” ͕ग़Δͱ͞ΒʹΘ͔Βͳ͍ •
PHPͱPythonͰॻ͖ൺͯ͠Έͨɻ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1)1ͰΫϥεΛ͏ͱ͖
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App)
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.php SubFolder Bar.php Folder (ύοέʔδ໊: App) <?php namespace
App\SubFolder; class Bar { … } ΫϥεͱϑΝΠϧ໊ جຊతʹ1ର1
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(); } }
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” ͷΫϥεΛࢀরɻ
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” ͷΫϥεΛࢀরɻ ͜ͷΫϥεͰ Ϋϥε໊͚ͩͰݺͼग़͠Մೳ
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1ZUIPOͰΫϥεΛ͏ͱ͖
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder Bar.py Folder
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder class Bar:
… class Hoge: … ϑΝΠϧ໊Ϟδϡʔϧ໊ ϑΝΠϧʹෳΫϥεهࡌՄೳ PHPͩͱ “ϑΥϧμ໊” ͕ “Ϟδϡʔϧ໊” తͳҐஔ͚
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder import SubFolder.Bar
class Foo: def someFunc(self): bar = SubFolder.Bar.Bar()
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” Λ༻
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL Foo.py SubFolder (ύοέʔδ໊) Bar.py (Ϟδϡʔϧ໊) Folder from SubFolder.Bar
import Bar class Foo: def someFunc(self): bar = Bar() fromʹ “ύοέʔδ໊” + “Ϟδϡʔϧ໊” هࡌ ͜ͷதͷ “Ϋϥε” Λ༻͢Δએݴ importͷޙʹॻ͍ͨ “Bar” ΛϞδϡʔϧͰ༻
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” ΛϞδϡʔϧͰ༻
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ͱಉ͡Α͏ͳײ͡ͰΫϥεΛࢀরͰ͖Δɻ ͜ΕͰ ྑ͍ΜͰ͔͢Ͷ?
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 1ZUIPOJTUBͷօʑ༷ɺ ɹ༏͘͠ڭ͍͑ͯͩ͘͞
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL 13
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL https://phpcon.hokkaido.jp/
1Z$PONJOJ4BQQPSPQZDPOTBQ !UBDDL FOE