純粋 vs 副作用 〜 PHPはなぜ難しいのか? by うさみけんた

PHP Conference Japan 2025
採択
2025/06/28 11:25〜
トラック1 - 1F 大展示
レギュラートーク(25分)

純粋 vs 副作用 〜 PHPはなぜ難しいのか?

tadsan うさみけんた tadsan
2

純粋関数(pure function)という言葉を聞いたことはありますか? 簡単にいうと、同じ引数を渡せば必ず同じ結果を返す関数のことで、「数学的な関数」と説明されることもあります。

同じ引数で同じ結果ということは『確実な再現性がある』ということで、「純粋」の概念を知って純粋と不純な処理を切り分けられれば、コードを見通しよく、テストしやすいコードにすることもできます。

いくつかの静的解析ツールとIDEは純粋性について分析を提供しており、意味のない純粋関数の呼び出しについて警告を与えてくれます。
これと関連して、PHP 8.5向けには #[NoDiscard] というattributeも追加され、戻り値を処理する必要がある実装をマークすることもできます。

では、既存実装をPureあるいはNoDiscardに明解に分類できるかというと… 現実には一筋縄にはいかない、さまざまな考慮事項があります。

本トークでは「純粋」および「副作用」という概念、そしてそれらをとりまく周辺事情についてお話しします。