記事の内容
最近、このツイートが30万回も見られました。
自分が思っていた以上に、多くの人がSQLに関心を持っていたようなので、もう少しこのツイートを深掘りしていきたいと思います。
Linuxについてはこちらの記事に詳細を書きました。
10年以上働いてきたなかで、どの現場でも必ず必要だったのが、LinuxとSQLの知識です。PHP、Ruby、JavaScript、Javaといった言語は、現場次第でした。なので、初心者はLinuxとSQLを最初に勉強すべきだと思うんだけど、どうもそれが上手く伝わらない。
— ジョージ(セブ島のエンジニア) (@monkey_d_george) August 16, 2018
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アプリケーションを作るときの思考を考えてみましょう。
設計の順番
- カッコイイ、UI/UXを作る。
- データベースのテーブル設計をする
- プログラミング言語を考える
- フレームワークを考える
- 結果として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あたりを最初にオススメします。
その他にオススメの書籍は、この記事に書きました。
まとめ
この記事では、エンジニアにとってSQLは必須という話を書きました。
基本を身につけた上で、より実践的な勉強をしたい人は、基本情報処理試験の午後にあるデータベースの問題をやってみましょう。
そうしてSQLを理解した上で、O/Rマッパーを勉強すれば、よりレベルの高いエンジニアになれるはずです。
みなさんのSQL力が上達することを祈っています。
Good luck with your engineer life!
▼ Linuxの重要性を知りたい人は、この記事を読んで下さい
-
エンジニアがLinuxを勉強すべき理由【LinuxはWeb業界では必須!】
10年以上働いてきたなかで、どの現場でも必ず必要だったのが、LinuxとSQLの知識です。PHP、Ruby、JavaScript、Javaといった言語は、現場次第でした。なので、初心者はLinuxとSQLを最初に勉強すべきだと思うんだけど、 ...
▼ インフラエンジニアについて詳しく知りたい人は、この記事を読んで下さい
-
Linuxを使うインフラエンジニアの年収と需要
目次1 Linuxとは?2 Linuxの使われ方3 Linuxが使われている分野4 Linuxを使うインフラエンジニアの業務内容5 Linuxを生業とするエンジニアの年収6 インフラエンジニアの将来の需要7 インフラエンジニアの資格8 イン ...
▼ データベースについて詳しく勉強したい人は、この記事を読んで下さい
-
MySQLやデータベースの学習でおすすめの本と動画【2024年最新】
目次1 動画教材2 初心者向け【入門編】3 中級者向け4 上級者向け5 データベースを自作したい人向け 動画教材 【22日間で学ぶ】SQL文、分析関数、テーブル設計、SQLチューニングまでMySQLで覚えるSQL実践講座 ▼ 興味がある方は ...
▼ NoSQLについて詳しく勉強したい人は、この記事を読んで下さい
-
NoSQLの学習でおすすめの本と動画【2024年最新】
目次1 動画教材2 中級者向け 動画教材 MongoDB 入門 ー演習しながら学ぶクエリ操作 ▼ 興味がある方は、画像をクリック MongoDBを使ったデータ操作方法について Shell 操作を中心に実際に操作しながら学ぶことで使えるように ...
▼ ブログの内容を復習をしたい人は、動画を見て下さい