あんまり特定の技術や物事に対して「べき」「べきでない」「●●より○○が良い」みたいな(あるいはそれに類する)記事は書きたくない[1]のですが、今回は書いた方が良いのではないかと思ったので簡単に書きます。

この記事は執筆時点の内容に基づきます。(今回はいつもより時間経過による影響を受けやすい内容なので念のため書いときます)

predisとは


predisはPHP向けのRedisクライアントです。

問題点


で、リポジトリを見て察しのいい方は気づいたと思うのですが、2年ぐらいメンテ(コミットすら)されていません。すでにPHP7.3周りで問題が出てます。これが「どういった事情でメンテされていないのか?」「されないのではなく、できないのか?」などは誰もわからないと思いますし、もしかしたら将来的に再度メンテされる可能性はありえます。

メンテされていない、もしくはできない事情はここでは置いておいて、PHP関連でRedisで検索を行うと最近の記事でも割とこのpredisを使う例がでてきます。

おまけにメジャーなフレームワークであるLaravelのドキュメント(の次期LTSである6.0masterを除いて)Redisの項目のところにもういきなりcomposerを使ってpredisをインストールするサンプルが出てきます。

1
composer require predis/predis

前述のとおり、次期LTSである6.0masterのドキュメントでは下記の通り非推奨で7.0で削除される旨が書いてあります

なぜか現行のLTSである5.5とメンテが継続されている5.8のドキュメントには記載がありません。現時点でトップページなどでバージョンを指定せずに検索すると5.8のドキュメントが表示されるので、あたかもpredisが推奨されているかのように見えます。[2]

将来的に非推奨になるライブラリについて現状メンテされているバージョンで言及していないのは個人的にはどうなのかと思いました。もちろんOSSなのでその辺りもひっくるめて自己責任だと思うのですが、ほっとくのもどうかと思ったのでとりあえずPR出しときました。

[5.5] Document add deprecated predis
[5.8] Document add deprecated predis

よく日本語で検索で出てくるLaravelのドキュメントはこの公式との差分を更新しているようなので、 これがマージされたら更新されると思います。そもそもマージされるかどうかがわかりませんが。

追記: マージされませんでした。もうちょっとちゃんとコメントを書けばマージされたのではないかという気がするのですが、私も英語でそこまで説明するのは非常に労力を要するので厳しいです。[3]

代わりにどうすればよいのか


Laravelのドキュメントにも書いてありますが、phpredis使えばいいと思います。こちらはcomposerでインストールできない(PHP拡張モジュールなので)のでpeclでインストールします。

おわり。


  1. もちろん私も好き嫌いはありますが…あと今までどこかでは書いてるかもしれん… ↩︎

  2. 実際に5.8まではpredisが推奨なのかもしれません ↩︎

  3. のと、申し訳ないですが正直に書くとLaravelは業務で使っている。ということ以上の思い入れがないので… ↩︎