PHPの今とこれから2016

198 views

Published on

PHP Conference 2016, Tokyo, Track 1, Keynote.
PHPの最近の話題を紹介します。PHPのバージョン間の違い、もうすぐリリースされるPHP 7.1の話題を紹介します。
(プレゼン版は、PHP 5.6のサポート終了期限の情報が古かったので訂正しました)

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
198
On SlideShare
0
From Embeds
0
Number of Embeds
42
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PHPの今とこれから2016

  1. 1. PHPの今とこれから2016 PHP Conference 2016, Tokyo November 3, 2016 廣川 類 (日本PHPユーザ会) 1
  2. 2. 2 7
  3. 3. 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
  4. 4. 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
  5. 5. 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%)
  6. 6. 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
  7. 7. ・名前空間 ・クロージャ ・遅延静的束縛 ・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 ・複数例外キャッチ
  8. 8. 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
  9. 9. PHP 7.1 改善/変更のポイント  Nullable型(?)  複数例外型のキャッチ  Curl HTTP/2サーバプッシュ  クラス定数の可視性(public,protected,private)  voidリターン型  負の文字列オフセット  list()におけるキーの指定、配列デストラクタの角括弧構文  無効な数値文字列の警告  mcrypt()廃止  mb_ereg_replaceのevalオプション廃止  session_gc(),session_create_id()追加 9
  10. 10. より速く、快適に 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
  11. 11. より速く、快適に 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]
  12. 12. 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. 13. 複数例外型のキャッチ  複数の例外のキャッチが一度に記述可能に  異なる例外で共通の処理を行う場合の記述をシンプルに 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
  14. 14. リスト構文の改善  リスト形式の代入:添字が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;
  15. 15. クラス定数のアクセサ指定  従来:クラス定数は全て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 致命的エラー
  16. 16. 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の場合 致命的エラー
  17. 17. 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
  18. 18. 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実行環境
  19. 19. 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
  20. 20. PHPの未来 php frameworks applications / plugins pecl users Hack/HHVMリリースの持つ意味  PHP7は劇的に進化した、そしてこれからも… 高性能かつ現実的な解を継続的に提供する zend hni 20 hhvm hack phalcon Zephir
  21. 21. PHPユーザ相互の情報交換および コミュニティの健全な発展 設立趣旨 • 高性能Webミドルウエアへのニーズ増大 • オープンソースソフトウエアの発展 背景 国内PHPユーザの増加 活動内容 ドキュメント整備 セミナー/イベント メンバー/スタッフ 国際化 http://www.php.gr.jp/ Web ・PHPユーザ会員と思ったらメンバー ・運営するのも楽しいかも 日本PHPユーザ会 (2000年4月発足) php-users, php-dev, php-doc, phpug-admin メーリングリスト 21
  22. 22. 22 PHP Conference 2016 の見どころ
  23. 23.  PHPカンファレンス紹介  Twitterアカウント:@phpcon , ハッシュタグ:#phpcon2016  Facebookページ:pcon.japan  Wifi: SSID: PHPCon2016, pass: パンフレット裏表紙に記載 PHP Conference 2016関連情報 http://phpcon.php.gr.jp/2016/ 23
  24. 24. 24 PHPカンファレンス2016を お楽しみください!

×