SlideShare a Scribd company logo
1 of 85
このPHP QAツールが
すごい!2019
PHP Conference Japan 2019
sasezaki
Dec 01, 2019
なぜQAツール?
「うーん、このコードは、うんこ!」
「コードの評価に、
測定・判定基準を示せない
ということでしょうか?」
「うーん、このコードは、うんこ!」
「 言い換えで現実から
目を背けるな!」
「うーん、このコードは、いかn!」
経済産業省『システム及びソフトウェア品質の見える化、確保及び向上のためのガイド』より
https://www.meti.go.jp/policy/it_policy/softseibi/metrics/product_metrics.pdf
今回の発表では主に内部品質に係る
QAツールの話をします
アジェンダ
 PHP QAツールの歩み
 CI/CD利用の浸透とともに注目を集めるQAツールの
歩みをふりかえり、昨今の事情を鑑みます
 PHP QAツール最前線
 QAツールのリスト紹介
 堅牢なコードのための、静的解析・コーディングスタン
ダード検査・リファクタリングツールについて深堀りし
ます
 QA ツールの段階的適用
 サンプルコードを例にQAツールを段階的に適用していき
ます
 まとめ
品質を評価するには、判定するツールの力
が必要です。
だから、PHP QAツールの全容とこれまで
の歩みを振り返りましょう。
PHP QAツールの歩み
brief history around PHP QA tool
~2007
xUnit、 コーディングスタンダード、 メトリクス、
そしてCIへの礎が築かれた時期
 phpt
 PHPUnit 2001
 phing 2002
 Hudson(のちのJenkins) 2005
 phpUnderControl + CruiseControl
 lime, simpletest
 PHP_CodeSniffer
~ 2007
2008~2011
RAD、エンタープライズアーキテクト の時代と
ともに複雑化するプロジェクトへの模索の時期
2008 ~ 2011 PHPSpec 2008
 PHP 5.3 2009
 PHPMD 2010
 Mockery 2010 0.6.0
 travis ci PHPサポート 2011
 『REAL-WORLD SOLUTIONS FOR DEVELOPING HIGH-
QUALITY PHP FRAMEWORKS AND APPLICATIONS』2011
 php-project-wizard
 PHPUnit, phpcs , phpmd, phploc などを導入するためのプロジェクトセット
 Behat 2011 1.0.0
 composer 2011
 php-cs-fixer 2012
2012~2015
アサーションやコードジェネレートへの
折り合いが落着き、
安定なパッケージ・品質測定への
開発に歩み始めた時期
2012 ~ 2015 nikic/php-parser 2012 (0.9.0)
 Trismegiste/Mondrian 2013 ダイアグラム
 PHPVisualDebt 2014 騒動
 php7cc Compatibility Checker 2015
 scrutinizer-ci 2013 頃 PHP CI SaaSの先駆け
 ラスマスが各OSSにPull Request 2013
 Roave Security Advisories 2014 ~
 phpcs-calisthenics-rules 2014 1.0.0
2012年のプレゼン「Object Calisthenics Applied to PHP」を経てのルール
 phpbench 2015
 PHP 7.0 2015 Dec
Found using static analyzer: hhvm --hphp -t analyze
QA ツールの分類 ※Qafooの2016年スライドに基づく
実現したいこと ツール名
コーディングスタイルのチェ
ック
PHP_CodeSniffer
コードメトリクスの計測 PHPLOC
冗長化したコードの検出 PHP Copy/Paste
Detector (PHPCPD)
複雑度と結合度のチェック PHP Depend
潜在的なバグの検出 PHP Mess Detector
(PHPMD)
ソフトウェア層(コントローラなど)
の依存関係をチェック
Deptrac
https://qafoo.com/talks/16_10_internation_php_conference_automating_architecture_constraint_checks.pdf
https://developers.gnavi.co.jp/entry/ipc2016-report3
2016~
AST を 軸に、静的解析による
堅牢なコード構築の時代
2016~ exakat May 2015 v-0.2.0
 phan Dec 2015 0.1
 DeptracApr 2016 プロジェクトでのレイヤ構造をルール化
 phpstan July 2016 0.1.0
 localheinz/phpstan-rules Nov 2018 0.1.0
 phpstan-exception-rules Jun 2018 0.1.0
 psalm Nov 2016 0.1.0
 roave/you-are-using-it-wrong May 2019 1.0.0
 dePHPend Oct 2016 0.1.0
 phpmnd Magic Number Detector Apr 2017 1.0.0
 rector July 2017
 Infection もとはトークンベースのhumbug July 2017 0.1.0
 Roave Backward Compatibility Check May 2018 1.0.0
