GitHubで公開された「GitHub documentation update: build(deps): update microsoft/microsoft-graph-core requirement from ^2.2.1 to ^2.2.1 || ^3.0.0」は、Microsoft Graph Beta SDK for PHPが依存するmicrosoft/microsoft-graph-coreを3.0.0系へ移行するための更新です。結論から言うと、PR名は^2.2.1 || ^3.0.0を許可するように見えますが、マージ後の実際のcomposer.jsonではmicrosoft/microsoft-graph-coreの要件が^3.0.0のみになっています。つまり確認すべきポイントは、PHP 8.2以上への対応、Composerのロックファイル、GitHub ActionsなどのCI設定、Kiota系依存関係の更新です。(GitHub)
この更新を「単なる依存関係アップデート」と見て自動マージすると、PHP 8.1以下の環境や、古いKiota関連パッケージを前提にしたプロジェクトでビルド失敗につながる可能性があります。Microsoft Graph Core SDK for PHPの3.0.0では、PHP 7.4〜8.1のサポート終了がBreaking Changeとして示されています。(GitHub)
microsoft/microsoft-graph-core要件変更の全体像
今回のGitHub PRは、microsoftgraph/msgraph-beta-sdk-phpリポジトリのcomposer.jsonに対する変更です。対象はGitHubそのものの機能変更ではなく、GitHub上で管理されているMicrosoft Graph Beta SDK for PHPの依存関係更新です。
重要なのは、PRタイトルと最終的な差分が完全には一致していない点です。当初は^2.2.1 || ^3.0.0のように2系と3系の両方を許可する更新として作成されていますが、レビュー過程で「v3以上のみを受け入れる」方針に変更され、最終的には^3.0.0のみがマージされています。(GitHub)
| 項目 | 変更内容 | 実務上の意味 | ||
|---|---|---|---|---|
| 対象リポジトリ | microsoftgraph/msgraph-beta-sdk-php | Microsoft Graph Beta SDK for PHPの利用者が確認対象 | ||
| 対象ファイル | composer.json | Composerで解決される依存関係に影響 | ||
| 変更前 | microsoft/microsoft-graph-core: ^2.2.1 | Core SDK 2系を許可 | ||
| PR作成時の意図 | ^2.2.1 | | ^3.0.0 | 2系と3系を両方許可する案 | ||
| マージ後の実際の状態 | microsoft/microsoft-graph-core: ^3.0.0 | Core SDK 3系が前提になる | ||
| 主な注意点 | PHP 8.2以上、Kiota 2系、ロックファイル | CI・本番環境・開発環境をそろえる必要がある |
Composerの^は、セマンティックバージョニングに沿って破壊的変更を避ける範囲を許可する演算子です。たとえば^3.0.0は通常、3.0.0以上かつ4.0.0未満の範囲を意味します。また、||は論理ORとして複数の範囲を許可します。(Composer)
そのため、^2.2.1 || ^3.0.0であれば2系に残る余地がありますが、^3.0.0のみになると、依存関係解決時に3系への移行が前提になります。ここが今回の最大の確認ポイントです。
何が変わるのか
変更の中心は、Microsoft Graph Beta SDK for PHPが使うCore SDKのメジャーバージョンです。microsoft/microsoft-graph-coreの3.0.0では、PHP 7.4〜8.1のサポート終了がBreaking Changeとして記載されています。これは、古いPHPバージョンを使い続けているプロジェクトにとって、インストールやCIの段階で失敗する可能性がある変更です。(GitHub)
さらに、Core SDK 3.0.0のパッケージ情報では、PHP要件が^8.2になり、Kiota関連パッケージも^2.0.2系を要求します。Core SDKを直接使っていない場合でも、Beta SDK経由で間接的に影響を受けることがあります。(Packagist)
変更前後の見方
// 変更前
"require": {
"php": "^8.2",
"microsoft/microsoft-graph-core": "^2.2.1"
}
// マージ後
"require": {
"php": "^8.2",
"microsoft/microsoft-graph-core": "^3.0.0"
}
ここで見るべき点は、Beta SDK側もPHP要件として^8.2を持っていることです。すでにBeta SDKの新しい系列を利用しているプロジェクトでは、PHP 8.2以上が前提になっている可能性があります。マージ後のcomposer.jsonでも、PHP要件は^8.2、Core SDK要件は^3.0.0になっています。(GitHub)
影響を受ける可能性が高いプロジェクト
今回の更新で最も影響を受けるのは、Microsoft Graph Beta SDK for PHPを使い、Composerで依存関係を更新しているプロジェクトです。特にGitHub ActionsでDependabot PRを自動マージしているリポジトリや、dev-mainを参照している環境では注意が必要です。
| 利用状況 | 影響度 | 確認すべきこと |
|---|---|---|
microsoft/microsoft-graph-betaを利用している | 高 | 次回アップデート時にCore 3系へ移行するか |
microsoft/microsoft-graph-coreを直接利用している | 高 | 3.0.0でPHP 8.2以上に対応済みか |
| PHP 8.1以下の本番環境がある | 高 | 依存関係更新前にPHPランタイムを更新できるか |
| GitHub ActionsのPHP matrixに8.1以下が残っている | 中〜高 | テスト対象を8.2以上へ移せるか |
composer.lockを固定している | 中 | すぐには変わらないが、更新時に差分が大きくなる |
| Packagistの安定版のみを使っている | 中 | 新しいタグ公開後に影響が出る可能性がある |
| Microsoft Graphのbeta APIを本番利用している | 中 | SDK更新とAPI仕様変更を分けて検証する |
composer.lockがあるプロジェクトでは、composer installだけではすぐにCore 3系へ変わらない場合があります。しかし、composer updateやDependabotの更新PRが入ったタイミングで、ロックファイルが更新されます。つまり「今動いているから問題ない」ではなく、「次の依存関係更新で失敗しないか」を確認する必要があります。
管理者・開発者が最初に確認すべき項目
まずは、実行環境・Composer設定・CIの3つを確認します。ここを飛ばしてコード修正から始めると、原因がコードなのか環境なのか切り分けにくくなります。
| 確認項目 | コマンドまたは確認場所 | 判断基準 |
|---|---|---|
| PHPバージョン | php -v | 8.2以上か |
| Composerのプラットフォーム要件 | composer check-platform-reqs | 本番相当の環境で不足がないか |
| 現在のSDKバージョン | composer show microsoft/microsoft-graph-beta microsoft/microsoft-graph-core | Core 2系か3系か |
| Core SDKを要求しているパッケージ | composer why microsoft/microsoft-graph-core | 直接依存か間接依存か |
| 3.0.0へ上げられない理由 | composer why-not microsoft/microsoft-graph-core 3.0.0 | PHPや他パッケージがブロックしていないか |
| lockファイル更新の影響 | composer update microsoft/microsoft-graph-beta microsoft/microsoft-graph-core --with-all-dependencies --dry-run | どの依存関係が変わるか |
実務では、いきなりcomposer updateを実行するのではなく、まず--dry-runで差分を確認してください。特にMicrosoft Graph SDK周辺では、Core SDKだけでなくKiota関連パッケージも同時に更新される可能性があります。
移行手順:安全にCore 3系へ対応する流れ
事前にブランチを切る
依存関係更新は、通常の機能開発よりも影響範囲が見えにくい作業です。GitHub上では、専用ブランチを作って検証するのが安全です。
git checkout -b update-msgraph-core-3
現在の状態を記録する
更新前に、現在のPHPバージョンとパッケージ状態を残しておくと、CI失敗時の比較が楽になります。
php -v
composer show microsoft/microsoft-graph-beta microsoft/microsoft-graph-core
composer why microsoft/microsoft-graph-core
dry-runで依存関係の変化を見る
composer update microsoft/microsoft-graph-beta microsoft/microsoft-graph-core --with-all-dependencies --dry-run
ここで、PHPバージョン不足やKiota関連パッケージの競合が出た場合は、先に環境側を直します。--with-all-dependenciesを付けるのは、関連する依存パッケージも含めて解決させるためです。
問題がなければ更新する
composer update microsoft/microsoft-graph-beta microsoft/microsoft-graph-core --with-all-dependencies
Core SDKを直接指定しているプロジェクトでは、必要に応じてcomposer.jsonを次のようにします。
{
"require": {
"php": "^8.2",
"microsoft/microsoft-graph-core": "^3.0.0"
}
}
CLIで指定する場合は、シェルによる^の解釈に注意してください。迷う場合は、composer.jsonを編集してからcomposer updateを実行する方が安全です。Composer公式ドキュメントでも、Windows環境でキャレットをCLI引数として扱う際の注意が示されています。(Composer)
テストと静的解析を実行する
依存関係更新後は、最低限次の確認を行います。
composer validate
composer check-platform-reqs
vendor/bin/phpunit
PHPStanやPsalmなどの静的解析を使っている場合は、あわせて実行します。Microsoft Graph APIを呼び出す処理は、認証・リクエスト生成・レスポンス処理の3点を重点的に確認してください。
GitHub Actionsで確認すべきCI設定
GitHub Actionsを使っている場合、PHP 8.1以下のジョブが残っていると、依存関係のインストール段階で失敗する可能性があります。Core SDK 3.0.0がPHP 8.2以上を要求するためです。(Packagist)
たとえば、次のようなmatrixがある場合は見直し対象です。
strategy:
matrix:
php-version: ['8.1', '8.2', '8.3']
Core 3系へ移行するなら、少なくともPHP 8.2以上での検証に切り替えます。
strategy:
matrix:
php-version: ['8.2', '8.3', '8.4']
ただし、PHP 8.4を含めるかどうかは、プロジェクトの利用ライブラリ全体が対応しているかを見て判断してください。Core SDKの過去リリースではPHP 8.4互換性に触れた更新もありますが、実際のプロジェクトでは他の依存パッケージが制約になることがあります。(GitHub)
Dependabotの自動マージは慎重に扱う
今回のようなメジャーバージョン更新は、PRタイトルだけを見ると「依存関係の範囲を広げただけ」に見えることがあります。しかし実際には、PHPサポート範囲の変更を伴うBreaking Changeです。
GitHub管理者は、少なくとも次の運用をおすすめします。
- ComposerのメジャーアップデートPRは自動マージしない
composer.lockの差分をレビュー対象にする- PHP 8.2以上のCIが通るまでマージしない
- 本番デプロイ前にステージング環境でGraph API呼び出しを確認する
- Dependabot PRのタイトルではなく、Files changedとリリースノートを確認する
今回のPRでも、最終的に変更されたファイルはcomposer.jsonであり、microsoft/microsoft-graph-coreの要件が^2.2.1から^3.0.0へ変わっています。(GitHub)
本番展開で失敗しやすいポイント
PHPの実行環境だけ古い
開発PCやCIはPHP 8.2以上でも、本番サーバーやコンテナがPHP 8.1のままというケースがあります。この場合、ローカルでは成功してもデプロイ後にcomposer installが失敗する可能性があります。
確認すべき場所は次の通りです。
| 環境 | 確認ポイント |
|---|---|
| Docker | ベースイメージがPHP 8.2以上か |
| GitHub Actions | matrixとsetup対象がPHP 8.2以上か |
| VPS・クラウドVM | CLIとWebサーバー側のPHPバージョンが一致しているか |
| PaaS | ランタイム指定やビルドパックがPHP 8.2以上か |
| ローカル開発 | php -vとIDEのPHP設定が一致しているか |
特にPHPは、CLIのphp -vとWebサーバー側のPHP-FPMが異なるバージョンを使っていることがあります。ComposerはCLI上で動くため、CIやデプロイ処理のPHPだけでなく、実行時のPHPも確認してください。
composer.lockを更新し忘れる
ライブラリ更新後にcomposer.jsonだけをコミットし、composer.lockを更新しないと、環境ごとに解決される依存関係がずれる原因になります。アプリケーションとして管理しているリポジトリでは、原則としてcomposer.jsonとcomposer.lockをセットでコミットします。
git status
git diff composer.json
git diff composer.lock
ライブラリ開発リポジトリではlockファイルを含めない運用もありますが、アプリケーションでは再現性を優先するのが一般的です。
config.platform.phpが古いPHPを指している
composer.jsonに次のような設定が残っていると、実際のPHPが8.2以上でもComposerの依存解決上はPHP 8.1として扱われます。
{
"config": {
"platform": {
"php": "8.1.0"
}
}
}
この設定は、チーム全体で特定のPHPバージョンを前提に依存関係を固定するためには有効です。しかしCore SDK 3系へ移行する場合は、8.2以上に更新するか、設定の必要性を見直してください。
Kiota関連パッケージの競合
Core SDK 3.0.0では、Kiota関連パッケージが2.0.2系へ上がります。すでにプロジェクト内でKiota関連パッケージを直接指定している場合、古い制約が残っていると依存関係解決に失敗することがあります。(Packagist)
この場合は、Core SDKだけを個別に上げるのではなく、関連パッケージ全体をdry-runで確認します。
composer why microsoft/kiota-http-guzzle
composer why-not microsoft/kiota-http-guzzle 2.0.2
composer update microsoft/microsoft-graph-core microsoft/kiota-http-guzzle --with-all-dependencies --dry-run
すぐに移行できない場合の判断基準
PHP 8.1以下の環境が残っている場合、Core 3系への移行を急ぐよりも、まずPHP 8.2以上への移行計画を作るべきです。Core SDK 3.0.0は、古いPHPサポートを落とすことで安全でない依存関係に対応する趣旨の更新として説明されています。(GitHub)
一時的にCore 2系へ留める判断はあり得ますが、その場合は「いつまでにPHP 8.2へ上げるか」を決めておく必要があります。何となく依存関係更新を止め続けると、後でMicrosoft Graph SDK、Kiota、PHP本体の更新がまとめて発生し、移行コストが大きくなります。
| 状況 | 推奨判断 |
|---|---|
| 全環境がPHP 8.2以上 | Core 3系への移行を検証する |
| CIだけPHP 8.1が残っている | CI matrixを先に更新する |
| 本番だけPHP 8.1以下 | 本番ランタイム更新を先に計画する |
| Kiota関連の競合がある | 直接依存の制約を見直す |
| Microsoft Graph beta APIを重要機能で使っている | ステージングでAPI呼び出しを重点検証する |
| Dependabot PRが自動マージ対象 | メジャー更新はレビュー必須にする |
よくある疑問
GitHub自体の仕様変更なのか
いいえ。今回の更新は、GitHub上で公開されているMicrosoft Graph Beta SDK for PHPリポジトリの依存関係変更です。GitHubのAPIやGitHub Actionsそのものの仕様変更ではありません。
ただし、GitHub ActionsでComposerを実行しているプロジェクトや、DependabotでComposer更新を管理しているリポジトリには影響します。
PR名の^2.2.1 || ^3.0.0を信じてよいのか
最終判断では、PR名ではなくマージ後の差分を見るべきです。今回のPRでは、レビュー後に^3.0.0のみへ変更され、マージ後のcomposer.jsonでもmicrosoft/microsoft-graph-coreは^3.0.0になっています。(GitHub)
PHP 8.1のまま使い続けられるのか
Core SDK 3.0.0へ移行する場合は、PHP 8.2以上が必要です。PHP 8.1以下の環境では、依存関係解決やインストールの段階で問題が出る可能性があります。(Packagist)
composer.lockがあるなら対応不要なのか
短期的には、既存のcomposer.lockがCore 2系を固定していれば動作が変わらない場合があります。ただし、Dependabot PRや手動のcomposer updateでlockファイルが更新されると影響が出ます。対応不要ではなく、更新タイミングを管理する必要があります。
何から始めるべきか
最初にやるべきことは、PHPバージョンと依存関係解決の確認です。次の3つを実行すれば、移行の難易度が見えます。
php -v
composer show microsoft/microsoft-graph-beta microsoft/microsoft-graph-core
composer update microsoft/microsoft-graph-beta microsoft/microsoft-graph-core --with-all-dependencies --dry-run
この時点でPHP 8.2未満が出るなら、SDK更新よりもPHPランタイムの更新が先です。dry-runでKiota関連の競合が出るなら、関連パッケージの制約を見直してください。
まとめ:PRタイトルではなく、実際の差分と実行環境を見る
今回のGitHub上の更新は、microsoft/microsoft-graph-coreを3.0.0系へ移行するための依存関係変更です。PRタイトルには^2.2.1 || ^3.0.0とありますが、最終的なマージ内容は^3.0.0のみです。この違いを見落とすと、PHP 8.1以下の環境や古いKiota依存関係を持つプロジェクトで失敗しやすくなります。
次に取るべき行動は明確です。まずPHP 8.2以上で動く環境かを確認し、composer update --dry-runで依存関係の変化を確認します。そのうえで、GitHub ActionsのPHP matrix、composer.lock、config.platform.php、本番ランタイムをそろえてから移行してください。Dependabot PRを扱う場合は、PR名だけで判断せず、Files changedとリリースノートを必ず確認することが安全な展開につながります。

コメント