プログラミング、フリーダイビング、旅行のブログ

プログラミング道場

adsense

エンジニアがSQLを勉強すべき理由

更新日:

最近、このツイートが30万回も見られました。
自分が思っていた以上に、多くの人がSQLに関心を持っていたようなので、もう少しこのツイートを深掘りしていきたいと思います。
Linuxについてはこちらの記事に詳細を書きました。

本記事の内容

  • SQLとは何か?
  • SQLはどのように使われているのか?
  • 未経験者はO/Rマッパーを使いがち
  • データベースとSQLの知識が大事な理由
  • SQLの勉強方法
  • まとめ

SQLとは何か?

SQLとは何でしょうか?
SQLはデータベース(DB)を扱うための言語の名前で、日本ではエスキューエルと呼び、海外ではシーコールと呼びます。
データベースにはいくつか有名な種類があります。

  • Oracle
  • MySQL
  • PostgreSQL
  • SQL Server
  • SQLite

基本的な機能に変わりはないのですが、OracleとSQL Serverは有償で、MySQL、PostgreSQLとSQLiteは無料です。
そのため、あまりお金のないWeb業界ではMySQLやPostgreSQLがよく使われています。
特にMySQLの人気が高いように思います。

SQLはどのように使われているのか?

データベースとはデータの入れ物です。
データベースに馴染みがない方は、Excelを想像してもらうと、わかり易いかもしれません。
Excelも一種のDBです。

データベースはあらゆるサービスで、ほぼ100%使われています。
Facebook、Google、Amazon、クックパッド、Line、DeNAといった全ての会社で使われています。
そのため、DBを扱うためのSQLが使われていないWeb系の会社は、ほぼ無いと思っていいはずです。
クックパッドさんが研修で説明していた画像にもDBサーバがあることがわかります。

未経験者はO/Rマッパーを使いがち

これほど、どこでも必ず使われているSQLなのに、経験が浅い人達はSQLを避けがちです。
昔はSQLを避けることはできなかったのですが、最近はRailsやLaravelといったフレームワークがO/Rマッパーという便利なものを提供するようになったので、SQLを知らない人達もチラホラといるようです。
ちなみに、O/Rマッパーとはこういうものを指します。
このソースコードの裏でSQLが実行されています。

SQLだとこんな感じになります。

O/Rマッパーを使った方が、直感的にわかり易いのは、よくわかります。
でも、O/Rマッパーだけを覚えるのはあまりよくありません。
なぜならば、O/Rマッパーは提供しているフレームワークごとに違いがあるからです。
O/Rマッパーを通して覚えると、全てのフレームワークごとに覚えなければいけません。
でも、裏で動いているSQLを覚えてしまえば、いくらでも応用が利きます。
そのため、私はSQLをシッカリと覚えることをオススメします。

データベースとSQLの知識が大事な理由

データベースとSQLの知識は、これから益々、大事になってきます。
例えば、こういったフォームを作成する時のことを考えてみましょう。

なんてことのない、ただのフォームです。

  • 名前は、テキスト
  • 電話番号は、テキスト
  • 都道府県は、セレクトボックスで選択式

こういったWebアプリケーションを作るときの思考を考えてみましょう。

  1. カッコイイ、UI/UXを作る。
  2. データベースのテーブル設計をする
  3. プログラミング言語を考える
  4. フレームワークを考える
  5. 結果としてO/Rマッパーの種類が決まる

UI/UXは、いつ考えてもいいのですが、2番め以降は順番に考えていきます。
4番から先に考える人はいません。
データベースのテーブル設計をして、データ量や通信量をサラッと考慮したあとで他のことを考え始めます。
広告表示のようなスピードが優先されるアプリケーションで、Ruby on Railsは、あまり良いチョイスとは言えません。

またテーブル設計次第で、データを読み込む時間や発行すべきSQLの内容が変わってきます。
正規化してテーブルを2つに分けるか、あえて非正規してテーブルを1つにするというやり方もあります。
色々と奥が深いのが、データベース設計とSQLです。

さらに大事なことを伝えます。
将来的には、3から5の作業は減ってくるはずです。
つまり、プログラミング言語やフレームワークを決める必要はなくなります。
なぜならば、Firebaseのようなサービスが、データをそのまま返却するからです。

Ruby on RailsやLaravelといったフレームワークは、端的に言えばデータを加工する言語です。
それはつまり、新しい機能がデータを高速に加工してくれれば、Ruby on Railsは必要なくなるという意味です。

将来的なWebアプリケーション開発では、UI/UXを作成する人達とデータベース設計をする人達だけで、実装を行うことになるはずです。

この図でいえば、Webサーバ、Appサーバ、検索サーバは全て消えて、残るのはDBサーバだけになります。

SQLの勉強方法

これまで読んだところで、SQLを勉強しようと思った人もいるはずです。
そこでSQLとテーブル設計の勉強方法ができるサイトや本を紹介します。

Progate

まずはみんなが大好きなProgateをやりましょう。
Progateが苦手という方は、他の学習サイトでもかまいません。
将棋ソフトで有名な山本さんもProgateでSQLを勉強したそうです。

ドットインストール

ドットインストールのMySQL入門がオススメです。

paizeラーニング

PaizeのSQL入門編も勉強になります。

オススメの書籍

そして資格の勉強で基礎力をつけましょう。
Oracle Master Bronzeあたりを最初にオススメします。

その他にオススメの書籍は、こちらの記事に書きました。

【MySQL入門】MySQLの学習でオススメの本

まとめ

この記事では、エンジニアにとってSQLは必須という話を書きました。
基本を身につけた上で、より実践的な勉強をしたい人は、基本情報処理試験の午後にあるデータベースの問題をやってみましょう。
そうしてSQLを理解した上で、O/Rマッパーを勉強すれば、よりレベルの高いエンジニアになれるはずです。
みなさんのSQL力が上達することを祈っています。

Good luck for your engineer life!

この記事に興味を持った方には、こちらの記事も読んでみて下さい。

-IT業界, MySQL, プログラミング, 初心者向け, 勉強方法

Copyright© プログラミング道場 , 2019 All Rights Reserved Powered by AFFINGER4.