fuel phpをcomposerに本気で対応させた時の話

30
FuelPHPを本気でcomposer対応させた時の話 2013/10/12 FuelPHPCodeIgniter ユーザの集い 細羽啓司 131012日土曜日

Upload: keishi-hosoba

Post on 18-Dec-2014

6.512 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Fuel phpをcomposerに本気で対応させた時の話

FuelPHPを本気でcomposerに対応させた時の話

2013/10/12 FuelPHP&CodeIgniter ユーザの集い

細羽啓司

13年10月12日土曜日

Page 2: Fuel phpをcomposerに本気で対応させた時の話

自己紹介• 細羽啓司 (ほそばけいし)

• 所属: 株式会社ガラパゴス

• http://www.glpgs.com

• Twitter: @hosopy

• Facebook: https://www.facebook.com/keishi.hosoba

• github: https://github.com/hosopy

• 開発: PHP, Android(Java), iOS(Objective-C), Node.js,

Ruby(RoR)...

13年10月12日土曜日

Page 3: Fuel phpをcomposerに本気で対応させた時の話

Fuel歴• 約1.5年

• JobQueueのパッケージを作ってみたり

• https://github.com/hosopy/fuel-jobqueue

• 使う側メインだったので、今後は貢献する方にも力を入れたい

13年10月12日土曜日

Page 4: Fuel phpをcomposerに本気で対応させた時の話

背景

13年10月12日土曜日

Page 5: Fuel phpをcomposerに本気で対応させた時の話

スマートフォンのアプリ開発をしています

iOSアプリ

API

Androidアプリ

CMS

アプリ サーバサイド

13年10月12日土曜日

Page 6: Fuel phpをcomposerに本気で対応させた時の話

サーバサイドの開発にFuelPHPを活用

iOSアプリ

API

Androidアプリ

CMS

アプリ サーバサイド

13年10月12日土曜日

Page 7: Fuel phpをcomposerに本気で対応させた時の話

FuelPHPを採用した理由

iOSアプリ

API

Androidアプリ

CMS

アプリ サーバサイド・学習コストの低さ・シンプルな実装 - 最後に小回りがきく・module (HMVC)

13年10月12日土曜日

Page 8: Fuel phpをcomposerに本気で対応させた時の話

よく使う処理をpackageやmoduleでライブラリ化

JobQueuepackage

APNSpackage

GCMpackage

InAppPurchasepackage

HMVC

Cmsmodule

Apimodule

Photomodule

Usermodule

Notificationmodule

13年10月12日土曜日

Page 9: Fuel phpをcomposerに本気で対応させた時の話

FuelPHP1.6以前のライブラリ構成管理(社内)• 初期

• 依存性管理?何それおいしいの?

• 自作packageもmoduleもリポジトリ分けず、全コピ

• 途中から

• さすがに自作package, moduleはリポジトリを分け始める

• git submoduleで気合いで管理

• 混乱することもしばしば

13年10月12日土曜日

Page 10: Fuel phpをcomposerに本気で対応させた時の話

1.6から対応

13年10月12日土曜日

Page 11: Fuel phpをcomposerに本気で対応させた時の話

期待したもの

13年10月12日土曜日

Page 12: Fuel phpをcomposerに本気で対応させた時の話

Railsでのbundler的なcoreパッケージも含めて管理されているイメージ

13年10月12日土曜日

Page 13: Fuel phpをcomposerに本気で対応させた時の話

composerに構成管理を全任できる!

composer.jsonfuel/core

1.6.1fuel/auth

1.6.1

fuel系

サードパーティpackage

module

その他

hoge1.0

fuga1.2

notification1.4

cms1.2

fuel/uploaddev-master

社内ライブラリ

※社内13年10月12日土曜日

Page 14: Fuel phpをcomposerに本気で対応させた時の話

現実

13年10月12日土曜日

Page 15: Fuel phpをcomposerに本気で対応させた時の話

あれ?

13年10月12日土曜日

Page 16: Fuel phpをcomposerに本気で対応させた時の話

git submoduleは健在!

13年10月12日土曜日

Page 17: Fuel phpをcomposerに本気で対応させた時の話

composer.json

.gitmodule

むしろ面倒orz

fuel/core1.6.1

