「PHP2Shell」のサービス終了ドミノと、Android SDKバージョンの厳格化は同じ構造の悩みではないか?

古いPHPバージョンを維持できずに、そのままサービスを終了せざるを得ないWebサービスやサーバーのニュースを耳にする機会が増えています。古いPHPにおける「PHP2Shell」などの脆弱性リスクやサポート終了に伴う対応の難しさは、IT業界の大きな頭痛の種です。

ふと思ったのですが、これってスマートフォンのAndroidアプリにおける「Android SDK(APIレベル)」のバージョン強制問題とまったく同じ構造ではないでしょうか?

今回は、この「レガシー基盤のジレンマ」について、共通点と背景を整理してみたいと思います。

 

🤔 なぜ「同じ」と言えるのか? 共通する3つの構造

表面上は「サーバー側の言語(PHP)」と「モバイルのOS環境(Android)」で領域が違いますが、本質的な課題は驚くほど似ています。

土台のライフサイクルと、容赦ない切り捨て

PHPの現実: 古いPHPバージョン(7系や初期の8系など)はすでに公式サポートが終了しています。重大な脆弱性が見つかってもパッチが当たらないため、安全性を保つには最新版へ上げるしかありません。しかし、古いWebアプリや自作のプラグインがそのバージョンに対応していません。

Androidの現実: Google Playストアのポリシーにより、アプリがターゲットとすべき「ターゲットAPIレベル(SDKのバージョン)」の最低要件が毎年引き上げられます。古いSDKのまま放置されたアプリは、新しいAndroid OSのセキュリティ基準を満たせず、ストアから削除されたりアップデートができなくなります。

「動いているのに、強制的に動かなくなる」ジレンマ

どちらのケースも、「プログラム自体は今のままで、エラーも出さずに元気に動いている」という状態であることが多くあります。
しかし、言語側やプラットフォーム側が「セキュリティ」や「エコ全体の健全化」を理由にアップデートを強制するため、現役で動いていたはずのシステムが突如として「NG」判定を受けることになります。

膨大な「移行・修正コスト」の壁

古いコードを最新のPHPや新しいAndroid SDKに追従させるには、非推奨(デプリケーティッド)になった関数の書き換えや、ライブラリの全面的な見直しが必要です。これには膨大な開発工数とコストがかかるため、リソースのない個人開発や中小サービスでは、「直すくらいならサービスを終了しよう」という苦渋の決断に至ってしまいます。

 

🤔 決定的な違いは「誰が強制しているか」

構造は似ていますが、外圧の性質には少し違いがあります。

Android SDK: Googleという「絶対的なプラットフォームホルダー」が、規約をもってトップダウンで強制してくる。

PHP2Shell / サーバー: プラットフォームからの強制というよりは、ネット上の「セキュリティの脅威(ボットによる攻撃や脆弱性)」というボトムアップ(環境起因)の現実が、サービスを安全に継続させることを不可能にさせる。

結果として「続けられなくなる」という結末は同じでも、そのプレッシャーの出所が異なります。

 

🤔 まとめ:ITエコシステムの高齢化という宿命

PHPのバージョン問題も、Android SDKの追従問題も、根っこにあるのは「ITエコシステムの高齢化と、それに伴う保守コストの肥大化」です。

ソフトウェアは一度作ったら終わりではなく、その周りを取り巻く環境(OSや言語、セキュリティ基準)の高速な進化に合わせて絶えずメンテナンスし続けなければなりません。

「動いているからそのままにしておきたい」という開発者側の願いと、「安全のために進化を強制する」というプラットフォームのルールの板挟み。このジレンマにどう向き合うかが、現代のシステム開発・運営における大きな課題だと言えそうです。


PHP2Shell で騒ぐ前に知っておくべきこと:「PHPのバージョンを上げれば終わり」ができない現場の構造的欠陥

最近、「PHP2Shell」と呼ばれる深刻な脆弱性が話題になり、SNSやセキュリティ関連のニュースで大きく取り上げられています。

これに対して「何をそんなに大騒ぎしているのか? PHPのバージョンを安全な版にアップデートすれば終わる話ではないのか?」と感じた人も多いのではないでしょうか。

結論から言えば、その通りです。

技術的な解決策としては「修正されたバージョンに上げる」のが唯一かつ完全な正解です。しかし、それでもこれほどの大騒ぎになっているのは、「バージョンを上げることすらできないレガシーシステムが、世の中に大量に放置されているから」に他なりません。

この記事では、なぜ「バージョンアップ」という当たり前の対応ができないのか、そしてその裏にある現場の構造的な課題について整理します。

 

🤔 なぜ「PHPのバージョンアップ」で終わらないのか?

今回の脆弱性は、PHP 5.4から8.5という非常に広い範囲に影響を与えます。そして、ここが最大のネックなのですが、すでにサポートが終了(EOL)しているPHP 8.1以前のバージョンには、公式からのパッチが提供されません。