2019年末 PHPを取り巻く状況
PHP 7 前提での型宣言/静的解析時代
ただし、phan/psalmでの型アノテーション・ジェネリク
ス※後述 が広く普及・サポートされている訳ではない
多言語での現状
JS … flowtype、そしてTypeScript
Python … PEP 484 mypy
Ruby … Sorbet, Ruby3 型定義ファイル
…SaaSでの冪等なデプロイ、ならびに
PHP 8 でのpreloadを前提とした
ビルド時代に・・・まだなってはいない
高度に解析できる土台を手に入れ、
堅牢なコードを構築する枠組みは
すぐそこにある!
我々は悲しみを減らせることができる!
> 静的解析の実行に対して
"ある程度でのあきらめが肝心"
> 静的解析の実行に対して
"ある程度でのあきらめが肝心"
あきらめが早すぎる!
みなさん、今のPHP QAツールの
ポテンシャルを探索してないのでは
?
品質を評価するには、判定するツールの力が必要です。
だから、PHP QAツールの全容とこれまでの歩みを振り返りま
しょう。
しかし、現在では出来合いの解析ツールの
セットアップなどに留まり、近年のPHPに
おける解析検査の可能性を把握できてはい
ないではないでしょうか?
PHP QAツール最前線
Awesome PHP QA tools beyond
2019
QA ツールのリスト
jakzal/toolbox
静的解析Dockerイメージ集
jakzal/phpqaのベース
phpqa.io
※ 継続的検査SaaS の類(SymfonyInsight、PrettyCIなど)や、
デバッガー・プロファイラー・サンプラー(TidewaysやPHPSpyなど)は
上記に掲載ありません。
QA適用場面のレイヤーを
どのように捉え、
ツールを吊り上げるべきか?
QA 高品質化への依存関係ピラミッド
IPC - Aggressive PHP Quality Assurance in 2019 | Marco Pivetta
https://www.youtube.com/watch?v=8rdTSYljts4
IPC - Aggressive PHP Quality Assurance in 2019 | Marco Pivetta
https://www.youtube.com/watch?v=8rdTSYljts4
QA 高品質化への依存関係ピラミッド
システム要件 を満たし、
静的解析でエラーとならないコードにし、
テストとミューテーション解析で要件を満たしていることを試験し、
安定性が崩れていないかを確認し、
最新化を常に行えるようにして、セキュリティを担保し、
 Dockerなど
 依存性の確認 (maglnet/composer-require-checker など )
 phan, PHPStan とプラグイン(no-floaters), psalm など
 PHPUnit、Behat、CodeCeption などなど
 Infection
 roave/backward-compatibility-check
 roave/security-advisories
 Dependabot
システム要件 をcomposer-require-checkerであぶりだす
堅牢なコードのためのコード解析を掘る
• コーディングスタンダードチェッ
ク
• リファクタリングツール
• 静的解析ツール
厳密なコーディング規約
により腐臭を取り除く
slevomat/coding-standard
https://github.com/slevomat/coding-standard
 コードの振る舞いを安全となるように倒す
 declare(strict_types = 1)の強制や、if文内でのアサイン禁止 …など
 デッドコードの検出
 利用されないパラメータ、クラスのインポートのuse 、 …など
 一貫したコードフォーマットルール
