伝える第7回- 今すぐ使える
PHP開発のあれこれ-
AGENDA
1. 伝えるとは
2. 自己紹介
3. 最近のphp界隈の流れ
4. 今さら聞けないcomoser
5. パッケージ管理の基本
6. composerコマンド
7. コーディング規約チェック
8. PHPコードの静的解析
9. PhpStorm
10. .editorconfig
11. Vagrant とAnsible
伝えるとは
「伝える」とはスピーカーが
伝えたいことをただ伝えて、
質問タイムは薄めの勉強会です。
自己紹介
おまえ誰よ
フリーランスのエンジニア
趣味
プログラミング
サーバー構築
スキル
php
フロントエンドやりたい
Ansible
最近のPHP界隈の流れ
フルスタックからコンポーネント指向へ
マイクロフレームワークの台頭
PEARからcomposerへ
PSRの策定
今さら聞けないCOMOSER
COMPOSERとはphpにおけるパッケージ管理ツール
昔でいうところのPEARに近いけど概念が全然違う
RUBYのgem、nodejsのnpmに相当
後発なため、かなり柔軟になっている
ただし、peclは現役。peclの代替はできない
PACKAGIST
Packagist
composerでダウンロードできる
パッケージがまとまっているサイト
遅い
Packagist jp
Packagistが遅いために作られた日本のミラーサイト
下記コマンドで設定を変更できる
composer config -g repositories.packagist composer https://packagist.jp
PACKAGIST以外からのインス
トール
GIT リポジトリPackagistに登録されていなくても
Github、Github Enterpriseからのインストールもできる
バージョンとかもちゃんとやってくれる
SATIS
Composerプロジェクトが出している
パッケージを使うことで
自前でPackagistを立てることもできる
composerは に探しに行って、
なかったらPackagistに探しに行くという動きをする
SATISを使うと何が嬉しいかに依存パッケージを登録しておくことで、
Packagistが死んでもデプロイに影響がでない
Packagistに登録できない類の自前のパッケージを
登録しておくことで、他のものと同様にインストールできる
パッケージ管理の基本
パッケージ管理いろいろyum
apt
homebrew
npm
gem
bower
ansible-galaxy
設定ファイル
COMPOSER.JSON
パッケージを管理する設定ファイル
主にどんなパッケージをインストールするか書いておく
もしくは自分で公開するパッケージの情報を書いておく
他にはcomposerの振る舞いを記述していく
最低限のバージョン指定、追加のリポジトリなど
直接編集もできるが基本はコマンド叩くと更新される
ロックファイル
COMPOSER.LOCK
インストールするパッケージのバージョンを
完全指定してあるファイル
自動で作成/更新される
開発環境と本番環境で全く同じバージョンを
インストールするのに使ったりする
インストール先
GLOBAL
設定にもよるが
ユーザーのホームディレクトリ配下に入れるときに使う
どのプロジェクトでも使用したいものを入れる
PROJECT
プロジェクト配下のvendorディレクトリ配下に
インストールして使う
クラスとして使いたいようなものを入れる
GLOBALかPROJECTかコマンドライン的に使うものはglobalに
projectで使うものはprojectに入れる
phpcs、phpmd、phpunitなどは
コマンドラインとして使うのでglobalにいれておいたほうが
使い勝手がよい
phpunitは両projectにもいれる
コマンドラインとしてもパッケージ(クラス)としても使うため
DEVかそうでないか使用するパッケージの中には、
開発環境のみで使用したいものがある
例えばphpunit
そういったものはdevオプションを
使用してインストールすることで、
開発環境でのみインストールすることができる
タスクパッケージをインストールし終わった後に
実行するタスクを定義することができる
定義するのは設定ファイル( )
COMPOSERコマンド
GLOBAL
いきなりだが、これは実質コマンドではない
各(サブ)コマンドの前にglobalを置くことで
global環境に対してコマンドを実行する
INIT
の雛形を作る
などはインストーラーがそもそもあったりするので
インストーラーでプロジェクト作るとそもそも
が出来上がっている状態になる
REQUIRE
開発するときに最もお世話になるコマンド
パッケージのインストールに使用する
INSTALL
リポジトリからクローンしてきた直後など、環境構築時に叩くあまり叩く
機会は多くないかも
composer.lockが存在すれば、
そのバージョンの情報を元にパッケージをインストールする
なければ、composer.jsonを元にインストールする
UPDATE
よく使う
すでにインストールしているパッケージの
バージョンを更新したいときに使用する
これを実行することで、composer.lockも更新される
CONFIG
設定の確認ーー
ーー
リポジトリの追加Packagistに登録されているものは、
リポジトリの追加なしでインストールできる
そうでない場合はリポジトリの追加が必要
コマンドでやる場合composer global config
repositories.vendor-name/foo-codesniffer
'{"type": "vcs", "url": "https://github.com/vandor-name/foo-codesniffer.git", "version":"master"}
※改行しているけど実際は1行
COMPOSER.JSONに書く場合"repositories": [
{
"type":"package",
"package": {
"name": "vendor-name/foo-codesniffer",
"version":"master",
"source": {
"url": "https://github.com/vendor-name/foo-codesniffer.git",
"type": "git",
"reference":"master"
}
}
}
],
"require-dev": {
"vendor-name/foo-codesniffer": "dev-master"
},
注意古い環境でcomposerを動かすと、
detect_unicodeという
php.ini周りの設定のためにエラーが出ることがある。
そんなときは、
php -d detect_unicode=false /path/to/composer install
とphpのオプション指定すると使える。
コマンドと各ファイル
その1
その2
その3
コーディング規約チェック
PSRとはPHP Standards Recommendations
PSRには0から14までのカテゴリがあり、
それぞれが違う範囲をカバーしている。
ただ、全部を気にするのは辛い。
ライブラリアンは別だが
実務上は(とりあえず)PSR1-4まで気にしておけばいい。
もっというと、PSR2だけでいい。
ただ、存在は知っておこう
でないと、クラス読み込めないエラーが出た時に
どうしていいかちんぷんかんぷん
PHP-FIG
http://www.php-fig.org/
PSRは、php-figという団体が策定している
php標準のコーディング規約
php-figには各フレームワークが参加している
PSR0
オートロードに関する規約
ただし、duplicateなので、
今からやるなら後述のPSR4を使うべき
PSR1
PSR0に従うこと
クラス定義の中に読み込んだだけで影響のあるものを入れない
php.iniの値を変える
なんかいきなりechoしている
requireしている
クラスやメソッドの命名規則など
PSR2
PSR1を前提としての細かいコーディング規約
ifの括弧の位置とか。
コーディングする上で1番気にしておくべきところ。
PSR3
ロガーに関する規約
ロガーのインターフェースとか
ログレベルとか
PSR4
オートロードに関する規約
PSR0の後継
ディレクトリのパスを名前空間と揃える形のやつ
名前空間を持ち出してきてるので、5.2以前は対象外
PHP CODESNIFFER(PHPCS)
用語Rule(Source)
ruleset
Standard
report
RULE(SOURCE)
RuleといったりSourceといったりする
↓ のようなドット区切りの規約のこと
先頭から
という名前空間になっている。
RULESET
Ruleをまとめたもの
xmlで記述する
STANDARD
rulesetに付いている名前デフォルトであるのは下記
PEAR
PSR1
PHPCS
Squiz
PSR2
Zend
rulesetはインクルードできるので
使いたいRule、除外したいRuleを
うまく設定して自前のを作るとよい
REPORT
標準出力への表示形式
オプションで指定できる
summary
source
などが指定できる
コマンドイメージphpcs --standard=vendor/path/to/sniffer/ruleset.xml path/to/directory
phpcs --report=source -s path/to/file.php
実行結果の例$ phpcs /path/to/code
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERROR(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | Missing file doc comment
20 | ERROR | PHP keywords must be lowercase; expected "false" but found "FALSE"
47 | ERROR | Line not indented correctly; expected 4 spaces but found 1
51 | ERROR | Missing function doc comment
88 | ERROR | Line not indented correctly; expected 9 spaces but found 6
--------------------------------------------------------------------------------
FILE: /path/to/code/yourfile.php
--------------------------------------------------------------------------------
FOUND 1 ERROR(S) AND 1 WARNING(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
PHPCBF
phpcsのルールにそって、ある程度自動で修正してくれるツール
PHPコードの静的解析
PHP MESS DETECTOR(PHPMD)
phpのコードでバグになる可能性がある
コードを検知してくれるツール
RULESET
CodeSnifferと同様にMess Detectorも
ルールを持っている。
そのルールをカテゴライズしている単位
一つのRulesetの中にいくつかのRuleを持っている
一覧Ruleset 内容
cleancode きれいなコードかどうか
codesize コードの複雑さチェック
controversial 命名規則チェック
design 設計上の問題
naming 変数や関数の名称チェック
unusedcode 使われていない要素の検知
コマンドイメージ
PHPSTORM
PHPSTORMとはJetbrains社が出しているPHP用のIDE
2015年のPHPカンファレンスでは、6割くらいの人が使っていた
Monokaiのテーマがおすすめ
viキーバインド使える
Eclipse風のキーバインドも使える
phpcs、phpmdはリアルタイムで警告してくれる
phpunitも叩ける
phpcbfも叩ける
部分的だけど日本語対応できるらしい
ECLIPSEより良い所補完が優秀
eclipseとくらべて
Laravel + ide-helper
ファイル移動が優秀
CakeStorm
Laravel Plugin
軽い
eclipseとくらべて
syntax highlightが優秀
リファクタリングが優秀
他のIDEができることまぁ、大抵できる
デバッガを使用したステップ実行
した時にサーバーへのSFTP
git操作
ファイルの履歴管理(ローカル)
.EDITORCONFIG
.EDITORCONFIGとは様々なエディターで利用できる、共通の書式設定ファイル
改行コード
ハードタブ、ソフトタブの指定
行末に空行入れる、入れない
文字コード
などを設定ファイル化したもの
例こんな感じ
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.bat]
end_of_line = crlf
[*.yml]
indent_style = space
indent_size = 2
使い方とりあえず、このファイルをプロジェクトルートに置く
あとは、対応するエディタで開けば勝手にロードしてくれる
最近のエディタであれば、
プラグインがあることが多い
ただし、各エディタのプラグインの対応状況が
バラバラなので効かない場合もある
PHPCSとのすみ分けphpcsで賄える部分がほとんどなので、
phpcs入れてればまぁ、大丈夫。
でも、js、md、ctp、shellなどのphp以外のところを
カバーできるのでいれておいて損はない
phpcsでも、js、ctpはカバーできるけども。。
VAGRANT とANSIBLE
VAGRANTとは各種仮想マシンを操作するためのコマンドラインラッパー
操作できる仮想マシンはいくつかあるが、
VirtualBoxが一般的
pluginをインストールすれば、
AWS EC2, Azure,OpenStackなども操作できる
BOX
仮想マシンのイメージ
Boxというファイルで管理する
イメージなので基本ファイル容量がでかい
数百Mbから数Gb
VAGRANTFILE
仮想マシンの設定などを行う設定ファイル
rubyの書式で書く
ANSIBLEと組み合わせる
ANSIBLEとは環境構築やサーバーに対して
何かをするときに便利なツール
秘伝のタレ的な、サーバー構築手順を
プログラムにできる
冪等性を担保しやすい
PLAYBOOK
Playbookというファイルに
様々なタスクを書いておくことで
環境構築を行っていける
VAGRANTとANSIBLE
Vagrant単体でも十分威力を発揮するが、
Ansibleと組み合わせると鬼に金棒
Vagrantの弱点は、差分管理が難しいとこ
こんな時に困る
だからAnsibleで環境構築を
自動化しておけば、
まっさらなベースのBoxから
プロジェクト環境がすぐに作れる
ご静聴有難うございました

More Related Content

PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PDF
HTTPメッセージ、PHPの 事情ば分かっとっと?
PDF
コードを書いて理解する!Enumについて
PDF
PHPerに覚えて欲しい日本語の重要性
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PPT
2009 PHP初心者
PDF
PHP-MLを使用して気軽に機械学習にトライしてみる
PDF
PHP 8 で Web 以外の世界の扉を叩く
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
HTTPメッセージ、PHPの 事情ば分かっとっと?
コードを書いて理解する!Enumについて
PHPerに覚えて欲しい日本語の重要性
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
2009 PHP初心者
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP 8 で Web 以外の世界の扉を叩く

What's hot (19)

PPTX
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
PDF
PHPの今とこれから2018
PDF
PHP で実行中のスクリプトの動作を下から覗き見る
PPTX
Redmineで始めるチケット駆動開発
PDF
ECMAScript没proposal追悼式
PPT
PHP buildpackでhackとphalconが動いた件について
PPTX
コンピュータシステムの理論と実装10
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PDF
Phpstormちょっといい話
PPTX
PHP基礎勉強会
PDF
実用Brainf*ckプログラミング入門編
PDF
RFC: "var" Deprecation
PDF
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PPTX
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
PPTX
App Engine と いまどきのPHP
PDF
5分でわかるPHPのクロージャ(web公開版)
PDF
02 はじめてのメール送信
PDF
PHPカンファレンス2016 初心者セッション
PDF
PHPでセキュリティを真面目に考える
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
PHPの今とこれから2018
PHP で実行中のスクリプトの動作を下から覗き見る
Redmineで始めるチケット駆動開発
ECMAScript没proposal追悼式
PHP buildpackでhackとphalconが動いた件について
コンピュータシステムの理論と実装10
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
Phpstormちょっといい話
PHP基礎勉強会
実用Brainf*ckプログラミング入門編
RFC: "var" Deprecation
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
App Engine と いまどきのPHP
5分でわかるPHPのクロージャ(web公開版)
02 はじめてのメール送信
PHPカンファレンス2016 初心者セッション
PHPでセキュリティを真面目に考える
Ad

Viewers also liked (12)

DOC
CURRICULUM____VITAE CIVIL ENGIMEER
DOCX
여성흥분제『 http://x6.na.to 』 톡 w2015 ♡ 여성흥분제판매,여성흥분제약효,여성흥분제구입처,여성흥분제구매처,여성흥분제파는곳
PDF
dsadw
PPTX
Sun Bear Overview
PPTX
Wexcoin presentation russ.pptx
PPTX
STL Lab Yubo Liu: Rethinking the Evolution of China's University Campus Morph...
PDF
Certificazione delle competenze. Digital Certification Program. Paolo Brizzi
PDF
JCIHK Recommended course - supervising skills - Be the SUPERvisor
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
KEY
フラットなPHPからフレームワークへ
CURRICULUM____VITAE CIVIL ENGIMEER
여성흥분제『 http://x6.na.to 』 톡 w2015 ♡ 여성흥분제판매,여성흥분제약효,여성흥분제구입처,여성흥분제구매처,여성흥분제파는곳
dsadw
Sun Bear Overview
Wexcoin presentation russ.pptx
STL Lab Yubo Liu: Rethinking the Evolution of China's University Campus Morph...
Certificazione delle competenze. Digital Certification Program. Paolo Brizzi
JCIHK Recommended course - supervising skills - Be the SUPERvisor
PHP7で変わること ——言語仕様とエンジンの改善ポイント
フラットなPHPからフレームワークへ
Ad

Similar to 今すぐ使えるPHP開発のあれこれ (20)

PDF
Phpでアプリケーションサーバー
PPTX
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
PPTX
20110910 闇鍋的php魔改造
PDF
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PPT
NanoA
PDF
5分でわかるphalcon php
PDF
5分でわかるPhalconPHP
PDF
CodeIgniter Con Tokyo 2011 資料
PPT
20090801phpstudy Sanemat
PDF
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
PDF
AspectMock 最強のモッキングフレームワーク
PDF
PHP Now and then 2018 : WordPress Special Edition
PDF
Zend OPcacheの速さの秘密を探る
PPTX
3流プログラマーから見たPhalconとWISP
PDF
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
KEY
php-timecopを実戦投入してみた
PDF
フレームワークを使うべき 3 つの理由
PDF
PHPの今とこれから2016
PDF
FuelPHP活用事例
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
Phpでアプリケーションサーバー
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
20110910 闇鍋的php魔改造
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
NanoA
5分でわかるphalcon php
5分でわかるPhalconPHP
CodeIgniter Con Tokyo 2011 資料
20090801phpstudy Sanemat
第21回関西PHP勉強会 ReactPHPは もっと流行って欲しい #phpkansai
AspectMock 最強のモッキングフレームワーク
PHP Now and then 2018 : WordPress Special Edition
Zend OPcacheの速さの秘密を探る
3流プログラマーから見たPhalconとWISP
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
php-timecopを実戦投入してみた
フレームワークを使うべき 3 つの理由
PHPの今とこれから2016
FuelPHP活用事例
PHPCON_TOKYO_2022_Bigginer.pptx

今すぐ使えるPHP開発のあれこれ