SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
PSR-3 Logger Interface
のご紹介
第67回PHP勉強会@東京
@Hiraku
目次
• 最近のPHPフレームワーク界のトレンド
– 何故PHP-FIGが生まれたか
• PSR-0,1,2について
– おさらい
• ログは大事
– 本題!
• PSR-3によってもたらされる世界
自己紹介
• Hiraku (中野 拓)
• 某ポータルサイトのWeb
プログラマ
• ライブラリアン(サービス
作るのはあまり興味ない)
• そろそろPHP歴5年ぐらい
• PHP-FIGはROM専です
https://twitter.com/Hiraku
https://github.com/hirak
http://blog.tojiru.net/
このスライドの主張は多分に
個人の見解が混じっています
おことわり
• 最近のPHPフレームワーク界のトレンド
– 何故PHP-FIGが生まれたか
• PSR-0,1,2について
– おさらい
• ログは大事
– 本題!
• PSR-3によってもたらされる世界
最近のPHP界のトレンド?
• フルスタック指向 • コンポーネント指向
最近のPHP界のトレンド?
• フレームワークの一部だけ使ったり
• 組み合わせたり
• マイクロフレームワークの増加
• Composer/Packagistの盛り上がり
キメラ錬成
• 色々組み合わせて「ぼくの考えた最強の
怪物フレームワーク」を作れる
脱・フルスタック
• フレームワークにない機能も外から
持ってこれる
• やるかやらないかは別
• 基本的に選択肢が増えるのはいいこと
だがちょっと待ってほしい
フレームワークの組み合わせ
なんて可能なのか?
フレームワーク間にそびえ立つ壁
• 命名規則
• コーディング規約
• ディレクトリ構造
• 例外の使い方
• インターフェースがバラバラ
…etc
そこでPHP-FIGですよ
• フレームワークの相互運用性について議
論するグループ
http://www.php-fig.org/
大御所いっぱい参加
余談
• FuelPHPやCodeIgniterが入ってません
• 仲悪いのかな?
話を戻すと
• PHP-FIGで決まったことを元に、
フレームワーク同士の相互運用性を高め
ていこう!という雰囲気
• 究極的には、ありとあらゆるフレーム
ワークやライブラリが組み合わせて使え
る世界を目指している
PHP-FIGが決定したもの:
PSR(Propersed Standards
Recommendation)
• 最近のPHPフレームワーク界のトレンド
– 何故PHP-FIGが生まれたか
• PSR-0,1,2について
– おさらい
• ログは大事
– 本題!
• PSR-3によってもたらされる世界
PSR-0
Autoloading Standard
PSR-0
• 要約:
– クラス名は被らないようにしろ
– クラス名とファイルパスは合わせろ
• 名前空間先頭はvendor prefix
– Symfony¥Foo
– Zend¥Foo
– Acme¥Foo
• Autoloaderが共通化できる
PSR-1
Basic Coding Standard
PSR-1
• 要約:変な作りにするな
– PSR-0に従え
– ソースコードはUTF-8(without BOM)で書け
– 副作用(Side Effect) はクラス定義と分割しろ
• 読み込んだだけで勝手にechoすんじゃねえ
• php.iniの設定を勝手に変えるな
• スクリプトのロードも勝手にするな
– 定数はSUPER_CASE、メソッドは
camelCaseとか
PSR-2
Coding Style Guide
PSR-2
• ほぼコーディング規約っぽい何かです
– 詳細は省略
• PHP_CodeSnifferでチェックできます
– http://pear.php.net/package/PHP_CodeSniffer/
• CS Fixerもあるよ
– http://cs.sensiolabs.org/
• PSR-2準拠を謳うライブラリ増加中
-ここまで前置き-
長くなりましたが
• 最近のPHPフレームワーク界のトレンド
– 何故PHP-FIGが生まれたか
• PSR-0,1,2について
– おさらい
• ログは大事
– 本題!
• PSR-3によってもたらされる世界
PSR-3
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に従え」って書いてない
– コーディング規約っぽくない
PSR-3の基本
• ロガーはPsr/Log/LoggerInterfaceを
実装したクラス。
• psr/logに一式揃っている
– https://packagist.org/packages/psr/log
• インスタンス化して利用する
• ログレベル定義はsyslog(RFC5424)に
準じる
– emergency, alert, critical, error,
warning, notice, info, debug
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!');
…正直なところ
• PSR-3自体はそんなに大したことは書い
てない
• 読んでも「ふーん」で終わる
• ここからはロガーがPSR化されたこと
の意義を考察する
デバッグについて
ちょっと話をそらしますが
質問
• デバッグってどうやってますか?
• デバッガ使ってる?
• var_dump()?
割とどうでもいい(個人の見解)
• デバッガはデプロイ後には役に立たない
– ユーザーが体験した「不具合」を再現できれ
ば使えるけど…
– ユーザーのデータがレアケースだったり再現
性がない不具合だったり…
ログの力
• デプロイ後の不具合究明に役立つのが
アプリケーションログ
– 不具合が起きたら問題をロギングする
– Web APIなどはきちんと叩けたこともロギン
グしておくとよい
• アリバイとして役に立つ
• ログを見れば犯人がわかる状態が理想
参考:表明(assertion)
• assert()でtrueになるはずの条件をコード
中に列挙しておく
– assert($param instanceof DateTime)とか
– 小さなユニットテストが常に実行される状態
を作る
– もしassert()がfalseを受けたらエラーを吐く
• デバッグログと似た概念
• PHPのassert()は関数なので、ロガーで代
替しても性能はあまり変わらない
オレが思う重要度
1. アプリケーションログの設計
2. 例外とスタックトレース
=====越えられない壁======
3. var_dump()デバッグ
4. デバッガの使い方
要するに
ログは重要
• 最近のPHPフレームワーク界のトレンド
– 何故PHP-FIGが生まれたか
• PSR-0,1,2について
– おさらい
• ログは大事
– 本題!
• PSR-3によってもたらされる世界
ログは重要なので
• あちこちのフレームワーク内で再実装さ
れている
• 車輪の再発明されまくり
monolog
PEAR_Log
Zend¥Log
この状態でキメラ錬成すると
• 「10個ライブラリを組み合わせたよ」
– 10個ともオレオレロガーを内包している
• 「ログレベルをデバッグに切り替えて」
• 「ログの出力先をDBに切り替えて」
– 10か所設定を変えないと駄目
つらい!!
どうする?
• 1つのロガーだけを使うようにして、
自前実装を禁じよう
– まちがい!
• ロガーのインターフェースを揃えて、
差し替え可能にしよう
– せいかい!
PSR-3にみんな準拠したら
• ロガーは差し替えて統一できる!
• 組み合わせこわくない
CakePHP Symfony Zend
Framework
PSR準拠
ロガー
PSR準拠
ロガー
PSR準拠
ロガー
monolog
PHP-FIGの目指すもの
• 究極的には、ありとあらゆるフレーム
ワークやライブラリが組み合わせて使え
る世界を目指している(再掲)
• PSRはただのコーディング規約じゃない、
その先を見ている
まとめ
• ログは大事
• PSRに定められるほど大事
• ロガーがPSRになったことの意義は大きい
• 今後のPSR-nは似たような取り決めが増
えるかもしれない
– HTTPクライアントとか議論されてた
補足:普及度
• PSR-3準拠のロガーはまだまだ少ない
• monolog ぐらい?
http://github.com/Seldaek/monolog
• Zend¥Logとかも対応してない
PSR-3の理想のために
• 例えばZend¥Logを使うにしても、一度
PSR-3のインターフェースにラッピング
してから使うようにする
– 面倒くさいけどな!
– PSR-3に従っておいた方が他のロガーとの交
換性が高くなるはず…

