SlideShare a Scribd company logo
PHPの今とこれから2017
PHP Conference 2017, Tokyo
October 8, 2017
廣川 類 (日本PHPユーザ会)
1
PHPとは?
 PHPは主にWebアプリケーションに使用されるスクリプト言語
 1995年の誕生以来、Webと共に成長、進化
82.8%
14.5%
2.5%
1.5%
0.6%
サーバサイドプログラミング言語
PHP
ASP.NET
Java
static files
ColdFusion
引用: W3Techs.com, 2017/10/1
59.6%
6.7%
4.7%
2.4% 2.0%
CMSシェア
WordPress
Joomla
Drupal
Magento
Blogger
2
PHP アンケート 2017
 主に使っているPHPのバージョン
1) PHP <=5.5
2) PHP 5.6
3) PHP 7.0~7.2
4) 使ってない
3
PHPバージョン分布
引用: W3Techs.com, 2017/10/1
6.3%
1.9%
28.5%
14.6%
20.2%
19.5%
7.6%
7.1
7.0
5.6
5.5
5.4
5.3
5.2
(19.5%)
(26.6%)
(17.0%)
 5.3~5.5: 5~7%減 、5.6:+12%、7.x:+6%
 EOLとなったPHP 5.5以前のユーザ: 63%
 WordPressの推奨環境:PHP 7, MySQL 5.6, HTTPS
4
(3.0%)
(26.2%)
* https://wordpress.org/about/requirements/
PHPリリースサイクル
5
2014 2015 2016 2017 2018 2019 2020
5.4
5.5
5.6
7.0
7.1
アクティブサポート
セキュリティ修正のみ
2017/10
リソース制約のため、ライフサイクルを定義
リリースサイクル:1年
ライフサイクル:3年(バグ修正:2年、セキュリティ修正のみ:1年)
 PHP 5.6のサポート期間延長(バグ修正:+4ヶ月、セキュリティ修正:+1年)
EOL 2015/9/14
EOL 2016/7/10
EOL 2018/12/31
https://wiki.php.net/rfc/releaseprocess
http://php.net/supported-versions.php
EOL 2018/12/3
EOL 2019/12/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/12
・大幅高速化
・戻り値型宣言
・スカラー型宣言
PHP 5.0 ‘04/7
7.1
`16/12
・Nullable
・複数例外キャッチ
`17/11/30
7.2
・高速化
・暗号フレームワーク
PHPリリース情報
Release 7.0 7.1 変更
2016/11/10 7.0.13 CVE-2016-9933,9934
2016/12/1 7.1.0
2016/12/8 7.0.14 CVE-2016-9935,9936
2017/1/19 7.0.15 7.1.1 CVE-2016-10158-10162,10167,10168,CVE-2017-5340
2017/2/16 7.0.16 7.1.2
2017/3/16 7.0.17 7.1.3
2017/4/13 7.0.18 7.1.4
2017/5/11 7.0.19 7.1.5 MySQL8
2017/6/8 7.0.20 7.1.6
2017/7/6 7.0.21 7.1.7 CVE-2017-9224, 9226-9229 (oniguruma)
2017/8/3 7.0.22 7.1.8
2017/8/31 7.0.23 7.1.9
2017/9/28 7.0.24 7.1.10
7
 大きなセキュリティ上の問題は発生せず。
 PHP 7.2.0 RC3 -> 2017/9/28
PHP 7.2 改善/変更のポイント
 さらなる高速化:約10%
 関数の引数型宣言や戻り値でobject型を使用可能に
 リスト構文の末尾にカンマを追加可能に
 セキュリティ関連の改善
1. Argon2をパスワードハッシュで使用可能に
2. LibsodiumをPHPコアに導入
 古い機能を廃止対象に
8
より速く、快適に
Athlon II X4 640 3.0GHz, Ubuntu 17.04
9
 PHP 7.2はPHP 7.1から約10%高速化
Zend/bench.php
0
0.5
1
1.5
2
2.5
3
3.5
PHP 5.6 PHP 7.0 PHP 7.1 PHP 7.2
実行時間[s]
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
より速く、快適に
Athlon II X4 640 3.0GHz, Ubuntu 17.04
10
Zend/micro_bench.php
0
2
4
6
8
10
12
14
16
PHP 5.6 PHP 7.0 PHP 7.1 PHP 7.2
実行時間[s]
$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++
新しい引数型宣言/戻り値object
 従来:Type hintingではクラス名(例:MyClass)を指定していた
 制約:同一クラスまたは継承されたクラスのみ確認可能
 汎用クラスを表す object を型引数または戻り値に指定
 関数引数/戻り値にオブジェクトのみを指定する
