uzullaがブログ

uzullaがブログです。

PHPカンファレンス福岡2016でのPSR-7についてのトークで私が質問した件

http://psr7.net/sasezaki/phpconfuk2016/psr7.net

こちらにつきまして、Tweetだと長くなってしまうのでこちらで。

質問したかったこと

昨今、なんらかのセッション機構はウェブアプリケーション実装には必須だと思っておりますが、それはPSR-7では(目指す物からすれば当然ながら)用意されていません。

セッション機構の実装は簡単なものから複雑なものまで色々あり、適切なセッション機構を選択あるいは実装するのは難しいので、なにも考えずにそれなりに使えて相互運用性のあるPHPの$_SESSIONは非常に助けられてきましたし、今後もできればデファクトなセッション機構をつかいたいとおもっています。

私が見た限りでは、PSR-7を採用するウェブアプリケーションフレームワークでは独自実装する所、ミドルウェアとして用意する所、あるいは今後も$_SESSIONをつかう所もあるようでした。

PSR-7時代においては、セッション周りはどのような方向に向かうとおもわれますか?トレンドや感想でもかまいません。

…みたいなのが以上が当日質問したかった事です

当日は緊張してしまい、支離滅裂ですいませんでした…。

いや、このエントリでも通じるか怪しい、察して頂いてすみません。

ただ、その後もう少し立ち話をさせていただき、私が「ReactPHPみたいなもの」のためにPSR-7をみていることと、PSR-7のMiddlewareでつくられたSessionの例を頂いたので、今はある程度納得している(別に当面は$_SESSIONでもいいじゃないか、PHPだもの)状態です。ありがとうございました。

以下は余談

今に到るまでPHP$_*変数で簡単に入力が扱えるのが非常に気に入っている反面、グローバル変数漬けであり、他の言語なら簡単にできるモック的な動作や、サブリクエストみたいなものの実装が面倒でした。(たとえばE2Eっぽいテストではしばしばサーバーをたてて実際にhttp requestをとばしたりするのが面倒)

勿論、多くのウェブアプリケーションフレームワークではHTTP Messageは実装されているので、それらの上ではそれらをつかえばよいです。しかし、私は大きなフルスタックウェブアプリケーションフレームワークがあまり好きではない。

そんな中、PSR-7が流行れば私の不満は減るかな?とおもっていたのです。

実際につかってみたところ、統一的なセッション機構のインターフェースがないと私の不満は全部は解消されないな〜と当時感じました。(幻想であっても)セッション情報の相互運用ができてほしいのです。

そのような感想をもちつつ、先日のPHPカンファレンス北海道2016に向けて、PSR-7のオレオレFWをつくりつつ、ミドルウェアでセッション機構をちょっと書いてみたりしました(コミットしてないですが)。

そのときに感じたのは「attributesの自由さ」です。

PSR-7においてはミドルウェア間あるいはミドルウェアとアプリ間の値のやりとりにはattributesを使う事になると思いますが、これがなんでも入れられる箱になっていて、ネームスペース概念が特にない。

まあHttp headerだってネームスペース的な概念はないので、「あたらなければどうということはない」とも言えるのですが…ここに好き勝手に入れていく事に自信がもてなかった。

「有名な頭の良い人が、attributesにセッションいれるならこうやっていれてるぜ(いれようぜ!)!」というのがでてくれば、私の不満、あるいは不安は解消されて解決するのかもしれない…とはうっすら思っています。*1

以上です、精進します。

更に余談

みんな(特に海外の人)セッションのデータをCookieにいれるのに抵抗ないの?https時代だからいいやって感じなの?

*1:私がベストプラクティスやガイドラインをしらないだけの可能性も高い