Railsプログラマー目指すならSQLは勉強しといた方がいい

 

当ブログは完全未経験からプログラマーを目指す人のためのブログです

 

どうも、神里です。

今回はSQLについて。

 

プログラミングを学び始めたばかりの方には、SQLはあまり馴染みがないかと思います。

 

実際、初心者がRailsやっても、SQLを意識することなんてほぼないですよね。

Active Record が勝手にSQL発行してくれるから、わからない人でもアプリ作れるようになってるんですよ。

 

で、やっぱりスクールもSQLのカリキュラムって結構手薄です。

というか、僕もスクール通ってましたけど、SQLなんて一切習いませんでした。

 

ルート、コントローラ、モデル、ビューをちょっといじって終わり、って感じです。

 

だから、多くの初心者がSQLの学習を見落としがちなんですよ。

見落とすというか、そもそも知らない人もたくさんいるんじゃないかな?

 

ぶっちゃけ、知らなくても簡単なWebアプリケーションなら作れますからね。

だから、そこら辺の知識が手薄になっちゃってるわけです。

 

ただ、1つアドバイスをしておくと、現場に出た時SQLしらないと結構困ること多いですよ。

だって、現場ではSQL直書きでデータ検索の処理を実装することがありますから。

 

まぁ、SQL重要なのはRailsに限った話じゃないんですけどね。

 

SQLの勉強はやっといた方がいい

初心者のうちは、あんまりSQLを理解する必要性を感じないかもしれません。

 

ですが、現場に入るとこれは必須のスキルになってきます。

さっきも書いたように、データ検索の処理をSQL直書きで実装する時があるから。

 

そのとき、前提知識がないと読むことすらできないし、コードに変更を加えるなんて絶対に無理です。

データ検索の部分で不具合でたら、サイト全体に与えるダメージめっちゃでかいですからね。

 

そこを知らない人に触らせるのって、現場の人からすると超怖いです。

 

あと、SQL知らないとRailsが裏側でどういう処理をしているのか理解することができません。

 

データを検索したり編集したりする機能を実装してると、処理上手くいかない時とかによくターミナル側に表示されるSQLをチェックするんですよ。

 

それみて、やりたいことができてるか、うまくいってないところはどこなのかを確認するわけです。

だから、書けないならまだしも、読めないのはマジでやばい。

 

現場だと、結合とか副問い合わせとか、普通に知ってる体で話すすめられますからね笑

 

SQLを学習する方法

SQLを学習する方法って、結構たくさんあります。

それに、最低限学ぶべきことはそこまで多くないので、Ruby on Railsの勉強する前にちょっと学んでおいた方がいいですね。

 

で、ベタだけどおすすめはやっぱりProgate。

これで一通り基礎をさらっておくといいですね。

 

あともう1つ、めっちゃオススメの勉強法が、 rails c でコンソール立ち上げて、モデルオブジェクトに対してメソッド実行して確かめることです。

 

User.find とか Item.all みたいな感じで。

それの練習してると、それぞれのメソッドが裏側でどういうSQL発行しているのかがよく理解できるようになりますよ。

 

慣れてきたら、 User.pluck(:name).distinct とか Item.group(:status).count とか、複雑な検索もやってみるといいですね。

 

Active Record や SQL の機能を勉強するのに rails c はめちゃめちゃ便利です。

あと、モデルオブジェクトのメソッドの動作確認にも使えますよ!

 

条件検索、結合、副問い合わせなどが一通りわかったら、また改めてRuby on Railsの勉強に戻りましょう。

そうするとさらに理解が深まりますよ。

 

裏側でどういう処理が行われているのか理解できるようになると、開発がますます楽しくなります。

 

SQLに感動した日

こっから余談。

 

僕、何百万回生まれ変わってもSQLに感動する日なんて来ないと思ってたんですよ。

でも、つい最近きました。

もうSQL超大好き。

 

何がきっかけかというと、そこそこ苦労した末にCSVデータを40万件インポートできた時です。

 

このタスク、AWSのパワー不足でサーバー止まったり、デプロイし直してインスタンス新しくしたり、データの欠陥見つけたり、ファイルを分割したりと、結構大変だったんですよ。

1週間以上は色々悩みましたからね、まぁ楽しかったけど。

 

で、実際にインポートに成功した時はめっちゃ快感でした。

僕の場合、データベースへの登録が成功した時はSQLが緑でターミナルに表示されるんですけど、それはそれはもう綺麗な緑でした。

 

パソコンの画面がぜんぶ緑、見渡す限りの緑。

緑がこんなに綺麗に見えるなんて思いもよりませんでした。

もともとは赤が好きなんですけどね。

 

そういう大きな快感があって、今では緑が、そして、SQLが大好きです。

この前も find_by_sql でデータ検索の処理を書きました。

ありがとうございます、超楽しい。

 

個人的には、副問い合わせがかっちりハマった瞬間が超気持ちいいですね。

「おぉ、ちゃんと上手くいった!」的な。

 

だから、僕はこれからもSQLとともに歩んで行きます。

宜しくお願いいたします。

 

まとめ

初心者のうちって、あんまりSQLに目が向かないかと思いますが、これはやっておいた方がいいですよ。

業務の幅が広がるし、いざ知識が必要となった時に混乱したら大変なので。

 

僕自身も、現場に入る前にある程度、MySQLOracleを通してSQLの知識を入れておいてよかったなと感じました。

 

ここら辺の理解があると、 Acrive Record のメソッドもだいぶ使いこなせるようになります。

結果として、プログラマーとしての実力も上がりますよ。

 

プログラミングやるとなると、わりとデザインの部分とか華やかなところに目がいきがちですが、こういう地味なところのスキルってめちゃくちゃ重要です。

 

ぜひ、 Progate rails c で、SQL の基礎を身につけていってください。

ぜひ!