はじめに
この記事では、筆者が思うエンジニア未経験の時には聞かないような用語を雑多に書いていく。
雑多なので特に用語の順番とか分類とかはしていないので見にくいかもしれないが許して欲しい。
おそらくこれはシリーズ化して、都度記事を書いていくと思う。
用語
API
これは初学者の人でも普通に知っているかもしれない。
Application Programming Interfaceの略で、ソフトウェア同士が情報をやり取りする際に使用されるインタフェースのこと。
web系の開発の現場では主にフロントエンドとバックエンドの間でデータのみのやりとり(ページデータではなくそのアプリで利用するデータの意)をする部分のことを指すことが多い(いわゆるwebAPI)
REST
以前の記事「webの概要と歴史」でも少し紹介したものだ。
Representational State Transferの略で、以下の6つの要素を組み合わせたアーキテクチャスタイルのこと。シンプルなWebシステムを実現する設計思想である。
- クライアント/サーバ
- ステートレスサーバ
- キャッシュ
- 統一インターフェース
- 階層化システム
- コードオンデマンド
現場では基本的にはAPIの設計パターンに関して使われる印象
というか筆者の場合、それ以外では技術好きのマニアックな会話くらいでしか聞かない
RESTの詳細は別の記事で書こうと思う。
GraphQL
APIのために作られたクエリ言語およびランタイム。
わかりやすくいうと、APIのための言語である。
RESTful APIと対比して使われることが多い。
RESTful APIの問題点を解消するべく、Meta(Facebook)によって開発された。
RESTと異なる点として、以下のような特徴を持つ。
- エンドポイントが1つしかない
- RESTでいうメソッドに当たるものが、query, mutation, subscriptionになっている
GitHubAPIやShopifyのストアフロントAPIはGraphQLである。
筆者も最近GraphQLを利用することがあった。
SDK
ソフトウェア開発キット(Software Development Kit)のことで、プログラム、API、サンプルコードなどのwebサイトやアプリの開発に必要なものをパッケージにしたもの
公開されているAPIも同じように開発をサポートしてくれるものも多いが、SDKはよりいろんなツールが含まれている
Windows SDK、Android SDKなどがある。
CI/CD
Continuous Integration/Continuous Delivery(継続的インティグレーション/継続的デリバリー)のこと。
開発プロセスに導入して、テストや品質チェック、デプロイなどを自動化するもの。
筆者がいた現場では、GitHubに導入し、エンジニアがコードをpushすると自動でeslintやstylelintなどのチェックが入り、特定のブランチにマージすると自動で開発用のサーバーにデプロイされるようなものを導入していた。
SPA/MPA
これはそこまでマイナーな用語ではないが一応。
SPAはSinglePageApplication(単一ページアプリケーション)のことで、1つのhtmlで構成されたアプリケーション。jsを使って複数ページに見せることもできる。
ReactやVueなどはSPAフレームワークで、容易にSPAを実現することができる。
MPAはMaltiplePageApplication(複数ページアプリケーション)のことで、複数のhtmlページで構成されたアプリケーション。
こちらが少し前まで一般的だったが、最近はSPAの開発が主流である。
SSR / CSR / SSG / ISR
それぞれレンダリングの手法である。
SPA/MPAとともに論じられることが多い。
SSRはServerSideRenderingのことで、ページのレンダリングをリクエストされたタイミングでサーバー側で行い、レンダリング済みのページをクライアント側に送信する。
CSRはClientSideRenderingのことで、大枠のhtmlとjsをクライアント側に送信し、クライアント側でレンダリングを行う。
SSGはStaticSiteRenderingのことで、アプリのビルド時にレンダリングを行い、HTMLを生成しておく。
ISRはIncremental Static Regenerationのことで、SSG同様アプリのビルド時にレンダリングを行うが、有効期限を設定し、期限切れの場合はページの再生成を行う。
基本的には、
MPAとSSR、SPAとCSRだが、最近はCSRの問題点を解決するために、SPAでSSR,CSR,SSG,ISRを使い分ける。
Next.jsなどではそれが実現しやすくなっている。
筆者もこの辺りはまだ勉強中であり、また記事にまとめようと思う。
ちなみに各手法の解説は以下が参考になる。
WebSocket
ブラウザとサーバーとの間で双方向通信を行うための通信規格のこと。
基本的にブラウザとサーバーは、ブラウザからのリクエストにサーバーがレスポンスを返す関係であり、サーバーからブラウザへのアクションはない。
それだとチャットアプリやリアルタイム配信などが困難なため、ブラウザとサーバーを常にオンライン状態にし、双方向通信を可能にするための技術。
WebRTC
WebRealTimeCommunicationのことで、ブラウザやアプリにAPI経由でリアルタイム通信を提供する技術。
これはプログラミング言語によって実現されるというより、各ブラウザに搭載されている機能のようなものである。
なのでアプリはwebRTCをサポートするブラウザを使う必要があり、実装するときはブラウザの機能を利用する形で実装する。(ライブラリがあると思うので意識することはないと思われる)
今、筆者が個人開発で作ろうとしているアプリでも使うので勉強中である。
OIDC
OpenID Connectのことで、認証を行うためのプロトコル。
認可を行うプロトコルであるOAuthの拡張仕様。
ユーザーの認証情報を1か所で管理しながら複数のWebサービスに対してシングルサインオンができ、仕様を標準化することで実装も容易になる。
勉強中なので、この詳しい仕組みについてもまた改めて記事にしたい。
以下の記事が参考になる。
最後に
今回は、筆者がこれまでのエンジニア経験で知った現場でないと学べないような技術用語を雑多に書いてみた。
まだ勉強中のものも多くあり、また用語の解説も簡単にしか書いていないので、それぞれ詳しく記事で解説したいと思う。
間違っている点などあれば是非ご指摘いただきたい。