「 PHPの統合開発環境から実行環境まで」～ 「歯ブラシ」から大きく進化するPHP ～コネクト株式会社

konekto

会社概要
社名 コネクト株式会社(英語表記：konekto Inc.)

主な取引先(順不同、敬称略)

設立日 2004年8月27日
資本金 9,500万円
代表取締役 佐藤栄一
本店所在地
〒111-0053
東京都台東区浅草橋3－20－15
浅草橋ミハマビル本館 9F
TEL：03-6256-8598
FAX：03-5687-2855
企業間だけではなく、人と企業および人と人のつながりを大切にするITを目指し、つながりを表す「コネクト」(konekto：エスペラント語) を社名いたしました。

株式会社iGUAZU
ターボリナックス株式会社
ターボシステムズ株式会社
株式会社NTTネオメイト
株式会社NTTレゾナント
伊藤忠テクノソリューションズ株式会社
全日空システムズ株式会社
富士ゼロックスシステムサービス株式会社
オリックス株式会社
SBクリエイティブ株式会社

株式会社コロプラ

2konekto

コネクトのあゆみ• Zendプロダクトの日本総代理店として日本語化およびサポートを提供
PHPによるWebシステム開発およびサポートを提供• オープンソースデータベースMySQLのリセールパートナー• 各種オープンソースのサポート提供• 2001年9月 株式会社テンアートニ （現：サイオステクノロジー株式会社）内でスタート• 2002年12月 ゼンド・オープンソースシステムズ株式会社として独立• 2003年9月 MySQLプロダクトの取扱い開始/サポートサービス開始• 2004年9月 ゼンド･ジャパン株式会社に社名変更• 2005年3月 Apache/Tomcatサポートサービス開始• 2006年5月 ターボリナックス傘下となる• 2012年7月 コネクト株式会社に社名変更• 2012年11月 Cassandraサポートサービス提供開始• 2015年6月 MySQL Cluster 構築支援サービス「MySQL Cluster 導入プラン」提供開始• 2017年4月 CassandraサポートのオプションとしてHadoopサポートの提供開始• 2018年9月 ApacheサポートのオプションとしてWildFlyサポートの提供開始

3

konekto

コネクト株式会社 とはWebシステム PHP

データベース MySQL

世界で最も使用されているWeb用スクリプト言語

世界で最も使用されている
OSSデータベース

konektoReplication
NDB Cluster
InnoDB Clusterアプリケーションサーバ

ビッグデータ
データ解析

OSSサポートサービス
コンサルティング
Apache 、Apache Tomcat、Apache Cassandra は、Apache Software Foundationの登録商標です。その他の商標は、各社の登録商標です。

4

konekto

CMS(その他等)も含む

WordPress
JoomlaDrupal
Shopify
Squarespace
WixMagento
その他

34.7

57.6

出展：W3Techs http://w3techs.com/

1.6
0.9 1.2

1.7
1.7

2.7
5

konekto

Webシステム言語シェア
2.7

3.8

210.8

出展：W3Techs http://w3techs.com/

79

PHP
ASP.NET
Java
Ruby
その他

6

PHPにおけるIDE
コーディング/デバッグ/プロファイリング/ユニットテスト/カバレッジ

7konekto

IDE：統合開発環境

ウィキペディア（Wikipedia）より• IDE (Integrated Development Environment：統合開発環境) は、ソフトウェアの統合的な開発環境であり、様々なツールの集合からなる。
• 従来、ソフトウェアプログラムのコーディング・コンパイル・ビルド・デバッ
グといった作業を行なう際に、テキストエディタ、コンパイラ、リンカ、デバッガなどの各ツールをばらばらで利用していたものを、ひとつの対話型操作環境（多くはGUI）から利用できるように統合したもの。
• 最近のIDEには、GUIアプリケーション開発のための迅速なプロトタイピ
ング (Rapid Application Development: RAD) が可能なものが多い。統合開発環境を使うことによって、巨大かつ複雑なソフトウェアでも、作成者に負担をかけることなく開発することが可能になる。
出展 https://ja.wikipedia.org/wiki/統合開発環境
8

