SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
PHPの今とこれから 2012
PHPカンファレンス2012
2012年9月15日(土)

                日本PHPユーザ会 廣川 類
ポスト5.3時代のコード
 マイクロフレームワークSlimの例
 モジュラーデザイン:名前空間、オートローダー

       http://www.example.com/hello/taro
        http://www.example.com/hello/taro          Hello, taro
                                                   Hello, taro
<?php
                                                          Composed
                                                          Composed
require 'vendor/autoload.php';

$app = new SlimSlim();                                  名前空間
                                                          名前空間
$app->get('/hello/:name', function ($name) use ($app) {
   $app->render('tpl1.php', array('name'=> $name));       無名関数
                                                          無名関数
});
$app->run();

 [tpl1.php]
  [tpl1.php]
 Hello, <?= $name; ?>
  Hello, <?= $name; ?>
PHP アンケート 2012

 主に使っているPHPのバージョン
  1) PHP 4.x
  2) PHP 5.0-5.1
  3) PHP 5.2
  4) PHP 5.3
  5) PHP 5.4
  6) 使ってない
PHPユーザ分布
usage of server-side programming language (2012/9/8)
        0.2% 0.6% 0.9% 1.2% 4.0%


                                21.2%
                                        PHP
                                        ASP.NET
                                        Java
                                        ColdFusion
                                        Perl
                                        Ruby             Market Share of CMS
    77.9%
                                                                22.8%     WordPress
                                                                          Joomla
                                                                  3.3%    Drupal
                                                 54.3%            3.7%    vBulletin
                                                                  7.0%    Blogger
                                                               8.9%       other

引用: W3Techs.com, 2012/9/8版
PHPユーザ分布
Version of PHP (2012/9/8, W3Techs.com)
               4.3%



                                    PHP 5
                                    PHP 4
                                         version of PHP 5 (2012/9/8, W3Techs.com)

                                                    4.1% 0.7%
            95.7%                                                             5.1

                                                                     36.5%    5.2

                                                                              5.3

                                                                              5.4
                                            58.6%
引用: W3Techs.com, 2012/9/8版
バージョンを更新する/しない理由

 「開発リソースの有効活用」とサポートの両立が課題


更新する理由            更新しない理由
・新機能/性能が魅力的
 ・新機能/性能が魅力的      ・更新/確認の手間
                   ・更新/確認の手間
・セキュリティ/バグ修正
 ・セキュリティ/バグ修正     ・新機能/性能の魅力小
                   ・新機能/性能の魅力小
・サポート切れ
 ・サポート切れ          ・周辺環境の更新が追いつかない
                   ・周辺環境の更新が追いつかない
PHPの歩み
                                                   `10/3 キャンセル
                                                   6.0               5.5
                                                  ・Unicode   `12/3

・エンジン/OOP大幅強化:ZE2                            `09/6           5.4
・XML対応強化(SimpleXML)                         5.3              ・Traits
・Webサービス(SOAP)                                               - 速度改善
・DB強化 (SQLite, MySQLi)            `06/11    ・名前空間            - MB対応標準化
                                            ・クロージャ
                         `05/11
                                   5.2      ・遅延静的束縛
                                                             - 組込みWebサーバ
                                                             - レガシー機能削除
                          5.1  ・メモリ/速度改善    ・GC改善
               `04/7                        ・MySQLnd
                         ・速度改善 ・入力フィルタ
                 5.0     ・PDO
     `02/12            `05/6
        4.3              4.4                       `10/12 (EOL)
                             `08/8 (EOL)
        ・CLI           ・バグ修正
        ・stream
       ・自動グローバル変数のデフォルト無効化
       ・mbregex
       ・zend-multibyte

        2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
   Web/DB      XML          PHP  フレームワーク   スマフォ   JPUG PHPcon PHPcon
   セキュリティ      W/S API      10周年 AJAX             10周年 関西     北海道
開発のソーシャルコーディング対応

 2012/3 ソースコードの管理をsubversionからgitへ移行
 git.php.net → githubにミラー

                             PHPソースをクローン                     新機能
バグ修正
                                                              RFC作成
 バグトラッカで検索                   実装+テストコード作成
                    #12345                                    議論/更新
 登録                          pullリクエスト発行
 (チケット取得)
                                                               投票
  http://bugs.php.net             議論/更新
                                                             http://wiki.php.net/rfc

                             リクエスト受理/拒否

                             http://github.com/php/php-src
フレームワークと相互運用性

 相互運用性               フレームワークA     ORMクラスC
  interoperability                ViewクラスD

                                  独自クラスE

  モジュラー              フレームワークB     ORMクラスC

                                  ViewクラスF

                                  独自クラスE

