SlideShare a Scribd company logo
PHPの今とこれから2015
PHP Conference 2015, Tokyo
October 3, 2015
廣川 類 (日本PHPユーザ会)
1
2
PHPとは?
 PHPは主にWebアプリケーションに使用されるスクリプト言語
 1995年の誕生以来、Webと共に成長、進化
81.3%
16.5%
3.0%
1.6%
0.7%
サーバサイドプログラミング言語
PHP
ASP.NET
Java
static files
ColdFusion
引用: W3Techs.com, 2015/9/22
58.7%
6.7%
5.0%
2.9% 2.8%
CMSシェア
WordPress
Joomla
Drupal
Magento
Blogger
3
PHP アンケート 2015
 主に使っているPHPのバージョン
1) PHP <=5.3
2) PHP 5.4
3) PHP 5.5
4) PHP 5.6
5) PHP 7.0
6) 使ってない
4
PHPバージョン分布
引用: W3Techs.com, 2015/9/22
3.0%
12.0%
31.3%38.1%
14.6%
1.0%
5.6
5.5
5.4
5.3
5.2
5.1
(48.4%)
(22.3%)
(23.1%)
 5.2 、5.3 10%減、5.5大幅増(3倍)
 EOLとなったPHP 5.4以前のユーザ: 84%
5
(3.7%)
(0.1%)
・名前空間
・クロージャ
・遅延静的束縛
・GC改善
・MySQLnd
PHPの歩み
5.3
`09/6
7.0
5.4
・Traits
・高速化
・MB標準化
・組込みWebサーバ
・レガシー機能削除
`12/3
6.0
`10/3 キャンセル
・Unicode
5.5
・ジェネレータ
・キャッシュ
・パスワードハッシュ
`13/6 5.6
・デバッガ
・定数スカラー式
`14/8
6
`15/11/12
・大幅高速化
・戻り値型宣言
・スカラー型宣言
PHP 5.0 ‘04/7
PHPリリースサイクル
7
2012 2013 2014 2015 2016 2017 2018
5.3
5.4
5.5
5.6
アクティブサポート
セキュリティ修正のみ
2015/10
リリースサイクル:1年
ライフサイクル:3年(バグ修正:2年、セキュリティ修正のみ:1年)
EOL 2015/9/14
EOL 2016/7/10
EOL 2017/8/28
https://wiki.php.net/rfc/releaseprocess
http://php.net/supported-versions.php
PHPリリース情報
Release 5.4 5.5 5.6 変更
2014/10/16 5.4.34 5.5.18 5.6.2 CVE-2014-3670, 3668 ,3669
2014/11/13 5.4.35 5.5.19 5.6.3 CVE-2014-3710
2014/12/18 5.4.36 5.5.20 5.6.4 CVE-2014-8142
2015/1/22 5.4.37 5.5.21 5.6.5 CVE-2015-0231,0232, CVE-2014-9427,9652
2015/2/19 5.4.38 5.5.22 5.6.6 CVE-2015-0235,0273,2301, CVE-2014-9705
2015/3/19 5.4.39 5.5.23 5.6.7 CVE-2015-2787,2348,2305,4147,4148,2331
2015/4/16 5.4.40 5.5.24 5.6.8 CVE-2015-3330
2015/5/14 5.4.41 5.5.25 5.6.9 CVE-2015-4025,4026,2325,2326,4021
2015/6/11 5.4.42 5.5.26 5.6.10 CVE-2015-3414,3415,3416,4642,4644
2015/7/9 5.4.43 5.5.27 5.6.11 CVE-2015-3152,5589,5590
2015/8/6 5.4.44 5.5.28 5.6.12 CVE-2015-6831,6832,6833
2015/9/3 5.4.45 5.5.29 5.6.13 CVE-2015-6834,6835,6836,6837,6838
2015/10/1 5.5.30 5.6.14
8
escapeshellarg()
OSコマンドインジェクション
PHP 7.0 改善/変更のポイント
 大幅高速化
 致命的エラーを例外捕捉可能に
 古いSAPI、エクステンションの削除
 ヌル合体演算子 (??)
 結合比較演算子 ( <=> )
 戻り値型宣言
 スカラー型宣言
 匿名クラス
9
より速く、快適に
Athlon II X4 640 3.0GHz, Ubuntu 14.04 10
0
0.5
1
1.5
2
2.5
3
3.5
4
PHP 5.4 PHP 5.5 PHP 5.6 PHP 7.0 HHVM 3.9
実行時間[s]
Zend/bench.php 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
 PHP 7はPHP 5.6よりも大幅高速化
 変数コンテナ等、内部構造を大幅最適化し、メモリを削減
より速く、快適に
Athlon II X4 640 3.0GHz, Ubuntu 14.04 11
0
2
4
6
8
10
12
14
16
PHP 5.4 PHP 5.5 PHP 5.6 PHP 7.0 HHVM 3.9
実行時間[s]
Zend/micro_bench.php $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
WordPress 4.4 ベンチマーク
Athlon II X4 640 3.0GHz, Ubuntu 14.04 12
0
0.5
1
1.5
2
2.5
PHP 5.6 PHP 7.0 HHVM 3.9
 PHP 7はPHP 5.6よりも約2倍高速
 HHVM 3.9は更に約10%高速
