Soumettre la recherche
Mettre en ligne
Php development efficiency improvement
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
291 vues
伸
伸幸 茂木
Suivre
PHPの開発効率を向上させるためのナレッジをまとめています。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 51
Télécharger maintenant
Recommandé
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
Shintaro Kurachi
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識
Fumito Mizuno
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka
Recommandé
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
Shintaro Kurachi
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
京大 マイコンクラブ
安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識
Fumito Mizuno
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
Yoshio Hanawa
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
Phpstormちょっといい話
Phpstormちょっといい話
Hisateru Tanaka
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
sasezaki
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
どこに何を書くのか?
どこに何を書くのか?
pospome
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
takenao
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
pospome
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
このPHP QAツールがすごい!2019
このPHP QAツールがすごい!2019
sasezaki
PHP7はなぜ速いのか
PHP7はなぜ速いのか
Yoshio Hanawa
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
shinjiigarashi
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
C#の書き方
C#の書き方
信之 岩永
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
広がる .Net
広がる .Net
信之 岩永
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
IDEALIZE YOU
IDEALIZE YOU
佑介 九岡
php-src の歩き方
php-src の歩き方
do_aki
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
Rui Hirokawa
Contenu connexe
Tendances
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
Yoshio Hanawa
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
sasezaki
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
どこに何を書くのか?
どこに何を書くのか?
pospome
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
takenao
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
Yoshio Hanawa
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
pospome
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
このPHP QAツールがすごい!2019
このPHP QAツールがすごい!2019
sasezaki
PHP7はなぜ速いのか
PHP7はなぜ速いのか
Yoshio Hanawa
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
shinjiigarashi
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
C#の書き方
C#の書き方
信之 岩永
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
広がる .Net
広がる .Net
信之 岩永
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
IDEALIZE YOU
IDEALIZE YOU
佑介 九岡
Tendances
(20)
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
どこに何を書くのか?
どこに何を書くのか?
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
このPHP QAツールがすごい!2019
このPHP QAツールがすごい!2019
PHP7はなぜ速いのか
PHP7はなぜ速いのか
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
C#の書き方
C#の書き方
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
広がる .Net
広がる .Net
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
IDEALIZE YOU
IDEALIZE YOU
Similaire à Php development efficiency improvement
php-src の歩き方
php-src の歩き方
do_aki
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
Rui Hirokawa
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
5分でわかる静的解析入門
5分でわかる静的解析入門
Kenta USAMI
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura
エンジニアという職業について
エンジニアという職業について
Hisatoshi Kikumoto
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
Yuta Ohashi
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
Shinichiro Yoshida
5分でわかるphalcon php
5分でわかるphalcon php
Yusaku Kinoshita
5分でわかるPhalconPHP
5分でわかるPhalconPHP
Shohei Tai
俺のDrupalとPSR-2が修羅場すぎる
俺のDrupalとPSR-2が修羅場すぎる
iPride Co., Ltd.
Redmine plugin ハンズオン
Redmine plugin ハンズオン
Haruyuki Iida
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
Hideo Kashioka
PHP初心者セッション2013
PHP初心者セッション2013
Hideo Kashioka
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
DIVE INTO CODE Corp.
Similaire à Php development efficiency improvement
(20)
php-src の歩き方
php-src の歩き方
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
OSC福岡 20111203
OSC福岡 20111203
5分でわかる静的解析入門
5分でわかる静的解析入門
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
エンジニアという職業について
エンジニアという職業について
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
5分でわかるphalcon php
5分でわかるphalcon php
5分でわかるPhalconPHP
5分でわかるPhalconPHP
俺のDrupalとPSR-2が修羅場すぎる
俺のDrupalとPSR-2が修羅場すぎる
Redmine plugin ハンズオン
Redmine plugin ハンズオン
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
PHP初心者セッション2013
PHP初心者セッション2013
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
Dernier
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Dernier
(10)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Php development efficiency improvement
1.
【PHP入門】開発効率向上のためのナレッジ紹介 2018/07/25 株式会社 Rosso 茂木 伸幸 1
2.
自己紹介 • 株式会社 Rosso
技術推進室 TechLead • 主な業務 • Webアプリケーション開発・保守 • 言語 • PHP、Ruby • フレームワーク • Laravel、ZendFramework、Rails 茂木 伸幸 も ぎ の ぶ ゆ き Qiita(n_mogi) 2
3.
本日のアジェンダ • PHPの概要 • 静的コード解析ツールの説明 •
PHPUnitの説明 • 「Laravel」の便利機能の紹介 3
4.
今回の説明で得られる知識 • PHPの開発PJにて、整ったコードを書くためのツールの使い方 • PHPUnitの使い方 •
Laravelの基礎知識 4
5.
PHPの概要 5
6.
PHPとは? • Webアプリ開発の世界で広く使用されているスクリプト言語。 • HTMLの親和性が高い。 •
すぐに画面を表示させることが可能で学習コストも比較的低い。 • LaravelやCakePHPなど、web開発を円滑に進めるためのFWも 多く存在する。 6
7.
静的コード解析ツールの説明 7
8.
静的コード解析ツールとは? • PHPのソースコードのチェックをしてくれるツール。 • コーディング規約違反、冗長なコードを見つけてくれるなど、 複数のものが存在する。 •
メリット • 人が手動でチェック・修正するよりもツールに任せた方が効率がかな り高くなる。 8
9.
今回紹介するツール • PHPCS • PHPMD ⇒
コーディング規約違反をチェック ⇒ 冗長なコードをチェック 9
10.
ツールその① 〜PHPCS〜 • 「PHP_CodeSniffer」の略称。 •
PHPパッケージ管理ツール「composer」でインストールでき る。 • 機能 • コードがコーディング規約に合っているかをチェックしてくれる。 10
11.
PSR-2 • 今回採用するコーディング規約名は「PSR-2」。 • そもそもPSRとは? •
PHP-FIGが策定しているコーディング規約で、世界で知られている。 • PSR-0、PSR-1というような連番になっている。 • PSR-2とは? • 多くのPJや一部のFW(Laravel)でも採用されているコーディング規約。 11
12.
PHPCSの実行 • 実行方法 • AtomなどのエディタにPHPCSのプラグインを入れる。 •
コマンドで実行する。 ⇒ 今回はコマンドで実行します! 12
13.
PHPCSの実行 • コマンド説明 • 例 $
phpcs --standard=規約名 ファイルパス $ phpcs --standard=PSR2 ./ PSR2を指定 13
14.
チェックするコード IFの後は半角スペースが必要 引数のカンマの後は 半角スペースが必要 14
15.
PHPCSの実行結果 FILE: /var/www/php/src/Phpcs/PhpcsSample.php ---------------------------------------------------------------------------- FOUND 2
ERRORS AFFECTING 2 LINES ---------------------------------------------------------------------------- 9 | ERROR | [x] Expected 1 space(s) after IF keyword; 0 found 14 | ERROR | [x] Expected 1 space between comma and argument "$b"; 0 found ---------------------------------------------------------------------------- PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY ---------------------------------------------------------------------------- 行数と警告メッセージ ファイルパス [x]となっているものは、 PHPCSと同時にインストールされるPHPCBFで自動修正可能 ⇒ PHPCBFはこの後説明します! 15
16.
PHPCBFについて • 機能 • 規約違反のコードを自動修正してくれる。 •
PHPCSと同じようなコマンドで実行できる。 • コマンド説明 • 例 $ phpcbf --standard=規約名 ファイルパス $ phpcbf --standard=PSR2 ./ 同様にPSR2を指定 16
17.
PHPCBFの実行結果 PHPCBF RESULT SUMMARY ------------------------------------------------------------------------------------------ ------------------------ FILE
FIXED REMAINING ------------------------------------------------------------------------------------------ ------------------------ /var/www/php/src/Phpcs/PhpcsSample.php 2 0 ------------------------------------------------------------------------------------------ ------------------------ A TOTAL OF 2 ERRORS WERE FIXED IN 1 FILE ------------------------------------------------------------------------------------------ ------------------------ Time: 872ms; Memory: 4Mb 修正済の数 修正できていない数 修正したファイル ⇒ 修正方法が複数パターンあるものについては 修正できないこともある 17
18.
ツールその② 〜PHPMD〜 • 冗長なPHPのコードをチェックして警告してくれる。 •
PHPパッケージ管理ツール「composer」でインストールでき る。 • 主なチェック内容 • 短すぎるor長すぎるプロパティ名、変数名などのチェック。 • 複雑すぎる表現、例えばif文の多用などをチェック。 • 未使用の引数、メソッド、プロパティをチェック。 18
19.
PHPMDで使用するルール ルール名 説明 Clean Code
Rules 綺麗なコードを保つためのルール。 Code Size Rules コードのサイズに関連するルール。 Controversial Rules PJのコーディングルールによっては採用しても良いルール。 チェック対象からは外しても問題ないことが多い。 Design Rules コード設計の問題を無くすためのルール。 危険なPHPの関数を使用していないかなどをチェックする。 Naming Rules 命名に関するルール。 プロパティ名や変数名が長すぎないかなど。 Unused Code Rules 未使用の定義に関するルール。 未使用のプロパティや変数がないかをチェックする。 19
20.
PHPMDの実行 • 実行方法 • AtomなどのエディタにPHPMDのプラグインを入れる。 •
コマンドで実行する。 ⇒ PHPCSと同じくコマンドで実行します! 20
21.
PHPMDの実行 • コマンド説明 • 例 $
phpmd ファイルパス 出力形式 ルール1,ルール2,・・・ $ phpmd ./ text cleancode,codesize,controversial,design,naming,unusedcode 21
22.
チェックするコード 【違反しているルール】 Naming Rules 【内容】 プロパティ名が短すぎる 22
23.
PHPMDの実行結果 /path/to/PhpmdSample.php:7 Avoid variables
with short names like $a. Configured minimum length is 3. 違反内容 対象ファイル:行数 ⇒ PHPMDは自動修正の機能が無いため手動での修正が必要 23
24.
PHPUnitの説明 24
25.
PHPUnitとは? • ユニットテストを自動化するためのツール。 • テストコードを書くための機能が様々存在する。 •
PHPパッケージ管理ツール「composer」でインストールでき る。 25
26.
テストコードのメリット • 人が手で画面のテストをするよりもテストコードを書いて自動 実行させた方が正確で速い。 • 修正作業の際に、予想外のところでバグが新たに生まれた時に 気がつくことができる。 •
テストコードを書くことで、対象のメソッドがどういう振る舞 いをするのが正解なのかが実装者以外にも分かる。 ⇒ PHPUnitの基本的な書き方を見ていきます 26
27.
テスト対象のコード 第1引数と第2引数の計算 結果を返すメソッド 27
28.
テストコード TestCaseクラスを継承してそ のクラスのメソッドを使う @testは、テストコードのメ ソッドという扱いになる 第1引数:期待値(予測値) 第2引数:メソッドの結果 28
29.
PHPUnitの実行 • コマンド説明 • 例 $
phpunit ファイルパス(ディレクトリ or ファイル名) $ phpunit ./tests/ 29
30.
PHPUnitの実行結果 bash-4.2# phpunit ./tests/ PHPUnit
7.2.7 by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: 419 ms, Memory: 4.00MB OK (1 test, 1 assertion) テストが通った数と割合 実行に要した時間とメモリ テストメソッドの数と アサーションメソッドの数 30
31.
基本的な書き方を紹介した上で… • データプロバイダの使い方 • モックの使い方 ⇒
他に便利なPHPUnitの機能を紹介します! 31
32.
データプロバイダ • 1つのテストに対して複数パターンのデータでテストしたい場 合に有効 • データを配列形式で定義したメソッドを用意する。 32
33.
データプロバイダのコード データプロバイダー それぞれの配列の値がsum()の 引数に渡される。 @dataProviderでデータプロバ イダ名(メソッド名)指定。 テストメソッドの引数を定義 できる。 データプロバイダから引数が 渡される。 33
34.
モックの使い方 • そもそもモックとは? • あるクラスのメソッドの戻り値をダミー値にすることができる。 •
そうすることでメソッドの振る舞い(処理内容)を意識しなくて済む。 • モックが使用される場面 • メソッドの中で他のクラスのメソッドを呼んでいる場合 • 他のクラスのメソッド振る舞いを意識せずに自分のメソッドの処理だ けに集中してテストをしたい場合 ⇒ モック使用対象となるコードをまずは見ていきます 34
35.
モック化のイメージ ⇒ 実際のコードを見ていきます 【Class A】 とあるメソッド 【Class
B】 Aから呼び出されているメソッド テスト対象のメソッド モック化対象 35
36.
ソースコード 〜モック化対象〜 うるう年かどうかを boolean型で返すメソッド 36
37.
ソースコード 〜テスト対象〜 LeapYearクラスのメソッドを 呼んでいる。 前スライドのLeapYearクラスを コンストラクタに渡して プロパティにオブジェクトを入れている 37
38.
テストコード 〜モック〜 指定したクラスをモック化 モック化したクラスのメ ソッドの振る舞いを指定 38
39.
Laravelの便利機能の説明 39
40.
Laravelとは? • PHPのフレームワークで最近人気が出てきた。 • 基本はMVCモデルが採用されているフレームワーク。 •
公式ドキュメントが分かりやすく、翻訳も比較的早い。 • artisanコマンドで様々な機能が提供されていて場合によっては 開発工数を大きく削減できる。 40
41.
紹介するLaravelの機能 • マイグレーション • 認証機能の自動生成 •
ルーティング • ミドルウェア ⇒ webアプリケーション開発で良く使いそうな機能 41
42.
マイグレーション • 役割 • データベーステーブルのバージョンコントロール。 •
テーブル定義が記載されているマイグレーションファイルを利用して テーブルを作成する。 • Artisanコマンドで実行可能 • php artisan migrate(テーブル作成) • php artisan migrate:rollback(マイグレーションの巻き戻し) 42
43.
マイグレーションファイルの中身 • ソースコード(一部抜粋) public function
up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); }); } テーブル名 increments:主キー string:VARCHARカラム 43
44.
認証機能の自動生成 • Artisanコマンド • php
artisan make:auth • 自動生成されるもの • ユーザ情報テーブルのマイグレーションファイル • 認証関連の画面(ログイン、ユーザ登録等) • パスワード暗号化 ⇒ まともに自作しようとすると数日かかりそうな認証機能を 一瞬で作成してくれる 44
45.
ルーティング • そもそもルーティングとは? • ここではURLのパスを定義しているもの。 •
特定のコントローラの特定のメソッドがどのURLパスに該当するか。 • 特徴 • 単純な記述でルーティングを定義することが可能。 • Laravelの定義は自由度が高く、好きなURLパス名に簡単に出来る。 • 他のフレームワークでは、コントローラ名やメソッド名にURLパス名 が依存することが多い。 45
46.
ルーティングの書き方 Route::get(‘path1/', ’HogeController@index'); Route::get(‘path2/', ’HugaController@create'); URLパス 好きなパスを設定でき る メソッド名 コントローラ名 46
47.
ミドルウェア • 役割 • URLにアクセスした際、画面を表示させる前にフィルターをかける。 •
例)標準で用意されている認証のミドルウェア(auth) • ⇒未ログイン状態では見れない画面を定義できる。 • ルーティング定義の部分に適用させたいミドルウェア名を記載するこ とで特定のURLのみに適用させることが出来る。 47
48.
ミドルウェア使用例 Route::middleware('auth')->group(function () { Route::get(‘path1/',
’HogeController@index'); Route::get(‘path2/', ’HugaController@create'); }); ⇒ この単純な記述で未ログインでのアクセスを拒否できます ミドルウェア名 ミドルウェアを 適用させたいURLパス 48
49.
まとめ • 静的コード解析ツール • 整ったコードの作成を補助してくれるので効率良く実装を進められる。 •
PHPUnit • テストコードツールを使用することで品質を担保することができる。 • Laravel • 自動生成機能などを駆使することで開発工数の削減につながる。 49
50.
参考・引用リンク • PHPCS • https://github.com/squizlabs/PHP_CodeSniffer •
PHPMD • https://phpmd.org/ • PHPUnit • http://phpunit.readthedocs.io/ja/latest/ • Laravel • https://laravel.com/docs/ 50
51.
ご清聴ありがとうございました! 51
Notes de l'éditeur
初心者向けであることを説明する。 ツールの実例を口頭で説明する。(ジョブ組んでるのかとか)
社内勉強会を開始してみたレポート
ここまで13-14分
ここまで20分
ここまで
ここまで30分
ここまで40分くらい
Télécharger maintenant