Slide 1

Slide 1 text

Digital Circus, Inc. HASEGAWA Tomoki

Slide 2

Slide 2 text

QIQDPOEPB

Slide 3

Slide 3 text

長谷川智希 はせがわともき @tomzoh Web / iOSアプリ開発, サッカー観戦(日本代表 / BVB), レンタルカートレース, 
 ビール, 電子工作, … デジタルサーカス株式会社 副団長CTO 趣味・興味

Slide 4

Slide 4 text

長谷川智希 はせがわともき @tomzoh Web / iOSアプリ開発, サッカー観戦(日本代表 / BVB), レンタルカートレース, 
 ビール, 電子工作, … デジタルサーカス株式会社 副団長CTO 趣味・興味 ౦ژ͔Βདྷ·ͨ͠

Slide 5

Slide 5 text

8FC։ൃ εϚʔτϑΥϯ։ൃ J04 "OESPJE 5XJUUFS!UPN[PI σδλϧαʔΧεʢגʣ ౦ژදࢀಓ

Slide 6

Slide 6 text

5XJUUFS!UPN[PI

Slide 7

Slide 7 text

今日のテーマ

Slide 8

Slide 8 text

今日のテーマ ॳ৺ऀɾதڃऀ޲͚ʂ

Slide 9

Slide 9 text

もくじ • PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 10

Slide 10 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 11

Slide 11 text

リリースタイミングとサポート期間 5.4 2013 2014 2015 2016 2017 2018 Active Support Security Support 5.3 5.5 5.6 7.0 3

Slide 12

Slide 12 text

リリースタイミングとサポート期間 5.4 2013 2014 2015 2016 2017 2018 Active Support Security Support 5.3 5.5 5.6 7.0 3

Slide 13

Slide 13 text

リリースタイミングとサポート期間 5.4 2013 2014 2015 2016 2017 2018 Active Support Security Support 5.3 5.5 5.6 7.0 3 既にサポート終了

Slide 14

Slide 14 text

リリースタイミングとサポート期間 5.4 2013 2014 2015 2016 2017 2018 Active Support Security Support 7/10 5.3 5.5 5.6 7.0 3 既にサポート終了

Slide 15

Slide 15 text

リリースタイミングとサポート期間 5.4 2013 2014 2015 2016 2017 2018 Active Support Security Support 7/10 5.3 5.5 5.6 7.0 3 既にサポート終了

Slide 16

Slide 16 text

リリースタイミングとサポート期間 5.4 2013 2014 2015 2016 2017 2018 Active Support Security Support 7/10 5.3 5.5 5.6 7.0 3 既にサポート終了 12/31 12/31 12/3 12/3

Slide 17

Slide 17 text

新機能・特徴 5.3 5.4 5.5 5.6 7.0 名前空間, クロージャ, GC 配列の短縮構文, トレイト, 組込Webサーバ ジェネレータ 定数やプロパティでの式表現 大幅な高速化, ?? <=> 演算子, … サポート終了 〜7/10

Slide 18

Slide 18 text

バージョン別シェア 1% 9% 19% 72% <= 5.4 5.5 5.6 5.7 7 W3Techs調べ 2016/4/15現在

Slide 19

Slide 19 text

バージョン別シェア 1% 9% 19% 72% <= 5.4 5.5 5.6 5.7 7 W3Techs調べ 2016/4/15現在

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 22

Slide 22 text

php.net

Slide 23

Slide 23 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 24

Slide 24 text

パフォーマンス向上 / 最適化 • 実アプリで100%以上のパフォーマンス改善 • メモリ使用量の低減 • ファイルベースOPCache SPEEDING UP THE WEB WITH PHP7
 PHPカンファレンス 2015 / Rasmus Lerdorf
 http://talks.php.net/tokyo15

Slide 25

Slide 25 text

パフォーマンス向上 / 最適化 • 実アプリで100%以上のパフォーマンス改善 • メモリ使用量の低減 • ファイルベースOPCache php7 index.php 1x ファイルベースOPCache 共有メモリベースOPCache 10x 4x SPEEDING UP THE WEB WITH PHP7
 PHPカンファレンス 2015 / Rasmus Lerdorf
 http://talks.php.net/tokyo15

Slide 26

Slide 26 text

Null合体演算子 ʢ/VMM߹ମԋࢉࢠ/VMMDPBMFTDJOHPQFSBUPSʣ

Slide 27

Slide 27 text

Null合体演算子 ʢ/VMM߹ମԋࢉࢠ/VMMDPBMFTDJOHPQFSBUPSʣ $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; PHP5

Slide 28

Slide 28 text

Null合体演算子 ʢ/VMM߹ମԋࢉࢠ/VMMDPBMFTDJOHPQFSBUPSʣ $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; PHP5 $username = $_GET['user'] ?? 'nobody'; php7

Slide 29

Slide 29 text

Null合体演算子 ʢ/VMM߹ମԋࢉࢠ/VMMDPBMFTDJOHPQFSBUPSʣ $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; PHP5 $username = $_GET['user'] ?? 'nobody'; php7 $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody'; php7

Slide 30

Slide 30 text

宇宙船演算子 ʢӉ஦ધԋࢉࢠ4QBDFTIJQPQFSBUPSʣ PHP7で宇宙船演算子を使いこなすぞ Hiraku
 http://qiita.com/Hiraku/items/62821d7d0e7af1ac211e PHP Manual usort()
 http://php.net/manual/en/function.usort.php#117659

Slide 31

Slide 31 text

宇宙船演算子 ʢӉ஦ધԋࢉࢠ4QBDFTIJQPQFSBUPSʣ echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 php7 PHP7で宇宙船演算子を使いこなすぞ Hiraku
 http://qiita.com/Hiraku/items/62821d7d0e7af1ac211e PHP Manual usort()
 http://php.net/manual/en/function.usort.php#117659

Slide 32

Slide 32 text

宇宙船演算子 ʢӉ஦ધԋࢉࢠ4QBDFTIJQPQFSBUPSʣ echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 php7 PHP7で宇宙船演算子を使いこなすぞ Hiraku
 http://qiita.com/Hiraku/items/62821d7d0e7af1ac211e $sampleArray = ['one', 'two', 'free', 'fore', 'five']; usort($sampleArray, function($a, $b) { return strlen($a) <=> strlen($b); }); PHP Manual usort()
 http://php.net/manual/en/function.usort.php#117659

Slide 33

Slide 33 text

宇宙船演算子 ʢӉ஦ધԋࢉࢠ4QBDFTIJQPQFSBUPSʣ echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 php7 PHP7で宇宙船演算子を使いこなすぞ Hiraku
 http://qiita.com/Hiraku/items/62821d7d0e7af1ac211e $sampleArray = ['one', 'two', 'free', 'fore', 'five']; usort($sampleArray, function($a, $b) { return strlen($a) <=> strlen($b); }); PHP Manual usort()
 http://php.net/manual/en/function.usort.php#117659

Slide 34

Slide 34 text

function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1, 'aaa')); スカラー型宣言 php7