11
RFC: https://wiki.php.net/rfc/object-typehint
<?php
class Foo {public $name='Taro';}
class Moo {public $name='Hanako';}
$obj1 = new Foo;
$obj2 = new Moo;
function test(object $arg) {
return $arg->name;
}
echo test($obj1); // Taro
echo test($obj2); // Hanako
function foo() : object {
$obj = json_decode(‘{}’);
return $obj;
}
パスワードの保存と攻撃への対策
ハッシュ生成
 パスワードのハッシュ値をmd5、sha1で保存⇒不適切
 ⇒GPUによる総当り攻撃等で高速に解かれてしまう時代に
 計算コストを適切に高めることで総当り攻撃に対応
パスワード検証
 タイミング攻撃に対する対応: 実装は容易ではない
PHP 5.5でパスワードハッシュ用APIを導入
 常に最新の実装を簡単に(ハッシュ値にパラメータが含まれる)
 ハッシュ生成:password_hash()
 パスワード検証:password_verify()
12
$2y$10$ahnMG3iSJ0YWDSzdoGt/3.Lx1BKmyEA7Aw08WcFhlwiGzeqwwIAwO
アルゴリズム オプション(例:コスト) ソルト ハッシュ化されたパスワード
password_hash関数へのArgon2導入
 Password Hashing Competition 2015の勝者
 Bcrypt(Blowfish)、Scryptの代替
 より柔軟な設定:メモリコスト、時間コスト、並列度を調整
13
RFC: https://wiki.php.net/rfc/argon2_password_hash
password_hash(‘password’,PASSWORD_DEFAULT)
$opt= ['memory_cost'=>1<<17,'time_cost'=>4,'threads'=>2];
password_hash(‘password’,PASSWORD_ARGON2I,$opt);
$2y$10$ahnMG3iSJ0YWDSzdoGt/3.Lx1BKmyEA7Aw08WcFhlwiGzeqwwIAwO
13
$argon2i$v=19$m=131072,t=4,p=2$N3dIdWhRMmpyR092a0lGdA$
++ffUX2AYYyJVZgWGLj6F9OG9l3c6DGmi+fM2Rlz6kw
アルゴリズム オプション ソルト ハッシュ化されたパスワード
バージョン
Libsodium標準サポート化
 多くのプログラミング言語では、OpenSSLのみを提供
⇒ RSAやAESの間違った使い方を誘発、認証付き暗号を未サポート
 簡単/標準設定で安全な高レベル暗号API「libsodium」を標準コア化
 サイドチャネル攻撃に対応可能、高速な暗号実装を提供
 「近代的な暗号機能を標準サポートする最初のプログラミング言語」
 秘密鍵(共通鍵)暗号
 認証付き暗号(AE,AEAD):ChaCha20-Poly1305(RFC7905,djb)
 公開鍵暗号
 デジタル署名
 鍵交換、鍵生成、鍵共有
14
RFC: https://wiki.php.net/rfc/libsodium
15
$msg = "this is secret message.";
$ad = "public message.";
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES);
$ciphertext = sodium_crypto_aead_chacha20poly1305_encrypt($msg, $ad, $nonce, $key);
echo sodium_crypto_aead_chacha20poly1305_decrypt($ciphertext, $ad, $nonce, $key);
伝送($ciphertext, $ad, $nonce)
$key = sodium_crypto_aead_chacha20poly1305_keygen();
認証付き暗号(AEAD)
鍵生成
暗号化
復号/検証
共有
 認証付き暗号:データの秘匿性+完全性・認証性⇒:「暗号+MAC」で構成
⇒ 選択平文攻撃に対する強秘匿性 + 選択メッセージ攻撃に対して偽造不可
 認証付き暗号:ChaCha20 + Poly1305
PHP 7.2: 廃止予定
 Mcrypt:PECLに移動
 PHP 7.2で廃止予定 → PHP 8.0で廃止
⇒ E_DEPRECATED警告を発生
RFC: https://wiki.php.net/rfc/deprecations_php_7_2
廃止対象 代替
__autoload spl_autoload_register()
$php_errormsg error_get_last()またはerror_clear_last()
create_function() クロージャ(PHP>=5.3)
mbstring.func_overload -
第二引数なしのparse_str() parse_str(“a=foo&b[]=foo+bar”, $output);
each() foreach
名前によるエクステンションロード
php.iniにおけるエクステンションロードの環境依存を廃止
従来
17
extension=mbstring.so extension=php_mbstring.dll
extension=mbstring
Linux Windows
PHP 7.2
18
PHPフレームワーク 2017
 Laravelの人気が高い