利用しているプロジェクト
https://packagist.org/packages/slevomat/coding-standard/dependents
・doctrine/coding-standard
・cakephp/cakephp-codesniffer
・zendframework/zend-coding-standard :develop
…など
slevomat/coding-standardでの検出例
一貫したフォーマットルール違反を検出する
「意味のない三項演算子を禁止したい!」
slevomat/coding-standardでの検出例
一貫したフォーマットルール違反を検出する
UselessTernaryOperator sniffによる検出
より良いオブジェクト志向のための美容
により、メンテナンス性・可読性・テスト容易性を上げる
Object-calisthenics/
phpcs-calisthenics-rules
https://github.com/object-calisthenics/phpcs-calisthenics-rules
『The ThoughtWorks Anthology』で発明された
9つのルールに感化されたwilldurand(Propel, FriendsOfSymfonyのメンテナ)
のブログ記事https://williamdurand.fr/2013/06/03/object-calisthenics/ から
派生したコーディングスタンダードルール
提唱されている9つのルール
 Only One Level Of Indentation Per Method
 Don’t Use The ELSE Keyword else禁止
 Wrap All Primitives And String
 First Class Collections
 One Dot Per Line
 Don’t Abbreviate 短縮禁止
 Keep All Entities Small
 No Classes With More Than Two Instance Variables
 No Getters/Setters/Properties
リファクタリングを自動化する
により、レガシーコードをアップグレードしていく
rector
https://getrector.org/
 PHP 各バージョンアップでのコードベースの変更
 PHP 7.4向けのコード変更パッケージも用意
 ClosureToArrowFunctionRector など
 各フレームワーク・ライブラリでのバージョンアッ
プへの追随パッケージ
 コード品質・SOLIDに関するリファクタリング
※ コーディングスタンダードの各fixerと被る領域
型アノテーションを記述する
により、詳細な型の制限をもたらし、プログラムを防御する
• phan
• psalm
• PHPStan
型アノテーションを記述する
により、詳細な型の制限をもたらし、プログラムを防御する
PHP における型と
DocCommentのこれまで
各静的解析ツール導入の前に・・・
PHPにおける型とDoc Commentのこれまで
PHP 4
• 名前空間がない
• クラス名重複避けのために冗長な
命名により可読性が悪い
• アクセス修飾子がない
• カプセル化が担保できず、安全に不安が残る
抱えていた問題
PHPにおける型とDoc Commentのあれこれ
PHP 5.3 ~
• 引数へのスカラー型宣言が
できない
• 引数の型が保証されず堅牢にならない
抱えていた問題
PHPにおける型とDoc Commentのあれこれ
PHP ~ 7.3
• プロパティの型宣言が
できない
• やっぱり堅牢さが足りない
抱えていた問題
PHPにおける型とDoc Commentのあれこれ
PHP 7.4~
PHPにおける型とDoc Commentのあれこれ
statusって設定可能なのは何?
optionには何が設定できるの?
残る不安・混乱
静的解析を始めだすと、PHPに型が
足りないのが改めて認識できる
• スカラー値の引数型宣言 7.0
• nullablな型 7.1
• クラスプロパティの型 (typed property) 7.4
• Enum
• クラスの可視性 (internal)
• イミュータブル (readonly)
• ジェネリクス/テンプレート
• コールバックへの型づけ
• 交差型 、 Union型 8.0
• 連想配列がオブジェクトもどき arrayは嘘
• 純粋ではないリスト arrayは嘘
PHPにおける型とDoc Commentのあれこれ
型アノテーションを記述する
により、詳細な型の制限をもたらし、プログラムを防御する
Enum
array-shapes
型アノテーションを記述する
により、詳細な型の制限をもたらし、プログラムを防御する
phan
psalm
PHP でも型検査を行える
異常者に近づけるのが
お分かりいただけますでしょうか?
https://twitter.com/mizchi/status/1166503910569172992
自分の利用している
ライブラリには、
型アノテーションの記述がないです
!!
※ ここで言うライブラリとは、
vendor/google とか vendor/psr とかの
話をしています。
ベンダーライブラリへの型スタブ
により静的解析での型アノテーションでのエラーを検出する
psalmによるスタブ利用例のご紹介
自分の利用している
ライブラリには、
型アノテーションの記述がないです
!!
1.元のコードファイルをコピーします
vendor/phpcon2019/shop-mall/PetStoreApi.php
stubs/phpcon2019/shop-mall/PetStoreApi.php
2. 型アノテーションを追加します
3. スタブに追加します。
stubs/phpcon2019/shop-mall/PetStoreApi.php
psalm.xml
4. 完成!
期待されない文字列・
連想配列への型・必須チェックが行えた!
プラグインとして公開してもらえるとさらに良い
https://packagist.org/?type=psalm-plugin
品質を評価するには、判定するツールの力が必要です。
だから、PHP QAツールの全容とこれまでの歩みを振り返りましょう。
しかし、現在では出来合いの解析ツールのセットアップなどに留まり、近年のPHPに
おける解析検査の可能性を把握できてはいないではないでしょうか?
近年のQAツールの発展により、あなたのプロ
ジェクトコードをより強固にする土壌は揃って
います。
したがって、各QAツールに改善を積み重ねて
いきましょう。
QAツールの段階的適用
step by step
applying QA
tool
サンプルコード:電話番号のチェック
https://devblog.thebase.in/entry/2019/06/13/110000 のコードから(一部改変)
サンプルコードに対するテストコード
テスト実行
数値以外のチェックが
できていない
カバレッジの確認
アサーションの追加
カバレッジ100%
…そして、バグ判明
意図しない挙動が発生しうる関数をコーディングスタン
ダードで禁止する
phpcs.xml での設定
fail で落ちるのを確認する
プログラムを修正し、
CSチェックにてfailしたものが通るのを確認するとともに
テストがパスすることを確認
「テストケース以外の要件が
コーディングされている」
ミューテーション解析で
テストケースに漏れがあるのを確認する
infection.log
テストケースを追加し、
テストケースの不足がないことを確認する
…そして、バグ判明
「ネットからコピペした正規表現ですので、
僕は悪くありません」
「正規表現によるバリデーションでは ^ と $ ではなく A と z を使おう」
https://blog.tokumaru.org/2014/03/z.html
「特定の目的にそったQAツールが
見当たらないなら
注意するしかないよね?」
「正規表現によるバリデーションでは ^ と $ ではなく A と z を使おう」
https://blog.tokumaru.org/2014/03/z.html
「目的にあったQAツールがなければ
自作しよう」
「目的にあったQAツールがなければ
自作しよう」
 自作 PHPStanプラグインの話
 自作 Infectionミューテーターの話
 自作 PHP_Codesniffer 用 Sniffの話
 自作 スタブの話