Slide 35

Slide 35 text

function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1, 'aaa')); スカラー型宣言 php7

Slide 36

Slide 36 text

function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1, 'aaa')); スカラー型宣言 php7

Slide 37

Slide 37 text

function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1, 'aaa')); スカラー型宣言 PHP Fatal error: Uncaught TypeError: Argument 4 passed to sumOfInts() must be of the type integer, string given, called in xxx.php on line x php7

Slide 38

Slide 38 text

function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1, 'aaa')); declare(strict_types=1); スカラー型宣言 PHP Fatal error: Uncaught TypeError: Argument 4 passed to sumOfInts() must be of the type integer, string given, called in xxx.php on line x php7

Slide 39

Slide 39 text

function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1, 'aaa')); declare(strict_types=1); スカラー型宣言 PHP Fatal error: Uncaught TypeError: Argument 4 passed to sumOfInts() must be of the type integer, string given, called in xxx.php on line x php7

Slide 40

Slide 40 text

function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } 関数の返値型指定 php7

Slide 41

Slide 41 text

function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } 関数の返値型指定 php7

Slide 42

Slide 42 text

function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } 関数の返値型指定 php7 declare(strict_types=1);

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 45

Slide 45 text

変数の取扱の変更 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 46

Slide 46 text

変数の取扱の変更 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。 $$foo['bar']['baz'] $$foo['bar']['baz'] $$foo['bar']['baz'] PHP5 php7