2011年にSymfony 2ベースで作成され、ユーザ認証をサポート、柔
軟・スケーラブル・簡単が支持される
HHVM/Hackの進化
19
Facebookが開発/公開するPHP/Hack実行環境
3.24(LTS):PHP5をサポートする最終版(2018/1/12)
HHVMの将来(2017/9/18)
 PHP7の完全互換は目指さない
 主なPHPツール(Composer等)のHHVM版を提供
 Hack用ツール/ライブラリの提供
 Hack Standard Library:Hack配列 (vec,dict,keyset)
 TypeAssert:型無しデータ⇒型付きデータに変換
 Hack言語の改良:デストラクタ及びリファレンスの廃止
PHPのこれから
PHP 7.3開発が開始される。
JIT for PHP: OpCacheを拡張、Zendが次期
PHP(PHP8)用開発コードをテスト公開(2016/9/1)
 https://github.com/zendtech/php-src/tree/jit-dynasm/ext/opcache/jit
 Lua 用JITエンジンDynASMを使用
20
RFC: https://wiki.php.net/rfc/
PHPユーザ相互の情報交換および
コミュニティの健全な発展
設立趣旨
• 高性能Webミドルウエアへのニーズ増大
• オープンソースソフトウエアの発展
背景
国内PHPユーザの増加
活動内容
ドキュメント整備
セミナー/イベント
メンバー/スタッフ
国際化
Web/SNS
・PHPユーザ会員と思ったらメンバー
・運営するのも楽しいかも
日本PHPユーザ会
(2000年4月発足)
PHPカンファレンス
21
福岡 6/10,関西 7/15,東京 10/8
PHP勉強会
22
PHP Conference 2017 の見どころ
1F大展示 2F小展示 4F梅 4F鶯 3F
Apache Kafka
によるスケーラブ
ルアプリケーショ
ン開発
OPcacheの最適
化器の今
OpenID Connectを通じてWebアプリケーション技術とPHPによる実装を学ぼう PHP初心者セッ
ション
できるPHPアッ
プグレード
PHPによるWeb
アプリ脆弱性体
験トレーニング
Lancersのバー
ジョンアップ施
策について
型を意識した
PHPアプリケー
ション開発
グラブル流運用
術~
Serverless FrameworkでAWSフルマネージドなツールをいくつか作って得たアーキテクチャ設計の知見 モバイルページ
を爆速に
Roboを使った
モダンなタスク
管理と自動化
広告配信管理システムを支えるPHP 大規模Webサ
イトのURL刷新
の方針と実装
著名アプリの脆
弱性に学ぶセ
キュアコーディン
グの原則
現代におけるプ
ロダクト開発と
PHPを選定する
ワケ
PHPで作るサービスの、これまでの10年とこれからの10年 Realtime
Database
Messaging
with Firebase
DockerでPH
アプリケーショ
を本番リリース
するまで
Laravelで作る
分析環境
PHP Version UpとAWSへの移行 kuduを使用し
たKPI分析シス
テムの話
片手間MySQL
チューニング戦略
PHPアプリケー
ションにおける
Dockerコンテナ・
クラスター戦略
運用、追加開発しづらいPHPアプリケーションに未来を与える方法 Phpとシグナル
処理、その裏側
PHPで理解す
ニューラルネッ
ワークを使った
機械学習
LT
11:00
11:35
12:00
13:00
13:35
14:10
14:45
15:20
15:55
17:10
23
Challenge!
~やってみたを共有しよう~

More Related Content

What's hot (20)

PDF
PHPの今とこれから2020
Rui Hirokawa
 
PDF
Hack/HHVM 入門
y-uti
 
PDF
PHPの今とこれから2019
Rui Hirokawa
 
PPTX
PHP AST 徹底解説
do_aki
 
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
 
PDF
PHPコアから読み解くPHP5.5
Yahoo!デベロッパーネットワーク
 
PPTX
php-src の歩き方
do_aki
 
PDF
最近の PHP の話
y-uti
 
PDF
PHPにおけるI/O多重化とyield
Yahoo!デベロッパーネットワーク
 
PDF
ECMAScript没proposal追悼式
京大 マイコンクラブ
 
PDF
PECL を数えてみた
y-uti
 
PPTX
PHP AST 徹底解説(補遺)
do_aki
 
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
 
PDF
Prophecyを使ったユニットテスト
Akio Ishida
 
PDF
From Java To Clojure
Kent Ohashi
 