PHP 5.3時代のフレームワーク(名前空間)


   FuelPHP 1.2         Symfony2      ZF 2
PHP-FIG と PSR
                                  http://www.php-fig.org/
 PHP Framework Interoperability Group (PHP-FIG)
  (以前: PHP Standards Working Group)
 主要F/W関係者が参画: CakePHP, ZF,Symfony, ...
 PHP standards recommendation (PSR)を発行

PSR-0 :ファイル/クラス/名前空間の標準化:autoloader
PSR-1 : 基本的なコーディング標準
PSR-2 : コーディングスタイルガイド

          プロジェクトをPSR準拠とする

          効率的で柔軟な運用が可能に
PSR準拠とするには?

1.PHP Coding Standards Fixer (http://cs.sensiolabs.org/)
  PSR-0~2準拠となるよう修正
  $ wget http://cs.sensiolabs.org/get/php-cs-fixer.phar

  $ php php-cs-fixer.phar fix /path/to/dir


2.PHP_CodeSnifferで確認

  $ pear install PHP_CodeSniffer
  $ cd /usr/share/php/CodeSniffer/Standards
  $ git clone https://github.com/klaussilveira/phpcs-psr PSR
  $ phpcs --config-set default_standard PSR
依存性マネージャ:Composer

 パッケージマネージャ → dependency manager
    プロジェクト単位で複数/階層的な依存関係を解決
 主要フレームワークに対応 : Symfony2, ZF, FuelPHP, ...


    composer.jsonに依存性を記述
    composer.jsonに依存性を記述                       composer.jsonの例
                                        {
                                            "require": {
    パッケージのインストール                               "twig/twig": "1.6.*",
    パッケージのインストール                               "slim/slim": "1.6.*",
          $ php composer.phar install       }
                オートローダとロックファイル          }
                (composer.lock)自動生成
   依存性を更新
   依存性を更新          (デフォルト:バージョンをロック)
         $ php composer.phar update
Packagist:Composerによる配布




      http://packagist.org/statistics
PHP 5.4 改善/変更のポイント

 速度改善:10%~15%
 Mix-inライクな機能を実現:Trait
 古い機能の削除:
 register_globals, magic_quotes*, safe_mode* , ext/sqlite, ...
 ZEマルチバイト標準化、mbstring機能強化
 組込みWebサーバー: php -S localhost:8080
 課題: APCのサポートがまだβ版
PHP 5.4でより速く、快適に
 大幅に高速化、省メモリ化
                                     Zend/bench.php              strcat(200000)
             6
                                                                 sieve(30)
                                                                 nestedloop(12)
             5                                                   matrix(20)
                                                                 heapsort(20000)
                                                                 hash2(500)
             4                                                   hash1(50000)
  実行時間 [s]




                                                                 fibo(30)
             3                                                   ary3(2000)
                                                                 ary2(50000)
                                                                 ary(50000)
             2                                                   ackermann(7)
                                                                 mandel2
                                                                 mandel
             1                                                   simpleudcall
                                                                 simpleucall
             0                                                   simplecall
                 PHP 5.2   PHP 5.3      PHP 5.4       PHP 5.5    simple


                                               Athlon II X4 640 3.0GHz, Ubuntu 12.04
PHP 5.4でより速く、快適に
 大幅に高速化、省メモリ化
                                                                  $x = $f ? $f : tmp
                               Zend/micro_bench.php               $x = $f ? $f : $a
            40                                                    $x = $f ?: tmp
                                                                  $x = $a ?: null
                                                                  $x = $str[0]
                                                                  $x = $hash['v']
            35
                                                                  $x = $GLOBALS['v']
                                                                  $x = $_GET
                                                                  $x = TEST
            30                                                    new Foo()
                                                                  $x = Foo::TEST
                                                                  $this->f()
                                                                  empty($this->x)
            25                                                    isset($this->x)
                                                                  $this->x--
                                                                  $this->x++
 実行時間 [s]




                                                                  --$this->x
            20                                                    ++$this->x
                                                                  $this->x += 2
                                                                  $this->x = 0
                                                                  $x = $this->x
            15                                                    Foo::f()
                                                                  self::f()
                                                                  empty(Foo::$x)
                                                                  isset(Foo::$x)
            10                                                    Foo::$x = 0
                                                                  $x = Foo::$x
                                                                  empty(self::$x)
                                                                  isset(self::$x)
             5                                                    self::$x = 0
                                                                  $x = self::$x
                                                                  int_func()
                                                                  undef_func()
             0
                 PHP 5.2   PHP 5.3      PHP 5.4   Athlon II5.5 640 3.0GHz, Ubuntu 12.04
                                                       PHP X4
                                                                  func()
                                                                  empty_loop
PHP 5.4 でコード再利用:Trait

 Trait: 単一継承の言語でコードを再利用する仕組み
 実装の再利用( ≠ interface:実装を強制)
 クラスや他のTraitとのメソッド名衝突を解決する仕組みが必要
<?php                                            <?php
trait A {                                        trait A {
  public function show() {                         public function show() { echo 'Hello,';} }
        echo 'Hello,',$this->getName(),'!'; }
  abstract public function getName();            trait B {
}                                                  public function show() {echo 'PHP!';} }

class Base { /* 1 */ }                           class Foo {
                                                   use A, B {
class Foo extends Base {                             A::show insteadof B;   リネームでは
     use A;                                          B::show as showN; }    なくエイリアス
     public function getName() { echo 'PHP'; }   }
}
$obj = new Foo();                                $obj = new Foo();
echo $obj->show(); // Hello,PHP!                 echo $obj->show() . $obj->showN();
PHP 5.4 で日本語の扱いが便利に

 Zendエンジンマルチバイト対応標準化:バイナリ互換性改善
     PHP <= 5.3
        ◇ PHP構築時: --enable-zend-multibyte --enable-mbstring
        ◇ mbstring.script_encoding でスクリプト文字コード指定

     PHP 5.4
        ◇ zend.multibyte = On で有効に
        ◇ zend.script_encodingでスクリプト文字コード指定

 デフォルト文字コードがISO-8859-1からUTF-8に:
  default_charset, htmlspecialchars(), etc.
 mbstring文字コード追加: 携帯絵文字(Unicode 6), etc.
PHP 5.4.1:コールバック関数による置換

 正規表現置換eオプション:セキュリティホールとなりやすい
mb_ereg_replace_callback()関数追加
  → 置換文字列で コールバック関数を使用可能に
 PCREにおけるpreg_replace_callback()に相当

   $str = 'abc 123 #';
   echo mb_ereg_replace('(S+)',"strlen('1')", $str, 'e');


  echo mb_ereg_replace_callback('(S+)',
     function ($m) { echo strlen($m[0]);}, $str);
PHP 5.5

 リリース時期: 未定 (2013/3 ?)
 PHP 5.3、5.4と比べて小幅な改訂となる可能性がある
 目玉機能は、(今のところ) Generator
Generator
                                     (https://wiki.php.net/rfc/generators)
   Generator:イテレータを関数で定義(Python)
   例:ファイルの各行を処理: ファイル全体読込み→メモリが大量に必要
   イタレータ定義:多くのコード記述が必要
   配列全体を返すのではなく、値を生成するイタレータを返す

     <?php                                           Nikita Popov
     function xrange($start, $end, $step = 1) {
       for ($i = $start; $i < $end; $i += $step) {   17歳、ベルリン
          yield $i;
       }
     }

     foreach (xrange(10, 20) as $i) {
        echo $i;
                      10,11,....,20
     }
finallyキーワード
                               (https://wiki.php.net/rfc/finally)
 finallyブロック:tryブロックから出る際に常に実行される
 例外発生の有無によらない → クリンナップコードを記述
 return等でクリンナップコードがバイパスされることを防止


       try {
           echo ”1";
            throw new Exception("ex");
       } catch (Exception $e) {
            echo ”2";
       } finally {
            echo "#";
       }                                 12#
パスワード用ハッシュ

 パスワードハッシュ用API                  (https://wiki.php.net/rfc/password_hash)

 crypt関数のラッパー:従来はsalt文字列を作るのが面倒だった
   $hash = password_hash($password, PASSWORD_BCRYPT);


      echo password_verify($password, $hash) ? "OK" : "NG";

 PBKDF2: パスワードハッシュ用キーストレッチ
  $key = hash_pbkdf2("sha512", $password, $salt, 5000, 16, true);
  $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,
                  $key, $data, MCRYPT_MODE_CBC, $iv);

                                 scrypt に基づく実装も提案されている
その他の機能(1)

 配列/文字列定数の添字参照
                              (https://wiki.php.net/rfc/constdereference)
  echo ”123”[1]; 2                   ランダムな16進文字列を生成する例
  echo [1,2,3][2]; 3              function randomHexString($length) {
                                     for ($i = 0, $s = ''; $i < $length; ++$i) {
                                        $s .= "0123456789abcdef"[mt_rand(0, 15)];
                                     }
                                     return $s;
                                  }
                                  echo randomHexString(10);  1e1384a471

 foreachでリスト代入が可能に                           (https://wiki.php.net/rfc/foreachlist)
foreach ($users as $user) {              foreach ($users as list($id, $name)) {
  list($id, $name) = $user;                echo “$id => $name”;
  echo “$id => $name”;                   }
}
PHPの成功と未来
 Rasmus語録
  (http://en.wikiquote.org/wiki/Rasmus_Lerdorf)
 PHPは歯ブラシのようなもの。いつも使う役に立つシンプルな
 ツールだけど、誰も歯ブラシのことなんて気にしないよね。
 PHPは「問題を解くためのシンプルなツール」なのさ。

学習が容易: 言語がシンプル、ドキュメントが豊富
- 多様な要求に応えつつ、わかり易さを保つことが必要
- 地道な活動が重要: ローカルなPHPカンファレンス、勉強会、等
進化を継続: Webの進化に対応し、必要十分な解を提供
- 開発者/貢献者の育成
- キラーアプリ(WordPressなど)の存在がキー
日本PHPユーザ会
設立趣旨
 (2000年4月発足)            活動内容
PHPユーザ相互の情報交換および        Web
コミュニティの健全な発展                   http://www.php.gr.jp/
                         メーリングリスト
背景                      php-users, php-dev, php-doc,
                        phpug-admin
• 高性能Webミドルウエアへのニーズ増大
• オープンソースソフトウエアの発展       ドキュメント整備

                        セミナー/イベント
  国内PHPユーザの増加
                            国際化
メンバー/スタッフ

・PHPユーザ会員と思ったらメンバー
・運営するのも楽しいかも

Weitere ähnliche Inhalte

Was ist angesagt?

最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyYuya Takeyama
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話y-uti
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼうDaiki Ichinose
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUpKenichi Mukai
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説Cherry Pie Web
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
FuelPHPをさわってみて
FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみてSotaro Omura
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたWindows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたy-uti
 

Was ist angesagt? (20)

HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼう
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
FuelPHPをさわってみて
FuelPHPをさわってみてFuelPHPをさわってみて
FuelPHPをさわってみて
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
Perl logging
Perl loggingPerl logging
Perl logging
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Windows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみたWindows で拡張モジュールをビルドしてみた
Windows で拡張モジュールをビルドしてみた
 

Andere mochten auch

PHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php frameworkPHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php frameworkG Woo
 
安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013Hiroshi Tokumaru
 
CakePHP3ウォークスルー
CakePHP3ウォークスルーCakePHP3ウォークスルー
CakePHP3ウォークスルーTomoki Hasegawa
 
CloudFlare vs Incapsula vs ModSecurity
CloudFlare vs Incapsula vs ModSecurityCloudFlare vs Incapsula vs ModSecurity
CloudFlare vs Incapsula vs ModSecurityZero Science Lab
 
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかにHiroshi Tokumaru
 
PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行Yasuo Ohgaki
 
PHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisPHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisIan Macali
 
Php 7 hhvm and co
Php 7 hhvm and coPhp 7 hhvm and co
Php 7 hhvm and coPierre Joye
 
잘 알려지지 않은 Php 코드 활용하기
잘 알려지지 않은 Php 코드 활용하기잘 알려지지 않은 Php 코드 활용하기
잘 알려지지 않은 Php 코드 활용하기형우 안
 
CloudFlare vs Incapsula: Round 2
CloudFlare vs Incapsula: Round 2CloudFlare vs Incapsula: Round 2
CloudFlare vs Incapsula: Round 2Zero Science Lab
 

Andere mochten auch (12)

Basic of PHP
Basic of PHPBasic of PHP
Basic of PHP
 
PHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php frameworkPHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php framework
 
安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013安全なPHPアプリケーションの作り方2013
安全なPHPアプリケーションの作り方2013
 
CakePHP3ウォークスルー
CakePHP3ウォークスルーCakePHP3ウォークスルー
CakePHP3ウォークスルー
 
CloudFlare vs Incapsula vs ModSecurity
CloudFlare vs Incapsula vs ModSecurityCloudFlare vs Incapsula vs ModSecurity
CloudFlare vs Incapsula vs ModSecurity
 
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
 
PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行PHP5.6からPHP7.0への移行
PHP5.6からPHP7.0への移行
 
PHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisPHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with this
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
 
Php 7 hhvm and co
Php 7 hhvm and coPhp 7 hhvm and co
Php 7 hhvm and co
 
잘 알려지지 않은 Php 코드 활용하기
잘 알려지지 않은 Php 코드 활용하기잘 알려지지 않은 Php 코드 활용하기
잘 알려지지 않은 Php 코드 활용하기
 
CloudFlare vs Incapsula: Round 2
CloudFlare vs Incapsula: Round 2CloudFlare vs Incapsula: Round 2
CloudFlare vs Incapsula: Round 2
 

Ähnlich wie PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)

スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法Rui Hirokawa
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
『RIA開発におけるサービス開発のイロハ』
 『RIA開発におけるサービス開発のイロハ』 『RIA開発におけるサービス開発のイロハ』
『RIA開発におけるサービス開発のイロハ』Jun Funakura
 
RIA開発におけるサービス開発のイロハ
RIA開発におけるサービス開発のイロハRIA開発におけるサービス開発のイロハ
RIA開発におけるサービス開発のイロハJun Funakura
 
PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022Rui Hirokawa
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016Rui Hirokawa
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015Rui Hirokawa
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023Rui Hirokawa
 
PHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend FramewrokPHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend Framewroksasezaki
 
PHPの今とこれから2007
PHPの今とこれから2007PHPの今とこれから2007
PHPの今とこれから2007Rui Hirokawa
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017Rui Hirokawa
 
PHPの今とこれから2009
PHPの今とこれから2009PHPの今とこれから2009
PHPの今とこれから2009Rui Hirokawa
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Sho Ito
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywordsuupaa
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
PHP最速フレームワークPhalconの紹介
PHP最速フレームワークPhalconの紹介PHP最速フレームワークPhalconの紹介
PHP最速フレームワークPhalconの紹介Yuji Iwai
 
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Yuya Yamaki
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketKazuhiro Hara
 

Ähnlich wie PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese) (20)

スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
『RIA開発におけるサービス開発のイロハ』
 『RIA開発におけるサービス開発のイロハ』 『RIA開発におけるサービス開発のイロハ』
『RIA開発におけるサービス開発のイロハ』
 
RIA開発におけるサービス開発のイロハ
RIA開発におけるサービス開発のイロハRIA開発におけるサービス開発のイロハ
RIA開発におけるサービス開発のイロハ
 
PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
PHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend FramewrokPHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend Framewrok
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
PHPの今とこれから2007
PHPの今とこれから2007PHPの今とこれから2007
PHPの今とこれから2007
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017
 
PHPの今とこれから2009
PHPの今とこれから2009PHPの今とこれから2009
PHPの今とこれから2009
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
PHP最速フレームワークPhalconの紹介
PHP最速フレームワークPhalconの紹介PHP最速フレームワークPhalconの紹介
PHP最速フレームワークPhalconの紹介
 
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 

Mehr von Rui Hirokawa

日本PHPユーザ会の紹介
日本PHPユーザ会の紹介日本PHPユーザ会の紹介
日本PHPユーザ会の紹介Rui Hirokawa
 
PHPの中の人によるパネルディスカッション
PHPの中の人によるパネルディスカッションPHPの中の人によるパネルディスカッション
PHPの中の人によるパネルディスカッションRui Hirokawa
 
PHPの今とこれから2008
PHPの今とこれから2008PHPの今とこれから2008
PHPの今とこれから2008Rui Hirokawa
 
PHPの今とこれから2006
PHPの今とこれから2006PHPの今とこれから2006
PHPの今とこれから2006Rui Hirokawa
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語るRui Hirokawa
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語るRui Hirokawa
 
php.netの歩き方
php.netの歩き方php.netの歩き方
php.netの歩き方Rui Hirokawa
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~Rui Hirokawa
 
PHPの今とこれから2018
PHPの今とこれから2018PHPの今とこれから2018
PHPの今とこれから2018Rui Hirokawa
 
PHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special EditionPHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special EditionRui Hirokawa
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話Rui Hirokawa
 

Mehr von Rui Hirokawa (11)

日本PHPユーザ会の紹介
日本PHPユーザ会の紹介日本PHPユーザ会の紹介
日本PHPユーザ会の紹介
 
PHPの中の人によるパネルディスカッション
PHPの中の人によるパネルディスカッションPHPの中の人によるパネルディスカッション
PHPの中の人によるパネルディスカッション
 
PHPの今とこれから2008
PHPの今とこれから2008PHPの今とこれから2008
PHPの今とこれから2008
 
PHPの今とこれから2006
PHPの今とこれから2006PHPの今とこれから2006
PHPの今とこれから2006
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語る
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語る
 
php.netの歩き方
php.netの歩き方php.netの歩き方
php.netの歩き方
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~
 
PHPの今とこれから2018
PHPの今とこれから2018PHPの今とこれから2018
PHPの今とこれから2018
 
PHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special EditionPHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special Edition
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話
 

PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)

  • 2. ポスト5.3時代のコード  マイクロフレームワークSlimの例  モジュラーデザイン:名前空間、オートローダー http://www.example.com/hello/taro http://www.example.com/hello/taro Hello, taro Hello, taro <?php Composed Composed require 'vendor/autoload.php'; $app = new SlimSlim(); 名前空間 名前空間 $app->get('/hello/:name', function ($name) use ($app) { $app->render('tpl1.php', array('name'=> $name)); 無名関数 無名関数 }); $app->run(); [tpl1.php] [tpl1.php] Hello, <?= $name; ?> Hello, <?= $name; ?>
  • 3. PHP アンケート 2012  主に使っているPHPのバージョン 1) PHP 4.x 2) PHP 5.0-5.1 3) PHP 5.2 4) PHP 5.3 5) PHP 5.4 6) 使ってない
  • 4. PHPユーザ分布 usage of server-side programming language (2012/9/8) 0.2% 0.6% 0.9% 1.2% 4.0% 21.2% PHP ASP.NET Java ColdFusion Perl Ruby Market Share of CMS 77.9% 22.8% WordPress Joomla 3.3% Drupal 54.3% 3.7% vBulletin 7.0% Blogger 8.9% other 引用: W3Techs.com, 2012/9/8版
  • 5. PHPユーザ分布 Version of PHP (2012/9/8, W3Techs.com) 4.3% PHP 5 PHP 4 version of PHP 5 (2012/9/8, W3Techs.com) 4.1% 0.7% 95.7% 5.1 36.5% 5.2 5.3 5.4 58.6% 引用: W3Techs.com, 2012/9/8版
  • 6. バージョンを更新する/しない理由 「開発リソースの有効活用」とサポートの両立が課題 更新する理由 更新しない理由 ・新機能/性能が魅力的 ・新機能/性能が魅力的 ・更新/確認の手間 ・更新/確認の手間 ・セキュリティ/バグ修正 ・セキュリティ/バグ修正 ・新機能/性能の魅力小 ・新機能/性能の魅力小 ・サポート切れ ・サポート切れ ・周辺環境の更新が追いつかない ・周辺環境の更新が追いつかない
  • 7. PHPの歩み `10/3 キャンセル 6.0 5.5 ・Unicode `12/3 ・エンジン/OOP大幅強化:ZE2 `09/6 5.4 ・XML対応強化(SimpleXML) 5.3 ・Traits ・Webサービス(SOAP) - 速度改善 ・DB強化 (SQLite, MySQLi) `06/11 ・名前空間 - MB対応標準化 ・クロージャ `05/11 5.2 ・遅延静的束縛 - 組込みWebサーバ - レガシー機能削除 5.1 ・メモリ/速度改善 ・GC改善 `04/7 ・MySQLnd ・速度改善 ・入力フィルタ 5.0 ・PDO `02/12 `05/6 4.3 4.4 `10/12 (EOL) `08/8 (EOL) ・CLI ・バグ修正 ・stream ・自動グローバル変数のデフォルト無効化 ・mbregex ・zend-multibyte 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 Web/DB XML PHP フレームワーク スマフォ JPUG PHPcon PHPcon セキュリティ W/S API 10周年 AJAX 10周年 関西 北海道
  • 8. 開発のソーシャルコーディング対応  2012/3 ソースコードの管理をsubversionからgitへ移行  git.php.net → githubにミラー PHPソースをクローン 新機能 バグ修正 RFC作成 バグトラッカで検索 実装+テストコード作成 #12345 議論/更新 登録 pullリクエスト発行 (チケット取得) 投票 http://bugs.php.net 議論/更新 http://wiki.php.net/rfc リクエスト受理/拒否 http://github.com/php/php-src
  • 9. フレームワークと相互運用性 相互運用性 フレームワークA ORMクラスC interoperability ViewクラスD 独自クラスE モジュラー フレームワークB ORMクラスC ViewクラスF 独自クラスE PHP 5.3時代のフレームワーク(名前空間) FuelPHP 1.2 Symfony2 ZF 2
  • 10. PHP-FIG と PSR http://www.php-fig.org/  PHP Framework Interoperability Group (PHP-FIG)   (以前: PHP Standards Working Group)  主要F/W関係者が参画: CakePHP, ZF,Symfony, ...  PHP standards recommendation (PSR)を発行 PSR-0 :ファイル/クラス/名前空間の標準化:autoloader PSR-1 : 基本的なコーディング標準 PSR-2 : コーディングスタイルガイド プロジェクトをPSR準拠とする 効率的で柔軟な運用が可能に
  • 11. PSR準拠とするには? 1.PHP Coding Standards Fixer (http://cs.sensiolabs.org/) PSR-0~2準拠となるよう修正 $ wget http://cs.sensiolabs.org/get/php-cs-fixer.phar $ php php-cs-fixer.phar fix /path/to/dir 2.PHP_CodeSnifferで確認 $ pear install PHP_CodeSniffer $ cd /usr/share/php/CodeSniffer/Standards $ git clone https://github.com/klaussilveira/phpcs-psr PSR $ phpcs --config-set default_standard PSR
  • 12. 依存性マネージャ:Composer  パッケージマネージャ → dependency manager  プロジェクト単位で複数/階層的な依存関係を解決  主要フレームワークに対応 : Symfony2, ZF, FuelPHP, ... composer.jsonに依存性を記述 composer.jsonに依存性を記述 composer.jsonの例 { "require": { パッケージのインストール "twig/twig": "1.6.*", パッケージのインストール "slim/slim": "1.6.*", $ php composer.phar install } オートローダとロックファイル } (composer.lock)自動生成 依存性を更新 依存性を更新 (デフォルト:バージョンをロック) $ php composer.phar update
  • 13. Packagist:Composerによる配布 http://packagist.org/statistics
  • 14. PHP 5.4 改善/変更のポイント  速度改善:10%~15%  Mix-inライクな機能を実現:Trait  古い機能の削除: register_globals, magic_quotes*, safe_mode* , ext/sqlite, ...  ZEマルチバイト標準化、mbstring機能強化  組込みWebサーバー: php -S localhost:8080  課題: APCのサポートがまだβ版
  • 15. PHP 5.4でより速く、快適に  大幅に高速化、省メモリ化 Zend/bench.php strcat(200000) 6 sieve(30) nestedloop(12) 5 matrix(20) heapsort(20000) hash2(500) 4 hash1(50000) 実行時間 [s] fibo(30) 3 ary3(2000) ary2(50000) ary(50000) 2 ackermann(7) mandel2 mandel 1 simpleudcall simpleucall 0 simplecall PHP 5.2 PHP 5.3 PHP 5.4 PHP 5.5 simple Athlon II X4 640 3.0GHz, Ubuntu 12.04
  • 16. PHP 5.4でより速く、快適に  大幅に高速化、省メモリ化 $x = $f ? $f : tmp Zend/micro_bench.php $x = $f ? $f : $a 40 $x = $f ?: tmp $x = $a ?: null $x = $str[0] $x = $hash['v'] 35 $x = $GLOBALS['v'] $x = $_GET $x = TEST 30 new Foo() $x = Foo::TEST $this->f() empty($this->x) 25 isset($this->x) $this->x-- $this->x++ 実行時間 [s] --$this->x 20 ++$this->x $this->x += 2 $this->x = 0 $x = $this->x 15 Foo::f() self::f() empty(Foo::$x) isset(Foo::$x) 10 Foo::$x = 0 $x = Foo::$x empty(self::$x) isset(self::$x) 5 self::$x = 0 $x = self::$x int_func() undef_func() 0 PHP 5.2 PHP 5.3 PHP 5.4 Athlon II5.5 640 3.0GHz, Ubuntu 12.04 PHP X4 func() empty_loop
  • 17. PHP 5.4 でコード再利用:Trait  Trait: 単一継承の言語でコードを再利用する仕組み  実装の再利用( ≠ interface:実装を強制)  クラスや他のTraitとのメソッド名衝突を解決する仕組みが必要 <?php <?php trait A { trait A { public function show() { public function show() { echo 'Hello,';} } echo 'Hello,',$this->getName(),'!'; } abstract public function getName(); trait B { } public function show() {echo 'PHP!';} } class Base { /* 1 */ } class Foo { use A, B { class Foo extends Base { A::show insteadof B; リネームでは use A; B::show as showN; } なくエイリアス public function getName() { echo 'PHP'; } } } $obj = new Foo(); $obj = new Foo(); echo $obj->show(); // Hello,PHP! echo $obj->show() . $obj->showN();
  • 18. PHP 5.4 で日本語の扱いが便利に  Zendエンジンマルチバイト対応標準化:バイナリ互換性改善 PHP <= 5.3 ◇ PHP構築時: --enable-zend-multibyte --enable-mbstring ◇ mbstring.script_encoding でスクリプト文字コード指定 PHP 5.4 ◇ zend.multibyte = On で有効に ◇ zend.script_encodingでスクリプト文字コード指定  デフォルト文字コードがISO-8859-1からUTF-8に: default_charset, htmlspecialchars(), etc.  mbstring文字コード追加: 携帯絵文字(Unicode 6), etc.
  • 19. PHP 5.4.1:コールバック関数による置換  正規表現置換eオプション:セキュリティホールとなりやすい mb_ereg_replace_callback()関数追加   → 置換文字列で コールバック関数を使用可能に  PCREにおけるpreg_replace_callback()に相当 $str = 'abc 123 #'; echo mb_ereg_replace('(S+)',"strlen('1')", $str, 'e'); echo mb_ereg_replace_callback('(S+)', function ($m) { echo strlen($m[0]);}, $str);
  • 20. PHP 5.5  リリース時期: 未定 (2013/3 ?)  PHP 5.3、5.4と比べて小幅な改訂となる可能性がある  目玉機能は、(今のところ) Generator
  • 21. Generator (https://wiki.php.net/rfc/generators)  Generator:イテレータを関数で定義(Python)  例:ファイルの各行を処理: ファイル全体読込み→メモリが大量に必要  イタレータ定義:多くのコード記述が必要  配列全体を返すのではなく、値を生成するイタレータを返す <?php Nikita Popov function xrange($start, $end, $step = 1) { for ($i = $start; $i < $end; $i += $step) { 17歳、ベルリン yield $i; } } foreach (xrange(10, 20) as $i) { echo $i; 10,11,....,20 }
  • 22. finallyキーワード (https://wiki.php.net/rfc/finally)  finallyブロック:tryブロックから出る際に常に実行される  例外発生の有無によらない → クリンナップコードを記述  return等でクリンナップコードがバイパスされることを防止 try { echo ”1"; throw new Exception("ex"); } catch (Exception $e) { echo ”2"; } finally { echo "#"; } 12#
  • 23. パスワード用ハッシュ  パスワードハッシュ用API (https://wiki.php.net/rfc/password_hash) crypt関数のラッパー:従来はsalt文字列を作るのが面倒だった $hash = password_hash($password, PASSWORD_BCRYPT); echo password_verify($password, $hash) ? "OK" : "NG";  PBKDF2: パスワードハッシュ用キーストレッチ $key = hash_pbkdf2("sha512", $password, $salt, 5000, 16, true); $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,    $key, $data, MCRYPT_MODE_CBC, $iv); scrypt に基づく実装も提案されている
  • 24. その他の機能(1)  配列/文字列定数の添字参照 (https://wiki.php.net/rfc/constdereference) echo ”123”[1]; 2 ランダムな16進文字列を生成する例 echo [1,2,3][2]; 3 function randomHexString($length) { for ($i = 0, $s = ''; $i < $length; ++$i) { $s .= "0123456789abcdef"[mt_rand(0, 15)]; } return $s; } echo randomHexString(10);  1e1384a471  foreachでリスト代入が可能に (https://wiki.php.net/rfc/foreachlist) foreach ($users as $user) { foreach ($users as list($id, $name)) { list($id, $name) = $user; echo “$id => $name”; echo “$id => $name”; } }
  • 25. PHPの成功と未来 Rasmus語録 (http://en.wikiquote.org/wiki/Rasmus_Lerdorf) PHPは歯ブラシのようなもの。いつも使う役に立つシンプルな ツールだけど、誰も歯ブラシのことなんて気にしないよね。 PHPは「問題を解くためのシンプルなツール」なのさ。 学習が容易: 言語がシンプル、ドキュメントが豊富 - 多様な要求に応えつつ、わかり易さを保つことが必要 - 地道な活動が重要: ローカルなPHPカンファレンス、勉強会、等 進化を継続: Webの進化に対応し、必要十分な解を提供 - 開発者/貢献者の育成 - キラーアプリ(WordPressなど)の存在がキー
  • 26. 日本PHPユーザ会 設立趣旨 (2000年4月発足) 活動内容 PHPユーザ相互の情報交換および Web コミュニティの健全な発展 http://www.php.gr.jp/ メーリングリスト 背景 php-users, php-dev, php-doc, phpug-admin • 高性能Webミドルウエアへのニーズ増大 • オープンソースソフトウエアの発展 ドキュメント整備 セミナー/イベント 国内PHPユーザの増加 国際化 メンバー/スタッフ ・PHPユーザ会員と思ったらメンバー ・運営するのも楽しいかも