Slide 47

Slide 47 text

変数の取扱の変更 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。 $$foo['bar']['baz'] $$foo['bar']['baz'] $$foo['bar']['baz'] PHP5 php7 ①

Slide 48

Slide 48 text

変数の取扱の変更 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。 $$foo['bar']['baz'] $$foo['bar']['baz'] $$foo['bar']['baz'] PHP5 php7 ① ②

Slide 49

Slide 49 text

変数の取扱の変更 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。 $$foo['bar']['baz'] $$foo['bar']['baz'] $$foo['bar']['baz'] PHP5 php7 ① ② ①

Slide 50

Slide 50 text

変数の取扱の変更 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。 $$foo['bar']['baz'] $$foo['bar']['baz'] $$foo['bar']['baz'] PHP5 php7 ① ② ② ①

Slide 51

Slide 51 text

変数の取扱の変更 $foo->$bar['baz'] $foo->$bar['baz'] $foo->$bar['baz'] PHP5 php7 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 52

Slide 52 text

変数の取扱の変更 $foo->$bar['baz'] $foo->$bar['baz'] $foo->$bar['baz'] PHP5 php7 ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 53

Slide 53 text

変数の取扱の変更 $foo->$bar['baz'] $foo->$bar['baz'] $foo->$bar['baz'] PHP5 php7 ① ② プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 54

Slide 54 text

変数の取扱の変更 $foo->$bar['baz'] $foo->$bar['baz'] $foo->$bar['baz'] PHP5 php7 ① ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 55

Slide 55 text

変数の取扱の変更 $foo->$bar['baz'] $foo->$bar['baz'] $foo->$bar['baz'] PHP5 php7 ① ② ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 56

Slide 56 text

変数の取扱の変更 $foo->$bar['baz']() $foo->$bar['baz']() $foo->$bar['baz']() PHP5 php7 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 57

Slide 57 text

変数の取扱の変更 $foo->$bar['baz']() $foo->$bar['baz']() $foo->$bar['baz']() PHP5 php7 ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 58

Slide 58 text

変数の取扱の変更 $foo->$bar['baz']() $foo->$bar['baz']() $foo->$bar['baz']() PHP5 php7 ① ② プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 59

Slide 59 text

変数の取扱の変更 $foo->$bar['baz']() $foo->$bar['baz']() $foo->$bar['baz']() PHP5 php7 ① ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 60

Slide 60 text

変数の取扱の変更 $foo->$bar['baz']() $foo->$bar['baz']() $foo->$bar['baz']() PHP5 php7 ① ② ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 61

Slide 61 text

変数の取扱の変更 Foo::$bar['baz']() Foo::$bar['baz']() Foo::$bar['baz']() PHP5 php7 プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 62

Slide 62 text

変数の取扱の変更 Foo::$bar['baz']() Foo::$bar['baz']() Foo::$bar['baz']() PHP5 php7 ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 63

Slide 63 text

変数の取扱の変更 Foo::$bar['baz']() Foo::$bar['baz']() Foo::$bar['baz']() PHP5 php7 ① ② プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 64

Slide 64 text

変数の取扱の変更 Foo::$bar['baz']() Foo::$bar['baz']() Foo::$bar['baz']() PHP5 php7 ① ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 65

Slide 65 text

変数の取扱の変更 Foo::$bar['baz']() Foo::$bar['baz']() Foo::$bar['baz']() PHP5 php7 ① ② ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 66

Slide 66 text

変数の取扱の変更 Foo::$bar['baz']() Foo::{$bar['baz']}() {Foo::$bar}['baz']() PHP5 php7 ① ② ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。

Slide 67

Slide 67 text

変数の取扱の変更 Foo::$bar['baz']() Foo::{$bar['baz']}() {Foo::$bar}['baz']() PHP5 php7 ① ② ② ① プロパティ、メソッド等のアクセスは常に左から右に評価す る様になった。 ϓϩάϥϚ͕ͦͷҙࢤΛ\^Ͱ
 ද໌͢Δͷ΋ྑ͍

