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
20歳の僕が経験した Perlエンジニアへの道
Search
Hagihara Ryosuke
January 26, 2019
Technology
1
4.6k
20歳の僕が経験した Perlエンジニアへの道
YAPC::Tokyo 2019 ランチスポンサーセッション 株式会社ミクシィ 登壇資料
Hagihara Ryosuke
January 26, 2019
Tweet
Share
More Decks by Hagihara Ryosuke
See All by Hagihara Ryosuke
航空機事故に学ぶ サービスのインシデント考察・再発防止
raryosu
1
510
負債を減らした新人の話
raryosu
0
1.5k
minimo18新卒エンジニアの働き方
raryosu
0
1.8k
高等専門学校のウェブサイトの 現状と課題
raryosu
0
240
オブジェクト指向入門 第2版 第1章 ソフトウェアの品質 / Object-Oriented Software Construction Chap.1
raryosu
0
950
Other Decks in Technology
See All in Technology
IAMポリシーのAllow/Denyについて、改めて理解する
smt7174
2
200
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
240
脳波を用いた嗜好マッチングシステム
hokkey621
0
280
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
17
45k
コンテナサプライチェーンセキュリティ
kyohmizu
1
140
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.1k
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
組織におけるCCoEの役割とAWS活用事例
nrinetcom
PRO
4
120
手を動かしてレベルアップしよう!
maruto
0
200
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
230
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
1
270
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Automating Front-end Workflow
addyosmani
1368
200k
A Philosophy of Restraint
colly
203
16k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
570
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Docker and Python
trallard
44
3.3k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
The Invisible Side of Design
smashingmag
299
50k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Transcript
20ࡀͷ͕ܦݧͨ͠ PerlΤϯδχΞͷಓ גࣜձࣾϛΫγΟ ഡݪ ྋհ @raryosu :"1$5PLZPϥϯνηογϣϯ
͜ͷϓϨθϯʹ͍ͭͯ 1FSMΛॻ͍ͨ͜ͱ͕ͳ͍৽ଔΤϯδχΞ ͕ 1FSMΛॻ͘8FCΤϯδχΞͱͯ͠ಇ͍ͯ ԿΛײͨ͡ͷ͔ΛޠΔ
ࣗݾհ ͗Β Γΐ͏͚͢ ഡݪ ྋհ ‣ ΒΓΐ͢!SBSZPTV ‣ ੜ·Εࡀ ‣
݄৽ଔೖࣾʢߴઐଔʣ ‣ NJOJNPࣄۀ෦ΤϯδχΞʢ։ൃάϧʔϓ༡ܸνʔϜʣ ‣ αʔόαΠυ։ൃɾ$9ϏδωεαΠυͷαϙʔτ
NJOJNP αϩϯελοϑ༧αʔϏε ඒ༰ࢣɾωΠϦετFUDʹ༧
NJOJNP αϩϯελοϑ༧αʔϏε ඒ༰ࢣɾωΠϦετFUDʹ༧ ສμϯϩʔυ ͋Γ͕ͱ͏ʂʂʂʂʂ
NJOJNP ʙͷए͍ঁੑʹ େਓؾͷαʔϏε
ʙͷए͍ঁੑʹ େਓؾͷαʔϏε NJOJNP
͜ͷϓϨθϯʹ͍ͭͯ 1FSMΛॻ͍ͨ͜ͱ͕ͳ͍৽ଔΤϯδχΞ ͕ 1FSMΛॻ͘8FCΤϯδχΞͱͯ͠ಇ͍ͯ ԿΛײͨ͡ͷ͔ΛޠΔ
ଐ
ଐͷํ๏ ৽ଔଐͷΩʔϫʔυ ଟ֯తͳࢹ͔ΒͰ͖ΔڥΞαΠϯ
ଐͷํ๏ ‣ ٕज़ྖҬࣥߦһ ҎԼ$50 ɾਓࣄͱͷPO ‣ ֤෦ॺͱ໘ஊ ‣ $50ʹΑΔਪન෦ॺ ‣
ຊਓر෦ॺ ‣ ෦ॺ͔Βͷࢦ໊ ‣ ֤໘ஊʹ͍ͭͯ໘ஊઌͱຊਓ͔ΒϑΟʔυόοΫ ‣ $50ͱਓࣄʹΑͬͯଐΛܾఆ
NJOJNPͷଐ໘ஊ Ͳ͏͍͏ʹڵຯ͋Δʁ Ϛωʔδϟ
NJOJNPͷଐ໘ஊ Ͳ͏͍͏ʹڵຯ͋Δʁ ΣϒϑϩϯτͰ͢ʂ Ͱɼ෯͘Γ͍ͨͰ͢ɽ ΤϯδχΞϦϯάͦΕҎ֎ʂ Ϛωʔδϟ
NJOJNPͷଐ໘ஊ Ͳ͏͍͏ʹڵຯ͋Δʁ ΣϒϑϩϯτͰ͢ʂ Ͱɼ෯͘Γ͍ͨͰ͢ɽ ΤϯδχΞϦϯάͦΕҎ֎ʂ ͏ͪͰগ͠1FSMॻ͚͘Ͳ େৎʁ Ϛωʔδϟ Ϛωʔδϟ
NJOJNPͷଐ໘ஊ Ͳ͏͍͏ʹڵຯ͋Δʁ ΣϒϑϩϯτͰ͢ʂ Ͱɼ෯͘Γ͍ͨͰ͢ɽ ΤϯδχΞϦϯάͦΕҎ֎ʂ ͏ͪͰগ͠1FSMॻ͚͘Ͳ େৎʁ 1FSMॻ͍ͨ͜ͱͳ͍͠Α͘ΒΜ͚Ͳ ͕ΜΓ·͢ʂʔ·Μ͍ͨͰ͢ʂ Ϛωʔδϟ
Ϛωʔδϟ
NJOJNPͷଐ໘ஊ 1FSMॻ͍ͨ͜ͱͳ͍͠Α͘ΒΜ͚Ͳ ͕ΜΓ·͢ʂʔ·Μ͍ͨͰ͢ʂ
NJOJNPͷଐ໘ஊ ‣ 1FSMͩΖ͏ͱͳΜͩΖ͏ͱษڧʹͳΓͦ͏ʜ ‣ αʔϏε෦ॺྑͦ͞͏ ‣ Γ͍ͨ͜ͱΛߟ͑Δͱ࠷Ϛον͢Δ ‣ 1FSMΛʮݏʯͬͯݴ͑Δཧ༝ͳ͍ͳʜ 1FSMॻ͍ͨ͜ͱͳ͍͠Α͘ΒΜ͚Ͳ
͕ΜΓ·͢ʂʔ·Μ͍ͨͰ͢ʂ
ແࣄʹʜ NJOJNPͷଐ͕ܾఆ
̼JOJNPͷϓϩμΫτ Application Server Mojolicious εϚϗΞϓϦ αϩϯ͚༧ཧγεςϜ Web൛αʔϏε API (JSON RPC)
NJOJNPͷϓϩμΫτ αϩϯ͚༧ཧγεςϜ εϚϗΞϓϦ iOS: Swift, Obj-C Android: Kotlin, Java API,
WebΞϓϦέʔγϣϯ Perl (Mojolicious) Perl (Mojolicious), React ܝࡌऀ͚ΦϯυϝσΟΞ WordPress
ΒΓΐ͢ͷकඋൣғʙϓϩμΫτʙ αϩϯ͚༧ཧγεςϜ εϚϗΞϓϦ iOS: Swift, Obj-C Android: Kotlin, Java API,
WebΞϓϦέʔγϣϯ Perl (Mojolicious) Perl (Mojolicious), React ܝࡌऀ͚ΦϯυϝσΟΞ WordPress
ΒΓΐ͢ͷकඋൣғʙϓϩμΫτʙ αϩϯ͚༧ཧγεςϜ εϚϗΞϓϦ iOS: Swift, Obj-C Android: Kotlin, Java API,
WebΞϓϦέʔγϣϯ Perl (Mojolicious) Perl (Mojolicious), React ܝࡌऀ͚ΦϯυϝσΟΞ WordPress Web൛αʔϏεΛ୲͢Δ ϝΠϯΤϯδχΞͱͯ͠ଐ
ΒΓΐ͢ͷकඋൣғʙͦͷଞʙ ΧελϚʔαϙʔτ $4 ༻ཧπʔϧ $4͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽʣ #4͚ΤϯδχΞϦϯάࢧԉʢՄࢹԽʣ ʜFUD
͏πʔϧɾݴޠͳͲ ‣ 1FSM .PKPMJDJPVT ‣ )5.-$44 4$44 ‣
.Z42- ‣ 3FEBTIʢσʔλՄࢹԽʣ ‣ "84 &$ 4 3PVUF 3%4 4&4FUD FUD
ଐ࣌ͰͷΒΓΐ͢ͷΤϯδχΞϦϯάͷϨϕϧ ‣ 1FSMॻ͍ͨ͜ͱͳ͍ ‣ 1FSMΛॻ͖ͨ͘ͳ͍ͱ͍͏ؾ࣋ͪͳ͍ ‣ ߴઐଔ ‣ όΠτͰ3BJMTͰ࡞ΒΕͨγεςϜͷอकΛͯͨ͠ ‣
.7$ͬͯΔɽΞʔΩςΫνϟʹ͍ͭͯޠΕͳ͍
1FSMͷڭҭͱۀ
ຖேઌഐʹ4MBDLͰ
ڭ͑ͯΒͬͨ͜ͱͷҰ෦ ‣ 1FSMʹ͍ͭͯ ‣ ίϯςΩετ ‣ جຊతͳจ๏ ‣ ଞύοέʔδͷϝιουݺͼग़͠ͷํ ‣
ಛघͳߏจʢܕάϩϒͳͲʣ
ڭ͑ͯΒͬͨ͜ͱͷҰ෦ ‣ .PKPMJDJPVTNJOJNPͷίʔυʹ͍ͭͯ ‣ σΟϨΫτϦߏ ‣ %#ͷߏ ‣ NJOJNPNJYJͰ͍ͬͯΔศརϞδϡʔϧ ‣
3PVUJOH)FMQFSͷஔ͖ͱ͔
࣮Ͱ͍᪴ͨͱ͖ ઌഐͨͪʮਖ਼ղʯڭ͑ͯ͘Εͳ͍ ඞཁͱͳΔʮώϯτʯΛ͘ΕΔ
ͭ·Γʜ ҰਓͰࣗͰ͖ΔڥΛ࡞ͬͯ͘Εͨ
ࡀͰ1FSMΛ͔͍ͯ Ͳ͏ࢥͬͨʁ
ࡀͰ1FSMΛॻ͍ͯͲ͏ࢥͬͨʁ 1FSMΛॻ͘ͷָ͍͠ʂ ͦͯ͠ɼֶͼ͕ଟ͍ʂ
1FSMָ͍͠ 5IFSF`T.PSF5IBO0OF8BZ5P%P*U ॻ͖ํʹਓ͕ؒग़Δ ʮͲ͏ॻ͜͏ʁʯʮͲ͏ॻ͘ͷ͕εϚʔτʁʯΛߟ͑Δ ઌഐͨͪͱʮͲ͏͠Α͏ʯΛٞ͢Δ
ֶͼ͕ଟ͍ .PKPMJDJPVTൺֱతʮബ͍ʯ8"' ࣗͰॻ͘ɾಡΉɾֶͿ͜ͱ͕ଟ͍ʂ ΣϒαʔϏεͷαʔόαΠυΛֶͿͷʹஸ͍͍ʁ গͳ͘ͱࣗʮϥοΩʔʯͩͱࢥ͍ͬͯΔ
ͱ͍͑Α͘Θ͔Βͳ͍͜ͱଟ͔ͬͨ ‣ σϦϑΝϨϯεΛΕͯਏ͍ ‣ $#array = 20 ‣ ॳݟͩͱΑ͘Θ͔Βͳ͍ ‣
(sort { $a <=> $b } @hoge)[0] ‣ Α͘Θ͔Βͳ͍ ‣ List::Util::reduce{ $a<$b ? $a: $b }@hoge ‣ ্ͷͭ͜ΕͰऔΕΔ͠ແବ͕গͳ͍…
ײͨ͡ ‣ ΑΓྑ͍࣮ํ๏Λߟ͑ΒΕΔΑ͏ʹͳͬͨ ‣ ಡΈ͘͢ҙਤ͕ΘΓ͍͢ίʔυΛॻ͚ΔΑ͏ʹ ‣ େنαʔϏε͕Ͳ͏ಈ͍͍ͯΔ͔ཧղͨ͠ ‣ ΞʔΩςΫνϟͷڵຯ͕༙͍ͨ ‣
ଞͷݴޠΛֶͿҙཉʹͭͳ͕ͬͨ
͜Ε͔Β
࠷ۙ(PΛֶΜͰ͍·͢
8IZ(P ‣ 1FSMͱझ͕ҧָͬͯͦ͠͏͔ͩΒ ‣ ࠷ۙྲྀߦ͍ͬͯΔ͔Β ‣ NJOJNPͷαʔόαΠυΛ(PͰॻ͖͍ͯ͠Δ͔Β
8IZ(P ‣ 1FSMͱझ͕ҧָͬͯͦ͠͏͔ͩΒ ‣ ࠷ۙྲྀߦ͍ͬͯΔ͔Β ‣ NJOJNPͷαʔόαΠυΛ(PͰॻ͖͍ͯ͠Δ͔Β
·ͱΊ
·ͱΊ ‣ 1FSM͕ʮݏʯͱ͍͏ઌೖ؍͕ͳ͚Εࡀॻ͘ ‣ ࣗͰ͖Δڥ͑͋͞ΕֶͿ͜ͱ͕ଟ͍ݴޠ ‣ 8FCαʔϏεͷجૅΛ͔ͬ͠ΓֶͿ͜ͱ͕Ͱ͖͍ͯΔ ‣ 1FSMΛ͔͚ͯϥοΩʔ ‣
ଞͷݴޠΛֶͿҙཉʹͭͳ͕ͬͨ
c ʯʀ̻ 8FBSFIJSJOH IUUQTNJYJDPKQSFDSVJU
None