
PHPカンファレンス2017
2017.12.05
10月8日に行われたPHP Conference2017で基調講演を聞いてきました。
PHP Conferenceは、PHPついての情報交換をおこなう毎年恒例の祭典です。
PHPは、現在web開発の82%で使用されているポピュラーなプログラミング言語です。日本PHPユーザー会の廣川類さんによる「PHPの今とこれから」と題した基調講演では、そのPHPを取り巻く情報や追加された機能などについて、お話を聞くことができました。

ここが変わったPHP
(本稿執筆時点では)間もなくバージョン7.2がリリースされますが、Web上の統計では既にPHP7へ移行したサイトは10%ほどに留まっており、EOL(End Of Life:サポート期限切れ)となった5.5以前のユーザーが未だに63%と大半を占めています。WordPress等の人気の高いPHPアプリケーションや、フレームワーク「Laravel」が推奨環境をPHP7以降とするなど、コミュニティ全体がPHP7への移行を推進しようとしていますので、本稿でもPHP7.2に移行するメリットを中心に、当日の模様をレポートしていきましょう。
性能の改善
バージョン5.6から7.0では50%近くの大幅な高速化を達成していますが、7.1から7.2では、さらに10%ほどの実行速度改善が行われます。特に高負荷なサイトでは応答速度の向上やインフラのコストダウンが期待できます。
言語仕様の改善
まず7.1では、値が入っていないことを許容するnullableの指定と複数の例外キャッチに対応しました。また、今年の11月30日にリリースされるPHP7.2では「Type Hinting」機能が改善され、引数・戻り値の型宣言に「object」が利用できるようになります。Type Hinting自体は5.4で導入済みですが、従来、引数にオブジェクトをとるメソッドに対しては、特定のクラス、もしくはその基底クラスしか指定できませんでした。汎用的な「object」型が指定できるようになることで、より柔軟な型チェックが可能になります。
セキュリティ面の改善
PHP7では、利用が簡単で安全な暗号化ライブラリ「libsodium」が導入されました。他の多くの言語ではOpenSSLのみが提供されていますが、PHPはlibsodiumを組み込んだことで、認証付き暗号をサポートする等、より先進的な暗号技術を利用できるようになっています。さらに7.2ではpassword_hash()/password_verify()関数で「Argon2」が利用できるようになります。Argon2は2015年のパスワードハッシュ協議会で優勝した鍵導出関数で、GPUによる高効率計算でも破られにくく、サイドチャネル攻撃にも高い耐性を持っています。また、メモリコストや時間コスト、並列度をオプションで調整できるため、環境に合わせた柔軟な運用が可能になります。Webアプリケーションに求められるセキュリティレベルは年々厳しくなっていますので、最新の暗号機能に追従していくためにも最新のPHPに移行することが重要といえるでしょう。
廃止される機能
抜粋ではありますが配列を一つずつ取り出して反復処理を行う「each()」関数はオブジェクトに対して使うことで予期せぬ結果を返すことがある等の問題から廃止予定となります。将来的には代替として「foreach」を利用するよう変更が必要です。
また、名前を明示せずに動的に関数を作成する「create_function()」関数についても、セキュリティ上の問題が指摘されていること、標準の機能での無名関数(名前を付けない関数)の実装が可能になったことから、廃止予定となりました。標準のクロージャで置き換える等、完全に廃止される前に準備しておきましょう。
php.iniのエクステンションロード(phpの機能を拡張する設定)の環境依存の廃止は、「よい意味」での「廃止」といえるでしょう。従来の表記は、Linuxでは「extension=mbstring.so」、Windowsでは「extension=php_mbstring.dll」という表記でしたが、環境依存がなくなることでLinuxとWindowsどちらも表記が「extension=mbstring」で済むようになりました。これによって環境ごとに記述を変える手間が減ります。
PHPのこれからについて
PHPバージョン7.3の開発が来年末に向けて進みますが、さらにその先ではFacebookによるPHP実行環境「HHVM」にも取り入れられている「JIT(Just In Time:実行時)コンパイラ」がPHP本家にも導入される見込みです。また、コンパイル済みコードを共有メモリへ保存しておく仕組みのOpCacheの拡張なども予定されており、将来的にはさらなるパフォーマンスの向上が期待できます。
まとめ

私はPHP Conferernceに参加するのが初めてで、当日まで堅いイメージを持っていました。しかし、実際に参加してみるとコスプレや企業ブース、スタンプラリーなど、お祭りのように楽しみながら学ぶことができて、とても有意義な時間を過ごすことができました。次回はもっと楽しめるように知識をつけて万全の状態で参加したいと思います。