おまけの自作しましょう話
まとめ
品質を評価するには、判定するツールの力が必要です。
だから、PHP QAツールの全容とこれまでの歩みを振り
返りましょう。
しかし、現在では出来合いの解析ツールのセットアッ
プなどに留まり、近年のPHPにおける解析検査の可能
性を把握できてはいないではないでしょうか?
近年のQAツールの発展により、あなたのプロジェクト
コードをより強固にする土壌は揃っています。
したがって、各QAツールに改善を積み重ねると、品質
への不安を減らしていけるのが分かります。
これらにより、開発で真に考えたかった機能の詳細に
立ち向かえていきます。
今日の主な話は
 PHPそのもののアップデートや、開発手法・周
辺のエコツールの発展が行われてきたこと
 昨今のQAツールの助力を得て、内部品質を向
上する手助けの土壌が育っていること
 解決すべき問題を見極めつつ、QAツールを適
用していきましょう
 場合によっては自作も
小話
「静的解析ツールはどれを使えば良いのか分からない」 どちらも使
えば良いのでは?
「なんで、PHPStormの話しなかったの?」VS CodeよりLSP サポート
が手厚ければ・・
型アノテーションからPHPStormのメタ作れるといいですね。
PHPのコードがPHPのコードから生成されるようになったので、静的
解析が一貫性が来る時代になりましたね!(arginfoがstubから生成で、
過去のprotoから変更で)
PHPStanのプラグインのほうが作るのが楽で、コード規約っぽいけど
PHPStanプラグインになってるの、どう?(クラスにfinal宣言とか)
特定のメソッド呼び出しを禁止する方法は、いくつかそれっぽいの
(php-ast-to-xml、phpstan-forbidden-method-calls-rule、phinder)浮かぶのでで
すが、検討したところ、まあ
エラーハンドリングの話は深いので、thecodingmachine/safe はまた次
回・・
アノテーションの種類(アサーション・ORM・API用など)おおすぎ
問題
ご清聴ありがとうございました

More Related Content

What's hot