LL(lightweight language)ではIDEは不要？
Visual Basic(コンパイル言語)
コーディング
コンパイル
ビルド
デバッグ
RAD

konektoPHP(LL)→ コーディング
××→ デバッグ×9

konekto

PHPの開発環境• エディター派• 秀丸エディタ• サクラエディタ• Ecripse• NetBeans• ATOMトライ＆エラー• IDE派• Zend Studio• PｈｐStorm• Ecripse• NetBeans• ATOM
デバッグ(ブレイクポイント/ユニットテスト/カバレッジ)
10

汎用IDEと専用IDEの違い

konekto• エディタ：秀丸エディタ/サクラエディタ vim• PHPコードのコーディングに便利な機能を用意している。
カラーリング、補完機能(引数も含めて)、リファクタリング• 汎用IDE：Ecripse/NetBeans/ATOM• プラグインを導入して、デバッグやプロファイリングができる。

• PHP専用IDE• 最初からPHPプラグインが備わっている。
11

konekto

PHP IDEの日本語化• EclipseがIDE市場を席捲• Java系IDEの日本語化• Pleiadesプラグイン(翻訳コンテナ)にて可能

MergeDoc Project
https://mergedoc.osdn.jp/
12Zend Studio 13.6 オリジナル(英語表記)

konekto13

Zend Studio 13.6 日本語化後

konekto14

konekto

PHP IDE の共通機能• PHP実行環境にデバッグ用モジュールを搭載• 手元：CGIまたはビルトイン• リモート：Webサーバ• Zend Debugger と Xdebug
ローカルリモート

PHP-CLI

Webサーバ―モジュール
モジュール

15

デバッグ用モジュールの機能

konekto• Zend Debugger と Xdebug が実現する機能• ブレイクポイント (ステップ実行/条件ブレイク)• 変数参照/変数設定• プロファイリング
• ユニットテスト/カバレッジ• 提供方法の違い• Zend Debugger：バイナリ提供• Xdebug：ソース提供
16標準的なIDE機能

konekto• PHPに特化したエディタ• リファクタリング• コードを整形• PHPDoc形式のコメントを追加• Getterを追加• マジックナンバーを置換• 変数名を変更• プロジェクト管理• ｆｔｐ、CVS、SVN、Git、GitHub、Docker
17ローカルデバッグ/リモートデバッグ

konekto• ブレイクポイント
ブレイク制御ステップ実行変数参照/設定

18

プロファイラ

konekto• 処理状況の統計• 順序• 回数• 所要時間19

ユニットテスト

konekto• テスト自動化

20カバレッジ

konekto• テスト箇所明確化

21

PHP実行環境の強化と開発作業
実行環境側の開発支援機能

22

Zend Server 2019の強化ポイント

konekto• 運用監視：モニター/コードトレーシング• PHPバージョンスイッチ（7.1/7.2/7.3）• 開発効率の向上：デバッグ/Z-Ray• 拡張機能• ジョブキュー• Javaブリッジ Oracle
MySQL• クラスタリング
php 7.1
php 7.2
php 7.3

サーバ管理GUI
Zend Framework 1 & 2
データベースドライバ
拡張モジュール
PHP実行環境
Apache2.4/IIS/NGINX

デプロイ
モニター
デバッグ
Z-Ray
コードトレーシング
ジョブキュー
Javaブリッジ
クラスタリング
23

PHPバージョンのスイッチ

konekto24

PHP7.2に切り替え

konekto25

Z-Rayとはkonekto• PHP実行状況を手軽に解析するためのZend Server 9 新機能• 旧来のコードトレースをWebブラウザに実装しました• ブラウザに新たなプラグインを必要とせずにPHPアプリケーションの実行状況を詳細に解析できます• シンプルで手軽に解析を始められます• Chrome(デベロッパツール)やFireFox(FireBug)と何が違うのか• 通信時間の統計ではありません• PHPの実行内容が解ります• データベースの処理が見られます• メジャーなPHPアプリならプラグインで独自の情報が得られます• 体内を透視するレントゲン(X-Ray)をイメージしています
26

