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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
hiroki.saito
December 24, 2016
Programming
260
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
180
新規事業と技術的課題 / ROSCAFE_TECH_NIGHT12_LT
hirokisaito
0
78
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
320
5分プログラミングSlackBotとmonolog
hirokisaito
0
180
Bear.SundayとRMパターン
hirokisaito
0
300
技術力ってなんだろう
hirokisaito
0
110
新卒3年目エンジニアの生存戦略
hirokisaito
1
350
Other Decks in Programming
See All in Programming
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
110
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
170
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
130
Contextとはなにか
chiroruxx
1
320
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
200
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
780
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
130
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
140
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
8
4.5k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.6k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
130
Featured
See All Featured
Everyday Curiosity
cassininazir
0
230
30 Presentation Tips
portentint
PRO
1
320
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Documentation Writing (for coders)
carmenintech
77
5.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
How to make the Groovebox
asonas
2
2.2k
Deep Space Network (abreviated)
tonyrice
0
170
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
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";}
まとめ ショートコーディングとは プログラムのソースコードがどれだけ短く書けるかを探求すること プログラミングは”道具”? “プログラミングをする” “プログラミングを読む” がコンテンツになるといいなーと思っております