ORマッパー全盛の今だからこそ、SQLスキルは希少価値が高い?

最近、久々にRuby on RailsやLaravel(PHP)にまた触るようになりました。
少し前まではレガシーなフレームワークだったり、名前もついていないようなオレオレフレームワークの上で仕事をすることが多かったのですが、改めて、RailsやLaravelはこれらを遥かに凌駕する使い勝手の良さがあるなぁと思いました。

簡単に書けるし、簡単ゆえに書いていて気持ちいい。
今回は、そんなフレームワークが採用するORマッパーと、SQLについて書きます。

スポンサーリンク
スポンサーリンク

ORマッパーすごい

Ruby on RailsやLaravelが特ににすごいと思ったのは、開発する上でSQLの知識がなくても、テーブル操作が簡単にできてしまう、という点。
これは「オブジェクト指向マッピング(ORM/ORマッピング)」と呼ばれるプログラミング技法があり、このORMを実現する仕組みである「ORマッパー」をRuby on RailsやLaravelがフレームワークの一部として採用していることによって実現できています。
採用されているORマッパーは、Ruby on RailsであればActive Record、LaravelであればEloquentというものです。

RailsやLaravelに限らず、CakePHPやDjangoなど、比較的新しめのフレームワークであればORMなんて当たり前なのかもしれないですが・・・。
最初に書いた通り、私はもっとレガシーな環境で開発することが多かったことからORマッパーの経験自体がなかったため、すごいなと素直に思ってしまいます。

SQLスキルに未来はあるか

ORマッパーをほぼ使ったことがない私が、これまでのテーブル操作をするために使用してきたものは「素のSQL」です。
SIで作る業務システムや基幹システムって、結構複雑なテーブル操作が必要なものが多いので、必然的にSQLも膨大になります。
そんなSQLを書いてきた自分だからこそ、ORMはすごいな、便利だなと思います。

その便利さゆえに、「ORMがあるから、SQLは知らなくてもいい」という考え方も、今では一定数を超えてメジャーになってきているような気がします。

しかし私からしたら、ORマッパー全盛の今でも、素のSQLが書けるということはスキルセットとしてのメリットが大きいと思っています。

そう思う理由は簡単で、書いたORMは、内部処理を経てSQLに変換され、最終的にSQLとして実行されるからです。
つまり、雑な言い方をすればORMはフロント、SQLはバックエンドという感じになります。

データベースは、実際にシステムが稼働し始めてからどんどんデータが増えるので、日に日に肥大化していきます。
そうなると、同じSQL(=ORM)でも、稼働から年月が経過するに連れて徐々に処理が重くなります。

システム運用とともに最適なSQLは徐々に変わっていくので、SQLも少しずつ微調整していかなければなりません。
こうなってきたときに、素のSQLを知らなければ調整が難しくなってきます。場合によっては、調整の難易度が徐々に上がってきた結果、ORMで書いていた部分をSQLで書き直さなければいけなくなるときが来るかもしれません。

そんな話でなくても、「データベースに直接潜って、ある程度の複雑なSQLが即席で作れる」ということは、システム開発をする上では何かと役に立ちます。
障害発生時だって、SQLをパパッと叩いて必要なデータをさくっと取り出せれば、障害解決までの時間を短縮できます。

また、Ruby on RailsやLaravelでは、開発時にはORMが最終的にどんなSQLとして実行されたかをログで見ることができます。
SQLが分かると、「こういうふうにORMを書くとこういうSQLになるのか」ということが理解できるので、色々なORMの書き方を試しながら、セキュリティ的にもっとも堅牢で、もっとも負荷が軽いORMの書き方を模索することもできます。

自分が採用側に回るなら、SQL経験は重視すると思う

上記で色々と書いた通り、ORMだけでなく、SQLにも詳しければ、開発効率は格段に上がるなと感じています。

なので、もし私がエンジニアを採用するなら、SQL経験は重視すると思います。
実務の経験があればベストです。
ただ、必ずしもないとダメというよりかは、入社後に何が何でもSQLを使えるようになりたいという気持ちのほうが大事だと思います。
その代わり、会社側としてもSQLを覚えるための業務をきちんと任せる体制も必要になってきます。

正直、社内や他社で採用に携わるエンジニアと話していても、「ORMは書けるけどSQLは書けない」というエンジニアはかなり増えていると聞きます。
だからこそ、SQLがきちんと書ける、ということには一定以上の価値があるのではと思います。

まとめ

色々書きましたが、ORMは簡単だし便利だし、改めてすごい技術だと思います。
ORMとSQLのどちらがいい悪いではなく、それぞれメリットを理解した上で両方ともできるようになると、エンジニアとしての可能性は大きく広がるんじゃないかな、という話でした。

Oracle、postgres、MySQLなどDBによって、SQLの構文は若干異なることもありますが、基本的なものはほとんど一緒です。
ぜひ、勉強してみることをおすすめします。

それでは!

コメント

タイトルとURLをコピーしました