Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
美しいショートコーディングの世界
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
hiroki.saito
December 24, 2016
Programming
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
美しいショートコーディングの世界
社内LTやとあるイベントのLTで使用したショートコーディングの紹介スライド
hiroki.saito
December 24, 2016
More Decks by hiroki.saito
See All by hiroki.saito
なぜフルサイクルエンジニアを目指すのか / FullCycleDeveloperNight#1
hirokisaito
0
400
新規事業と技術的課題 / ROSCAFE_TECH_NIGHT12_LT
hirokisaito
0
86
GCPとPHP PHP Conference Japan 2020
hirokisaito
1
2.4k
たった1人のAPI開発 BEAR.Sundayで解決した課題たち / PHPerKaigi2019_TrackB_1445
hirokisaito
1
3.8k
RedisとGoで実装するリアルタイム通知 / Real-time notification developed by Redis and Go
hirokisaito
0
330
5分プログラミングSlackBotとmonolog
hirokisaito
0
190
Bear.SundayとRMパターン
hirokisaito
0
320
技術力ってなんだろう
hirokisaito
0
120
新卒3年目エンジニアの生存戦略
hirokisaito
1
360
Other Decks in Programming
See All in Programming
Kotlinの15年とServer-Side Kotlin
n_takehata
1
190
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.6k
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
170
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
350
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.8k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
240
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
580
SODA - FACT BOOK(EN)
sodainc
1
200
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
190
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
200
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
270
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Tell your own story through comics
letsgokoyo
1
1.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
670
Crafting Experiences
bethany
1
400
Testing 201, or: Great Expectations
jmmastey
46
8.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
910
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
Become a Pro
speakerdeck
PRO
31
6.3k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
340
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Navigating Weather and Climate Data
rabernat
0
570
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
290
Transcript
美しいコード?
自己紹介 - エキサイト株式会社 ニュースメディア技術sec - PHP - 学生時代の専門は計算理論 競技プログラミングを熱心にやっていました
None
None
None
None
美しいコード書いてますか
優れた設計のコード
優れた設計のコード 見た瞬間に理解できるコード
優れた設計のコード 見た瞬間に理解できるコード これらは美しい リーダーブルコードにそんな感じのこと書いてあった
優れた設計のコード 見た瞬間に理解できるコード これらは美しい 美しいのはこれらだけではない!
美しい ショートコーディングの世界
ショートコーディングとは プログラムのソースコードが どれだけ短く書けるかを探求すること 別名: コードゴルフ
ショートコーディングをやってみよう! 環境: Ubuntu 16.04.1 LTS PHP 7.0.8-0ubuntu0.16.04.2 (cli) php.iniの error_reporting(0);
short_open_tag => On
問題 Fizz Buzz 1から30までのFizz Buzzの結果を出力しなさい ただし、各発言を1行に出力すること 例: 1 2 Fizz
4 Buzz Fizz
補足:FizzBuzzとは 1以上の整数を順に、以下のルールに従って発言していくゲームである。 3で割り切れる時には「Fizz」 5で割り切れる時には「Buzz」 3と5の両方で割り切れる時には「FizzBuzz」 それ以外の時はその数字を発言する 参考 AOJ2441 FizzBuzz
<? // 143byte for($i=1;$i<=30;$i++){ if($i%3 == 0 && $i%5 ==
0){ echo "FizzBuzz\n"; } else if($i%3 == 0){ echo "Fizz\n"; } else if($i%5 == 0){ echo "Buzz\n"; } else { echo "{$i}\n"; } }
<? // 97byte 重複は排除!排除! for($i=1;$i<=30;$i++){ if(!($i%3)) echo 'Fizz'; if(!($i%5)) echo
'Buzz'; else if($i%3) echo $i; echo "\n"; }
<? // 78byte 三項演算子はショートコーディングの味方 for(;$i++<30;){ $s = ($i%3?'':'Fizz') . ($i%5?'':'Buzz');
$s = $s?$s:$i; echo"$s\n"; }
<? // 71byte さらに三項演算子を活用する for(;$i++<30;){ echo(($i%3?'':'Fizz') . ($i%5?'':'Buzz'))?:$i; echo"\n"; }
<? // 67byte 未定義定数は文字列として扱わられる for(;$i++<30;){ echo(($i%3?'':Fizz) . ($i%5?'':Buzz))?:$i; echo"\n"; }
// 63byte 職人達は60byte未満らしい… <?for(;$i++<30;){echo(($i%3?'':Fizz).($i%5?'':Buzz))?:$i,"\n";}
まとめ ショートコーディングとは プログラムのソースコードがどれだけ短く書けるかを探求すること プログラミングは”道具”? “プログラミングをする” “プログラミングを読む” がコンテンツになるといいなーと思っております