SlideShare a Scribd company logo
PHPの今とこれから2016
PHP Conference 2016, Tokyo
November 3, 2016
廣川 類 (日本PHPユーザ会)
1
2
7
PHPとは?
 PHPは主にWebアプリケーションに使用されるスクリプト言語
 1995年の誕生以来、Webと共に成長、進化
80%
15%
3% 1% 1%
サーバサイドプログラミング言語
PHP
ASP.NET
Java
static files
引用: W3Techs.com, 2016/10/16
78%
8%
6%
4% 3%
CMS シェア
WordPress
Joomla
Drupal
Magento
Blogger
3
PHP アンケート 2016
 主に使っているPHPのバージョン
1) PHP <=5.4
2) PHP 5.5
3) PHP 5.6
4) PHP 7.0
5) PHP 7.1
6) 使ってない
4
PHPバージョン分布
引用: W3Techs.com, 2016/10/12
2%
17%
19%
26%
26%
10% 1%
7.0
5.6
5.5
5.4
5.3
5.2
5.1
(31.3%)
(14.6%)
(12.0%)
 5.3:12%減、5.4:+6%、5.5:+7% 、5.6:+14%
 EOLとなったPHP 5.5以前のユーザ: 81%
5
(3.0%)
(38.1%)
PHPリリースサイクル
6
2013 2014 2015 2016 2017 2018 2019
5.3
5.4
5.5
5.6
7.0
アクティブサポート
セキュリティ修正のみ
2016/11
リリースサイクル:1年
ライフサイクル:3年(バグ修正:2年、セキュリティ修正のみ:1年)
PHP 5.6はサポート期間が2018年末まで延長 (⇒プレゼン修正します)
EOL 2015/9/14
EOL 2016/7/10
EOL 2018/12/31
https://wiki.php.net/rfc/releaseprocess
http://php.net/supported-versions.php
・名前空間
・クロージャ
・遅延静的束縛
・GC改善
・MySQLnd
・名前空間
・クロージャ
・遅延静的束縛
・GC改善
・MySQLnd
PHPの歩み
2009
5.3
`09/6
7.07.0
5.45.4
・Traits
・高速化
・MB標準化
・組込みWebサーバ
・レガシー機能削除
・Traits
・高速化
・MB標準化
・組込みWebサーバ
・レガシー機能削除
`12/3
6.0
`10/3 キャンセル
・Unicode
5.5
・ジェネレータ
・キャッシュ
・パスワードハッシュ
・ジェネレータ
・キャッシュ
・パスワードハッシュ
`13/6 5.6
・デバッガ
・定数スカラー式
・デバッガ
・定数スカラー式
`14/8
7
2010 2011 2012 2013 2014 2015 2016
`15/12
・大幅高速化
・戻り値型宣言
・スカラー型宣言
・大幅高速化
・戻り値型宣言
・スカラー型宣言
PHP 5.0 ‘04/7
2017
7.17.1
`16/12?
・Nullable
・複数例外キャッチ
・Nullable
・複数例外キャッチ
PHPリリース情報
Release 5.5 5.6 7.0 変更
2015/10/29 5.6.15
2015/11/26 5.6.16
2015/12/3 7.0.0
2016/12/17 7.0.1 CVE-2015-8616,8617
2016/1/7 5.5.31 5.6.17 7.0.2 CVE-2016-5114,1903,1904
2016/2/4 5.5.32 5.6.18 7.0.3 CVE-2015-8383,8386,8387,8389,8390,8391,8393,8394
CVE-2016-4342,4343,2554
2016/3/3 5.5.33 5.6.19 7.0.4 CVE-2016-4344,4355,4346,3185
2016/3/31 5.5.34 5.6.20 7.0.5 CVE-2015-8865.CVE-2016-4070…4073
2016/4/28 5.5.35 5.6.21 7.0.6 CVE-2016-4537…4544,3074
2016/5/26 5.5.36 5.6.22 7.0.7 CVE-2016-5096,5094,5093,4343,CVE-2013-7456
2016/6/23 5.5.37 5.6.23 7.0.8 CVE-2015-8874,CVE-2016-5766…5773
2016/7/21 5.5.38 5.6.24 7.0.9 CVE-2016-6288…6292,5385,5399,6207,6294...6297
CVE-2015-8879
2016/8/18 5.6.25 7.0.10 CVE-2016-7124,7125,7127…7132
2016/9/16 5.6.26 7.0.11 CVE-2016-7411…7414,7416…7418
2016/10/13 5.6.27 7.0.12
8
PHP 7.1 改善/変更のポイント
 Nullable型(?)
 複数例外型のキャッチ
 Curl HTTP/2サーバプッシュ
 クラス定数の可視性(public,protected,private)
 voidリターン型
 負の文字列オフセット
 list()におけるキーの指定、配列デストラクタの角括弧構文
 無効な数値文字列の警告
 mcrypt()廃止
 mb_ereg_replaceのevalオプション廃止
 session_gc(),session_create_id()追加
9
より速く、快適に
Athlon II X4 640 3.0GHz, Ubuntu 16.04
10
 PHP 7はPHP 5.6よりも大幅高速化
 変数コンテナ等、内部構造を大幅最適化し、メモリを削減
PHP 5.5 PHP 5.6 PHP 7.0 PHP 7.1 HHVM 3.15
0
0.5
1
1.5
2
2.5
3
3.5
4
strcat(200000)
sieve(30)
nestedloop(12)
matrix(20)
heapsort(20000)
hash2(500)
hash1(50000)
fibo(30)
ary3(2000)
ary2(50000)
ary(50000)
ackermann(7)
mandel2
mandel
simpleudcall
simpleucall
simplecall
simple
実行時間[s]
Zend/bench.php
より速く、快適に
Athlon II X4 640 3.0GHz, Ubuntu 16.04 11
Zend/micro_bench.php
PHP 5.5 PHP 5.6 PHP 7.0 PHP 7.1 HHVM 3.15
0
2
4
6
8
10
12
14
16 $x = $f ? $f : tmp
$x = $f ? $f : $a
$x = $f ?: tmp
$x = $a ?: null
$x = $str[0]
$x = $hash['v']
$x = $GLOBALS['v']
$x = $_GET
$x = TEST
new Foo()
$x = Foo::TEST
$this->f()
empty($this->x)
isset($this->x)
$this->x--
$this->x++
--$this->x
++$this->x
$this->x += 2
$this->x = 0
$x = $this->x
Foo::f()
self::f()
empty(Foo::$x)
isset(Foo::$x)
Foo::$x = 0
$x = Foo::$x
empty(self::$x)
isset(self::$x)
self::$x = 0
$x = self::$x
int_func()
undef_func()
func()
empty_loop
実行時間[s]
WordPress 4.4 ベンチマーク
Athlon II X4 640 3.0GHz, Ubuntu 14.04 12
PHP 5.6 PHP 7.0 HHVM 3.9
0
0.5
1
1.5
2
2.5
 PHP 7はPHP 5.6よりも約2倍高速
 HHVM 3.9は更に約10%高速
リクエスト/秒の比(PHP 5.6: 1)
複数例外型のキャッチ
 複数の例外のキャッチが一度に記述可能に
 異なる例外で共通の処理を行う場合の記述をシンプルに
13
RFC: https://wiki.php.net/rfc/multiple-catch
try {
echo 'TRY'.PHP_EOL;
throw new Exception2;
} catch (Exception1 $e) {
echo get_class($e).PHP_EOL;
} catch (Exception2 $e) {
echo get_class($e).PHP_EOL;
} finally {
echo 'Finally'.PHP_EOL;
}
try {
echo 'TRY'.PHP_EOL;
throw new Exception2;
} catch (Exception1 | Exception2 $e) {
echo get_class($e).PHP_EOL;
} finally {
echo 'Finally'.PHP_EOL;
}
PHP 7.0 PHP 7.1
リスト構文の改善
 リスト形式の代入:添字が0から始まる必要があった
 リスト形式の代入の記述がシンプルに
14
https://wiki.php.net/rfc/short_list_syntax
$a = [1,2,3];
list($a,$b,$c) = $a;
$a = [1,2,3];
[$a,$b,$c] = $a;
PHP 7.0 PHP 7.1
$a = ['name'=>'taro','age'=>28];
list('name'=>$name,
‘age’=>$age) = $a; // エラー
$name = $a[‘name’];
$age = $a[‘age’];
$a = ['name'=>'taro','age'=>28];
['name'=>$name,'age'=>$age] = $a;
クラス定数のアクセサ指定
 従来:クラス定数は全てpublic (アクセス制限機能なし)
class Foo {
const ONE=1;
}
15
class Foo {
public const ONE=1;
private const TWO=2;
protected const THREE=3;
static public function show() {
return self::TWO+self::THREE;
}
}
RFC: https://wiki.php.net/rfc/class_const_visibility
PHP 7.0
PHP 7.1
echo Foo::ONE; // 1
echo Foo::ONE; // 1
echo Foo::TWO;
echo Foo::THREE;
echo Foo:show(); // 5
致命的エラー
Nullable型
 ‘?’:ヌルを引数/戻り値の型として指定可能であることを示す
16
function foo(string $msg) {
echo $msg;
}
foo(‘hello’);
foo(null);
foo();
foo(new stdclass);
https://wiki.php.net/rfc/nullable_types
Nullableでない場合
function foo(?string $msg) {
echo $msg;
}
foo(‘hello’);
foo(null);
foo();
foo(new stdclass); 致命的エラー
Nullableの場合
致命的エラー
PHP 7.1:互換性に関する変更
 エクステンション削除: mcrypt()
 PHP 7.1: mcrypt関数はE_DEPRECATED通知を返す
 PHP 7.2以降: 削除→PECLに移動
 libmcryptはメンテされていない→ opensslを推奨
 オプション削除: mb_ereg_replace() の evalオプション(‘e’)
 PHP 7.1: E_DEPRECATED通知を返す
 mb_ereg_replace_callback()を推奨
17
HHVM/Hackの進化
18
From http://hhvm.com/blog
バージョン リリース日 内容
3.10.0 2015/10/15 strtr()性能改善
3.11.0 2015/12/9 PHP7サポート
3.12.0 2016/2/12 LTS
3.13.0 2016/3/31
3.14.0 2016/6/10
3.15.0 2016/9/7 LTS: shmop, pgsql, scrypt
Facebookが開発/公開するPHP/Hack実行環境
PHPのこれから
PHP 7.2開発が開始される。
PCO (PHP Cryptography Objects)
 https://wiki.php.net/rfc/php71-crypto
 PDOライクな暗号/ハッシュ関数: Libsodium, OpenSSL
JIT for PHP: OpCacheを拡張、Zendが次期
PHP(PHP8)用開発コードをテスト公開(2016/9/1)
 https://github.com/zendtech/php-src/tree/jit-dynasm/ext/opcache/jit
19
PHPの未来
php
frameworks
applications / plugins
pecl
users
Hack/HHVMリリースの持つ意味
 PHP7は劇的に進化した、そしてこれからも…
高性能かつ現実的な解を継続的に提供する
zend
hni
20
hhvm
hack
phalcon
Zephir
PHPユーザ相互の情報交換および
コミュニティの健全な発展
設立趣旨
• 高性能Webミドルウエアへのニーズ増大
• オープンソースソフトウエアの発展
背景
国内PHPユーザの増加
活動内容
ドキュメント整備
セミナー/イベント
メンバー/スタッフ
国際化
http://www.php.gr.jp/
Web
・PHPユーザ会員と思ったらメンバー
・運営するのも楽しいかも
日本PHPユーザ会
(2000年4月発足)
php-users, php-dev,
php-doc, phpug-admin
メーリングリスト
21
22
PHP Conference 2016 の見どころ
 PHPカンファレンス紹介
 Twitterアカウント:@phpcon , ハッシュタグ:#phpcon2016
 Facebookページ:pcon.japan
 Wifi: SSID: PHPCon2016, pass: パンフレット裏表紙に記載
PHP Conference 2016関連情報
http://phpcon.php.gr.jp/2016/
23
24
PHPカンファレンス2016を
お楽しみください!

More Related Content

PDF
PHPカンファレンス2016 初心者セッション
PDF
PHPでセキュリティを真面目に考える
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PDF
RFC: "var" Deprecation
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PPTX
PHP AST 徹底解説
PDF
JIT のコードを読んでみた
PDF
最近の PHP の話
PHPカンファレンス2016 初心者セッション
PHPでセキュリティを真面目に考える
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
RFC: "var" Deprecation
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP AST 徹底解説
JIT のコードを読んでみた
最近の PHP の話

What's hot (20)

PDF
PECL を数えてみた
PPTX
PHP基礎勉強会
PDF
PHP 8 で Web 以外の世界の扉を叩く
PDF
PHPの今とこれから 2013
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PDF
PECL operator で演算子オーバーロード
PDF
HTTPメッセージ、PHPの 事情ば分かっとっと?
PPTX
PHP AST 徹底解説(補遺)
PDF
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PPTX
php-src の歩き方
PDF
PHPの今とこれから2020
PDF
PHP で実行中のスクリプトの動作を下から覗き見る
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PDF
Phpstudy44 Zend Frameworkが抱えている問題は多い。
PDF
Task Spooler を試した
PDF
Windows で拡張モジュールをビルドしてみた
PDF
Behatで行う、E2Eテスト入門
PPTX
php and sapi and zendengine2 and...
PDF
Laravelとテストについて
PDF
PHPの今とこれから2017
PECL を数えてみた
PHP基礎勉強会
PHP 8 で Web 以外の世界の扉を叩く
PHPの今とこれから 2013
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PECL operator で演算子オーバーロード
HTTPメッセージ、PHPの 事情ば分かっとっと?
PHP AST 徹底解説(補遺)
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
php-src の歩き方
PHPの今とこれから2020
PHP で実行中のスクリプトの動作を下から覗き見る
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Phpstudy44 Zend Frameworkが抱えている問題は多い。
Task Spooler を試した
Windows で拡張モジュールをビルドしてみた
Behatで行う、E2Eテスト入門
php and sapi and zendengine2 and...
Laravelとテストについて
PHPの今とこれから2017
Ad

Viewers also liked (9)

PDF
phpcon2017 LT01 MDD
PDF
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PPTX
LancersのCakePHPバージョンアップ施策について
PDF
OPcache の最適化器の今
PDF
PHP拡張をPECLに登録してわかったこと
PDF
PHP Version Up と AWS への移行
PPTX
PHPとシグナル、その裏側
PDF
片手間MySQLチューニング戦略
PDF
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
phpcon2017 LT01 MDD
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
LancersのCakePHPバージョンアップ施策について
OPcache の最適化器の今
PHP拡張をPECLに登録してわかったこと
PHP Version Up と AWS への移行
PHPとシグナル、その裏側
片手間MySQLチューニング戦略
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
Ad

Similar to PHPの今とこれから2016 (20)

PDF
PHPの今とこれから2015
PDF
PHPの今とこれから2014
PDF
PHPの今とこれから2019
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
PDF
PHPの今とこれから2023
PDF
Phpのはなし
PDF
PHPの今とこれから2018
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
PDF
PHPの今とこれから2022
PDF
PHPの今とこれから2021
PDF
先取り!PHP 7 と WordPress
PDF
PHP Now and then 2018 : WordPress Special Edition
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PPTX
Lt資料 php7.0 張田浩明
PPTX
Lt資料 php7.0 張田浩明
PDF
PHP5.6からPHP7.0への移行
PDF
PHPの今とこれから2009
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PDF
PHPの今と未来を語る
PDF
Modern PHP Programming @ PFI Seminar
PHPの今とこれから2015
PHPの今とこれから2014
PHPの今とこれから2019
PHPの今とこれから2025 (PHP Conference Japan 2025)
PHPの今とこれから2023
Phpのはなし
PHPの今とこれから2018
PHPの今とこれから2024 at PHP Conference Japan 2024
PHPの今とこれから2022
PHPの今とこれから2021
先取り!PHP 7 と WordPress
PHP Now and then 2018 : WordPress Special Edition
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Lt資料 php7.0 張田浩明
Lt資料 php7.0 張田浩明
PHP5.6からPHP7.0への移行
PHPの今とこれから2009
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHPの今と未来を語る
Modern PHP Programming @ PFI Seminar

More from Rui Hirokawa (12)

PDF
日本PHPユーザ会の紹介
PDF
PHPの中の人によるパネルディスカッション
PDF
PHPの今とこれから2008
PDF
PHPの今とこれから2007
PDF
PHPの今とこれから2006
PDF
PHPの今と未来を語る
PDF
php.netの歩き方
PDF
PHP4の今 ~日本語対応と最近のトピックス~
PDF
PHP 5.5ネーティブキャッシュの話
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
PDF
スクリプト言語PHP攻略法
PPT
PHP, Now and Then 2011
日本PHPユーザ会の紹介
PHPの中の人によるパネルディスカッション
PHPの今とこれから2008
PHPの今とこれから2007
PHPの今とこれから2006
PHPの今と未来を語る
php.netの歩き方
PHP4の今 ~日本語対応と最近のトピックス~
PHP 5.5ネーティブキャッシュの話
最新PHP事情 (2000年7月22日,PHPカンファレンス)
スクリプト言語PHP攻略法
PHP, Now and Then 2011

PHPの今とこれから2016