Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

インデントとは?

インデント(字下げ)とは、文章や文字の先頭に空白(スペース)を挿入し、文字を右側に配置することです。

プログラミングのコード記述で「インデントを揃える」といった言葉を聞いたことがある人もいるのではないでしょうか。

では、なぜインデントは使われるのか、その理由を詳しく見ていきましょう。

インデントを使う理由

「なぜインデントは揃える必要があるの?」と思う人もいるのではないでしょうか。

インデントを使う理由は、大きく分けて次の3つです。

  1. 文章(コード)が読みやすい
  2. 文章(コード)が理解しやすい
  3. 文章(コード)をメンテナンスしやすい

ひとつずつ簡単に説明します。

1.文章(コード)が読みやすい

インデントを使う大きな理由のひとつは「読みやすさ」にあります。

極端な例ですが、以下のようにインデントがバラバラになっていたり、使われていないかったりすると「読みづらい」と感じるはずです。

■インデントがバラバラな例

日本国民は、正当に選挙された国会における代表者を通じて行動し、
    われらとわれらの子孫のために、諸国民との協和による成果と、
 わが国全土にわたつて自由のもたらす恵沢を確保し、
 政府の行為によつて再び戦争の惨禍

■インデントがない

日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて再び戦争の惨禍

日本語であればまだ読めるかもしれませんが、プログラミングのコードなどはインデントがないと可読性が極端に下がります。

読みづらい文章を読むのには、時間がかかる、そもそも読む気が起きないといった弊害がありますよね。

このような弊害を取り除くためにも、インデントの読みやすさは有効です。

2.文章(コード)が理解しやすい

文章の可読性が下がることで、記述内容の理解度にも影響を及ぼすでしょう。

プログラミングであれば、バグや不具合が発生した場合に、どの記述が悪いのかなかなか見つからないのは問題です。

内容がごちゃごちゃ書かれていて「どこに何が書かれているのか」がわからない文章よりも、パッと見てわかる状態の文章の方がよいことは自明ですよね。

3.文章(コード)をメンテナンスしやすい

また、ソースコードであれば後々、メンテナンスが必要になることもあります。

その際に読みづらいコードで記述されていると、メンテナンスも難しくなるといった悪影響を与えることに。

文章作成後のことも考えると、インデントを正しく使うことはとても大切なのがわかります。

 

このように「読みやすさ」「理解しやすさ」「メンテナンスしやすさ」を考慮して、インデントを使うことが重要です。

SQLでインデントのルールはある?

インデントをつける際に「ルールはあるの?」と気になる人もいるかもしれません。

ですが、一般的にインデントをつけるルールというものは存在しません。

会社やプロジェクトによっては、決められている場合もあるでしょう。

インデントと合わせて押さえておきたいSQLの記述方法

インデントのルールはありませんが、SQLクエリの記述にはある程度の共通認識が必要です。

なぜなら独自のやり方になると、他の人が読んだ場合に「読みづらい」と感じてしまうこともあるからです。

ここでは、よく用いられているSQLの記述方法を5つ紹介します。

  1. 大文字・小文字を使い分け
  2. 予約語の後は改行
  3. 1カラム1行
  4. 2スペースでインデント
  5. セミコロンは最終行に配置

ひとつずつ記述方法を見ていきましょう。

1.大文字小文字を使い分け

SQL文の大文字・小文字の使い分けも読みやすさにつながります。

サイトや人によっては大文字と小文字を分けて使っていたり、すべて小文字で書いている人もいるでしょう。

「何で大文字と小文字で分かれていたり、全部小文字だったりするんだろう?」と疑問に思っている人もいるかもしれません。

SQL文は大文字で記述しても、小文字で記述しても動作に問題はありません。

単純に読みやすさを基準にして使い分けています。

SQL文の大文字・小文字に関する記述方法は、以下を参考にするとよいでしょう。

大文字で書いても小文字で書いても動作に支障はありませんが、上記のようなルールで記述されていると読みやすく、理解もしやすくなります。

【悪い例】

select date, name as first_name, memo from user join class on user.id = class.id;

【良い例】

SELECT date, name AS first_name, memo FROM user JOIN class ON user.id = class.id;

2.予約語の後は改行

予約語の後は改行を入れると一気に読みやすさがアップします。

1行にすべての情報が書いてあっても読める人もいるとは思いますが、適切な位置で改行されたSQL文は見た目もキレイで何がどこに書いてあるのか一目でわかるものです。

ただし、全ての予約語に改行を入れてしまうのも、改行が増えすぎて逆に読みづらくなることもあるでしょう。

