みなさんは日々 composer update していますか?

使用しているフレームワークの周辺パッケージの更新に追従し続けるのは大変そうにみえますが、きちんとテストを書いていれば日々の composer update もそれほど苦ではないと思います。
反対に composer update をしていないと依存しているパッケージのセキュリティのバグに脅かされたり、いざパッケージのバージョンをあげることになっても差分が大きすぎて、composer update したらテストがほとんどコケる…ということになりがちです。
そのため個人的には週に1回くらいは composer update をし、パッケージを最新にすることによって、常に更新に追従し続ける必要があると考えています。
Ruby には circleci-bundle-update-pr という gem があり、CircleCI で継続的 bundle update することができるのですが、PHP には同じようなことができるパッケージが無かったので、circleci-bundle-update-pr を参考に circleci-composer-update-pr というパッケージを自作してみました。
使い方
まずは CircleCI を使用していることが前提なので、まだ使ってない方は是非使ってみてください!(確か無料プランでもプライベートレポジトリ1つはプロジェクトを追加できたはずです)
CircleCI との連携が終わったら、 circle.yml または .circleci/config.yml に次のように記述して Cron を設定します。
version: 2
jobs:
build:
# ...
continuous_composer_update:
docker:
- image: composer:latest
working_directory: /work
steps:
- run:
name: Set timezone to Asia/Tokyo
command: echo "date.timezone=Asia/Tokyo" > "$PHP_INI_DIR/conf.d/date_timezone.ini"
- checkout
- restore_cache:
name: Restore composer cache
keys:
- composer-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "composer.lock" }}
- composer-{{ .Environment.COMMON_CACHE_KEY }}-
- run:
name: Setup requirements for continuous composer update
command: composer global require enomotodev/circleci-composer-update-pr
- deploy:
name: Continuous composer update
command: $COMPOSER_HOME/vendor/bin/circleci-composer-update-pr <username> <email> master
workflows:
version: 2
build:
jobs:
- build:
# ...
nightly:
triggers:
- schedule:
cron: "00 10 * * 5" # 毎週金曜日の19時に実行される
filters:
branches:
only: master
jobs:
- continuous_composer_update
これで毎週金曜日の19時に composer update が実行されて GitHub に PR が作られます。

このように自動で PR を作ってくれるので、あとはテスト結果を見て問題なさそうだったら Merge ボタンをポチるだけとなります。
差分へのリンクもあるので、気になるパッケージの更新は差分も確認することができます。
まとめ
最近は Docker や Kubernetes などのコンテナ技術が流行っていて、ミドルウェアのバージョンも簡単に上げることができるようになってきています。
サーバサイドエンジニアとしては使用しているフレームワークの周辺パッケージのバージョンを追従しながら、アップデートの差分を見ることによって、周辺パッケージの知識も少しずつ増やしていければ良いのかなと思っています。

CAREER SKILLS ソフトウェア開発者の完全キャリアガイド
- 作者: ジョン・ソンメズ,まつもとゆきひろ,長尾高弘
- 出版社/メーカー: 日経BP社
- 発売日: 2018/06/22
- メディア: 単行本
- この商品を含むブログ (1件) を見る

- 作者: 山田明憲
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る