最近PhoenixというElixir製のWAFを勉強している。生産性とスケーラビリティをここまで両立できているのかと感心している。データベース操作には、EctoがRailsのActiveRecordに相当するものだが、オブジェクトではないのでORMではない。もっとシンプルな構成をしていて、データベース操作やクエリの組み立てを関数合成のようにできるようになっている。Elixirではマクロを利用することで抽象構文木を操作することができる。例えばElixirのunlessという構文はマクロで定義されている。つまり、自分でもシンタックスを定義できるということだ。そのおかげでEctoでは、SQLのシンタックスのようなエレガントなAPIを提供することができている。 Ectoはデータベース操作用途に作られたプログラミング言語のような美しさを兼ね備えているのだ。 Ectoの基本構成 Ecto.Repo こ
![Elixir Phoenixのデータベース操作モジュールEcto入門 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/a8cb565e68e1d8ce08f6d1e4bd508a38e8d36d7c/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9RWxpeGlyJTIwUGhvZW5peCVFMyU4MSVBRSVFMyU4MyU4NyVFMyU4MyVCQyVFMyU4MiVCRiVFMyU4MyU5OSVFMyU4MyVCQyVFMyU4MiVCOSVFNiU5MyU4RCVFNCVCRCU5QyVFMyU4MyVBMiVFMyU4MiVCOCVFMyU4MyVBNSVFMyU4MyVCQyVFMyU4MyVBQkVjdG8lRTUlODUlQTUlRTklOTYlODAmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTljNWJhMDAzYWJhMjFhMzMxNzNkNmI2MGM1OTI5N2Ey%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB5b2F2bHQmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWRjMDI1NjgyNTE2MjU1ZTQ5OWE5YTljNTQ0YjhiNTEz%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D2b633826c51c152e433c19ee3d1bc1b7)