そのため、基準として次の予約語の後に改行を入れます。

上記の基準を参考に、改行を入れた例が次の通りです。

【悪い例】

SELECT date, name AS first_name, memo FROM user JOIN class ON user.id = class.id;

【良い例】

SELECT 
date, name AS first_name, memo
FROM 
user 
JOIN 
class 
ON 
user.id = class.id;

基本的に、「予約語→テーブル名→予約語→カラム名→予約語→…」といった順番で並べるという認識で問題ないでしょう。

3.1カラム1行

SELECTやWHEREなどで指定する条件式やカラムは、1行に1つまでにしましょう。

1行に多くの情報を記述してしまうと、ASの指定箇所や関数の範囲などがわかりづらくなります。

カラム名や条件式の認識違いが起こると、意図しない動作を引き起こす可能性も出てくるので重要なポイントです。

先ほどのSQL文をより整形すると、次の「良い例」のようになります。

【悪い例】

SELECT 
date, name AS first_name, memo
FROM 
user 
JOIN 
class 
ON 
user.id = class.id;

【良い例】

SELECT 
date
, name AS first_name
, memo
FROM 
user 
JOIN 
class 
ON 
user.id = class.id;

良い例では、カラムごとにも改行を入れています。

また、カラムを区切るカンマ(,)は行頭に記述するとよいでしょう。

4.2スペースでインデント

本題の「インデント」については、半角スペース2つでのインデントに統一すると良いでしょう。

会社やプロジェクトのルールによっては「半角スペース4つ」など決められている場合もあるので、この辺りはケースバイケースではあります。

SQL文に改行を入れるだけでも可読性はグッと上がりますが、インデントがあるとより読みやすくなります。

予約語は先頭に配置し、テーブル名やカラム名にインデントをつけます。

インデントを入れた例とそうでない例を見比べてみましょう。

【悪い例】

SELECT 
date
, name AS first_name
, memo 
FROM 
user 
JOIN 
class 
ON 
user.id = class.id;

【良い例】

SELECT 
  date
, name AS first_name
, memo 
FROM 
  user 
JOIN 
  class 
ON 
  user.id = class.id;

インデントがない場合よりも、予約語とそれ以外の情報がわかりやすく区別されていますよね。

これを見るだけでもインデントの重要性がわかるのではないかと思います!

5.セミコロンは最終行に配置

細かい部分にはなりますが、セミコロンは最終行に配置するとよいです。

その理由は、複数のSQLクエリを並べて記述する際に、SQLクエリがどこで終わっているのかがわかりやすくなるからです。

また、セミコロンは記述を忘れると正常に動作しないため、記述忘れを防ぐ意味でも最終行に書くようにすると良いですね。

【悪い例】

SELECT 
  date
, name AS first_name
, memo 
FROM 
  user 
JOIN 
  class 
ON 
  user.id = class.id;

【良い例】

SELECT 
  date 
, name AS first_name
, memo
FROM 
  user 
JOIN 
  class 
ON 
  user.id = class.id
;

 

以上、5つのSQL記述方法について紹介しました。

「何だか細かいルールが多くて大変」と感じた人もいるかもしれません。

しかし、これらの記述を意識するだけSQL文の読みやすさが格段に変わります。

これまでSQL文の記述方法を意識していなかった人は、ぜひ参考に記述してみてください!

SQL文の整形サンプル

ここまで、SQL文の記述方法やインデントのつけ方を紹介しました。

毎回記述方法を意識してSQL文を書くのもよいですが、頻繁に使うSQLクエリはフォーマットがあると便利です。

ここでは、よく利用するSQL文の整形サンプルを紹介します。

ひとつずつ、記述例を見ていきましょう。

SELECT文

SQL文の中でも頻繁に使う構文です。

基本的な記述方法の通り、予約語は行頭に記述し、テーブル名やカラム名の前には半角スペース2つ分のインデントをつけます。

ただし、改行が増えすぎても可読性に欠けるため、「AS句」はカラム名と合わせて1行で記述しましょう。

SELECT
  テーブル名.カラム名1  AS  別カラム名1
, テーブル名.カラム名2  AS  別カラム名2
FROM
  テーブル名
WHERE
  テーブル名.カラム名3 = 条件
ORDER BY
  テーブル名.カラム名1
, テーブル名.カラム名2
;

CREATE文

CREATE文は「CREATE」と「TABLE」を分けて記述しています。

改行が増えるのが嫌な場合は、1行で記述しても問題ないでしょう。