Más contenido relacionado

La actualidad más candente

Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJPSolrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJPYahoo!デベロッパーネットワーク
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析政雄 金森
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るshinjiigarashi
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれからksk_ha
 
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】ProjectDC-01
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence ModelingDeep Learning JP
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―shinjiigarashi
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築Yoshitaka HARA
 
コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)Masaya Kaneko
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解Koji Terada
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA Japan
 
單元測試不是有寫就好
單元測試不是有寫就好單元測試不是有寫就好
單元測試不是有寫就好Yu-Song Syu
 
「今日から使い切る」 ための GNU Parallel による並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」 ための GNU Parallel による並列処理入門Koji Matsuda
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編Yuto Hayamizu
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
ディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボットディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボットHiroaki Kaneda
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPIAkihiro Ikezoe
 

La actualidad más candente (20)

Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJPSolrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
 
SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】SDCCオープンネットワークのご紹介【2021/01版】
SDCCオープンネットワークのご紹介【2021/01版】
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
 
コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)コンピュータ先端ガイド2巻3章勉強会(SVM)
コンピュータ先端ガイド2巻3章勉強会(SVM)
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介
 
單元測試不是有寫就好
單元測試不是有寫就好單元測試不是有寫就好
單元測試不是有寫就好
 
