プログラミング言語より先にSQLを学んでほしい理由
目次
はじめに
「エンジニアになりたいけど、最初に何を勉強すればいいんだろう?」
これからWebエンジニアを目指す人なら、一度は考えることだと思います。
JavaScript、Python、Java、Ruby、PHPなど、調べれば調べるほど選択肢が出てきます。
自分がWeb開発を学び始めたとき、最初に作ったのは
Ruby on RailsとMySQLを使ったX(旧Twitter)風の模倣サイトでした。
そこで一番大きかったのは、Railsの書き方を覚えたことではありません。
画面で操作した内容が、どのようにデータベースへ保存され、再び画面に表示されるのか。
この「データの流れ」を理解できたことでした。
その経験から、これからWebエンジニアを目指す人には、
プログラミング言語を深く勉強する前に、一度SQLを触ってみてほしい
と思っています。
Webアプリの裏側では、ずっとデータが動いている
普段SNSを使っていると、
文章を書く ↓ 投稿ボタンを押す ↓ 投稿が表示される
という動きは当たり前に見えます。
しかし、自分で作るとなると、
- 投稿した文章はどこに保存するのか
- 誰が投稿したのかをどう記録するのか
- 保存した投稿をどう一覧に表示するのか
を考える必要があります。
投稿機能を単純化すると、次のような流れです。
投稿内容を入力 ↓ Railsがリクエストを受け取る ↓ MySQLにデータを保存 ↓ データを取得 ↓ 画面に表示
ここで初めて、
Webアプリは画面だけではなく、裏側でデータをやり取りし続けている
ことが分かりました。
SQLを知ると、データ同士の関係が見えてくる
例えばX(旧Twitter)風のサービスなら、次のようなテーブルがあります。
users
| id | name |
|---|---|
| 1 | 田中 |
| 2 | 山田 |
posts
| id | user_id | content |
|---|---|---|
| 1 | 1 | おはようございます |
| 2 | 2 | 初投稿です |
posts.user_id = 1なら、users.id = 1の田中さんが投稿したものだと分かります。
users.id ↓ posts.user_id
この関係を理解すると、
投稿した人の名前はどうやって表示しているんだろう?
という疑問にも答えられるようになります。
例えばSQLなら、
SELECT users.name, posts.content FROM posts JOIN users ON users.id = posts.user_id;
のようにデータを関連付けられます。
重要なのはJOINの構文を暗記することよりも、
「別々のテーブルにあるデータを、IDでつなげている」
という考え方を理解することだと思っています。
Railsのコードだけでは見えにくいこともある
RailsではActive Recordを使うため、SQLを書かなくてもデータを取得できます。
User.find(1)
と書けば、IDが1のユーザーを取得できます。
ただ、その裏側では概念的に、
SELECT * FROM users WHERE id = 1;
のようなSQLが実行されています。
つまり、
Rails ↓ SQL ↓ MySQL
という流れがあります。
SQLを知ってからは、Railsのコードを見たときも、
このコードによって、データベースでは何が起きるんだろう?
と考えるようになりました。
フレームワークの使い方だけではなく、その裏側まで理解できるようになるのがSQLを学ぶメリットだと思います。
「画面」ではなく「データ」から考えられるようになった
Web開発を始めた頃は、
ログイン画面 投稿画面 プロフィール画面
のように、画面を中心にサービスを見ていました。
しかし、データベースを触るようになってからは、
users posts comments likes
のように、データ側から考えることが増えました。
例えば「いいね機能」なら、
ハートのボタンを押せるようにする
だけではなく、
誰が どの投稿に いいねしたのか
をどう保存するかを考える必要があります。
このように、SQLやデータベースを理解すると、
機能をデータの構造から考える視点が身につきます。
最初は基本的なSQLだけでいい
SQLをすべて覚えてからプログラミングを始める必要はないと思っています。
最初なら、
- SELECT
- WHERE
- INSERT
- UPDATE
- DELETE
- ORDER BY
- LIMIT
- JOIN
あたりを触れば十分です。
例えば、
投稿する ↓ INSERT 投稿を見る ↓ SELECT プロフィールを変更する ↓ UPDATE 投稿を削除する ↓ DELETE
というように、画面上の操作とSQLを結びつけると理解しやすくなります。
SQLだけを勉強するより、簡単なWebアプリを作りながら、
今どのテーブルに保存された?
どのデータを取得している?
ユーザーと投稿はどうつながっている?
と確認する方が、実際の開発につながりやすいと思います。
まとめ
自分が最初にRailsとMySQLでX(旧Twitter)風の模倣サイトを作った経験から、一番大きく学んだのはRailsの書き方ではありませんでした。
データがどう保存され、どう取得され、どう画面に戻ってくるのか
を理解できたことです。
画面 ↓ Rails ↓ SQL ↓ MySQL
この流れが見えるようになったことで、Web開発への理解がかなり深まりました。
だから、これからWebエンジニアを目指す人には、プログラミング言語の文法だけを覚える前に、一度SQLを触ってみてほしいと思っています。
SQLを完璧に覚える必要はありません。
「この処理で、裏側のデータはどう動いているんだろう?」
と考える習慣をつけること。
自分にとって、そのきっかけになったのがRailsとMySQLで作った最初のX(旧Twitter)風サイトでした。



















