Slide 1

Slide 1 text

バンドルの作り方 #symfony_meetup 2016.02.27 @qckanemoto 1 / 40

Slide 2

Slide 2 text

@qckanemoto 名古屋 か ら来ました (株)カルテットコミュニケーションズ CTO PHP 歴 4 年 , Symfony 歴 2 年( 1 年 ぐ ら いROM 専) #nagoyaphp, #symfony_meetup 2 / 40

Slide 3

Slide 3 text

カルテットコミュニケーションズ 絶賛 PHPer 募集中! PHP メンターズ @hidenorigoto さん Joined ! リスティング広告運用ツール 「Lisket」 3 / 40

Slide 4

Slide 4 text

カルテットコミュニケーションズ エンジニアの働 き やすさ超大事にしてます 4 / 40

Slide 5

Slide 5 text

カルテットコミュニケーションズ SNSか メールで お 気軽に ご 連絡 く ださ い 5 / 40

Slide 6

Slide 6 text

本題 6 / 40

Slide 7

Slide 7 text

バンドルの作り方 7 / 40

Slide 8

Slide 8 text

バンドル作った こ と あ る人? 8 / 40

Slide 9

Slide 9 text

9 / 40

Slide 10

Slide 10 text

Symfony で開発してる =バンドル作ってる! 10 / 40

Slide 11

Slide 11 text

バンドル作って 「 再配布 」 した こ と あ る人? 11 / 40

Slide 12

Slide 12 text

(たぶん少な い はず) 12 / 40

Slide 13

Slide 13 text

Q アプリ内に作ったバンドルを そのまま再配布すれば いい ? 13 / 40

Slide 14

Slide 14 text

A ほぼ YES ! 14 / 40

Slide 15

Slide 15 text

ほぼ? 15 / 40

Slide 16

Slide 16 text

普段 、 外部のバンドルを 使 う 時にやってる こ とを 思 い 出してみましょ う 16 / 40

Slide 17

Slide 17 text

外部のバンドルを使 う 時 に追加 に設定を追記 c o m p o s e r r e q u i r e f o o / b a r - b u n d l e A p p K e r n e l c o n f i g . y m l 17 / 40

Slide 18

Slide 18 text

外部のバンドルを使 う 時 Packagist に公開すれば いい だ け に追加 に設定を追記 c o m p o s e r r e q u i r e f o o / b a r - b u n d l e A p p K e r n e l c o n f i g . y m l 18 / 40

Slide 19

Slide 19 text

外部のバンドルを使 う 時 Packagist に公開すれば いい だ け に追加 アプリ用のバンドルでも同じ こ としてる に設定を追記 c o m p o s e r r e q u i r e f o o / b a r - b u n d l e A p p K e r n e l c o n f i g . y m l 19 / 40

Slide 20

Slide 20 text

外部のバンドルを使 う 時 Packagist に公開すれば いい だ け に追加 アプリ用のバンドルでも同じ こ としてる に設定を追記 し か 書 い た こ とな いか も c o m p o s e r r e q u i r e f o o / b a r - b u n d l e A p p K e r n e l c o n f i g . y m l s e r v i c e s . y m l 20 / 40

Slide 21

Slide 21 text

21 / 40

Slide 22

Slide 22 text

A ほぼ YES ! だ け ど config.yml で設定 で き るよ う にする必要 があ りそ う 22 / 40

Slide 23

Slide 23 text

そもそも services.yml と config.yml の違 い って? 23 / 40

Slide 24

Slide 24 text

services.yml バンドル内で独自のパラメータやサービスを定義 定義を変 え る場合は を直接修正 バンドル利用者 が 外 か ら設定で き な い 再配布に適して い な い s e r v i c e s . y m l 24 / 40

Slide 25

Slide 25 text

config.yml 各バンドルのパラメータ・サービス定義のプロセ スに対して外 か ら設定を注入 こういう の↓ # W e b P r o f i l e r B u n d l e w e b _ p r o f i l e r : p o s i t i o n : t o p 25 / 40

