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
今日から書けるリーダブルコード
Search
Daiki Nojiri
February 14, 2020
Programming
0
490
今日から書けるリーダブルコード
Daiki Nojiri
February 14, 2020
Tweet
Share
More Decks by Daiki Nojiri
See All by Daiki Nojiri
イメージで理解するgRPC
nojiri1098
0
340
GitのCLI操作を楽にするためにエイリアスを作った話
nojiri1098
0
300
Other Decks in Programming
See All in Programming
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
170
ALL CODE BASE ARE BELONG TO STUDY
uzulla
29
6.9k
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
7
3.7k
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
220
Kotlin 2.2が切り拓く: コンテキストパラメータで書く関数型DSLと新しい依存管理のかたち
knih
0
230
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
360
CSC509 Lecture 11
javiergs
PRO
0
280
外接に惑わされない自システムの処理時間SLIをOpenTelemetryで実現した話
kotaro7750
0
150
GitHub Copilotを使いこなせ!/mastering_github_copilot!
kotakageyama
2
700
業務でAIを使いたい話
hnw
0
220
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
480
iOSでSVG画像を扱う
kishikawakatsumi
0
180
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Mobile First: as difficult as doing things right
swwweet
225
10k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
A Modern Web Designer's Workflow
chriscoyier
697
190k
Testing 201, or: Great Expectations
jmmastey
46
7.7k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6k
How GitHub (no longer) Works
holman
315
140k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
900
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Transcript
Ϧʔμϒϧίʔυ ΑΓྑ͍ίʔυΛॻͨ͘Ίͷ࣮ફతͳςΫχοΫ
None
ࠓͷΰʔϧ ɾϦʔμϒϧίʔυͬͯͳʹʁ ɾͳΜͰϦʔμϒϧίʔυΛॻ͘ͷʁ ɾͲ͏ͬͯϦʔμϒϧίʔυΛॻ͘ͷʁ
Ϧʔμϒϧίʔυͬͯͳʹʁ
Ϧʔμϒϧίʔυ ˜ SFBEBCMFDPEF ˜ ಡΈ͍͢ίʔυ
ಡΈ͍͢ίʔυͬͯ ͲΜͳίʔυͩͱࢥ͍·͔͢ʁ
ݟ͕͍ͨͬͯΕಡΈ͍͢ʁ function isNull($array) { foreach($array as $v) { if (is_null($v))
{ return false; } } return true; } Πϯσϯτ͕͖Ε͍ͳίʔυ CSSͰ͍͍͔ function isNull($array) { foreach ($array as $v) { if (is_null($v)) { return false; } } return true; }
Ϧʔμϒϧίʔυͱ ଞͷਓ͕࠷࣌ؒͰ ཧղͰ͖Δίʔυ
Ϧʔμϒϧίʔυͱ ଞͷਓ͕࠷࣌ؒͰ ཧղͰ͖Δίʔυ
Ϧʔμϒϧίʔυͱ ଞͷਓ͕࠷࣌ؒͰ ཧղͰ͖Δίʔυ
͍͚Ͳɺ͙͢ʹཧղͰ͖ͳ͍ if (split(':', $line)[0] === 'root') { // }
͘ͳ͍͍͔ͬͯΒӅͯ͠͠·͏ if (split(':', $line)[0] === 'root') { // } $username
= split(':', $line)[0]; if ($username === 'root') { // } ˜
if (split(':', $line)[0] === 'root') { // } ˜ //
ίϩϯͷࠨଆΛநग़͢Δ $username = split(':', $line)[0]; if ($username === root) { // } ඞཁͳΒίϝϯτ
ͳΜͰϦʔμϒϧίʔυΛॻ͘ͷʁ
ͳΜͰಡΈ͍͢ίʔυΛ ॻ͍ͨ΄͏͕͍͍ͱࢥ͍·͔͢ʁ
Ϧʔμϒϧίʔυͱ ଞͷਓ͕࠷࣌ؒͰ ཧղͰ͖Δίʔυ
։ൃ͕εϜʔζʹਐΉ ಡΈ͍͢ίʔυͳΒʜ ɾղऍʹ໎Θͳ͍ɺޡղ͕ੜ·Εͳ͍ ɾಈ࡞ͷཧղ͕ૣ͘ͳΔ ɾҾ͖ܧָ͕͗ ɾಥવϓϩδΣΫτʹΞαΠϯ͞Εͯେৎ ಡΈʹ͍͘ίʔυͩͱʜ ɾೝ͕͍͕ࣝͪ͘͏ɺޡղ͕ੜ͡Δ ɾಡΈͨ͘ͳ͘ͳΔ ɾετϨεΛײ͡Δ
ɾͪΐͬͱͨ͠ػೳՃʹ͕͔͔࣌ؒΔ
։ൃ͕εϜʔζʹਐΉ ಡΈ͍͢ίʔυͳΒʜ ɾղऍʹ໎Θͳ͍ɺޡղ͕ੜ·Εͳ͍ ɾಈ࡞ͷཧղ͕ૣ͘ͳΔ ɾҾ͖ܧָ͕͗ ɾಥવϓϩδΣΫτʹΞαΠϯ͞Εͯେৎ ಡΈʹ͍͘ίʔυͩͱʜ ɾೝ͕͍͕ࣝͪ͘͏ɺޡղ͕ੜ͡Δ ɾಡΈͨ͘ͳ͘ͳΔ ɾετϨεΛײ͡Δ
ɾͪΐͬͱͨ͠ػೳՃʹ͕͔͔࣌ؒΔ ಡΈ͍͢ίʔυΛॻ͜͏ʂ
Ϧʔμϒϧίʔυͬͯ Ͳ͏ͬͯॻ͘ͷʁ
͜͜·Ͱͷ෮श ಡΈ͍͢ίʔυͬͯͳʹʁ ˠଞͷਓ͕࠷࣌ؒͰཧղͰ͖Δίʔυ ͳΜͰಡΈ͍͢ίʔυΛॻ͘ͷʁ ˠ։ൃ͕εϜʔζʹͳΔ͔Β ɹ։ൃָ͕ʹͳΔ͔Β
Ͱɺ۩ମతʹͲ͏ͬͯॻ͘ͷʁ
ૣ͘SFUVSO͢Δ ⁞ม໊ΛΧϥϑϧʹ͢Δ JGจΛׂ͢Δ ͙͢ʹਅࣅͰ͖ΔͭͷςΫχοΫ
⁞໊લΛΧϥϑϧʹ͢Δ
⁞໊લΛΧϥϑϧʹ͢Δ CFGPSF ͳΜͰಉ͡ಈࢺʹ͕ͪ͠ ɾHFU'JMF ɾHFU+TPO ɾHFU)UNM ɾHFU%BUB ɾHFU1BHF ɾHFU6TFS/BNF ɾHFU1BSBNT
ɾHFU4FBSDI2VFSZ
͍ΖΜͳ୯ޠ͕͋Γ·͢ HFU ͍ۙͱ͜Ζ͔Βऔͬͯ͘Δ GFUDI ԕ͍ͱ͜Ζ͔Βऔͬͯ͘Δ NBLF ൺֱతখ͞ͳͷΛ࡞Δ ࡐྉΛՃ͢Δ CVJME ൺֱతେ͖ͳͷΛ࡞Δ
ΈཱͯΔ HFOFSBUF Կ͔Λมͯ͠࡞Γग़͢ DSFBUF Կͳ͍ͱ͜Ζʹ৽͘͠࡞Δ
⁞໊લΛΧϥϑϧʹ͢Δ BGUFS HFU)UNM QPTU ɹ%#ʹอଘ͞Ε͍ͯΔ)5.-Λऔͬͯ͘Δ GFUDI)UNM VSM ɹࢦఆͨ͠63-͔Β)5.-Λऔͬͯ͘Δ
HFOFSBUF)UNM UFNQMBUF ɹςϯϓϨʔτ͔Β)5.-Λੜ͢Δ CVJME)UNM QBSUT ɹ෦ΛΈ߹Θͤͯ)5.-Λੜ͢Δ
ૣ͘SFUVSO͢Δ
ૣ͘SFUVSO͢Δ CFGPSF if (auth(‘admin’)->check() || (auth()->check() && auth()->user()->isPurchased($item) ) )
{ if ($item->raw()—>exists()) { return Storage::download($item->raw); } } return redirect()->back(); ݖݶνΣοΫ ϑΝΠϧͷଘࡏ֬ೝ
ૣ͘SFUVSO͢Δ CFGPSF if (auth(‘admin’)->check() || (auth()->check() && auth()->user()->isPurchased($item) ) )
{ if ($item->raw()—>exists()) { return Storage::download($item->raw); } } return redirect()->back(); JGจ͕ωετ͍ͯ͠Δ
ૣ͘SFUVSO͢Δ BGUFS if ($item->raw()—>doesNotExists()) { return redirect()->back(); } if (auth(‘admin’)->check()
|| (auth()->check() && auth()->user()->isPurchased($item) ) ) { return Storage::download($item->raw); } return redirect()->back();
ૣ͘SFUVSO͢Δ BGUFS if ($item->raw()—>doesNotExists()) { return redirect()->back(); } if (auth(‘admin’)->check()
|| (auth()->check() && auth()->user()->isPurchased($item) ) ) { return Storage::download($item->raw); } return redirect()->back(); ϑΝΠϧͷଘࡏ֬ೝ ݖݶνΣοΫ ϑΝΠϧ͕ͳ͍࣌ͰSFUVSO͢Εɼ ݖݶνΣοΫͰϑΝΠϧͷ͜ͱΛؾʹ͠ͳ͍͍ͯ͘
JGจΛׂ͢Δ
JGจΛׂ͢Δ BGUFS if ($item->raw()—>doesNotExists()) { return redirect()->back(); } if (auth(‘admin’)->check()
|| (auth()->check() && auth()->user()->isPurchased($item)) ) { return Storage::download($item->raw); } return redirect()->back(); BENJOͱVTFSΛҰʹνΣοΫ͠Α͏ͱ ͢Δ͔Βͪ͝Όͪ͝Όͯ͠͠·͏
JGจΛׂ͢Δ BGUFS if ($item->raw()—>doesNotExists()) { return redirect()->back(); } if (auth(‘admin’)->check())
{ return Storage::download($item->raw); } if (auth()->check() && auth()->user()->isPurchased($item)) { return Storage::download($item->raw); } return redirect()->back(); BENJOͷݖݶνΣοΫ VTFSͷݖݶνΣοΫ
JGจΛׂ͢Δ BGUFS if ($item->raw()—>doesNotExists()) { return redirect()->back(); } if (auth(‘admin’)->check())
{ return Storage::download($item->raw); } if (auth()->check() && auth()->user()->isPurchased($item)) { return Storage::download($item->raw); } return redirect()->back(); ϑΝΠϧͷଘࡏ֬ೝ BENJOͷݖݶνΣοΫ VTFSͷݖݶνΣοΫ
ࠓͷ·ͱΊ ಡΈ͍͢ίʔυͬͯͳʹʁ ˠଞͷਓ͕࠷࣌ؒͰཧղͰ͖Δίʔυ ͳΜͰಡΈ͍͢ίʔυΛॻ͘ͷʁ ˠ։ൃ͕εϜʔζʹͳΔ͔Β Ͳ͏ͬͯಡΈ͍͢ίʔυΛॻ͘ͷʁ ˠ͍ΖΜͳςΫχοΫ͕͋ͬͯɺ ɹʰϦʔμϒϧίʔυʱͰͨ͘͞Μհ͞Εͯ ɹ͍Δ
͓·͚ ϘπҊ ͔ͤͬ͘ͳͷͰ͚ͱ͖·͢
⁞໊લΛΧϥϑϧʹ͢Δ CFGPSF %#ͷΧϥϜ໊Λྫʹ ཧ໊ ཧ໊ OFXTEFUBJM ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ TFSJFTEFTDSJQUJPO
֓ཁ DMJFOUTEFTDSJQUJPO උߟ
%#ͷΧϥϜ໊Λྫʹ ཧ໊ ཧ໊ OFXTEFUBJM ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ TFSJFTEFTDSJQUJPO ֓ཁ DMJFOUTEFTDSJQUJPO
උߟ EFUBJMৄࡉɺEFTDSJQUJPOઆ໌ ⁞໊લΛΧϥϑϧʹ͢Δ CFGPSF
%#ͷΧϥϜ໊Λྫʹ ཧ໊ ཧ໊ OFXTEFUBJM ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ TFSJFTEFTDSJQUJPO ֓ཁ DMJFOUTEFTDSJQUJPO
උߟ ཧ໊͕ҧ͏ͷʹཧ໊ಉ͡ ⁞໊લΛΧϥϑϧʹ͢Δ CFGPSF
%#ͷΧϥϜ໊Λྫʹ ཧ໊ ཧ໊ OFXTEFUBJM ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ TFSJFTEFTDSJQUJPO ֓ཁ DMJFOUTEFTDSJQUJPO
උߟ ཧ໊͕ҧ͏ͷʹཧ໊ಉ͡ ⁞໊લΛΧϥϑϧʹ͢Δ CFGPSF
%#ͷΧϥϜ໊Λྫʹ ཧ໊ ཧ໊ OFXTEFUBJM ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ TFSJFTEFTDSJQUJPO ֓ཁ DMJFOUTEFTDSJQUJPO
උߟ ύοͱݟ͚ͨͩͰΘ͔Βͳ͍ ⁞໊લΛΧϥϑϧʹ͢Δ CFGPSF
⁞໊લΛΧϥϑϧʹ͢Δ BGUFS ӳ୯ޠͷόϦΤʔγϣϯΛ૿ͯ͠ΈΔ ཧ໊ ཧ໊ OFXTCPEZ ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ ৄࡉ
BVUIPSTEFTDSJQUJPO ஶऀʹ͍ͭͯ આ໌ TFSJFTPWFSWJFX ֓ཁ DMJFOUTSFNBSL උߟ
ӳ୯ޠͷόϦΤʔγϣϯΛ૿ͯ͠ΈΔ ཧ໊ ཧ໊ OFXTCPEZ ͓Βͤ༰ BVUIPSTEFUBJM ஶऀʹ͍ͭͯ ৄࡉ BVUIPSTEFTDSJQUJPO ஶऀʹ͍ͭͯ
આ໌ TFSJFTPWFSWJFX ֓ཁ DMJFOUTSFNBSL උߟ ӳ୯ޠΛ͓ͬͯ͘ ඞཁ͕͋Δ͚Ͳɺ ཧ໊Λݟ͚ͨͩͰ Λ૾Ͱ͖Δ ⁞໊લΛΧϥϑϧʹ͢Δ BGUFS