Z-Ray ツールバー

konekto27

konekto

Z-Ray ツールバーの機能①
ステータス
トレース停止/実施
ステータスクリア

レスポンスタイム/容量モニター(アラート)
エラー
データベース処理
呼び出し関数28

Z-Ray ツールバーの機能②

konektoHTTPリクエスト情報

Z-Ray プラグイン
Zend Studioとの連携
Zend Server メッセージ
Zend Server 管理Page
Z-Ray 設定メニュー

ツールバー展開/収納
別Pageに表示
29

Z-Ray：レスポンスタイム/容量

konekto30

Z-Ray：データベース処理

konekto31

Z-Ray：呼び出し関数

konekto32

Z-Ray プラグイン

konektomagentoプラグイン

drupalプラグイン

33

Z-Ray ヒストリー(履歴管理)

konekto34

PHPロードマップ
誰でも気軽に使える「歯ブラシ」から大きな変革を迎える

35

konekto

PHPバージョンの歴史
バージョン

リリース時期 トッピックス

PHP Tools

1994年

PHP/FI 2

1996年6月

PHP 3.0

1998年6月

個人用

Zend Engine リリース頻度
サポート期間
―
不定期
定まらず
―

スクラッチで再構築―

PHP 4.0~4.4 2000年5月

モジュール構造
ファイル単位のパース
日本語ネイティブにⅠ

PHP 5.0~5.6 2004年7月
PHP 6欠番

オブジェクト指向導入

Ⅱ

PHP 7.0~7.3 2015年12月

OpCache導入(5.5より)内部コードUTF83.x

1年毎のリリースへ
3年36konekto

バージョン別シェア
0.1
0.5

41.1

58.4

574
3以下

出展：W3Techs http://w3techs.com/

37

konekto

PHPは歯ブラシ• PHPは歯ブラシくらい興奮に値する。
シンプルで、毎日使う便利な道具。
だからどうした。
歯ブラシについて書物を漁るやつがいるか？
• PHP is about as exciting as your toothbrush.
You use it every day, it does the job, it is a
simple tool, so what?
Who would want to read abouttoothbrushes?
Rasmus Lerdorf氏

38

konekto

PHP派生• HHVM(実行環境)• Facebookが開発公開する
PHP環境• C++トランスレータ(2010/2)• JITベースVM(2011/12)• 2018年9月PHPサポート終了
Hack専用実行環境となる• Hack(コード)• HHVM用のPHP互換言語• 関数、クラスの型アノテーション• Facebookの98%が移行済

HHVM + Hack == PHP++
39

今後のロードマップ

konekto• 2019/11/28 7.4 7.x最後のバージョン• 2020年年末 8.0 JITコンパイラ40

konekto

2019年夏の出来事• P++の提案• PHP 8から、PHPは「PHP」と「P++」という2つの言語を提供するようになる• 反対多数で否決

PHP• 現状維持• <? … ?>P++• 革新推進• 旧仕様の削除
41

PHP非同期実行の可能性

konekto• 海外では、40%が非同期実行を導入または計画しています• Swoole、ReactPHP、amphp• 65%がマイクロサービスを導入、導入中、契約中• 34%がコンテナを導入済、34%以上が導入を検討中• 非同期実行のメリット• 高速性(通常の3倍以上！)• ノンブロッキングI/O• リソースの効率化(必要なリソースが少なく、パフォーマンスを向上)• マイクロサービスとコンテナがPHP非同期実行を必要としている
42

まとめkonekto• PHPにおけるIDE• コーディング/デバッグ/プロファイリング/ユニットテスト/カバレッジ• PHP実行環境の強化と開発作業• 実行環境側の開発支援機能• PHPロードマップ• 誰でも気軽に使える「歯ブラシ」から大きな変革を迎える
43