リクエスト/秒の比(PHP 5.6: 1)
スカラー型宣言と戻り型宣言
 スカラー型宣言と戻り型宣言のサポート
 デフォルト動作は従来と同じ(non strictモード)
 Strictモードにすると型チェックが有効になる
13
RFC: https://wiki.php.net/rfc/scalar_type_hints_v5
<?php
function add($a, $b) {
return $a+$b;
}
echo add(“2“,”3”); // 5
<?php
function add(int $a, int $b) : int {
return $a+$b;
}
echo add(“2“,”3”);
PHP 5.6 PHP 7
declare(strict_types = 1);
// エラー
致命的エラーを例外捕捉可能に
 PHP 5では致命的エラー(回復可能な致命的エラー)の
例外処理が困難だった。
function foo($obj) {
$obj->nope();
}
14
try {
foo(null);
} catch (¥Error $e) {
var_dump($e); // 回復処理
}
echo “alive!”; // alive!
RFC: https://wiki.php.net/rfc/engine_exceptions_for_php7
foo(null);
PHP 5.6
PHP 7
致命的エラー
PHP7: ’<=>’ 演算子
 結合比較演算子:スペースシップ演算子
function order_func($a, $b) {
return ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
}
15
function order_func($a, $b) {
return $a <=> $b;
}
https://wiki.php.net/rfc/combined-comparison-operator
PHP 5.6
PHP 7
PHP7: パーサ関連の変更
 Abstract Syntax Tree (AST) :パーサとコンパイラを分離
コード管理が容易→ 最適化、メモリ削減
 変数構文の統一
16
$obj->$bar [‘foo’]
RFC: https://wiki.php.net/rfc/abstract_syntax_tree
$obj->{$bar [‘foo’]}
{$obj->$bar} [‘foo’]
PHP 5.6
PHP 7
RFC: https://wiki.php.net/rfc/uniform_variable_syntax
PHP 7:互換性に関する変更
 エクステンション削除: ereg, mysql, mssql
 SAPI削除: 22種類→7種類
apache2handler, cgi, cli, embed, fpm, litespeed, phpdbg
 ASP(<% .. %>)、Script(<script launguage=“php”></script>)廃止
 newオブジェクトの参照代入廃止
 PHP4形式のコンストラクタ: E_DEPRECATED
 エクステンションは要変更:
http://gophp7.org/gophp7-ext/
17
class C {}
$c =& new C;
class C {
function C() {}
}
$c = new C();
HHVM/Hackの進化
 LTSリリース: 3.3, 3.6
 3.8 で更に高速化: PHP7よりも平均10~20%高速
 非同期クエリ(MySQL)による高速化を模索
18
From http://hhvm.com/blog
PHPのこれから
PHP 7.1開発が開始される。
PCO (PHP Cryptography Objects)
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 2015 の見どころ
 PHPカンファレンス紹介
 Twitterアカウント:@phpcon , ハッシュタグ:#phpcon2015
 Facebookページ:pcon.japan
PHP Conference 2015関連情報
http://phpcon.php.gr.jp/2015
23
24
PHPカンファレンス2015を
お楽しみください!
HHVM
 Facebookが開発/公開するPHP/Hack実行環境
 2010/2 HipHop for PHP:C++トランスレータ、互換性、管理
 2011/12 HipHop Virtual Machine(HHVM):JITベースVM
 リソース低減化(>66%)と速度改善(>5x), WP (2.5x)
 FastCGI+Webサーバで実行
PHPスクリプト
バイトコード
パース/コンパイル
Zend VM
実行
PHP/Hackスクリプト
HipHopバイトコード(HHBC)
パース/コンパイル(AST)
JITコンパイラ(最適化)
ネーティブコード
HHVM
実行(x86-64,ARM64)
25
hhvm.com
Hack
 PHPを拡張したHHVM用の言語: 2014/2公開
 目的:大規模開発における開発効率化
 関数、クラスの型アノテーション:型チェッカ
 PHPからの移行は容易:移行ツール、gradual typing
 HHVMにおける最適化にも寄与
 型拡張:generics,collections,nullable
 非同期プログラミング:async,await
26
hacklang.org

More Related Content

What's hot (20)

PDF
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
 
PDF
PHP5.6からPHP7.0への移行
Yasuo Ohgaki
 
PDF
Phpでアプリケーションサーバー
k-motoyan
 
PDF
Php非同期の技法
Shogo Kawahara
 
PDF
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
 
PDF
RFC: "var" Deprecation
y-uti
 
PDF
anyenv + phpenv + php-build が便利すぎる件
y-uti
 
PDF
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
 
KEY
php-timecopを実戦投入してみた
Yoshio Hanawa
 
PDF
恋に落ちるデプロイツール
totty jp
 
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
PPTX
Behat Driven Development
Ryo Tomidokoro
 
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
 
PDF
PHP7の拡張モジュール事情
Yoshio Hanawa
 
