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
510
今日から書けるリーダブルコード
Daiki Nojiri
February 14, 2020
Tweet
Share
More Decks by Daiki Nojiri
See All by Daiki Nojiri
イメージで理解するgRPC
nojiri1098
0
360
GitのCLI操作を楽にするためにエイリアスを作った話
nojiri1098
0
310
Other Decks in Programming
See All in Programming
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
330
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
240
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
550
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
SQL Server 2025 LT
odashinsuke
0
110
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.1k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
1
140
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
690
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
150
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
53
AI: The stuff that nobody shows you
jnunemaker
PRO
1
37
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
26
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
Automating Front-end Workflow
addyosmani
1371
200k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
210
Claude Code のすすめ
schroneko
67
210k
The Pragmatic Product Professional
lauravandoore
37
7.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
530
The Mindset for Success: Future Career Progression
greggifford
PRO
0
200
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