ジェネレータで無限を手玉に取る術 by うさみけんた

PHPerKaigi 2020
採択
2020/02/11 10:25〜
Track B
15分トーク

ジェネレータで無限を手玉に取る術

tadsan うさみけんた tadsan

「PHPでforeachで反復できるものは何でしょう?」配列、オブジェクト、Iterator、そして“ジェネレータ”です。

ジェネレータは言語によってコルーチン、semicoroutineやFiberとも呼ばれるものと同等の言語機能であり、SICPのような計算機科学の教科書で説明されるストリーム・無限リストを簡潔に実現できます。
foreachループで配列を反復するのは既に作成済みのデータを頭から辿っていくだけのものであるのに対して、ジェネレータは配列のキーや要素に相当するものを計算によって生み出すことができるため、省メモリで効率のよい計算が可能です。

このトークではジェネレータの基礎概念と、実際に応用できるパターンについて紹介していきます。