What's hot (20)

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
paizaのオンラインジャッジを支えるDockerとその周辺
paizaのオンラインジャッジを支えるDockerとその周辺paizaのオンラインジャッジを支えるDockerとその周辺
paizaのオンラインジャッジを支えるDockerとその周辺
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 

Similar to このPHP QAツールがすごい!2019

Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
 

Similar to このPHP QAツールがすごい!2019 (20)

20170420 infoteria apiセミナーupload
20170420 infoteria apiセミナーupload20170420 infoteria apiセミナーupload
20170420 infoteria apiセミナーupload
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
 
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
 
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
 
心・技・態 -LINEにおける改善の真実-
心・技・態 -LINEにおける改善の真実-心・技・態 -LINEにおける改善の真実-
心・技・態 -LINEにおける改善の真実-
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
[Biz reach qa meetup] qa team_build
[Biz reach qa meetup] qa team_build[Biz reach qa meetup] qa team_build
[Biz reach qa meetup] qa team_build
 
OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSC
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
QA SUMMIT in GDC2013
QA SUMMIT in GDC2013QA SUMMIT in GDC2013
QA SUMMIT in GDC2013
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
楽天WEB APIワークショップ@東工大
楽天WEB APIワークショップ@東工大楽天WEB APIワークショップ@東工大
楽天WEB APIワークショップ@東工大
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応
 
PowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるPowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみる
 
機敏な製品リリースを可能にする企業内の連携モデルを提示するScaled Agile Framework (SAFe) のご紹介
機敏な製品リリースを可能にする企業内の連携モデルを提示するScaled Agile Framework (SAFe) のご紹介機敏な製品リリースを可能にする企業内の連携モデルを提示するScaled Agile Framework (SAFe) のご紹介
機敏な製品リリースを可能にする企業内の連携モデルを提示するScaled Agile Framework (SAFe) のご紹介
 
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
 

More from sasezaki

なぜ、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
 
phpcon2013_zf
phpcon2013_zfphpcon2013_zf
phpcon2013_zf
sasezaki
 
Awesome PHP extensions! Top 50!
Awesome PHP extensions! Top 50!Awesome PHP extensions! Top 50!
Awesome PHP extensions! Top 50!
sasezaki
 
PHP 触れてはいけないほうの闇の話
PHP 触れてはいけないほうの闇の話PHP 触れてはいけないほうの闇の話
PHP 触れてはいけないほうの闇の話
sasezaki
 
これからのPHPライブラリとパッケージマネージメントの話をしよう
これからのPHPライブラリとパッケージマネージメントの話をしようこれからのPHPライブラリとパッケージマネージメントの話をしよう
これからのPHPライブラリとパッケージマネージメントの話をしよう
sasezaki
 
PHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend FramewrokPHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend Framewrok
sasezaki
 
"More" Introduction to Zend Tool
"More" Introduction to Zend Tool"More" Introduction to Zend Tool
"More" Introduction to Zend Tool
sasezaki
 
PHP & Queue
PHP & QueuePHP & Queue
PHP & Queue
sasezaki
 
Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。
sasezaki
 

More from sasezaki (12)

なぜ、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拡張がすごい!2017
このPHP拡張がすごい!2017このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
 
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
 
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
 
phpcon2013_zf
phpcon2013_zfphpcon2013_zf
phpcon2013_zf
 
Awesome PHP extensions! Top 50!
Awesome PHP extensions! Top 50!Awesome PHP extensions! Top 50!
Awesome PHP extensions! Top 50!
 
PHP 触れてはいけないほうの闇の話
PHP 触れてはいけないほうの闇の話PHP 触れてはいけないほうの闇の話
PHP 触れてはいけないほうの闇の話
 
これからのPHPライブラリとパッケージマネージメントの話をしよう
これからのPHPライブラリとパッケージマネージメントの話をしようこれからのPHPライブラリとパッケージマネージメントの話をしよう
これからのPHPライブラリとパッケージマネージメントの話をしよう
 
PHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend FramewrokPHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend Framewrok
 
"More" Introduction to Zend Tool
"More" Introduction to Zend Tool"More" Introduction to Zend Tool
"More" Introduction to Zend Tool
 
PHP & Queue
PHP & QueuePHP & Queue
PHP & Queue
 
Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。
 

このPHP QAツールがすごい!2019