つまり、古いPHPを使っている環境は「修正版の8.2以降」へ一気にジャンプアップ(メジャー/マイナーバージョンアップ)する必要があります。

しかし、古いPHPで動いているシステムをそのまま最新のPHP 8.2/8.3に持っていくと、以下のような問題が確実に発生します。

・ 非推奨(Deprecated)機能・廃止関数の影響で画面が真っ白になる
・ 古いフレームワークやWordPressプラグインが動作しなくなる
・ データベースの接続ドライバや仕様変更に伴う挙動不審

結果として、「ただPHPのバイナリを差し替える」だけでは済まず、アプリケーションコードの大規模な改修と全機能の再テストが必要になります。

 

🤔 バージョンアップできないシステムは、ただの「延命」である

「コードを直せばいいじゃないか」と思うかもしれませんが、現場ではそれができません。

・ 仕様書がなく、当時の開発者もいない(誰も全体像を把握していない)
・「現状動いているから触るな」という経営陣・決裁者の圧力
・ 売上を生み出さない基盤改修に予算が出ない

このようにして、「修正費用が出せないから」「壊れるのが怖いから」とバージョンアップを先送りにしてきたシステムが、今回のPHP2Shellのような致命的な脆弱性に晒された瞬間、手も足も出なくなるのです。

WAF(Web Application Firewall)の設定調整や、一時的な設定変更で攻撃を防ごうとする現場もありますが、これはあくまで「時間稼ぎの応急処置」にすぎません。

バージョンアップに追従できないシステムは、ソフトウェアとしての寿命をすでに迎えており、「技術的負債の返済を先送りして延命しているだけ」というのが残酷な現実です。

 

🤔 開発者・エンジニアが取るべき姿勢

今回の騒動から私たちが学ぶべきなのは、「脆弱性が出たときにどう対処するか」だけではありません。「そもそもバージョンアップを前提としたアーキテクチャや保守体制をどう維持するか」という点です。

・ フレームワークや言語のマイナーアップデートを日々の運用に組み込む
・ EOL(サポート終了)を迎える前に、計画的なマイグレーション予算を確保する
・「動いているから触らない」ではなく、「触り続けられる状態(テストコードやCI/CD)を保つ」

これらができていないシステムは、どれだけ強固なセキュリティ製品を前段に置いたとしても、いつか必ず破綻します。

 

🤔 まとめ

「PHPのバージョンを上げたら終わりじゃないの?」という疑問に対する答えは、「理屈の上ではその通り。でも、上げられないシステムがあまりにも多すぎるから大騒ぎになっている」です。

セキュリティの脆弱性問題は、単なる技術の問題ではなく、これまでのシステム運用・投資判断のツケが可視化された結果とも言えます。

「そもそも、アナウンス済みのさまざまな脆弱性を放置したままだったよな?」

自社で管理しているシステムや関わっているプロダクトがあるなら、今回の件を機に「いつでも言語バージョンを上げられる状態になっているか?」を改めて見直してみるのが良いかもしれません。

👉 PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical vulnerabilities that can allow unauthenticated remote code execution. All PHP users are strongly encouraged to update immediately.


スマホ用電子証明書を搭載していても要注意!「マイナ免許証」でスマホ単体での運転ができない理由

2025年3月から運用が開始された「マイナ免許証(マイナンバーカードと一体化した運転免許証)」ですが、ニュースなどで話題になるにつれて、このような誤解が増えています

「スマホにマイナンバーカードの機能を入れれば、財布やカードを持たずにスマホだけで運転できるのでは?」

結論からお伝えすると、現時点において、スマホ単体で運転免許証の代わりとすることはできません。 スマートフォンだけで運転すると「免許不携帯」の取締り対象になってしまいます。

ここでは、なぜスマホ単体での運転ができないのか、その理由と現在の正しいルールを分かりやすく解説します。

 

🤔 スマホにマイナンバーカードを搭載しても「免許不携帯」になる理由

マイナンバーカードの機能(スマホ用電子証明書)をAndroidスマートフォンなどに搭載する動きが進んでいますが、現行の道路交通法および運用ルールには以下のような壁があります。

警察官による携帯義務の規定
道路交通法では、自動車を運転する際は「運転免許証を携帯していなければならない」と定められています。

スマホ画面の提示だけでは法的な証明として認められない
警察の取り締まりや検問を受けた際、現在のところ警察側のシステムや現場の運用において、スマホ画面や電子証明書のみで運転免許情報をリアルタイムかつ法的に有効に確認するインフラが全国の現場で完全に網羅されているわけではありません。

実物の「携帯」が必須
したがって、スマホにマイナンバーカードの機能が入っていたとしても、現時点では「実物のマイナンバーカード」または「従来の緑・青・金色のプラスチック製運転免許証」のどちらかを物理的に財布やカードケースに入れて携帯している必要があります。

 

