プログラミング道場Top

エンジニアが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はどのように使われているのか?

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

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マッパーを通して覚えると、全てのフレームワークごとに覚えなければいけません。
でも、裏で動いている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でSQLを勉強したそうです。

次にドットインストールがいいと思います。

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

テーブル設計をより深く勉強したい人は、モデリングの勉強も合わせて勉強するといいかもです。

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

Good luck for your engineer life!

-エンジニアの生き方, プログラミング初心者

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