6月28日のPHPカンファレンスの話。
ほかにも、PHPUnitの作り方の話を会場で、
Composerの「依存解決」の話を家で(YouTubeで)
聴いたので、その内容をメモメモ
-----------------------------------------------------
■ちいさくPHPUnitを作り、仕組みと拡張ポイントを
・自己紹介
・PHP Unitとは
単体テスト用
多様なアサーション
読みやすいテストコードは適切なアサーション
AssertSame,assertEqualsが中心→つくれるのでは
・物語
1.樽を知る
2.大は小を兼ねる
1.ちいさくつくる
どのようぬつくるか
アサーションを作る
テスト実行スクリプトを作る
AssertSame,AssertEquals作成でも
2.拡張ポイントを探る
拡張性=設計パターン
デザインパターンに注目
拡張ポイント
いろんなアサーション
テストの前後処理
. Fなどの結果出力
PHPUnitのつくり
assertThatに渡している。
ここで、evaluateしている
Strategyパターンを使っている
・テストの前後処理
runBareの中で読んでる
テンプレートメソッドパターン
・Fの出力
runBareのnaka
Observerパターンを使っている
-----------------------------------------------
■Composerが「依存解決」のためにどんな工夫をしているか
・組み合わせ(依存解決)は爆発的に
→SATソルバー
「いくつかのルールを全部守れるか?」を調べるロボット
■ちいさくPHPUnitを作り、仕組みと拡張ポイントを
・自己紹介
・PHP Unitとは
単体テスト用
多様なアサーション
読みやすいテストコードは適切なアサーション
AssertSame,assertEqualsが中心→つくれるのでは
・物語
1.樽を知る
2.大は小を兼ねる
1.ちいさくつくる
どのようぬつくるか
アサーションを作る
テスト実行スクリプトを作る
AssertSame,AssertEquals作成でも
2.拡張ポイントを探る
拡張性=設計パターン
デザインパターンに注目
拡張ポイント
いろんなアサーション
テストの前後処理
. Fなどの結果出力
PHPUnitのつくり
assertThatに渡している。
ここで、evaluateしている
Strategyパターンを使っている
・テストの前後処理
runBareの中で読んでる
テンプレートメソッドパターン
・Fの出力
runBareのnaka
Observerパターンを使っている
-----------------------------------------------
■Composerが「依存解決」のためにどんな工夫をしているか
・組み合わせ(依存解決)は爆発的に
→SATソルバー
「いくつかのルールを全部守れるか?」を調べるロボット
問題を扱いやすい形に変換
幅指定を列挙に変換
間接パッケージの情報を追加
A→(X1|X2|X3)の形へ
↓
CNF連言標準形
↓
節、クローズ=PHPではルールの世界に変換(リテラル)
↓
ネットワーク上に整理
↓
任意のノードを借り決めしてスタート
↓
矛盾したら出直し
レベルという概念
若いところから見ていく
コンフリクトクローズラーニング
↓
最終的な組み合わせを決める
・超ミニLT
Two Watched Literal 2つのリテラルを監視
Pool Optimizer かき集めたパッケージを管理しておく:pool
マップのキー最適化
Spl double Linked List
gc_disable
幅指定を列挙に変換
間接パッケージの情報を追加
A→(X1|X2|X3)の形へ
↓
CNF連言標準形
↓
節、クローズ=PHPではルールの世界に変換(リテラル)
↓
ネットワーク上に整理
↓
任意のノードを借り決めしてスタート
↓
矛盾したら出直し
レベルという概念
若いところから見ていく
コンフリクトクローズラーニング
↓
最終的な組み合わせを決める
・超ミニLT
Two Watched Literal 2つのリテラルを監視
Pool Optimizer かき集めたパッケージを管理しておく:pool
マップのキー最適化
Spl double Linked List
gc_disable
----------------------------------------------------------------------