Slide 68

Slide 68 text

16進数形式文字列の取扱変更 16進数数値形式の文字列は数値とみなされなくなった。 var_dump("0x123" == "291"); var_dump(is_numeric("0x123")); var_dump("0xe" + "0x1"); var_dump(substr("foo", "0x1")); bool(true) bool(true) int(15) string(2) "oo" PHP5

Slide 69

Slide 69 text

16進数形式文字列の取扱変更 16進数数値形式の文字列は数値とみなされなくなった。 var_dump("0x123" == "291"); var_dump(is_numeric("0x123")); var_dump("0xe" + "0x1"); var_dump(substr("foo", "0x1")); bool(true) bool(true) int(15) string(2) "oo" PHP5 bool(false) bool(false) int(0) Notice: A non well formed numeric value encountered in xxx.php on line x string(3) "foo" php7

Slide 70

Slide 70 text

16進数形式文字列の取扱変更 16進数数値形式の文字列は数値とみなされなくなった。 var_dump("0x123" == "291"); var_dump(is_numeric("0x123")); var_dump("0xe" + "0x1"); var_dump(substr("foo", "0x1")); bool(true) bool(true) int(15) string(2) "oo" PHP5 bool(false) bool(false) int(0) Notice: A non well formed numeric value encountered in xxx.php on line x string(3) "foo" php7 ஍ຯʹϋϚΔ͔΋

Slide 71

Slide 71 text

newの参照代入廃止 new の結果を参照渡しで変数に代入することができなくなった。 class C {} $c =& new C;

Slide 72

Slide 72 text

newの参照代入廃止 new の結果を参照渡しで変数に代入することができなくなった。 class C {} $c =& new C; ΋͏࢖ͬͯ·ͤΜΑͶ

Slide 73

Slide 73 text

新たな予約語 クラスやインターフェイス、トレイトの名前として使えない予約語 bool int float string NULL TRUE FALSE

Slide 74

Slide 74 text

新たな予約語 クラスやインターフェイス、トレイトの名前として使えない予約語 ܹϋϚΔʂʂʂʂ bool int float string NULL TRUE FALSE

Slide 75

Slide 75 text

新たな予約語 クラスやインターフェイス、トレイトの名前として使えない予約語 ܹϋϚΔʂʂʂʂ bool int float string NULL TRUE FALSE • フレームワークでは独自にStringクラス を実装しているケースがある。 • PHP7で動作させるとFatal Error。

Slide 76

Slide 76 text

非推奨関数の削除 mysql_* ereg_* PHP5.5でDEPRECATED。php7 で削除。 mysqli_* / PDO を使う。 PHP5.3でDEPRECATED。php7 で削除。 preg_* を使う。

Slide 77

Slide 77 text

非推奨関数の削除 mysql_* ereg_* PHP5.5でDEPRECATED。php7 で削除。 mysqli_* / PDO を使う。 PHP5.3でDEPRECATED。php7 で削除。 preg_* を使う。 preg_replace()͕/eΛαϙʔτ͠ͳ͘ͳ͍ͬͯΔͷͰཁ஫ҙɻ

Slide 78

Slide 78 text

ASPタグの削除 <% … %> <%= … %> ASP形式のタグの削除。 … scriptタグの削除。

Slide 79

Slide 79 text

エクステンションの非互換 • php7 で内部的なデータ構造やAPIに変更 • 既存のエクステンションはコンパイルすら失敗する可能性が高い。 • 同梱エクステンションは対応済。 • GD, Exif, Gettext, iconv, intl, json, mbstring, mcrypt, pdo … PHP7調査(37)エクステンションの対応状況 hnw
 http://qiita.com/hnw/items/8a34bb28f2faeb72d44c

Slide 80

Slide 80 text

No content

Slide 81

Slide 81 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 82

Slide 82 text

php7 環境の作り方 • ubuntu, CentOS 6 / 7, Amazon Linuxともにパッケージマ ネジャの外部リポジトリを使うことでphp7 を利用可能。

