Slide 1

Slide 1 text

美しいコード?

Slide 2

Slide 2 text

自己紹介 - エキサイト株式会社 ニュースメディア技術sec - PHP - 学生時代の専門は計算理論 競技プログラミングを熱心にやっていました

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

美しいコード書いてますか

Slide 8

Slide 8 text

優れた設計のコード

Slide 9

Slide 9 text

優れた設計のコード 見た瞬間に理解できるコード

Slide 10

Slide 10 text

優れた設計のコード 見た瞬間に理解できるコード これらは美しい リーダーブルコードにそんな感じのこと書いてあった

Slide 11

Slide 11 text

優れた設計のコード 見た瞬間に理解できるコード これらは美しい 美しいのはこれらだけではない!

Slide 12

Slide 12 text

美しい ショートコーディングの世界

Slide 13

Slide 13 text

ショートコーディングとは プログラムのソースコードが どれだけ短く書けるかを探求すること 別名: コードゴルフ

Slide 14

Slide 14 text

ショートコーディングをやってみよう! 環境: Ubuntu 16.04.1 LTS PHP 7.0.8-0ubuntu0.16.04.2 (cli) php.iniの error_reporting(0); short_open_tag => On

Slide 15

Slide 15 text

問題 Fizz Buzz 1から30までのFizz Buzzの結果を出力しなさい ただし、各発言を1行に出力すること 例: 1 2 Fizz 4 Buzz Fizz

Slide 16

Slide 16 text

補足:FizzBuzzとは 1以上の整数を順に、以下のルールに従って発言していくゲームである。 3で割り切れる時には「Fizz」 5で割り切れる時には「Buzz」 3と5の両方で割り切れる時には「FizzBuzz」 それ以外の時はその数字を発言する 参考 AOJ2441 FizzBuzz

Slide 17

Slide 17 text

// 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"; } }

Slide 18

Slide 18 text

// 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"; }

Slide 19

Slide 19 text

// 78byte 三項演算子はショートコーディングの味方 for(;$i++<30;){ $s = ($i%3?'':'Fizz') . ($i%5?'':'Buzz'); $s = $s?$s:$i; echo"$s\n"; }

Slide 20

Slide 20 text

// 71byte さらに三項演算子を活用する for(;$i++<30;){ echo(($i%3?'':'Fizz') . ($i%5?'':'Buzz'))?:$i; echo"\n"; }

Slide 21

Slide 21 text

// 67byte 未定義定数は文字列として扱わられる for(;$i++<30;){ echo(($i%3?'':Fizz) . ($i%5?'':Buzz))?:$i; echo"\n"; }

Slide 22

Slide 22 text

// 63byte 職人達は60byte未満らしい…

Slide 23

Slide 23 text

まとめ ショートコーディングとは プログラムのソースコードがどれだけ短く書けるかを探求すること プログラミングは”道具”? “プログラミングをする” “プログラミングを読む” がコンテンツになるといいなーと思っております