TwitterAPI対応で見えた古いバージョンのPHPの切なさ

TwitterAPIの騒動で既存アプリのv2対応をしたのですが、その中でPHPのバージョンの古い環境があり地味に面倒なでした。

ライブラリ使えば簡単じゃないですか

既存アプリはPHP環境で、今までもTwitterOAuthのライブラリを使ってたんですよ。

ライブラリをバージョンアップすれば楽勝じゃないですか!みたいな気持ちだったのですが、composer.json を開いてみると…

"php": "^8.0 || ^8.1"

なわけです。嗚呼。
気を取り直してTwitterのドキュメントでご紹介されているライブラリなんかを片っ端から見てみるんですが…

なんと言いますか、今PHP8ですもんね、そっすよね、そっすよね。

CentOS7のデフォのPHPは5.4なんです

使っているサーバはCentOS7。PHPはデフォのapacheモジュール版の5.4。
サイトそのものが立ち上がったのがもうずっと前で、TwitterAPIの機能も「最近スタートしたGoogle+でも同じことやります?」
なんて話があった時代に作ったもの。
意識高い言葉で言うと技術的負債ってやつ。もう少し遺跡とかシーラカンスとか誉めて欲しいところではある。
色々な事情があって現在まで来てるものです。

対応範囲や工数、増やしたくないですよね

さてどうするかを考えてみる。

  1. PHPのバージョンを8にする。
    →他の機能についても書き直しや確認が必要。

  2. php-fpmをいれてTwitterAPIのところだけ8、それ以外は5.4にする。
    →モジュールからFCGIを使うようapache関係の変更や複数バージョンのPHP導入が発生する。

  3. 5.4のまま頑張って実装する。
    →他の部分の変更なし。頑張れ俺。

の3つのどれか。

作業期間に余裕があまりなく、現在も生きているサイトなのでトラブルは起こしたくなく、さらに言えば工数だってそんなかけたくない。
ということで結局、5.4のままで頑張って実装することにした。

こうやって技術的負債は解決されないまま生き残るわけです。

というわけでライブラリ使わないで書きました

を参考にして書きました。
参考にしたソースはpythonですが、やってることはOAuth2.0の処理なので、まぁそんな大変なことではなかった。
os.urandom(32)の部分がPHP5系と7系でまた異なるって部分、負債が増えましたなって状態か。
当該システム、来年まで延命するならCentOS7のままではいかないし、PHP8の環境になると思う。そうなったらTwitterAPI部分はライブラリ使うコードに書き換えて、既存ソースは捨てちゃうだろう。きっとそっちの方が将来的には安心な気はする。
そうしよう。そうしたい。そうさせてください。

この記事が気に入ったらサポートをしてみませんか?