Slide 83

Slide 83 text

• 簡単 & 無問題 $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 $ php --version PHP 7.0.5-2+deb.sury.org~trusty+1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Slide 84

Slide 84 text

• 簡単 & 無問題 $ sudo yum -y install epel-release $ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm $ sudo rpm -Uvh remi-release-6*.rpm $ sudo yum install --enablerepo=remi,remi-php70 php $ php --version PHP 7.0.5 (cli) (built: Apr 8 2016 17:53:24) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

Slide 85

Slide 85 text

• 簡単 & 無問題 $ sudo yum -y install epel-release $ wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm $ sudo rpm -ivh remi-release-7.rpm $ sudo yum install --enablerepo=epel,remi,remi-php70 php70 php70-php $ source /opt/remi/php70/enable $ php --version PHP 7.0.5 (cli) (built: Apr 8 2016 16:43:12) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

Slide 86

Slide 86 text

Amazon Linux • 簡単だけど ちょい問題 • Cent6と同じ。ただしパッケージ依存の問題で Apache 2.4 で使うのが難しい? $ sudo yum -y install epel-release $ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm $ sudo rpm -Uvh remi-release-6*.rpm $ sudo yum -y install --enablerepo=remi --enablerepo=remi-php70 php $ php --version PHP 7.0.5 (cli) (built: Apr 8 2016 17:53:24) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 89

Slide 89 text

最適化 8PSE1SFTTͷτοϓϖʔδΛճϦΫΤετͨ࣌͠ʹ ͔͔Δ࣌ؒͱ$16໋ྩ਺ SPEEDING UP THE WEB WITH PHP7
 PHPカンファレンス 2015 / Rasmus Lerdorf
 http://talks.php.net/tokyo15

Slide 90

Slide 90 text

Drupal8

Slide 91

Slide 91 text

WordPress 4.1.1

Slide 92

Slide 92 text

WordPress 4.1.1 + GCC FDO

Slide 93

Slide 93 text

phpBB 3.1.3

Slide 94

Slide 94 text

MediaWiki 1.24.1

Slide 95

Slide 95 text

Opencart 2.0.2.0

Slide 96

Slide 96 text

Traq 3.5.2

Slide 97

Slide 97 text

fix in the Avalon db library diff --git a/database/model.php b/database/model.php index 6c5f7da..c93e726 100644 --- a/database/model.php +++ b/database/model.php @@ -397,7 +397,7 @@ public function __get($var) { $belongs_to['column'] = $var . '_id'; } $model = $belongs_to['model']; - return $this->$var = $model::find($belongs_to['foreign_key'], $this->$belongs_to['column']); + return $this->$var = $model::find($belongs_to['foreign_key'], $this->{$belongs_to['column']}); } else { $val = $this->$var;

Slide 98

Slide 98 text

fix in the Avalon db library diff --git a/database/model.php b/database/model.php index 6c5f7da..c93e726 100644 --- a/database/model.php +++ b/database/model.php @@ -397,7 +397,7 @@ public function __get($var) { $belongs_to['column'] = $var . '_id'; } $model = $belongs_to['model']; - return $this->$var = $model::find($belongs_to['foreign_key'], $this->$belongs_to['column']); + return $this->$var = $model::find($belongs_to['foreign_key'], $this->{$belongs_to['column']}); } else { $val = $this->$var;

Slide 99

Slide 99 text

No content

Slide 100

Slide 100 text

• PHPのいま • php7 の新機能 • 以前のバージョンからの移行 • php7 環境の作り方 • OSSの動作状況とパフォーマンス

Slide 101

Slide 101 text

Thanks @tomzoh WE ARE HIRING Drupal / Mobile App Engineer
 Digital Circus, Inc. Tokyo, Japan @tomzoh

Slide 102

Slide 102 text

蛇足

Slide 103

Slide 103 text

No content

Slide 104

Slide 104 text

5月 チケット販売開始 /トーク募集開始
 6月中旬 トーク募集〆切
 6月下旬 タイムテーブル決定 iOS Developers Conference Japan 2016 2016.08.20 https://iosdc.jp スポンサー企業さま募集中