PHPカンファレンス2018 レポート

廣川類さん「PHPのこれから2018」,徳丸浩さん「安全なWebアプリケーションの作り方2018」 〜PHPカンファレンス2018

この記事を読むのに必要な時間:およそ 4 分

12月15日,東京都大田区産業プラザPiOにてPHPカンファレンス2018が開催されました。本稿ではその模様をお届けしていきます。今回は主に,ゲストスピーカーである廣川類さんと,徳丸浩さんのセッションをレポートします。

オープニング

実行委員長の原田裕介さんがオープニングの挨拶を行いました。今年のテーマが「GROWTH」であることや,スポンサーブースの案内,諸注意などを伝えました。

画像

廣川類さん「PHPのこれから2018」

日本PHPユーザ会 廣川類さんのセッションは,今年のPHPの状況,最近リリースされたPHP7.3,そして今後についての話がありました。廣川さんはphp.netのマニュアルページの翻訳やmbstringのモジュールを開発してきました。PHPのユーザーなら誰もが見たり使ったりしているところです。

画像

PHPの歴史とWebにおけるシェア

PHPはWebで主に使われている言語で1995年に誕生し23年経っています。もともとは開発者のラスマスのホビーツールだったものが,Webの進化とともに進んできました。Webの世界では8割くらいのシェアで,ここ数年はあまり変化がないとのことです。

またCMSのシェアは,PHPで開発されているWordPressが80.8%で圧倒的です。WordPressにはWoredCampというコミュニティがあり,とても活発です。過去にはPHPカンファレンスと同時開催したこともありました。

PHPの開発者と,PHPのこれまで

PHPは言語として,数多くの人に支えられています。PHPの開発アカウント数は1939(うち日本人とみられるアカウントは15)です。そのうちコアコミッターは約150名(うち日本人は5名)で,PHPの全ソース(エクステンションも含む)に触れる権利があります。また,全体の舵取りを担当しているPHP Groupは現在10名で構成されています。PHPをどうしていくかについては広く投票されることもありますが,最終的にはPHP Groupが決めています。

PHP5がリリースされたのが2004年です。5.3,5.4が2009年にリリースされ,一般的な言語として足りないところ,例えば名前空間やクロージャーが追加されました。そして5.5や5.6ではキャッシュやデバッガが強化され,Webサーバーも実装されました。こうして言語単体でおおよそのことができるようになりました。

そして2015年にPHP7がリリースされました(ちなみにバージョン6は5.3よりも前に作られましたが,Unicode化に失敗してコードがメンテナンスできなくなり,6自体は開発が断念されました)⁠7以降は大きな変更はなくなってきていますが,高速化を進めています。7.3は今年12月6日にリリースされたばかりです。

PHPのバージョンのシェア

会場の参加者が使用しているPHPのバージョンを聞いてみたところ,5系が3割程度,7系が7割程度でした(PHPを使ったことない人もごく少数いました)⁠W3Techsのバージョン調査によれば,PHPを使っているユーザーのうち24%が7系,それ以外がほぼ5系(5系の3割くらいが5.6)を使っていることが示されています。

画像

このように5系を使っているユーザーが多いのですが,5系の最後である5.6は今年12月31日でサポートが切れます。7.0もサポート先日12月3日に切れています。7.0までのシェアは全体の80%ほどあり,これほどの人が切り落とされてしまう,信じられない数字だと話しました。

PHPのライフサイクルは3年です。そのうちアクティブサポートは2年で,セキュリティ修正のみが1年です。しかし5.6はユーザー数がとても多かったため,これまでもサポートが延長されてきました(もともとは2017年末に終了予定でした)⁠

廣川さんは「パッケージによっては古いバージョンをサポートしてくれる可能性はありますが,セキュリティ関連の問題が修正がされませんので,ぜひアップデートしてください」と述べていました。また,今年は大きなセキュリティ上の問題はあまり発生しませんでしたが,セキュリティの問題がなかったわけではないため,各バージョンの最新版を使ってほしいとのことです。

5系と7系のベンチマーク

5.6と7.0の差はとても大きく2倍くらいあります。PHPが利用されるのはWebアプリケーションなので,単純に言語のレスポンスが良ければ早く表示されるとかではありません。しかし,言語として高速であることは良いことです。

メモリの消費量については5と7の差はとても大きく,WordPressのベンチマークだと1:8くらいの差を,ZendBenchのベンチマークだと1:3くらいの差を確認できました。

画像

なお,7系の7.0から7.3まではおよそ5%ずつの改善を続けています。

PHP7.3における変更点

PHP7.3では構文や関数,機能にいくつか変更がありました。廣川さんは興味深い変更点を紹介していきました。

heardoc/nowdoc(ヒアドキュメント)の書き方

