Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
怖くないComposer / Composer Made Easy
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
株式会社カオナビ
July 02, 2025
Technology
660
0
Share
怖くないComposer / Composer Made Easy
2025年6月18日開催「PHPカンファレンス2025」で登壇した際の発表資料です。
https://phpcon.php.gr.jp/2025/
株式会社カオナビ
July 02, 2025
More Decks by 株式会社カオナビ
See All by 株式会社カオナビ
noUncheckedIndexedAccess、3時間、1万円。 / noUncheckedIndexedAccess, 3 Hours, 10,000 JPY.
kaonavi
1
290
カオナビに Suspenseを導入するまで / The Road to Suspense at kaonavi
kaonavi
1
640
ボトムアップ限界を越える - 20チームを束る "Drive Map" / Beyond Bottom-Up: A 'Drive Map' for 20 Teams
kaonavi
0
290
DevOpsエンジニアは、なぜ『データ』で越境したのか?:サイロの摩擦を溶かし、組織を繋ぐデータマネジメント立ち上げのすすめ / Why a DevOps Engineer Crossed the Border with 'Data': Melting Silos and Connecting Organizations Through Data Management
kaonavi
0
320
人的資本開示を「義務」から「武器」へ。4000社のオープンデータを耕した「人的資本データnavi」の想い / Turning Human Capital Disclosure from "Obligation" to "Weapon": The Vision Behind "Human Capital Data navi" and its 4,000 Companies Open Data
kaonavi
0
390
カオナビにおけるAI活用の歴史と現在 / AI at kaonavi: Past and Present
kaonavi
0
530
BDD_ AI駆動開発の第一歩 / BDD: First Steps in AI-Driven Development
kaonavi
0
460
インフラエンジニア、Claude Codeを連れてプロダクトチームへ留学中 / Infrastructure Engineer on Loan to Product Team with Claude Code
kaonavi
0
340
スクラムを一度諦めたチームにアジャイルコーチが入ってどう変化したか / A Team's Second Try at Scrum with an Agile Coach
kaonavi
0
470
Other Decks in Technology
See All in Technology
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
680
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
1.5k
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.2k
AI と創る新たな世界 / A New World Created with AI
ks91
PRO
0
110
React、まだ楽しくて草
uhyo
7
4.1k
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
0
420
ブロックチェーン / Blockchain
ks91
PRO
0
110
PHP と TypeScript の型システム比較:AI 時代の「型」は誰のためにあるのか? #frontend_phpcon_do / frontend_phpcon_do_2026
shogogg
1
240
新アーキテクチャ「TiDB X」解説とDedicated比較 TiDB Cloud Premiumのゲーム運用活用を検証
staffrecruiter
0
110
コードレビューを制するチームがソフトウェアデリバリーのフローを制す / Beyond Code Review: Distributing Its Responsibilities Across the SDLC
mtx2s
3
1k
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
3
210
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.8k
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
530
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Bash Introduction
62gerente
615
210k
Google's AI Overviews - The New Search
badams
0
1k
Prompt Engineering for Job Search
mfonobong
0
330
From π to Pie charts
rasagy
0
200
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
HDC tutorial
michielstock
2
690
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
Transcript
怖くないComposer 2025 PHP Conference 2025.06.28 | CTO室 雫石 © kaonavi,
inc.
INDEX 1 . 自己紹介 3 .Composer 4 .ちょっとしたデモ 5 .お伝えしたいこと
2 © kaonavi, inc. 2 2 .お伝えしたいこと
自己紹介 © kaonavi, inc. 3
雫石 株式会社カオナビ CTO室所属 現在13社目... 組み込み系 /家庭用ゲーム開発 /ソシャゲ開発 PHP暦約9年、最近は Goばかり書いてます ・X、やってません。
・Facebook、やってません。 ・Note、やってません。 「発信」という行動は今回が初です...。優しい目で見ていただけると嬉しいです...! 自己紹介 © kaonavi, inc. 4
お伝えしたいこと © kaonavi, inc. 5
ドメイン固有処理以外は、 大抵Packagistにある (PHPのとても良い点) ・多言語と比較しても、PHPのエコシステムはとても充実 ・世界中から使われているライブラリは信頼に足る ・多くの場合、実装がエレガント ・自分で作ると単純に時間がかかる 車輪の再発明は辛いということ © kaonavi,
inc. 6 自前での実装をなるべく減らし、楽をしましょう
Composer © kaonavi, inc. 7
composerの概要 © kaonavi, inc. 8 PHPの依存関係管理ツールです。プロジェクトに必要なライ ブラリやパッケージを自動的にダウンロード・管理してくれま す。 他にも... -
よく使うコマンドをタスクとして登録できたり - 動作環境の制限指定ができたり - パッケージの脆弱性を診断したり
おそらく使っていないプロジェクトの方が少ないはず © kaonavi, inc. 9 必要要件 PHP5.3.2以上 インストール curl
-sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer php:8.2-fpmなどのDockerイメージには最初から インストールされていないことがほとんどなので、 Dockerfileなどでインストールが必要
経験則ですが ... © kaonavi, inc. 10 リアルガチに、 composer使っていないプロジェクトっ て結構経験しました。
大抵、オレオレ PHPフレームワークを採用している場 合でした。 「どうして composer使ってないんですか?」 という質問に、明確に理由が返ってきた経験はありま せん。
composer無くてもよくない? © kaonavi, inc. 11 別に無くても製品は作れますが、 ツラい できるだけ、プロジェクトに composerを導入できるよう
にこのセッションで怖くなってほしいです - 手動でライブラリをダウンロード・配置する必要がある - バージョン管理が困難で、ライブラリ同士の依存関係で頭を抱える - アップデートの度に手作業で差し替え作業
[技術的]composer.jsonについて © kaonavi, inc. 12 - composerにおける動作の起点となるファイル - composer.jsonを理解する =
composerを理解する { "name": "your-company/awesome-project", "require": { "monolog/monolog": "^3.0" }, "autoload": { "psr-4": { "App\\": "src/" } } }
[技術的]パッケージを install © kaonavi, inc. 13 composer install - これだけで、依存パッケージ含め、必要なソースがVendor下に配置される
- 依存関係を自動的に解決し、配置してくれるのは非常に強力 { "require": {}, // 本番環境の依存関係 "require-dev": {}, // 開発環境のみの依存関係 "autoload": {}, // オートローディング設定 "scripts": {} // カスタムコマンド } composer.jsonの基本構造
Packagistとは? © kaonavi, inc. 14 - composerのデフォルトリポジトリ - 数十万のPHPパッケージが登録済み -
欲しいものは大体ある印象 { "repositories": [ { "type": "composer", "url": "https://packages.example.com" } ] } Packagist以外のリポジトリの指定ももちろん可能 (社内gitlabなど...)
途中から導入って難しくない? © kaonavi, inc. 15 <?php require 'vendor/autoload.php'; - オレオレフレームワークでもindex.phpなどのエントリポイントがあるはず
- そこで上記requireさえすれば、特に副作用無く導入可能 ですので、障壁となるのは技術的問題よりも、プロジェクト主導者 の精神的な障壁の方が高い場合が多いです
composerって遅くないの? © kaonavi, inc. 16 composerは様々なファイルを生成しますが、私たちが使うのは vendor/autoload.php だけです。 ザックリいうと、ComposerはClassが記述してあるファイルがどのファイルパス にあるかのマップみたいなものを持っています。
未定義なClassが参照されたとき、そのマップから、ファイルパスを取り出し、 requireする関数を、 spl_autoload_registerで登録しているだけです。 ですので、動作が遅くなったりはしません
composerが無い世界 © kaonavi, inc. 17
composerがある世界 © kaonavi, inc. 18
composer.lockとは? © kaonavi, inc. 19 - 実際にinstallされたパッケージの正確な記録 - composer install時に自動生成されます
- 手動書き換え厳禁!! 原則、composer installは、composer.lockを参照し、パッケージ をインストールしていきます。.lockが無い場合のみ、新規で生成 します。 このおかげで、本番/開発/ローカル環境でパッケージのバージョ ン等を統一できます
composer install --no-dev --optimize-autoloader 本番運用時のオススメ © kaonavi, inc. 20 -
以下のコマンドを使うのが一般的です - 開発環境用パッケージはインストールしない - オートロードの最適化付き(だいたい3倍ほど速くなります) composer install --no-dev --optimize-autoloader \ --apcu-autoloader ← ただし、apcuのキャッシュに詳しく無い場合使わない方が良いです Apcu拡張が入っているなら、更に最適化可能(更に3倍ほど加速)
composer install --no-dev --optimize-autoloader --apcu-autoloader php -r "function_exists('apcu_clear_cache') && apcu_clear_cache();"
curl -s "https://yourdomain.com/clear-cache.php?token=your-secret-token" または composer install --no-dev --optimize-autoloader --apcu-autoloader sudo systemctl reload php-fpm 本番運用時のオススメ © kaonavi, inc. 21 - 確実なコマンド(php-fpmの場合)
もう一つお伝えしたいこと © kaonavi, inc. 22
「本当に必要としている機能を 満たしたパッケージか?」 「ドキュメントはあるか?」 「これはパッケージ化するべき か?」 バランス感覚を意識してほしいということ © kaonavi, inc. 23
パッケージの取捨選択はとてもとても重要
何をパッケージ化するべきか? © kaonavi, inc. 24 ドメイン固有処理のパッケージは使う側もツライので作らない方が無難で す... をパッケージ化することをオススメします 社内で共通のパッケージを使うことで、プロジェクト間の差分が減り、プロ ジェクト異動時に嬉しいです...(デメリットもありますが)
- 再利用可能な機能 - 汎用的なユーティリティ - 独立性の高いコンポーネント - 他プロジェクトでも使えるもの
どうやって適切なパッケージを探すか? © kaonavi, inc. 25 Googleで検索したり、Packagistで検索したり... 今はAIがあります!!!! 「他社製のRestful APIをCallしたいんだけど良いPackage はある?」
「もうcronでのバッチ登録は嫌なんだ、何か良いPackageは ある?」
最近Go言語を主務にしていま すが、PHPは本当に便利な packageが豊富にあり、満ち満 ちた世界だったんだと感じます 自分で書くコード量を減らして、 ガンガン楽しましょう PHPは本当に恵まれています! © kaonavi, inc.
26 パッケージの取捨選択はとてもとても重要
ご清聴ありがとうございました!