カラム名とデータ型は、行ごとに揃えて記述すると可読性の観点からよいです。

CREATE
TABLE
  テーブル名(
  カラム名1 データ型
, カラム名2 データ型
, カラム名3 データ型
)
;

INSERT文

INSERT文も、改行が増えるのが嫌な場合は、「INSERT INTO」と1行で記述しても問題ないです。

また、カラム名と値は行ごとに揃えて記述しています。

INSERT
INTO
  テーブル名(
  カラム名1
, カラム名2
, カラム名3
)
VALUES(
  値1
, 値2
, 値3
)
;

UPDATE文

UPDATE
  テーブル名
SET
  テーブル名.カラム名1 = 値1
, テーブル名.カラム名2 = 値2
WHERE
  テーブル名.カラム名1 = 条件
;

DELETE文

DELETE
FROM
  テーブル名
WHERE
  テーブル名.カラム名1 = 条件
;

ALTER文

ALTER
TABLE
  テーブル名
ALTER
COLUMN 
  カラム名 データ型
;

MERGE文

MERGE文は全体的に記述量が多く、複雑になりがちですが、記述方法通りに書けばきれいに整形できます。

MERGE
INTO
  テーブル名1
USING
  テーブル名2
ON
(
  テーブル名1.カラム名1 = テーブル名2.カラム名2
)
WHEN MATCHED THEN  -- 条件が一致した場合
  UPDATE
    テーブル名
  SET
    テーブル名.カラム名1 = 値1
,   テーブル名.カラム名2 = 値2
  WHERE
    テーブル名.カラム名1 = 条件
WHEN NOT MATCHED THEN  -- 条件が一致しなかった場合
  INSERT
  INTO
    テーブル名(
    カラム名1
,   カラム名2
,   カラム名3
  )
  VALUES(
    値1
,   値2
,   値3
  )
;

CASE式

CASE、WHEN、THEN、ELSEの後にそれぞれ改行を入れるときれいに整形できます。
「CASE」から「END」まではインデントを入れて、条件文とその条件式をわかりやすく記述しましょう。

CASE
  WHEN
    条件式
  THEN 
    1
  WHEN
    条件式
  AND 条件式
  THEN 
    2
  ELSE
    0
END

WHERE句

WHERE句の場合、カラムと条件式の比較は左辺にカラムを記述するように統一しましょう。

WHERE
  テーブル名.カラム名 = 条件式
AND  テーブル名.カラム名 < 条件式

また、複数テーブルで条件式を使う場合は、FROM句に記述した順番で記述します。

FROM
  テーブル名1
, テーブル名2
, テーブル名2
WHERE
  テーブル名1.カラム名1 = 条件式
AND テーブル名1.カラム名2 = 条件式
AND テーブル名2.カラム名1 = 条件式
AND テーブル名2.カラム名2 = 条件式
AND テーブル名2.カラム名1 = テーブル名1.カラム名1
AND テーブル名3.カラム名1 = 条件式
AND テーブル名3.カラム名2 = 条件式
AND テーブル名3.カラム名1 = テーブル名1.カラム名1
AND テーブル名3.カラム名2 = テーブル名1.カラム名2
AND テーブル名3.カラム名3 = テーブル名2.カラム名3

条件の「AND」と「OR」は行頭に記述するように統一すると、可読性が上がってよいでしょう。

SQLでインデントをつけるツール

ここまで、SQLでインデントをつける基準・ルールについて解説しました。

内容は理解したものの「毎回この基準を確認しながら、インデントをつけるのは面倒くさい」と感じる人もいるでしょう。

実は、Web上でインデントを簡単につけてくれるツール・サイトがあります。

手間隙をかけずに、ある程度SQLクエリを整形したい場合に便利です。

例えば、以下のようなサイトがあります。

使い方は至って簡単で、整形したいSQL文を入力し、条件を設定すればOKです。

例えば、「SQL文整形」でSQL文を整形した場合、次のような形で表示されます。

SQLインデントツールの使用例

整形されたSQL文を見ると、予約語が大文字になっていたり、改行・インデントがついていたりと、この記事で説明した内容が反映されていますよね。

このような形で、入力したSQL文を簡単に整形できます。

サイトやツールによっては指定できる条件が異なるので、ぜひ自分にあったツールを見つけて活用してください。

まとめ

SQLのインデントについて解説しました。

インデントは、自分や他の人がSQL文を読んだ際の読みやすさやメンテナンスしやすさにもつながる重要な要素です。

決まったルールというものはありませんが、この記事を参考に読みやすいSQL文を作成しましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。