🤔 マイナ免許証の本当の仕組みとメリット

「それならマイナ免許証にする意味はあるの?」と思われるかもしれませんが、マイナ免許証には以下のような確実なメリットがあります。

住所変更などの手続がワンストップ化
警察署や運転免許センターに行かなくても、マイナンバーカードの住所変更手続を行えば、自動的に免許証の記載事項変更も連動して行えるようになります(※マイナポータル等を活用したスムーズな連携)。

更新時の講習のオンライン化(優良運転者など)
条件を満たした優良運転者などは、更新時の講習を自宅のパソコンやスマホからオンラインで受講できるようになり、免許センターでの拘束時間が短縮されます。

カード1枚への集約
財布の中に入れるカード類をマイナンバーカード1枚にまとめられるスッキリ感があります。

 

🤔 将来的にスマホだけで運転できるようになる?

政府やデジタル庁、警察庁では、デジタル社会の推進に向けて各種身分証のスマホ完全対応(デジタルID化)に向けた検討や実証実験を段階的に進めています。

将来的には、スマートフォン自体が完全に運転免許証の法的効力を持つ日が来る可能性は十分にありますが、現時点(2026年時点)においては、まだ過渡期です。

 

🤔 まとめ:ドライブの際は必ず「実物」の携帯を!

「マイナ免許証にしたから、スマホさえあれば手ぶらでドライブに出かけられる!」と油断してスマホだけで運転してしまうと、免許不携帯(反則金等の対象)として交通違反を切られてしまうおそれがあります。

マイナ免許証をお持ちの方も、従来の運転免許証をお使いの方も、車を運転する際は必ず実物のカード(マイナンバーカードまたは従来の免許証)を携帯するよう、十分にご注意ください。


2026年8月31日 API レベル36+ の件

もう疲れました。

Google PlayアプリのターゲットAPIレベル要件
2026年8月31日から開始:

・ Google Playに提出される新規アプリおよびアプリのアップデートは、Android 16(APIレベル36)以降をターゲットにする必要があります。ただし、Wear OSおよびAndroid Automotive OSアプリはAndroid 15(APIレベル35)以降をターゲットに、Android TVおよびAndroid XRアプリはAndroid 14(APIレベル34)以降をターゲットにする必要があります。

・既存のアプリは、アプリのターゲットAPIレベルよりも高いAndroid OSを実行しているデバイスで新規ユーザーが引き続き利用できるようにするには、Android 15(APIレベル35)以上をターゲットにする必要があります。Android 14(APIレベル34)以下をターゲットとするアプリ(Wear OSおよびAndroid TV向けのAndroid 13(APIレベル33)以下、Android XR向け、Android Automotive OS向けのAndroid 12(APIレベル31)以下を含む)は、アプリのターゲットAPIレベルと同じかそれ以下のAndroid OSを実行しているデバイスでのみ利用可能です。

アプリのアップデートにさらに時間が必要な場合は、2026年11月1日まで延長を申請できます 。アプリの延長申請フォームは、今年後半にPlay Consoleからアクセスできるようになります。

👉 Target API level requirements for Google Play apps - Play Console Help

実質のユーザ利用の端末OSレベルが API 36+ で 22.3% ということなのですが。

アプリ開発側だけが辛い感じで。

みなさんは、どう思ってますか。


OkHttp・Retrofit等の主要ライブラリ、コントリビューションへのLLM使用を禁止方針に

View on Mastodon

本日より、Lysineプロジェクト(OkHttp、Okio、Retrofit、SQL Delightファミリー)では、コードの作成、およびPR(プルリクエスト)/ Issueの記述やコメントにおいてLLM(大規模言語モデル/生成AI)の使用を禁止するコントリビューションポリシーを導入します。

ただし、利用を明示することを条件に、翻訳補助としての使用は例外として認められます。

リサーチ、分析、あるいは実験の目的でローカル環境でLLMを使用されることについて、私たちがそれを止めることはできません。しかし、プロジェクトへ貢献する際にはあなた自身がコードを書き、やり取りの相手もあなた自身であることを要求します。

 

🤔 まとめ

対象プロジェクト:
OkHttp、Okio、Retrofit、SQL Delightシリーズなど(Lysine配下のプロジェクト)

禁止事項:
提出コードの作成、PR/Issueの本文やコメントにおけるLLM(生成AI)の使用

許可される例外:
翻訳補助としての利用(ただし使用した旨の明記が必要)

個人での利用:
手元での調査・分析・実験的なコード試作におけるLLM使用は制約外

コアメッセージ:
コントリビューションにおいては「AIではなく開発者本人が直接書くこと」および「人間同士で対話すること」を重視する方針

そもそも、LLMで勘違いしてるやつ、多いですよね?