SlideShare a Scribd company logo
1 of 27
Download to read offline
PHPの今とこれから2022
PHP Conference Japan 2022
September 24-25, 2022
廣川 類 (日本PHPユーザ会)
1
自己紹介:ひろかわ
◼ PHPのホビーユーザ(1996~)
◼ PHPマニュアルの日本語化
◼ マルチバイト化:mbstringエクステンション
◼ PHPカンファレンス皆勤中!
◼ PHP関連書籍:
➢ PHP徹底攻略
➢ 初めてのPHP(監訳)
2
PHPとは?
◼ PHPは主にWebアプリケーションに使用されるスクリプト言語
◼ 1995年の誕生以来、Webと共に成長、進化
◼ 現場の課題を簡単に解決してくれる便利なツールです
引用: W3Techs.com, 2022/8/10 3
サーバサイド言語のシェア
WordPress
64.3%
Shopify
6.2%
Wix
3.4%
Squarespace
3.0%
Joomla
2.5%
other
20.6%
CMSのシェア
PHP
77.5%
ASP.NET
7.7%
Ruby
5.7%
Java
4.2%
Scala
2.7%
other
2.2%
PHPアンケート 2022
4
PHPの開発体制
Rasmus Lerdorf
Andi Gutmans
Zeev Suraski
Marcus Boerger
開発アカウント:約2,000名(15名)
コア:約150名(5名)
PHP Group:10名
Nikita Popov
Derick Rethans
https://www.php.net/credits.php
Dmitry Stogov
PHP財団(PHP Foundation)設立
◼ 2021年11月に設立がアナウンスされたPHP開発者をサポートするため
の非営利団体.JetBrains社が主要スポンサー
◼ きっかけは,PHPに多大な貢献をしていたNikita Popov氏がJetBrainsを
退社し,PHP開発にかける時間を大幅に減らすと宣言したこと.
◼ 背景・課題:重要なインフラであるPHPは個人のモチベーションに依存
して開発・維持されており,生活面の保証(支援)がない.
◼ OpenCollectiveにより運営され,個人・企業の寄付に基づき,PHP開発
者を支援.
◼ 主要な開発者であるDmitry Stogov 氏らへのサポートが決定.
◼ 財政状況等はオープンになっており,誰でも貢献(寄付)ができる.
https://thephp.foundation/
https://opencollective.com/phpfoundation
7
PHP 1 PHP 2 PHP 3 PHP 4 PHP 5 PHP 7 PHP 8
総ステップ数 2946 40377 141066 406227 1103847 1133517 1261005
0
200,000
400,000
600,000
800,000
1,000,000
1,200,000
1,400,000
総ステップ数
Python 3 Ruby 2
総ステップ数 422087 863913
0
200,000
400,000
600,000
800,000
1,000,000
1,200,000
総ステップ数
◼ パーソナルツールからプラットフォームへ
◼ 大衆的ツールから安全で実用的な高性能ツールへ
1. 言語仕様:PHP 5.3/5.4で現代的なスクリプト言語に
2. 性能:PHP 5で高速化,PHP 7で最速に
3. セキュリティ:PHP 5でCoverity Scan適用
2015/12
2004/7
2000/5
1998/6
1997/11
1995/6
総ステップ数(.cファイル) 総ステップ数(.cファイル)
PHPの歩み
2015/12 2020/11
8
20年で速度が50倍に!
(ほぼ)同じスクリプトが動く!
PHPの歩み
bench.php
Ryzen 5 2400G
Ubuntu 20.04
PHPの歩み
9
2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022
8.0
`20/11/26
8.1
`21/11/25
2023
5.5
5.6
5.4
Traits
マルチバイト
ジェネレータ
キャッシュ
デバッガ
7.0
7.1
7.2
7.3
7.4
高速化
スカラー型宣言
戻り値型宣言
プロパティ型宣言
FFI
JIT
union
Fiber
Enum
交差型
PHP 5.3-5.4
現代的な機能導入
PHP7
大幅高速化
PHP8
JIT導入
8.2
`22/11/24
DNF
readonlyクラス
PHPバージョン分布
引用: W3Techs.com, 2022/8/10
8.1
1.3%
8.0
3.1%
7.4
38.4%
7.3
15.4%
7.2
10.5%
7.1
3.7%
7.0
3.7%
5.x
23.8%
other
0.2%
◼ PHP7ユーザ: 71.6% (昨年: 68.2%),PHP 8ユーザ:4.4% (昨年: 0.8%)
◼ PHP 5(EOL)のユーザ: 23.8% (昨年: 30.5%),PHP 7.3まで(EOL)のユーザ:57.2%
◼ WordPressの推奨環境:PHP 7.4, MySQL 5.7/MariaDB 10.3, HTTPS
10
* https://wordpress.org/about/requirements/
◼ PHPのライフサイクル:3年(バグ修正:2年、セキュリティ修正のみ:1年)
◼ EOL以降はセキュリティ関連の修正も提供されず、非常に危険です
◼ PHP5、PHP 7.0~7.3 は EOLとなっています
PHPリリースサイクル
11
2018 2019 2020 2021 2022 2023 2024
5.6
7.0
7.1
7.2
7.3
7.4
8.0
アクティブサポート セキュリティ修正のみ
2022/9/25
EOL 2018/12/31
http://php.net/supported-versions.php
EOL 2018/12/3
EOL 2019/12/1
EOL 2020/11/30
EOL 2021/12/6
EOL 2022/11/28
EOL 2023/11/26
PHPリリース情報
Release 7.4 8.0 8.1 変更
2021/10/21 7.4.25 8.0.12 CVE-2021-21703 (PHP-FPM)
2021/11/18 7.4.26 8.0.13 CVE-2021-21707 (XML)
2021/11/25 8.1.0 PHP 8.1.0 Release, PHP 7.3 EOL (2021/12/6)
2021/12/16 7.4.27 8.0.14 8.1.1
2022/1/20 8.0.15 8.1.2
2022/2/17 7.4.28 8.0.16 8.1.3 CVE-2021-21708 (Filter):リモートコード実行
2022/3/17 8.0.17 8.1.4
2022/4/14 7.4.29 8.0.18 8.1.5 Rebuilding Windows binaries for security updates
2022/5/12 8.0.19 8.1.6
2022/6/9 7.4.30 8.0.20 8.1.7 CVE-2022-31626 (mysql), 31625 (pgsql)
2022/7/7 8.0.21 8.1.8
2022/8/4 8.0.22 8.1.9
2022/9/1 8.0.23 8.1.10
12
◼ CVE-* ⇒ 速やかな更新が必要
PHP8 JIT: より速く、快適に
Ryzen 5 2400G, Ubuntu 22.04 14
◼ PHP 8.2: 地道な実行速度改善が進んで
いる.
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
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
Zend/bench.php
0
0.5
1
1.5
2
2.5
$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
PHP8 JIT: より速く、快適に
Ryzen 5 2400G, Ubuntu 20.04 15
◼ PHP 8.2: JIT(キャッシュ)は地道
時に改良されているが,実行速度の
差は小さい.
Zend/micro_bench.php
PHP 8.2 改善/変更のポイント
◼ Randomエクステンション
◼ Disjunctive Normal Form(DNF)型
◼ null/true/false型の追加
◼ readonly属性のクラスへの適用
◼ バックトレースにおける出力抑制
◼ 定数式における列挙型プロパティ
◼ Traitで定数が利用可に
◼ mbstring関連の修正 8.1.0-8.1.7で非互換な変換
◼ 動的プロパティ廃止対象(deprecated)
◼ strtolower(), strtoupper()がロケール非依存に
◼ utf8_encode(), utf8_decode()が廃止対象に
代替:mb_strtolower()
代替:mb_convert_encoding()
互換性のない変更・不具合
機能追加
動的プロパティの廃止
17
https://wiki.php.net/rfc/deprecate_dynamic_properties
従来のPHPでは,あるクラスにおいて宣言されていないプロパティに値が代入されると,
自動的に指定したプロパティが作成される ⇒ エラー見逃しの原因に
◼ 変数名のタイポなどにより予測しない動作を誘発す
るリスクがあるため,廃止
(PHP 8.2でDeprecated警告,PHP 9.0で廃止)
◼ クラスの定義の前に属性
#[AllowDynamicProperties] を指定⇒ 従来の動作
◼ __get(),__set()メソッド,stdClassは従来どおり利
用できる
<?php
class Foo {
public $item;
}
$moo = new Foo;
$moo->iten = "apple";
null/true/false型の追加
18
https://wiki.php.net/rfc/null-false-standalone-types
https://wiki.php.net/rfc/true-type
◼ true. false, nullを独立した型として追加
◼ 従来はunionの中でのみ使用可: string|false
◼ true|falseは不可(boolと記載)
function test(null $v): null {
return $v;
}
class Foo {
public true $v = true;
public function foo(false $v): false {
return $v;
}
}
Traitsで定数が利用可に
19
https://wiki.php.net/rfc/constants_in_traits
◼ 従来,traitの中での定数を宣言は不可:
⇒ 定数宣言を可能にした
◼ traitで宣言された定数には,クラス定数としてアクセスできる
⇒ traitの定数としてのアクセスは不可
trait Foo {
public const CONSTANT = 1;
public function bar(): int {
return self::CONSTANT;
}
}
class Moo {
use Foo;
}
print(Moo::CONSTANT); // 1
print(Foo::CONSTANT);
Fatal error: Traits cannot have constants
NG
OK
Readonlyクラス属性
20
https://wiki.php.net/rfc/readonly_classes
◼ クラスプロパティの変更ができなくなる.
◼ 動的プロパティ代入は警告ではなく,エラーになる.
◼ プロパティ変数の宣言時に型宣言を省略したり,static宣言を行ったりすることはできない.
◼ 継承先とreadonly属性は一致している必要がある(異なるとエラー発生)
<?php
readonly class Foo {
public int $bar;
public function __construct() {
$this->bar = 1;
}
}
$foo = new Foo();
$foo->bar = 2; // 致命的エラーを発生
DNFクラスの導入 (1/2)
21
◼ PHP 8.0で合併型(Union, OR),PHP 8.1で交差型(Intersection, AND)を導入.
◼ DNF (Disjunctive Normal Form, 選言標準形) はAND式をOR式で結合する構造
⇒合併型(Union, OR)と交差型(Intersection, AND)を結合する型宣言が可能になる.
◼ DNFは正規化された表現形式であり,処理系への負荷が低く,可読性も高い.理論的にあ
らゆる組み合わせを表現可能.
RFC: https://wiki.php.net/rfc/enumerations
interface A {}
interface B {}
interface C {}
interface D {
public function show(((A&B)|C $a): (A&B)|C;
}
A B C
DNFクラスの導入 (2/2)
22
◼ クラス継承:「共変性(戻り値)と反変性(引数)」の原則が適用される.
RFC: https://wiki.php.net/rfc/enumerations
A B C
✓ 戻り値:集合を縮小させる型宣言のみ有効
✓ 引数:集合を拡大させる型宣言のみ有効
interface D {
public function show(A&B $a): (A&B)|C;
}
class Moo implements D {
public function show((A&B)|C $a): A&B {}
} A B
戻り値:
集合が縮小(OK)
引数:
集合が拡大(OK)
バックトレース出力抑制
23
◼ 例外・エラー発生時にスタックトレースが表示または記録される
⇒ センシティブな情報(パスワード)が出力・記録されるリスクがある.
◼ #[¥SensitiveParameter] 属性を付与することで出力を抑制
RFC: https://wiki.php.net/rfc/redact_parameters_in_back_traces
<?php
function db_connect($user, $password) {
throw new ¥Exception('Error');
}
db_connect('taro', 'secret');
Fatal error: Uncaught Exception: Error in ../test.php:3
Stack trace:
#0 ../test.php(6): db_connect('taro',’secret’)
#1 {main}
thrown in test.php on line 3
<?php
function db_connect($user, #[¥SensitiveParameter] $password) {
throw new ¥Exception('Error');
}
乱数実装の改善
24
https://wiki.php.net/rfc/rng_extension
✓ PHPの乱数生成器は状態がグローバルに保持されている.
⇒ランダムな処理を行う内部関数を使うと状態が変化:回帰試験の再現性がなくなる
✓ メルセンヌ・ツイスターは統計的なテスト(CrushおよびBigCrush)をパスできない
mt_srand(1234);
…
var_dump(mt_rand(1, 100));
$engine = new Random¥Engine¥Mt19937(1234);
$randomizer = new Random¥Randomizer($engine);
従来の関数 Random¥Randomizer
クラス
mt_rand(), random_int() getInt()
random_bytes() getBytes()
shuffle() shuffleArray()
str_shuffle() shuffleBytes()
str_shuffle('abc’);
✓ 乱数生成用クラスを定義,独立した状態保持が可能になった
✓ 新しい乱数生成エンジンに対応:PCG64 (pcg_onseq-128-xsl-rr-64)またはXoshiro256**
PHP 8.1におけるmbstringの動作修正
26
◼ PHP 8.1.0において,シフトJIS・Unicode間の文字コード変換がJIS規格(JIS X
0201)に基づく定義に変更された.
◼ 従来はMS社によるデファクト標準に基づいており,過去のコードとの互換性
の問題を発生するため,PHP 8.1.8(7/7リリース)においてリバートされた.
echo mb_convert_encoding("¥x5C","UCS2","SJIS");
0x005C (半角バックスラッシュ)
従来のPHP
0x00A5(円記号)
PHP8.1.0~8.1.7
シフトJISの¥をUnicodeに変換
PHP の将来
◼ PHPスクリプトの用途拡大:Opcache(プリローディング)+JIT+FFIの活用
1. PHPエクステンション:C言語による記述からPHPによる記述へ(FFI)
2. 計算負荷が高いアルゴリズムのPHPによる実装:機械学習・AI等 (PHP-ML, Rubix ML)
⇒ ただし,Rubix MLの例ではTensorエクステンションの方が大幅(約10倍)速い
27
入力処理(C言語)
外部API実行
PHPスクリプト
従来のエクステンション(C言語)
出力処理(C言語)
PHP出力
入力処理(PHP)
外部API実行
PHPスクリプト
FFIエクステンション(PHP)
出力処理(PHP)
PHP出力
https://rubixml.com/
Rubix ML
PHPユーザ相互の情報交換
およびコミュニティの健全な発展
設立趣旨 活動内容
ドキュメント整備
セミナー/イベント
メンバー/スタッフ
国際化
Web/SNS
• PHPユーザ会員と思ったらメンバー
• 運営してみるのも楽しいかも
日本PHPユーザ会
(2000年4月発足)
PHPカンファレンス
28
PHP勉強会
29
◼ 2022年のPHPカンファレンスは,新型コロナウイルス(COVID-19)感染症拡大
防止に配慮しつつ, 3年ぶりに対面での開催となります.
◼ 今年も,二日間,思う存分お楽しみください!
◼ オンライン開催では「YouTube Live」を利用したライブでのセッションを始め、
オンラインのコンテンツについてもお楽しみください。
PHP Conference Japan 2022

More Related Content

What's hot

Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
cohama
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
pocketberserker
 
マルチコア時代の並列プログラミング
マルチコア時代の並列プログラミングマルチコア時代の並列プログラミング
マルチコア時代の並列プログラミング
Akihiko Matuura
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 

What's hot (20)

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
 
マルチコア時代の並列プログラミング
マルチコア時代の並列プログラミングマルチコア時代の並列プログラミング
マルチコア時代の並列プログラミング
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
unique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるときunique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるとき
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
 
OpenAI FineTuning を試してみる
OpenAI FineTuning を試してみるOpenAI FineTuning を試してみる
OpenAI FineTuning を試してみる
 
Parser combinatorってなんなのさ
Parser combinatorってなんなのさParser combinatorってなんなのさ
Parser combinatorってなんなのさ
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
 
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋
 
RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 

Similar to PHPの今とこれから2022

なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
 
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Yuya Yamaki
 

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

PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
PHPの今とこれから2018
PHPの今とこれから2018PHPの今とこれから2018
PHPの今とこれから2018
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
 
PHPの今とこれから2016
PHPの今とこれから2016PHPの今とこれから2016
PHPの今とこれから2016
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
PHPの今とこれから2008
PHPの今とこれから2008PHPの今とこれから2008
PHPの今とこれから2008
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
PHPの今とこれから2006
PHPの今とこれから2006PHPの今とこれから2006
PHPの今とこれから2006
 
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
 
PHPの今とこれから2007
PHPの今とこれから2007PHPの今とこれから2007
PHPの今とこれから2007
 
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うレガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
 
FuelPHP活用事例
FuelPHP活用事例FuelPHP活用事例
FuelPHP活用事例
 

More from Rui Hirokawa

More from Rui Hirokawa (16)

PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
日本PHPユーザ会の紹介
日本PHPユーザ会の紹介日本PHPユーザ会の紹介
日本PHPユーザ会の紹介
 
PHPの中の人によるパネルディスカッション
PHPの中の人によるパネルディスカッションPHPの中の人によるパネルディスカッション
PHPの中の人によるパネルディスカッション
 
PHPの今とこれから2009
PHPの今とこれから2009PHPの今とこれから2009
PHPの今とこれから2009
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語る
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語る
 
php.netの歩き方
php.netの歩き方php.netの歩き方
php.netの歩き方
 
PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~PHP4の今 ~日本語対応と最近のトピックス~
PHP4の今 ~日本語対応と最近のトピックス~
 
PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017
 
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の今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
 

PHPの今とこれから2022