第二夜:君に伝えたいことが、四つあった。
翌日も同じバーで僕たちは会った。雨が降っていた。都会のアスファルトを濡らす音が、どこか昔の恋を思い出させる。僕は少し早く来て、ジントニックを頼んでいた。美咲は黒いコートを脱いで、静かに隣の席に座った。
「昨日のRESTの話、なんだか夢に出てきたわ」
彼女はグラスを持たずにそう言った。「URIがどこまでも続いてて、その途中で何度も404が返ってきたの。」
「その夢は悪くないかもしれない」僕は言った。「少なくとも、エラーハンドリングがちゃんとされてる。」
美咲がくすっと笑う。
「今日は、HTTPメソッドの話をもう少しちゃんとしようか」
「うん、聞かせて。昨日の“手紙”の例え、結構気に入ってるの。」
「じゃあ続きを話すよ。たとえば——君が昔の恋人に何かを伝えたいとき、どんな内容の手紙を送る?」
「そうね……“元気にしてる?”って聞くか、“今でもあなたのことを思ってる”って伝えるか、かな。」
「それ、まさにHTTPメソッドの世界だよ」
僕はナプキンにペンで、四つの単語を書いた。
GET
POST
PUT
DELETE
「これが基本の四天王。恋文界のプロトコルだ。」
「プロトコル、ね。」
「GETは、“情報がほしい”という意思表示。たとえば、昔の恋人の近況が知りたい。“今、どこにいる?”とか、“まだ犬を飼ってる?”みたいな。」
「その情報を返してくれるの?」
「もし彼女がまだURI上に存在していれば、200 OKが返ってくる。『飼ってるわ。今でも同じ名前の犬よ』みたいにね。もしもういなければ……そう、404 Not Foundだ。」
「悲しいけど、わかる気がする。」
「POSTは、“新しい思い出を追加したい”という気持ちだ。つまり、『久しぶりに会えない?』とか、『また一緒にレコードを聴きたい』とか。」
「それって、ちょっと勇気いるわね。」
「そう。でも、うまくいけば201 Createdが返ってくる。」
「わあ、それはうれしい返事ね」
「PUTは、“既存の内容をまるごと書き換えたい”というもの。たとえば『前に言ったこと、全部忘れて。僕は君をずっと誤解してた』みたいな。」
「それは……難しいわね。全部塗り替えるなんて。」
「そうなんだ。だから本当はあまり使わない方がいい。人間関係においてはね。でもAPIの世界では、PUTはよく使われる。リソースを“完全に”置き換えるのが目的だから。」
「じゃあ、PATCHは?」
「PATCHは部分的な修正。『あのときの手紙、最後の一文だけ訂正させて』みたいな感じだね。」
「それなら、現実的かも。」
「最後はDELETE。これは、完全な別れの手紙。“君のことはもう削除する。記憶のリソースから。”」
美咲は少し黙っていた。グラスの氷がまた小さな音を立てた。
「……私はDELETEの手紙、まだ出せたことないかもしれない」
「誰だってそうだよ。DELETEは重い処理だ。取り消しは効かない。だからこそ、ちゃんと考えて送らないといけない。」
彼女は黙って僕の書いた単語を見ていた。そして、小さく頷いた。
「ねえ、REST APIって、なんだか人間の感情に似てるのね。」
「そう。冷たいようでいて、きちんとルールを守っていれば、すごく美しいやりとりができるんだ。」
その夜も、僕たちは長い時間を過ごした。話はREST APIのことだったけれど、どこか僕たち自身のことでもあった。