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
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
390
新規事業と技術的課題 / ROSCAFE_TECH_NIGHT12_LT
hirokisaito
0
85
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
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
1.1k
続・コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions-again
handlename
0
120
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
200
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1.2k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
240
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.1k
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
180
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
7
2k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.2k
JIS keyboard support in Omarchy
lef237
0
160
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.8k
golang-bob.pdf
iwatsukayura
0
140
Featured
See All Featured
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
900
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
860
Everyday Curiosity
cassininazir
0
360
Rails Girls Zürich Keynote
gr2m
96
14k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
Done Done
chrislema
187
17k
Ethics towards AI in product and experience design
skipperchong
2
440
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Navigating Team Friction
lara
192
16k
We Have a Design System, Now What?
morganepeng
55
8.4k
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";}
まとめ ショートコーディングとは プログラムのソースコードがどれだけ短く書けるかを探求すること プログラミングは”道具”? “プログラミングをする” “プログラミングを読む” がコンテンツになるといいなーと思っております