システム業界でいうクエリ(言語)ってなんなの?
寺田 明日香
お疲れ様です。IT業界初心者のアラフォーマーケターあすりんです。
アラフォーでシステム業界へ入ったせいで日々暗号の飛び交うチャットを指を咥えて眺めていましたが、そんなことではいけない。
このシリーズ「そもそも”システム”ってなんなの」では初心者の私が日々エンジニアの会話の中で出会う「???????」をバッサバッサと解読していく予定です。
最終的には「システム」とは何であるのかを解明するという壮大な野望を秘めているかもしれない。
そういうわけで今日は<クエリ言語>を頑張って理解します!
目次
SEO業界のクエリと、システム業界のクエリって違うの?
クエリ言語は、何かをしてください、って言うための言語体系のこと
SEO業界のクエリと、システム業界のクエリって違うの?
結論から言うと違います。
一応マーケター歴10年くらいですので、それなりにWEBマーケティング界隈のことはわかっているつもりです。
「クエリ」というのもSEOの文脈で使われる言葉としては理解しておりました。
SEO界隈でクエリとは「検索の時に使う文言」「検索語句」という意味で、ユーザーが検索時に使った言葉のことを指します。

では、システム業界では?
答えを求めて私はアマゾンの奥地(zenn)へ向かった。
そこで私が目にした次の文章をご覧ください。
「そもそもGraphQLとは?
GraphQLはAPIのクエリ言語です。
クエリ言語というとSQLが有名ですが、SQLがデータベースに対してクエリを実行するのに対し、
GraphQLはAPIに対してクエリを実行します。」
どうしよう、最初の一文から完全に暗号です。
さらに「クエリ言語というとSQLが有名ですが」がかなり渋い。全くわからない。
※念の為断っておきますが、この記事そのものはとてもいい記事でした。この文章の後にちゃんとクエリに関する説明も続きます。ただただ私に理解できる能力が足りていないばかりに、壁から突然出てきた腕に殴られるような事態になっているだけです。
私の脳内がはてなで埋め尽くされることを筆者の方も予想されていたのか、前掲の記事によれば以下のように続きます。
「ちなみに、プログラミングにおけるクエリとは
データに対する問い合わせや要求などを一定の形式で文字に表現すること、
要は所定の形式で対象のデータにやりたいことを伝えること、と思ってもらえたら大丈夫です。
特にGraphQLのクエリはどのような形式でデータを受け取りたいか、も具体的に定義します。
なのでGraphQLは
APIに対してやりたいことや欲しいものを、こういう形式で返してほしい!と要求するための言語
というとイメージしやすいかなと思います。」
なるほど????(全然わかっていない顔)
検索の「クエリ」と意味は似ていますが、ちょいと違うようです。
※元々「クエリ(query)」には、問い合わせる、といった意味があります。
わからないときはとりあえず復唱しておきましょう。
この方の説明によれば、システム業界において、
クエリ言語とは、何かを要求するための言語。
クエリとは、その時に使用する文字列(言葉)。
言い換えると、クエリ言語はクエリの形式やルールを定め記述するためのプログラム言語(データベース言語)。
クエリ言語自体にはいろんな種類があるようです。(SQL、GraphQLなど)
誰(何)にどんな要求をするのか、という点はクエリ言語によって異なっているらしい。
よし、ここまではいいことにします(いいのか)。
自分にとってわかりやすくするために、この図式をAPI(魔法使い)への命令で例えてみます。
例えば、魔法使い(API)さんに「カボチャの馬車を出して」って言う(要求)とします。
「カボチャの馬車を出して」という言葉(文字列)がクエリ。
この文章は日本語で書かれているので、この場合のクエリ言語は日本語。
魔法使いAPIさんは然るべき場所(データベースなど)へアクセスしてカボチャの馬車を取ってきてくれます。

illustrated by DALL-E
な、なんて素敵な魔法使いなんでしょう!それカボチャだけどね。
では、魔法使いじゃなくて王様(データベース)に「ガラスの靴返さんかい」って言う(要求)とする。
この場合は「ガラスの靴返さんかい」がクエリ。
この文章は一応関西弁なので、クエリ言語は関西弁。
王様は要求通りガラスの靴を返してくれます。
うん、少しわかってきました。
魔法使いと王様で使う言葉が違うので、得意な言葉に合わせてあげてる。
魔法使い(API)と王様(データベース)の違いについては次回のAPIの項目で理解してみたいと思います。
ここではいったん、問い合わせ先の違いくらいで押さえておきます。
ちなみにGraphQLはAPIへ問い合わせるためのクエリ言語で、返す形式も指定するようです。
これはつまり、
魔法使いに「カボチャの馬車が何時に消えるか教えて」って言うと然るべき機関へ問い合わせた魔法使いが「00:00」って返してくれる、と言うようなことではないかと思っています。(間違っていたらこっそり教えてください。)
多分カボチャの種類とか値段とかも聞ける。APIは聞かれた情報をくれます。
ちょっと横道に外れてしまいました。Graph QL自体も面白そうなので別の機会に改めて学ぶとして。
クエリ言語は、何かをしてください、っていうための言語体系のこと。
まとめます。
システム開発界隈における〈クエリ言語〉とは、
APIとかデータベースのような、データとかデータに働きかけてくれる仕組みに対して、
「こうしてください」ってお願い(要求)するための言語。
「こうしてください」の内容(文字列)がクエリ。
伝わってますか…?
私はだいぶ、わかってきました!(ほんとか)
というか、本当に入り口に立ったばかりの者としては、今はひとまずざっくりと理解しておき、後から振り返ってわかったことをこの記事を補足していくことにしたいと思います。
では次回は、今回も出てきた有能な中間管理職(魔法使い)である「API」について頑張って理解してみましょう!
ご覧いただきありがとうございました。
参考サイト
https://jp.indeed.com/career-advice/career-development/database-languages
https://zenn.dev/y_yuita/articles/d08b8691b72e87
https://qiita.com/jonathanh/items/6394ffb5b5ad86ae914f
おまけ

挿絵を作るために「靴を返す王様を描いて」ってDALL・Eさんに頼んだら、こんなイケメンが出てきてしまいました。誰ですかきみは。王子っぽかったのでボツにしました。