ヒアドキュメントの終端マーカがインデントできるようになり,その位置でインデントを制御できるようになりました。注意すべきはタブとインデントを混ぜるとエラーになることです。

if(true){
    print <<EOS
    Hello
    EOS;
}
Mbstringでの完全な大文字小文字変換のサポート

英語のアルファベットの大文字小文字変換は,単純に小文字大文字を置き換えるだけで簡単です。しかしフランス語には大文字になると,字数が変わる単語があります。例えばsTraße(シュトラセとよみ,英語ではstreet)はSTRASSEとなります。このような大文字小文字変換に対応しました。

mb_eregのアップデート

mb_eregではOnigurumaの最新版に対応しました。正規表現の名前付きキャプチャは配列の数字添字で取れていましたが,今後は"word"という名前で検索したら,"word"という配列の文字列添字で取れるようになります。

CookieのSameSite属性への対応

W3Cの提案段階ですが,ほとんどのブラウザでサポートされているCookieのSameSite属性。この属性を付けておくと,クロスサイトのリクエストに対して,Cookieを付けなくてすむ機能に対応するそうです。これまではフレームワーク側で対応していましたが,今後はPHP側で対応できるようになります。それにはsetcookie()などの引数にsamesiteオプションを加えてStrictを指定します。

関数の追加

is_countable関数が追加されました。今後は(配列 OR instanceof)で調べる必要がなくなります。また,array_key_firstとarray_key_last関数が追加されました。配列の最初と最後が簡単に取れるようになります。

リファレンス代入

あるリストを一部リファレンスにする場合,これまでは1行1行記述するしかありませんでしたが,今後は次のようにシンプルに記述できるようになります。

$m = [1,2,3];
list($a, &$b, &$c) = $m;

関数の引数の最後にカンマをつけられるように

関数の引数の最後に,配列と同じくカンマをつけられるようになりました。パーサーなどを作るときに便利になります。

その他

  • PCREがPCRE2に更新されました。
  • htrime()ナノ秒単位で計測できるようになりました。
  • 廃止された機能として大文字小文字に依存しない定数が廃止されました。
  • defineの第3引数にTrueを指定できましたが,今後はdeprication警告を発生します。
  • mbereg_*()は廃止。PHP3時代のエイリアスがなくなります。

今後のHack言語とHHVM

Facebookが開発しているHHVMは進化はしていますが,PHP7は完全サポートされないことを言及しました。そして,今年12月にリリースされたHHVM 3.30でPHPのサポートは終了となります。そして次のリリースであるv4.0.0以降ではPHP非互換となるとのことです。3.30も2019年11月にはサポートが終了します。

Hackの未来としては2,3年はユーザー数の増加を目指さず,4週毎にリリースを繰り返しながら言語としてのHack自体を進化させていくようです。なお,今まであったLTS版は非互換,非推奨となります。

PHP7.4からどうなるのか

PHP7.4の開発も始まっています。来年の今頃にリリースされる予定です。

7.4ではプリロード機能が実装されます。コンパイル時によく使うスクリプトがキャッシュしますが,プリロードは起動時にすべて読み込む機能になります。これにより,ZF2Testで50%ほど改善されるようです。

言語に関わるところではTyped Properties2.0が実装され,次のように書けるようなります。

class User {
    public int $id;
}

ちなみに2.0の前に否決されたものは下位互換性がなかったとのことです。

“PHPは歯ブラシのみたいなもの”

廣川さんは最後に,ラスマスの⁠PHPは歯ブラシのみたいなもの⁠という言葉を引用して,次のように話しました。

「いつも使う歯ブラシのことはあまり気にしません。⁠問題を解くためのシンプルなツール⁠であることが大事なのです。Webの世界は進化が激しく,なくなったものも非常に多いです。そのようななかPHPが生き残ったのは,このポリシーがあるからです。PHPの学習が容易です。また今回のカンファレンスなどのような地道な活動を行っていくことも大事です」⁠廣川さん)

このカンファレンスを主催している日本PHPユーザー会は,2000年に発足してから18年になります。カンファレンスやPHP勉強会を行っていますが,会則もなければ会長もいない,ゆるい組織だと紹介しました。

そして廣川さんは,本日のカンファレンスでは様々なセッションが行われることを挙げ,今年のテーマ⁠GROWTH⁠のように成長していく場としてほしいこと,また開催中は会場内にいるので気軽に声をかけてくださいと話し,発表を締めくくりりました。

著者プロフィール

中村慎吾(なかむらしんご)

仕事でPHPを使うようになって10数年。楽しい事には何でもやってみるスタイル。趣味が講じて(拗らせて?)会社も作りました。Web開発となるとPHPは手放せません。

Twitter:@n416
URLhttp://kisaragi-system.co.jp

コメント

コメントの記入