fuel phpをcomposerに本気で対応させた時の話
DESCRIPTION
TRANSCRIPT
FuelPHPを本気でcomposerに対応させた時の話
2013/10/12 FuelPHP&CodeIgniter ユーザの集い
細羽啓司
13年10月12日土曜日
自己紹介• 細羽啓司 (ほそばけいし)
• 所属: 株式会社ガラパゴス
• 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日土曜日
Fuel歴• 約1.5年
• JobQueueのパッケージを作ってみたり
• https://github.com/hosopy/fuel-jobqueue
• 使う側メインだったので、今後は貢献する方にも力を入れたい
13年10月12日土曜日
背景
13年10月12日土曜日
スマートフォンのアプリ開発をしています
iOSアプリ
API
Androidアプリ
CMS
アプリ サーバサイド
13年10月12日土曜日
サーバサイドの開発にFuelPHPを活用
iOSアプリ
API
Androidアプリ
CMS
アプリ サーバサイド
13年10月12日土曜日
FuelPHPを採用した理由
iOSアプリ
API
Androidアプリ
CMS
アプリ サーバサイド・学習コストの低さ・シンプルな実装 - 最後に小回りがきく・module (HMVC)
13年10月12日土曜日
よく使う処理をpackageやmoduleでライブラリ化
JobQueuepackage
APNSpackage
GCMpackage
InAppPurchasepackage
HMVC
Cmsmodule
Apimodule
Photomodule
Usermodule
Notificationmodule
13年10月12日土曜日
FuelPHP1.6以前のライブラリ構成管理(社内)• 初期
• 依存性管理?何それおいしいの?
• 自作packageもmoduleもリポジトリ分けず、全コピ
• 途中から
• さすがに自作package, moduleはリポジトリを分け始める
• git submoduleで気合いで管理
• 混乱することもしばしば
13年10月12日土曜日
1.6から対応
13年10月12日土曜日
期待したもの
13年10月12日土曜日
Railsでのbundler的なcoreパッケージも含めて管理されているイメージ
13年10月12日土曜日
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日土曜日
現実
13年10月12日土曜日
あれ?
13年10月12日土曜日
git submoduleは健在!
13年10月12日土曜日
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日土曜日
ちょっと本気で対応せねば
13年10月12日土曜日
composer一本化への道
vendor package module fuel/core
Packagist A A A -
git(composer対応) B B B -
git(composer非対応) C C C D
→ 管理対象↓ ソース
13年10月12日土曜日
タイプ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日土曜日
A・Bは楽勝• Aは普通すぎるので省略
• Bも、リポジトリの定義を追加するのみ"require": { "hosopy/hoge": "dev-master"},"repositories": { { "type": "git", "url": "https://github.com/hosopy/hoge.git" }}
当然、社内のリポジトリでもOK
13年10月12日土曜日
タイプ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日土曜日
"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日土曜日
タイプD
vendor package module fuel/core
Packagist A A A -
git(composer対応) B B B -
git(composer非対応) C C C D
→ 管理対象↓ ソース
13年10月12日土曜日
タイプD(fuel/core)は厄介
• composer/installers(※)に未定義
• vendor配下に入れられる。COREPATH
を変更しても良いが、気持ち悪い。。
• githubに”fuel-core”なるものが過去に提案された形跡もあったが。。。
※ https://github.com/composer/installers13年10月12日土曜日
"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日土曜日
祝
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日土曜日
まとめ
• fuel/core までcomposer管理にしてみた
• composerの勉強不足につき、もっと良い書き方があるかもしれない
13年10月12日土曜日
一緒にFuelPHPで開発できる仲間を募集中!
Wantedly: https://www.wantedly.com/projects/3713
13年10月12日土曜日
ご清聴ありがとうございました
13年10月12日土曜日