PDF
Cake php + php unitによる実践的ユニットテスト
慶信 若松
 
PDF
PHP7はなぜ速いのか
Yoshio Hanawa
 
PDF
Laravel5.1 Release
Yuuki Takezawa
 
PDF
PHP カンファレンス福岡 参加報告
y-uti
 
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
 
PPTX
今日から始めるLaravel
Masaru Matsuo
 
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
 
PHP5.6からPHP7.0への移行
Yasuo Ohgaki
 
Phpでアプリケーションサーバー
k-motoyan
 
Php非同期の技法
Shogo Kawahara
 
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
 
RFC: "var" Deprecation
y-uti
 
anyenv + phpenv + php-build が便利すぎる件
y-uti
 
PHP7の内部実装から学ぶ性能改善テクニック
Yoshio Hanawa
 
php-timecopを実戦投入してみた
Yoshio Hanawa
 
恋に落ちるデプロイツール
totty jp
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
Behat Driven Development
Ryo Tomidokoro
 
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
 
PHP7の拡張モジュール事情
Yoshio Hanawa
 
Cake php + php unitによる実践的ユニットテスト
慶信 若松
 
PHP7はなぜ速いのか
Yoshio Hanawa
 
Laravel5.1 Release
Yuuki Takezawa
 
PHP カンファレンス福岡 参加報告
y-uti
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
 
今日から始めるLaravel
Masaru Matsuo
 

Viewers also liked (13)

PPTX
Phpcon2015
Hiroshi Tokumaru
 
PDF
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
 
PDF
ハードウェアこわい(字幕版) - HTML5オールスターズ
Wakasa Masao
 
PDF
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
yoshikawa_t
 
PDF
CordovaでSNSアプリ作ってみた
yusukixs
 
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
 
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
 
PDF
みんなそろそろ707やめようぜ (;´Д`)
Yasutaka Hamada
 
PDF
営業・運用を支える "気付ける" 管理画面
Masao Maeda
 
PPTX
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
 
PDF
PHP の GC の話
y-uti
 
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
 
PPTX
PHPとシグナル、その裏側
do_aki
 
Phpcon2015
Hiroshi Tokumaru
 
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
 
ハードウェアこわい(字幕版) - HTML5オールスターズ
Wakasa Masao
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
yoshikawa_t
 
CordovaでSNSアプリ作ってみた
yusukixs
 
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
 
みんなそろそろ707やめようぜ (;´Д`)
Yasutaka Hamada
 
営業・運用を支える "気付ける" 管理画面
Masao Maeda
 
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
 
PHP の GC の話
y-uti
 
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
 
PHPとシグナル、その裏側
do_aki
 
Ad

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

PDF
PHPの今とこれから2016
Rui Hirokawa
 
PDF
PHPの今とこれから2014
Rui Hirokawa
 
PDF
PHPの今とこれから2017
Rui Hirokawa
 
PDF
PHPの今とこれから2019
Rui Hirokawa
 
PDF
PHPの今とこれから2018
Rui Hirokawa
 
PDF
PHPの今とこれから2020
Rui Hirokawa
 
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
Rui Hirokawa
 
PDF
PHPの今とこれから2023
Rui Hirokawa
 
PDF
PHPの今とこれから2022
Rui Hirokawa
 
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
 
PDF
Phpのはなし
Serverworks Co.,Ltd.
 
PDF
先取り!PHP 7 と WordPress
Masashi Shinbara
 
PDF
PHPの今とこれから 2013
Rui Hirokawa
 
PDF
PHP Now and then 2018 : WordPress Special Edition
Rui Hirokawa
 
PDF
PHPの今とこれから2021
Rui Hirokawa
 
PDF
PHPの今とこれから2009
Rui Hirokawa
 
PDF
PHPの今と未来を語る
Rui Hirokawa
 
PPTX
PHP基礎勉強会
Yuji Otani
 
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
PPTX
Php入門
dcubeio
 
PHPの今とこれから2016
Rui Hirokawa
 
PHPの今とこれから2014
Rui Hirokawa
 
PHPの今とこれから2017
Rui Hirokawa
 
PHPの今とこれから2019
Rui Hirokawa
 
PHPの今とこれから2018
Rui Hirokawa
 
PHPの今とこれから2020
Rui Hirokawa
 
PHPの今とこれから2025 (PHP Conference Japan 2025)
Rui Hirokawa
 
PHPの今とこれから2023
Rui Hirokawa
 
PHPの今とこれから2022
Rui Hirokawa
 
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
 
Phpのはなし
Serverworks Co.,Ltd.
 
先取り!PHP 7 と WordPress
Masashi Shinbara
 
PHPの今とこれから 2013
Rui Hirokawa
 
PHP Now and then 2018 : WordPress Special Edition
Rui Hirokawa
 
PHPの今とこれから2021
Rui Hirokawa
 
PHPの今とこれから2009
Rui Hirokawa
 
PHPの今と未来を語る
Rui Hirokawa
 
PHP基礎勉強会
Yuji Otani
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
Php入門
dcubeio
 
Ad

More from Rui Hirokawa (12)

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

PHPの今とこれから2015