PDF
JIT のコードを読んでみた
y-uti
 
PDF
PHPの今とこれから2021
Rui Hirokawa
 
PDF
私とOSS活動とPerl
Shunsuke Maeda
 
PPTX
PHP と SAPI と ZendEngine3 と
do_aki
 
PDF
実"戦"CakePHP Plugin
Kenichirou Oyama
 
PHPの今とこれから2020
Rui Hirokawa
 
Hack/HHVM 入門
y-uti
 
PHPの今とこれから2019
Rui Hirokawa
 
PHP AST 徹底解説
do_aki
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
 
PHPコアから読み解くPHP5.5
Yahoo!デベロッパーネットワーク
 
php-src の歩き方
do_aki
 
最近の PHP の話
y-uti
 
PHPにおけるI/O多重化とyield
Yahoo!デベロッパーネットワーク
 
ECMAScript没proposal追悼式
京大 マイコンクラブ
 
PECL を数えてみた
y-uti
 
PHP AST 徹底解説(補遺)
do_aki
 
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
 
Prophecyを使ったユニットテスト
Akio Ishida
 
From Java To Clojure
Kent Ohashi
 
JIT のコードを読んでみた
y-uti
 
PHPの今とこれから2021
Rui Hirokawa
 
私とOSS活動とPerl
Shunsuke Maeda
 
PHP と SAPI と ZendEngine3 と
do_aki
 
実"戦"CakePHP Plugin
Kenichirou Oyama
 

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

PDF
PHPの今とこれから2015
Rui Hirokawa
 
PDF
PHPの今とこれから2023
Rui Hirokawa
 
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
Rui Hirokawa
 
PDF
PHPの今とこれから2022
Rui Hirokawa
 
PDF
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
PDF
PHPの今とこれから2018
Rui Hirokawa
 
PDF
PHPの今とこれから2007
Rui Hirokawa
 
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
 
PDF
PHPの今とこれから2008
Rui Hirokawa
 
PDF
PHP Now and then 2018 : WordPress Special Edition
Rui Hirokawa
 
PDF
PHPの今とこれから2006
Rui Hirokawa
 
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PPT
PHP, Now and Then 2011
Rui Hirokawa
 
PDF
徹底攻略!PHP5.4
Takuya Sato
 
PDF
PHPの今とこれから2009
Rui Hirokawa
 
PDF
PHP4の今 ~日本語対応と最近のトピックス~
Rui Hirokawa
 
PDF
Phpのはなし
Serverworks Co.,Ltd.
 
PDF
PHPの今と未来を語る
Rui Hirokawa
 
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
PHPの今とこれから2015
Rui Hirokawa
 
PHPの今とこれから2023
Rui Hirokawa
 
PHPの今とこれから2025 (PHP Conference Japan 2025)
Rui Hirokawa
 
PHPの今とこれから2022
Rui Hirokawa
 
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
PHPの今とこれから2018
Rui Hirokawa
 
PHPの今とこれから2007
Rui Hirokawa
 
PHPの今とこれから2024 at PHP Conference Japan 2024
Rui Hirokawa
 
PHPの今とこれから2008
Rui Hirokawa
 
PHP Now and then 2018 : WordPress Special Edition
Rui Hirokawa
 
PHPの今とこれから2006
Rui Hirokawa
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PHP, Now and Then 2011
Rui Hirokawa
 
徹底攻略!PHP5.4
Takuya Sato
 
PHPの今とこれから2009
Rui Hirokawa
 
PHP4の今 ~日本語対応と最近のトピックス~
Rui Hirokawa
 
Phpのはなし
Serverworks Co.,Ltd.
 
PHPの今と未来を語る
Rui Hirokawa
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
Ad

More from Rui Hirokawa (6)

PDF
日本PHPユーザ会の紹介
Rui Hirokawa
 
PDF
PHPの中の人によるパネルディスカッション
Rui Hirokawa
 
PDF
PHPの今と未来を語る
Rui Hirokawa
 
PDF
php.netの歩き方
Rui Hirokawa
 
PDF
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
 
PDF
スクリプト言語PHP攻略法
Rui Hirokawa
 
日本PHPユーザ会の紹介
Rui Hirokawa
 
PHPの中の人によるパネルディスカッション
Rui Hirokawa
 
PHPの今と未来を語る
Rui Hirokawa
 
php.netの歩き方
Rui Hirokawa
 
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
 
スクリプト言語PHP攻略法
Rui Hirokawa
 
Ad

Recently uploaded (9)

PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 

PHPの今とこれから2017