「今日から使い切る」 ための GNU Parallel による並列処理入門
「今日から使い切る」ための GNU Parallelによる並列処理入門「今日から使い切る」ための GNU Parallelによる並列処理入門
「今日から使い切る」 ための GNU Parallel による並列処理入門
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
ディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボットディープラーニングとROSで作る自動運転ロボット
ディープラーニングとROSで作る自動運転ロボット
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
 

Destacado

新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHPYusuke Ando
 
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Moriyoshi Koizumi
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月suno88
 
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたMasaru Matsuo
 
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017このPHP拡張がすごい!2017
このPHP拡張がすごい!2017sasezaki
 
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経ったGANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経ったYasuyuki Sugitani
 
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14Statistisk sentralbyrå
 
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回Kentaro Matsumae
 
صداقت حضرت مسیح موعود علیہ السلام از احادیث
صداقت حضرت مسیح موعود علیہ السلام از احادیثصداقت حضرت مسیح موعود علیہ السلام از احادیث
صداقت حضرت مسیح موعود علیہ السلام از احادیثmuzaffertahir9
 
Ne principles of islam
Ne principles of islamNe principles of islam
Ne principles of islamLoveofpeople
 
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...Tanker Communicatie
 
Tutorial for the ReportLinker App
Tutorial for the ReportLinker AppTutorial for the ReportLinker App
Tutorial for the ReportLinker AppReportLinker.com
 
SHERRI GOODWIN Resume 1 (2)
SHERRI GOODWIN Resume 1 (2)SHERRI GOODWIN Resume 1 (2)
SHERRI GOODWIN Resume 1 (2)Sherri Goodwin
 
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...Aleš Vidmar
 
Međuinduktivitet i zračni transformatori (slike)
Međuinduktivitet i zračni transformatori (slike)Međuinduktivitet i zračni transformatori (slike)
Međuinduktivitet i zračni transformatori (slike)IrmaKajd
 
Modified maximum tangential stress criterion for fracture behavior of zirconi...
Modified maximum tangential stress criterion for fracture behavior of zirconi...Modified maximum tangential stress criterion for fracture behavior of zirconi...
Modified maximum tangential stress criterion for fracture behavior of zirconi...dentalid
 

Destacado (20)

新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP新標準PSRに学ぶきれいなPHP
新標準PSRに学ぶきれいなPHP
 
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
 
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
 
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
 
GANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経ったGANMA!でDDDをやってみてから1年くらい経った
GANMA!でDDDをやってみてから1年くらい経った
 
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
SSBs Erling Holmøy_Norge eldes: Langsiktig økonomisk bærekraft 28.01.14
 
Plan de clase
Plan de clasePlan de clase
Plan de clase
 
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
 
صداقت حضرت مسیح موعود علیہ السلام از احادیث
صداقت حضرت مسیح موعود علیہ السلام از احادیثصداقت حضرت مسیح موعود علیہ السلام از احادیث
صداقت حضرت مسیح موعود علیہ السلام از احادیث
 
