5分でわかる? 関数型 php の潮流

62
5分でわかる? 関数型PHPの潮流 @yuya_takeyama

Upload: yuya-takeyama

Post on 29-Nov-2014

519 views

Category:

Engineering


0 download

DESCRIPTION

今、関数型 PHP が熱い

TRANSCRIPT

Page 1: 5分でわかる? 関数型 PHP の潮流

5分でわかる? 関数型PHPの潮流

@yuya_takeyama

Page 2: 5分でわかる? 関数型 PHP の潮流

Page 3: 5分でわかる? 関数型 PHP の潮流

関数型PHP が熱い

Page 4: 5分でわかる? 関数型 PHP の潮流

functional

Page 5: 5分でわかる? 関数型 PHP の潮流

でも、 お高いん でしょう?

(ハードル的な意味で)

Page 6: 5分でわかる? 関数型 PHP の潮流

はい

Page 7: 5分でわかる? 関数型 PHP の潮流

ぶっちゃけ 僕も

よくわかってない

Page 8: 5分でわかる? 関数型 PHP の潮流

でも

Page 9: 5分でわかる? 関数型 PHP の潮流

functional

Page 10: 5分でわかる? 関数型 PHP の潮流

「機能的」

Page 11: 5分でわかる? 関数型 PHP の潮流

OO厨でも 学ぶべき

ところは多い

Page 12: 5分でわかる? 関数型 PHP の潮流

押さえておくべき キーワード

Page 13: 5分でわかる? 関数型 PHP の潮流

参照透過性 (または副作用につ

いて)

Page 14: 5分でわかる? 関数型 PHP の潮流

例えば、 forをやめる

Page 15: 5分でわかる? 関数型 PHP の潮流

例えば、 setterをやめる

Page 16: 5分でわかる? 関数型 PHP の潮流

例えば、 変数の再代入を

やめる

Page 17: 5分でわかる? 関数型 PHP の潮流

immutability

Page 18: 5分でわかる? 関数型 PHP の潮流

Page 19: 5分でわかる? 関数型 PHP の潮流

高階関数

Page 20: 5分でわかる? 関数型 PHP の潮流

関数を 生成する関数

Page 21: 5分でわかる? 関数型 PHP の潮流

あるいは

Page 22: 5分でわかる? 関数型 PHP の潮流

関数を 引数に受ける

関数

Page 23: 5分でわかる? 関数型 PHP の潮流

(デザパタ厨には お馴染み

Strategy Pattern)

Page 24: 5分でわかる? 関数型 PHP の潮流

遅延評価

Page 25: 5分でわかる? 関数型 PHP の潮流

$range = function ($start, $end, $step = 1) { for ($i = 1; $i <= $end; $i += $step) { yield $i; } }; !

foreach ($range(1, 100) as $n) { echo $n, PHP_EOL; }

ジェネレータでrange

Page 26: 5分でわかる? 関数型 PHP の潮流

Page 27: 5分でわかる? 関数型 PHP の潮流

関数型PHP が熱い

Page 28: 5分でわかる? 関数型 PHP の潮流

PHP5.6の 新機能

Page 29: 5分でわかる? 関数型 PHP の潮流

use function

Page 30: 5分でわかる? 関数型 PHP の潮流

自分の ベンダ空間に

関数定義しまくり

Page 31: 5分でわかる? 関数型 PHP の潮流

use function my_awesome_func;

Page 32: 5分でわかる? 関数型 PHP の潮流

Page 33: 5分でわかる? 関数型 PHP の潮流

variadic parameters

Page 34: 5分でわかる? 関数型 PHP の潮流

可変長引数

Page 35: 5分でわかる? 関数型 PHP の潮流

function(...$args) {}

Page 36: 5分でわかる? 関数型 PHP の潮流

Page 37: 5分でわかる? 関数型 PHP の潮流

farewell to

func_get_args()

Page 38: 5分でわかる? 関数型 PHP の潮流

parameters unpacking

Page 39: 5分でわかる? 関数型 PHP の潮流

引数の 動的展開

Page 40: 5分でわかる? 関数型 PHP の潮流

func(...$args);

Page 41: 5分でわかる? 関数型 PHP の潮流

farewell to

call_user_func_array()

Page 42: 5分でわかる? 関数型 PHP の潮流

おすすめ ライブラリ

Page 43: 5分でわかる? 関数型 PHP の潮流

nikic¥iter

Page 44: 5分でわかる? 関数型 PHP の潮流

ジェネレータ実装者 による

Page 45: 5分でわかる? 関数型 PHP の潮流

関数型コレクション操作ライブラリ群

Page 46: 5分でわかる? 関数型 PHP の潮流

map reduce filter

Page 47: 5分でわかる? 関数型 PHP の潮流

全部 遅延 評価

Page 48: 5分でわかる? 関数型 PHP の潮流

Page 49: 5分でわかる? 関数型 PHP の潮流

igorw¥retry

Page 50: 5分でわかる? 関数型 PHP の潮流

超簡単に リトライが 実装できる

Page 51: 5分でわかる? 関数型 PHP の潮流

$user = retry(5, function () use ($id) { return User::find($id); });

Page 52: 5分でわかる? 関数型 PHP の潮流

in HHVM

Page 53: 5分でわかる? 関数型 PHP の潮流

$user = retry(5, () ==> User::find($id));

Page 54: 5分でわかる? 関数型 PHP の潮流

cool

Page 55: 5分でわかる? 関数型 PHP の潮流

あと

Page 56: 5分でわかる? 関数型 PHP の潮流

igorw¥retry issues#3

にopcodeレベルでの 詳説

Page 57: 5分でわかる? 関数型 PHP の潮流

知りたいが、 あなたを(ry

Page 58: 5分でわかる? 関数型 PHP の潮流

あとあと

Page 59: 5分でわかる? 関数型 PHP の潮流

この辺の話 Qiitaにもいろいろ 書いてるので

http://qiita.com/yuya_takeyama よろしくお願いします

Page 60: 5分でわかる? 関数型 PHP の潮流

それでは

Page 61: 5分でわかる? 関数型 PHP の潮流

このあたりで

Page 62: 5分でわかる? 関数型 PHP の潮流

Thank you for

Listening