人間が型だけ書けば実装を意識しないでもよくなる未来


型って「どういうことをしてほしいか」っていう 要件 の役割を持ってて、
一方で実装って「どうやってその要件を実現するか」っていう 具体的な手順 の役割を持ってますよね。

ところで仕事ができる人って、「こういうことやりたいな〜って思ってるんだけど〜」って伝えると、
「あ、それなら具体的にこういうやり方をすると良さそうですね〜」って自分で考えて提案して実行してくれてめちゃくちゃ助かるじゃないですか。

そしたら、プログラムの世界でも同じで、要件 (型) だけ書いたら 具体的な手順 (実装) を自動で導出してくれる未来が来たら嬉しい感じがしませんか?

ざんね〜ん! 未来ではなくそれは現代のお話でした〜! 1

type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
        :<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books

myApi :: Proxy MyApi
myApi = Proxy

getAllBooks :: Manager -> BaseUrl -> ExceptT String IO [Book]
postNewBook :: Book -> Manager -> BaseUrl -> ExceptT String IO Book
-- 'client' allows you to produce operations to query an API from a client.
(getAllBooks :<|> postNewBook) = client myApi

Haskell の servant-client は上記のように型を書くだけで、
実際に何かのWeb APIに対してリクエストを投げてその結果をパージングしてくれる関数の実装が自動で生成されます。

もう、「型推論が進化したら人間は型を意識しないでいいようになる」なんてあほなこと言っていい時代じゃないんですね!


さくらちゃんにご飯をあげる


  1. 文脈読めないマウンティングゴリラがウンコ投げてて臭いので補足しとくけど、僕も「人間が実装を完全に書かないでいい未来」なんて来るとは思ってないよ