Ne principles of islam
Ne principles of islamNe principles of islam
Ne principles of islam
 
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
Solliciteren: social media of toch die traditionele sollicitatiebrief? (Natio...
 
Tutorial for the ReportLinker App
Tutorial for the ReportLinker AppTutorial for the ReportLinker App
Tutorial for the ReportLinker App
 
SHERRI GOODWIN Resume 1 (2)
SHERRI GOODWIN Resume 1 (2)SHERRI GOODWIN Resume 1 (2)
SHERRI GOODWIN Resume 1 (2)
 
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
Povezovanje kemijske panoge in delo z mladimi, KOCKE, Ziga Lampe, Drzava za g...
 
Međuinduktivitet i zračni transformatori (slike)
Međuinduktivitet i zračni transformatori (slike)Međuinduktivitet i zračni transformatori (slike)
Međuinduktivitet i zračni transformatori (slike)
 
A world without islam-graham e. fuller
A world without islam-graham e. fullerA world without islam-graham e. fuller
A world without islam-graham e. fuller
 
Modified maximum tangential stress criterion for fracture behavior of zirconi...
Modified maximum tangential stress criterion for fracture behavior of zirconi...Modified maximum tangential stress criterion for fracture behavior of zirconi...
Modified maximum tangential stress criterion for fracture behavior of zirconi...
 
YoonSeo Link
YoonSeo LinkYoonSeo Link
YoonSeo Link
 
Happy New Year
Happy New Year Happy New Year
Happy New Year
 

Similar a PSR-3 Logger Interfaceの紹介

第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)Hideyuki Shimooka
 
なぜ、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
 
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~Yuta Sakurai
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったHironobu Saitoh
 
PHP Source Code Search with PHP
PHP Source Code Search with PHPPHP Source Code Search with PHP
PHP Source Code Search with PHPSotaro Karasawa
 
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPSWordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPSRyo Shibayama
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデルYuta Kashino
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについてHiraku Nakano
 
Composerはじめました
ComposerはじめましたComposerはじめました
ComposerはじめましたTakashi Nojima
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語るRui Hirokawa
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3ichikaway
 
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクトMoriyoshi Koizumi
 
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身Hisateru Tanaka
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介Shoken Fujisaki
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入Hisao Soyama
 

Similar a PSR-3 Logger Interfaceの紹介 (19)

第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)第67回PHP勉強会LT(その2)
第67回PHP勉強会LT(その2)
 
なぜ、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カンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
 
第67回PHP勉強会LT
第67回PHP勉強会LT第67回PHP勉強会LT
第67回PHP勉強会LT
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
PHP Source Code Search with PHP
PHP Source Code Search with PHPPHP Source Code Search with PHP
PHP Source Code Search with PHP
 
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPSWordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについて
 
Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
 
♡PHPが恋しい話♡
♡PHPが恋しい話♡♡PHPが恋しい話♡
♡PHPが恋しい話♡
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
PHPの今と未来を語る
PHPの今と未来を語るPHPの今と未来を語る
PHPの今と未来を語る
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
 
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
 
#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身#phpmatsuri LT大会システムの中身
#phpmatsuri LT大会システムの中身
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
 

Más de Hiraku Nakano

composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudycomposerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudyHiraku Nakano
 
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt Hiraku Nakano
 
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyScrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyHiraku Nakano
 
こわくない同時実行制御
こわくない同時実行制御こわくない同時実行制御
こわくない同時実行制御Hiraku Nakano
 
Xml builderの紹介
Xml builderの紹介Xml builderの紹介
Xml builderの紹介Hiraku Nakano
 

Más de Hiraku Nakano (8)

composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudycomposerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
 
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
 
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudyScrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
 
JSON SchemaとPHP
JSON SchemaとPHPJSON SchemaとPHP
JSON SchemaとPHP
 
こわくない同時実行制御
こわくない同時実行制御こわくない同時実行制御
こわくない同時実行制御
 
pecl-AOPの紹介
pecl-AOPの紹介pecl-AOPの紹介
pecl-AOPの紹介
 
URLで遊ぼう
URLで遊ぼうURLで遊ぼう
URLで遊ぼう
 
Xml builderの紹介
Xml builderの紹介Xml builderの紹介
Xml builderの紹介
 

PSR-3 Logger Interfaceの紹介