Slide 26

Slide 26 text

config.yml バンドル側では 、「 どんな項目にどんな値 が 設定 で き る か」 が 定義されて い る 定義されて い る設定項目はコマンドで確認可能 $ p h p a p p / c o n s o l e c o n f i g : d u m p - r e f e r e n c e w e b _ p r o f i l e r # D e f a u l t c o n f i g u r a t i o n f o r e x t e n s i o n w i t h a l i a s : " w e b _ p r o f i l e r " w e b _ p r o f i l e r : t o o l b a r : f a l s e p o s i t i o n : b o t t o m i n t e r c e p t _ r e d i r e c t s : f a l s e e x c l u d e d _ a j a x _ p a t h s : ' ^ / ( a p p ( _ [ \ w ] + ) ? \ . p h p / ) ? _ w d t ' 26 / 40

Slide 27

Slide 27 text

config.yml で設定で き る よ う にするには 27 / 40

Slide 28

Slide 28 text

実際やる こ と 「 どんな項目にどんな値 が 設定で き る か」 を定義 それらの設定項目 が 外 か ら入って く る こ とを前提 にサービスを定義 28 / 40

Slide 29

Slide 29 text

実際やる こ と 「 どんな項目にどんな値 が 設定で き る か」 を定義 に を実装 それらの設定項目 が 外 か ら入って く る こ とを前提 にサービスを定義 D e p e n d e n c y I n j e c t i o n \ C o n f i g u r a t i o n g e t C o n f i g T r e e B u i l d e r ( ) 29 / 40

Slide 30

Slide 30 text

実際やる こ と 「 どんな項目にどんな値 が 設定で き る か」 を定義 に を実装 それらの設定項目 が 外 か ら入って く る こ とを前提 にサービスを定義 か ら来た設定をパラメータとして 登録し 、 それを でサービスにイ ンジェクト (他にもやり方は あ ります が ) D e p e n d e n c y I n j e c t i o n \ C o n f i g u r a t i o n g e t C o n f i g T r e e B u i l d e r ( ) c o n f i g . y m l s e r v i c e s . y m l 30 / 40

Slide 31

Slide 31 text

例 31 / 40

Slide 32

Slide 32 text

「 どんな項目にどんな値 が 設定で き る か」 を定義 32 / 40

Slide 33

Slide 33 text

設定項目 が 外 か ら入って く る こ とを前提にサービスを定義 33 / 40

Slide 34

Slide 34 text

README.md 34 / 40

Slide 35

Slide 35 text

まとめ は各バンドルのサービス定義に設定を 注入して い る 設定項目は各バンドルの で定義され て い る 自分でバンドルを作って公開するために特別やら な き ゃ いけ な いこ とって実は こ れ ぐ ら い c o n f i g . y m l D e p e n d e n c y I n j e c t i o n \ C o n f i g u r a t i o n 35 / 40

Slide 36

Slide 36 text

バンドル作るのは 難し く な い ! ので 、 ぜひチャレンジしてみて く ださ い 36 / 40

Slide 37

Slide 37 text

お ま け 「 でサービス定義に外 か ら設定を注入 する 」 と表現して き ました が Symfony 的には こ れは 「 サービスコンテナの拡張 ( Extension ) 」 と いう 概念です サービスコンテナは奥 が 深 い &めっちゃよ く 出来 てて知るほどに学び があ ります c o n f i g . y m l 37 / 40

Slide 38

Slide 38 text

お ま け 「 でサービス定義に外 か ら設定を注入 する 」 と表現して き ました が Symfony 的には こ れは 「 サービスコンテナの拡張 ( Extension ) 」 と いう 概念です サービスコンテナは奥 が 深 い &めっちゃよ く 出来 てて知るほどに学び があ ります しっ か り学びた い 人は … c o n f i g . y m l 38 / 40

Slide 39

Slide 39 text

39 / 40

Slide 40

Slide 40 text

Thanks :) 40 / 40