fuel/oil1.6.1

hoge1.0

fuga1.2

notification1.4

cms1.2

fuel/uploaddev-master

※社内fuel/auth

1.6.1

13年10月12日土曜日

Page 18: Fuel phpをcomposerに本気で対応させた時の話

ちょっと本気で対応せねば

13年10月12日土曜日

Page 19: Fuel phpをcomposerに本気で対応させた時の話

composer一本化への道

vendor package module fuel/core

Packagist A A A -

git(composer対応) B B B -

git(composer非対応) C C C D

→ 管理対象↓ ソース

13年10月12日土曜日

Page 20: Fuel phpをcomposerに本気で対応させた時の話

タイプA・B

vendor package module fuel/core

Packagist A A A -

git(composer対応) B B B -

git(composer非対応) C C C D

→ 管理対象↓ ソース

13年10月12日土曜日

Page 21: Fuel phpをcomposerに本気で対応させた時の話

A・Bは楽勝• Aは普通すぎるので省略

• Bも、リポジトリの定義を追加するのみ"require": { "hosopy/hoge": "dev-master"},"repositories": { { "type": "git", "url": "https://github.com/hosopy/hoge.git" }}

当然、社内のリポジトリでもOK

13年10月12日土曜日

Page 22: Fuel phpをcomposerに本気で対応させた時の話

タイプC (fuel/ormなど)

vendor package module fuel/core

Packagist A A A -

git(composer対応) B B B -

git(composer非対応) C C C D

→ 管理対象↓ ソース

13年10月12日土曜日

Page 23: Fuel phpをcomposerに本気で対応させた時の話

"require": { "canton7/fuelphp-casset": "1.21"},"repositories": { { "type": "package", "package": { "name": "canton7/fuelphp-casset", "type": "fuel-package", "version": "1.21", "require": { "composer/installers": "*" }, "source": { "url": "https://github.com/canton7/fuelphp-casset.git", "type": "git", "reference": "master" } } }}

対象packageのcomposer.jsonが持つべき情報を自分で定義

13年10月12日土曜日

Page 24: Fuel phpをcomposerに本気で対応させた時の話

タイプD

vendor package module fuel/core

Packagist A A A -

git(composer対応) B B B -

git(composer非対応) C C C D

→ 管理対象↓ ソース

13年10月12日土曜日

Page 25: Fuel phpをcomposerに本気で対応させた時の話

タイプD(fuel/core)は厄介

• composer/installers(※)に未定義

• vendor配下に入れられる。COREPATH

を変更しても良いが、気持ち悪い。。

• githubに”fuel-core”なるものが過去に提案された形跡もあったが。。。

※ https://github.com/composer/installers13年10月12日土曜日

Page 26: Fuel phpをcomposerに本気で対応させた時の話

"require": { "fuel/core": "1.6.1"},"repositories": {{ "type": "package", "package": { "name": "fuel/core", "type": "fuel-package", "version": "1.6.1", "require": { "composer/installers": "*" }, "source": { "url": "https://github.com/fuel/core.git"", "type": "git", "reference": "1.6/master" }}}}"extra": { "installer-paths": { "fuel/core/": ["fuel/core"] }}

ポイントfuel/coreをvendorに入れず、fuel/coreに入れ

るように設定

13年10月12日土曜日

Page 27: Fuel phpをcomposerに本気で対応させた時の話

composer.jsonfuel/core

1.6.1fuel/auth

1.6.1

fuel系

サードパーティpackage

module

その他

hoge1.0

fuga1.2

notification1.4

cms1.2

fuel/uploaddev-master

社内ライブラリ

※社内13年10月12日土曜日

Page 28: Fuel phpをcomposerに本気で対応させた時の話

まとめ

• fuel/core までcomposer管理にしてみた

• composerの勉強不足につき、もっと良い書き方があるかもしれない

13年10月12日土曜日

Page 29: Fuel phpをcomposerに本気で対応させた時の話

一緒にFuelPHPで開発できる仲間を募集中!

Wantedly: https://www.wantedly.com/projects/3713

13年10月12日土曜日

Page 30: Fuel phpをcomposerに本気で対応させた時の話

ご清聴ありがとうございました

13年10月12日土曜日