これからエンジニアを目指す人のために、私が書いた本です^^
この本は「Kindle Unlimited」の30日間無料体験で読むのがオススメです。



エンジニアがSQLを勉強すべき理由【将来も使われ続けます!】

更新日:

記事の内容


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

SQLとは何か?

SQLとはデータベース(DB)を扱うための言語の名前で、日本ではエスキューエルと呼び、海外ではシーコールと呼びます。
データベースとはデータの入れ物です。
データベースに馴染みがない方は、Excelを想像してもらうと、わかり易いかもしれません。
Excelも一種のDBです。

また、データベースにはいくつかの種類があります。

データベースの種類

  • Oracle
  • MySQL
  • PostgreSQL
  • SQL Server
  • SQLite

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

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

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

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

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

@user.save

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

INSERT INTO User()

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 with your engineer life!

Linuxの重要性を知りたい人は、この記事を読んで下さい

インフラエンジニアについて詳しく知りたい人は、この記事を読んで下さい

データベースについて詳しく勉強したい人は、この記事を読んで下さい

NoSQLについて詳しく勉強したい人は、この記事を読んで下さい

ブログの内容を復習をしたい人は、動画を見て下さい

子供向けのプログラミングに関する本を知りたい人には、この記事がオススメです


プログラミングスクールに行きたい人には、この記事がオススメです

-IT業界, 初心者向け

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