Submit Search
PSR-3 Logger Interfaceの紹介
7 likes
10,641 views
Hiraku Nakano
第67回PHP勉強会@東京で発表した資料です。
Technology
Read more
1 of 46
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
More Related Content
PDF
gRPC入門
Kenjiro Kubota
PDF
Riderはいいぞ!
UnityTechnologiesJapan002
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
PDF
Twitterのsnowflakeについて
moai kids
PDF
HTTP/2 入門
Yahoo!デベロッパーネットワーク
PDF
オンラインゲームの仕組みと工夫
Yuta Imai
PDF
ナレッジグラフ入門
KnowledgeGraph
PDF
がんばれ PHP Fiber
infinite_loop
gRPC入門
Kenjiro Kubota
Riderはいいぞ!
UnityTechnologiesJapan002
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Twitterのsnowflakeについて
moai kids
HTTP/2 入門
Yahoo!デベロッパーネットワーク
オンラインゲームの仕組みと工夫
Yuta Imai
ナレッジグラフ入門
KnowledgeGraph
がんばれ PHP Fiber
infinite_loop
What's hot
(20)
PDF
クラシックゲームを用いたディープラーニングの近年の発展
Youichiro Miyake
PDF
研究室における研究・実装ノウハウの共有
Naoaki Okazaki
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
PDF
.NET Core 3.0時代のメモリ管理
KageShiron
PDF
【DL輪読会】Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Mo...
Deep Learning JP
PPTX
テストコードの DRY と DAMP
Yusuke Kagata
PDF
超絶技巧 Ruby プログラミング - Esoteric, Obfuscated Ruby Programming
mametter
PDF
No skk, no life.
digitalghost
PDF
Pythonによる黒魔術入門
大樹 小倉
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
PDF
Marp for VS Code で作る PowerPoint スライド
Iosif Takakura
PDF
katagaitai CTF勉強会 #5 Crypto
trmr
PDF
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
PDF
VRM 標準シェーダ MToon の使い方
VirtualCast, Inc.
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Takahiko Ito
PDF
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
Deep Learning JP
PDF
情報抽出入門 〜非構造化データを構造化させる技術〜
Yuya Unno
PDF
一般的なチートの手法と対策について
優介 黒河
PDF
DeNAの大規模ライブ配信基盤を支える技術
DeNA
クラシックゲームを用いたディープラーニングの近年の発展
Youichiro Miyake
研究室における研究・実装ノウハウの共有
Naoaki Okazaki
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
.NET Core 3.0時代のメモリ管理
KageShiron
【DL輪読会】Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Mo...
Deep Learning JP
テストコードの DRY と DAMP
Yusuke Kagata
超絶技巧 Ruby プログラミング - Esoteric, Obfuscated Ruby Programming
mametter
No skk, no life.
digitalghost
Pythonによる黒魔術入門
大樹 小倉
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
Marp for VS Code で作る PowerPoint スライド
Iosif Takakura
katagaitai CTF勉強会 #5 Crypto
trmr
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
VRM 標準シェーダ MToon の使い方
VirtualCast, Inc.
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Takahiko Ito
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
Deep Learning JP
情報抽出入門 〜非構造化データを構造化させる技術〜
Yuya Unno
一般的なチートの手法と対策について
優介 黒河
DeNAの大規模ライブ配信基盤を支える技術
DeNA
Ad
Viewers also liked
(20)
PDF
新標準PSRに学ぶきれいなPHP
Yusuke Ando
PDF
Phpをいじり倒す10の方法
Moriyoshi Koizumi
PDF
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
suno88
PDF
CodeIgniter をモダンに改造してみた
Masaru Matsuo
PDF
このPHP拡張がすごい!2017
sasezaki
PPTX
GANMA!でDDDをやってみてから1年くらい経った
Yasuyuki Sugitani
PPT
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
Statistisk sentralbyrå
PPTX
Plan de clase
catedraticoevermontes
PDF
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
PDF
صداقت حضرت مسیح موعود علیہ السلام از احادیث
muzaffertahir9
PDF
Ne principles of islam
Loveofpeople
PDF
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Tanker Communicatie
PDF
Tutorial for the ReportLinker App
ReportLinker.com
PDF
SHERRI GOODWIN Resume 1 (2)
Sherri Goodwin
PPTX
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Aleš Vidmar
PPT
Međuinduktivitet i zračni transformatori (slike)
IrmaKajd
PDF
A world without islam-graham e. fuller
MD. Monzurul Karim Shanchay
PDF
Modified maximum tangential stress criterion for fracture behavior of zirconi...
dentalid
PDF
YoonSeo Link
yoonseolink
PPSX
Happy New Year
Minh Anh Nguyen
新標準PSRに学ぶきれいなPHP
Yusuke Ando
Phpをいじり倒す10の方法
Moriyoshi Koizumi
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
suno88
CodeIgniter をモダンに改造してみた
Masaru Matsuo
このPHP拡張がすごい!2017
sasezaki
GANMA!でDDDをやってみてから1年くらい経った
Yasuyuki Sugitani
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
Statistisk sentralbyrå
Plan de clase
catedraticoevermontes
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
صداقت حضرت مسیح موعود علیہ السلام از احادیث
muzaffertahir9
Ne principles of islam
Loveofpeople
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Tanker Communicatie
Tutorial for the ReportLinker App
ReportLinker.com
SHERRI GOODWIN Resume 1 (2)
Sherri Goodwin
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Aleš Vidmar
Međuinduktivitet i zračni transformatori (slike)
IrmaKajd
A world without islam-graham e. fuller
MD. Monzurul Karim Shanchay
Modified maximum tangential stress criterion for fracture behavior of zirconi...
dentalid
YoonSeo Link
yoonseolink
Happy New Year
Minh Anh Nguyen
Ad
Similar to PSR-3 Logger Interfaceの紹介
(19)
PDF
第67回PHP勉強会LT(その2)
Hideyuki Shimooka
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
PDF
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
PDF
第67回PHP勉強会LT
Hideyuki Shimooka
PPTX
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
PDF
PHP Source Code Search with PHP
Sotaro Karasawa
PDF
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
PDF
深層学習ライブラリのプログラミングモデル
Yuta Kashino
PDF
composer-scriptsについて
Hiraku Nakano
PDF
Composerはじめました
Takashi Nojima
PPTX
♡PHPが恋しい話♡
Shinichi Takahashi
PDF
フレームワークを使うべき 3 つの理由
Kenichi Mukai
PDF
PHPの今と未来を語る
Rui Hirokawa
PDF
FukuokaPHP 3
ichikaway
PDF
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
PDF
#phpmatsuri LT大会システムの中身
Hisateru Tanaka
PPTX
やさしいGitの内部構造 - yapcasia2013
DQNEO
PDF
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
Shoken Fujisaki
PDF
グラフデータベース「Neo4j」の 導入の導入
Hisao Soyama
第67回PHP勉強会LT(その2)
Hideyuki Shimooka
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
第67回PHP勉強会LT
Hideyuki Shimooka
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
PHP Source Code Search with PHP
Sotaro Karasawa
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
深層学習ライブラリのプログラミングモデル
Yuta Kashino
composer-scriptsについて
Hiraku Nakano
Composerはじめました
Takashi Nojima
♡PHPが恋しい話♡
Shinichi Takahashi
フレームワークを使うべき 3 つの理由
Kenichi Mukai
PHPの今と未来を語る
Rui Hirokawa
FukuokaPHP 3
ichikaway
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
#phpmatsuri LT大会システムの中身
Hisateru Tanaka
やさしいGitの内部構造 - yapcasia2013
DQNEO
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
Shoken Fujisaki
グラフデータベース「Neo4j」の 導入の導入
Hisao Soyama
More from Hiraku Nakano
(8)
PDF
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
PDF
Composer並列化プラグイン #phpblt
Hiraku Nakano
PDF
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
PDF
JSON SchemaとPHP
Hiraku Nakano
PDF
こわくない同時実行制御
Hiraku Nakano
PPTX
pecl-AOPの紹介
Hiraku Nakano
PPTX
URLで遊ぼう
Hiraku Nakano
PPTX
Xml builderの紹介
Hiraku Nakano
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Composer並列化プラグイン #phpblt
Hiraku Nakano
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
JSON SchemaとPHP
Hiraku Nakano
こわくない同時実行制御
Hiraku Nakano
pecl-AOPの紹介
Hiraku Nakano
URLで遊ぼう
Hiraku Nakano
Xml builderの紹介
Hiraku Nakano
PSR-3 Logger Interfaceの紹介
1.
PSR-3 Logger Interface のご紹介 第67回PHP勉強会@東京 @Hiraku
2.
目次 • 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
3.
自己紹介 • Hiraku (中野
拓) • 某ポータルサイトのWeb プログラマ • ライブラリアン(サービス 作るのはあまり興味ない) • そろそろPHP歴5年ぐらい • PHP-FIGはROM専です https://twitter.com/Hiraku https://github.com/hirak http://blog.tojiru.net/
4.
このスライドの主張は多分に 個人の見解が混じっています おことわり
5.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
6.
最近のPHP界のトレンド? • フルスタック指向 •
コンポーネント指向
7.
最近のPHP界のトレンド? • フレームワークの一部だけ使ったり • 組み合わせたり •
マイクロフレームワークの増加 • Composer/Packagistの盛り上がり
8.
キメラ錬成 • 色々組み合わせて「ぼくの考えた最強の 怪物フレームワーク」を作れる
9.
脱・フルスタック • フレームワークにない機能も外から 持ってこれる • やるかやらないかは別 •
基本的に選択肢が増えるのはいいこと
10.
だがちょっと待ってほしい フレームワークの組み合わせ なんて可能なのか?
11.
フレームワーク間にそびえ立つ壁 • 命名規則 • コーディング規約 •
ディレクトリ構造 • 例外の使い方 • インターフェースがバラバラ …etc
12.
そこでPHP-FIGですよ • フレームワークの相互運用性について議 論するグループ http://www.php-fig.org/
13.
大御所いっぱい参加
14.
余談 • FuelPHPやCodeIgniterが入ってません • 仲悪いのかな?
15.
話を戻すと • PHP-FIGで決まったことを元に、 フレームワーク同士の相互運用性を高め ていこう!という雰囲気 • 究極的には、ありとあらゆるフレーム ワークやライブラリが組み合わせて使え る世界を目指している
16.
PHP-FIGが決定したもの: PSR(Propersed Standards Recommendation)
17.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
18.
PSR-0 Autoloading Standard
19.
PSR-0 • 要約: – クラス名は被らないようにしろ –
クラス名とファイルパスは合わせろ • 名前空間先頭はvendor prefix – Symfony¥Foo – Zend¥Foo – Acme¥Foo • Autoloaderが共通化できる
20.
PSR-1 Basic Coding Standard
21.
PSR-1 • 要約:変な作りにするな – PSR-0に従え –
ソースコードはUTF-8(without BOM)で書け – 副作用(Side Effect) はクラス定義と分割しろ • 読み込んだだけで勝手にechoすんじゃねえ • php.iniの設定を勝手に変えるな • スクリプトのロードも勝手にするな – 定数はSUPER_CASE、メソッドは camelCaseとか
22.
PSR-2 Coding Style Guide
23.
PSR-2 • ほぼコーディング規約っぽい何かです – 詳細は省略 •
PHP_CodeSnifferでチェックできます – http://pear.php.net/package/PHP_CodeSniffer/ • CS Fixerもあるよ – http://cs.sensiolabs.org/ • PSR-2準拠を謳うライブラリ増加中
24.
-ここまで前置き- 長くなりましたが
25.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
26.
PSR-3
27.
PSR-3 Logger Interface •
2013-01-05にacceptedになった • 読んで字のごとくロガーのインター フェース規約 • https://github.com/php-fig/fig- standards/blob/master/accepted/PSR-3-logger-interface.md • 今までのPSR-0,1,2と雰囲気が違う – 「PSR-2に従え」って書いてない – コーディング規約っぽくない
28.
PSR-3の基本 • ロガーはPsr/Log/LoggerInterfaceを 実装したクラス。 • psr/logに一式揃っている –
https://packagist.org/packages/psr/log • インスタンス化して利用する • ログレベル定義はsyslog(RFC5424)に 準じる – emergency, alert, critical, error, warning, notice, info, debug
29.
PSR-3準拠のロガーイメージ <?php require 'vendor/autoload.php'; class JsonLogger
extends Psr¥Log¥AbstractLogger { function log($level, $message, array $context=array()) { error_log(json_encode( compact('level', 'message') + $context )); } } $log = new JsonLogger; //このインスタンスを色々な場所で使いまわす $log->emergency('oh my god!');
30.
…正直なところ • PSR-3自体はそんなに大したことは書い てない • 読んでも「ふーん」で終わる •
ここからはロガーがPSR化されたこと の意義を考察する
31.
デバッグについて ちょっと話をそらしますが
32.
質問 • デバッグってどうやってますか? • デバッガ使ってる? •
var_dump()?
33.
割とどうでもいい(個人の見解) • デバッガはデプロイ後には役に立たない – ユーザーが体験した「不具合」を再現できれ ば使えるけど… –
ユーザーのデータがレアケースだったり再現 性がない不具合だったり…
34.
ログの力 • デプロイ後の不具合究明に役立つのが アプリケーションログ – 不具合が起きたら問題をロギングする –
Web APIなどはきちんと叩けたこともロギン グしておくとよい • アリバイとして役に立つ • ログを見れば犯人がわかる状態が理想
35.
参考:表明(assertion) • assert()でtrueになるはずの条件をコード 中に列挙しておく – assert($param
instanceof DateTime)とか – 小さなユニットテストが常に実行される状態 を作る – もしassert()がfalseを受けたらエラーを吐く • デバッグログと似た概念 • PHPのassert()は関数なので、ロガーで代 替しても性能はあまり変わらない
36.
オレが思う重要度 1. アプリケーションログの設計 2. 例外とスタックトレース =====越えられない壁====== 3.
var_dump()デバッグ 4. デバッガの使い方
37.
要するに ログは重要
38.
• 最近のPHPフレームワーク界のトレンド – 何故PHP-FIGが生まれたか •
PSR-0,1,2について – おさらい • ログは大事 – 本題! • PSR-3によってもたらされる世界
39.
ログは重要なので • あちこちのフレームワーク内で再実装さ れている • 車輪の再発明されまくり monolog PEAR_Log Zend¥Log
40.
この状態でキメラ錬成すると • 「10個ライブラリを組み合わせたよ」 – 10個ともオレオレロガーを内包している •
「ログレベルをデバッグに切り替えて」 • 「ログの出力先をDBに切り替えて」 – 10か所設定を変えないと駄目 つらい!!
41.
どうする? • 1つのロガーだけを使うようにして、 自前実装を禁じよう – まちがい! •
ロガーのインターフェースを揃えて、 差し替え可能にしよう – せいかい!
42.
PSR-3にみんな準拠したら • ロガーは差し替えて統一できる! • 組み合わせこわくない CakePHP
Symfony Zend Framework PSR準拠 ロガー PSR準拠 ロガー PSR準拠 ロガー monolog
43.
PHP-FIGの目指すもの • 究極的には、ありとあらゆるフレーム ワークやライブラリが組み合わせて使え る世界を目指している(再掲) • PSRはただのコーディング規約じゃない、 その先を見ている
44.
まとめ • ログは大事 • PSRに定められるほど大事 •
ロガーがPSRになったことの意義は大きい • 今後のPSR-nは似たような取り決めが増 えるかもしれない – HTTPクライアントとか議論されてた
45.
補足:普及度 • PSR-3準拠のロガーはまだまだ少ない • monolog
ぐらい? http://github.com/Seldaek/monolog • Zend¥Logとかも対応してない
46.
PSR-3の理想のために • 例えばZend¥Logを使うにしても、一度 PSR-3のインターフェースにラッピング してから使うようにする – 面倒くさいけどな! –
PSR-3に従っておいた方が他のロガーとの交 換性が高くなるはず…
Download