LoginSignup
103
138

Webシステム開発で関わる技術のまとめ(2022年に知った物)

Last updated at Posted at 2023-02-03

はじめに

Webシステムの開発に携わりたくて転職して9か月,知らない事ばかりで日々勉強しております。
自分の勉強用メモとして知っておくべき技術をまとめようと思いました。
(こちらの記事にインスパイアされたものです)

技術用語について,なるべく2~3行で概要を説明できる事を目指しています。

情報が多過ぎるので,主流な技術は見出しを赤字にしています。(主観強め)
また,今後需要が増えそうな技術は青字にしています。(かなり主観強め)
とはいえ,新しい技術が登場すれば,数年でトレンドが変わってしまう事も多々あると思います。

ほとんどはあくまでも初心者がネットで情報をかき集めた程度のものです。
誤りがあればご指摘,ご意見など頂きたいです。

※2023/2/6追記
不正確・不十分だと思った記載はひっそりと随時修正しています。
また,「そういえばこんなんあったな」という項目も追記しています。
あと,自分が読み方覚えたいものはルビを振っていきます。

【クラウドプラットフォーム】

IaaS, PaaS, SaaSを提供しています。
AWSAzureでシェア50%を超えます。
オンプレ環境で数ヶ月かけて構築するようなインフラが,ワンクリックで用意できる時代になってしまいました。
(知識が必要な事に変わりはありませんが)

大企業ではAzureの採用が増えているように感じます。

AWS(Amazon Web Services)

2006年サービス開始。シェア31%(2022年)
IT業界に革命を起こしたクラウドサービスの先駆けです。

各サービスの名前が独特です。
主要なサービスはみんな知っている前提で話をされる事があります。

  • Amazon EC2: 仮想サーバーです。
  • Amazon EBS: 高可用性のストレージです。EC2インスタンスからローカルディスクとして認識されます。
  • Amazon S3: ストレージです。EBSより容量あたりの料金が安いので画像や動画などのコンテンツの格納に向いています。
  • Amazon RDS: データベースです。
  • Route53: DNSです。名前の由来はUDP53番ポートです。

アマゾン ウェブ サービス(AWS クラウド)- ホーム

Microsoft Azure

2010年にサービス開始。シェア24%(2022年)
Microsoftの様々な製品・サービスと連携しやすいです。

クラウド コンピューティング サービス | Microsoft Azure

※英語圏の発音をカタカナにすると「アジュア」(アジャーのリズムで)が一番近い気がしますが,
ほとんどの日本人は「アジュール」と呼んでいます。

GCP(Google Cloud Platform)

2008年にサービス開始。シェア8%(2022年)です。
採用例を見たことが無いので何とも言えません。
大規模なデータの処理が得意らしいです。

Google Cloud Platform

【プログラミング言語】

JavaScript

Webブラウザ上で動く言語です。
現在のWebシステムは確実に使用します。
ECMAScriptという仕様で規格化されています。

私はES5の時代にトラウマを植え付けられたのですが,
ES6以降は仕様も綺麗になって最も人気の高い言語の1つです。

TypeScript

Microsoftが開発しました。
JavaScriptに静的型付けとオブジェクト指向を加えたスーパーセットです。
コンパイルするとJavaScriptになります。

Java

とても幅広く使われている言語です。
JVM(Java Virtual Machine)上で動きます。
サーバーサイドで企業に広く使われている言語です。

Java関連の技術を知ろうとするだけで情報量に圧倒されます。
Setter/Getterをメソッドとして書かないといけないのが面倒臭いです。
(IDEが面倒臭さの大部分を吸収してくれますが……)

Kotlin

Javaプラットフォームの言語です。
Javaよりも簡潔で安全な構文のモダンな言語です。

Androidの開発で使われます。(AndroidもかつてはJavaで開発されていました)
サーバーサイドの開発でも使用できます。

Scala

Javaプラットフォームの言語です。
Javaをモダン化した言語です。
「オブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語」らしいです。

難しそうです……

Groovy

Javaプラットフォームのスクリプト言語です。
Gradleでお世話になります。

Swift

特にiOSmacOSの開発で使われます。
Objective-Cの後継です。

PHP

Webに特化したスクリプト言語です。

Ruby

日本製のスクリプト言語です。
スタートアップ向きです。

Python

インタープリタ型言語です。
AIや機械学習の分野に強いです。
科学計算の分野でもFORTRANからPythonに移る例があるようです。

Go(Golang/Go言語)

Googleが開発した言語です。
軽量でシンプルなのが特徴です。
継承や例外処理が無いのが特徴的です。

Rust

CC++の後継として開発された言語です。

モダン言語のように安全で書きやすく,C++のように速い……らしいです。

C#

Microsoftが開発した言語です。
主にWindowsアプリ(.NET Framework)やUnity(ゲームエンジン)の開発などに使われます。

個人的に一番好きで,文法が最も美しい言語の1つだと思います。

VB.NET(Visual Basic .NET)

Microsoftが開発した言語です。
見た目はVisual Basic風ですが,仕様はほとんどC#です。

個人的には絶対に関わりたくない言語No.1です。

VBA(Visual Basic for Applications)

Excelのマクロが作れます。
Webに関係無いのですが,これでゴリゴリツール作ってる職場もあります。

【サーバーサイドのフレームワークなど】

サーバーサイド」「バックエンド」が何を指すかは人や文脈に依りますが,
私は以下のように解釈しました。

  • フロントエンド: ユーザーの目に見えるもの(ブラウザやクライアントアプリ)
  • サーバーサイド: サーバー上で動くもの
  • バックエンド: ユーザーから見えない処理をするもの

Spring

Javaプラットフォームのフレームワークです。
Spring Frameworkか,それを使いやすくするSpring Bootを指す事が多いです。
JavaKotlinScalaGroovyなどで開発できます。

Spring | Home

複数言語が選択肢って扱いが難しそう……と思いきや,
Spring Initializrで言語などを指定するとすぐにプロジェクトのテンプレートを用意してくれました。

Spring Initializr

Ruby on Rails

RubyのWebフレームワークです。
"Don't Repeat Yourself" という理念が素敵です。

Redmineの開発にも使われています。

Ruby on Rails

Laravel

PHPのWebフレームワークです。

Laravel - The PHP Framework For Web Artisans

Flask

PythonのWebフレームワークです。

Welcome to Flask — Flask Documentation (2.2.x)

Django

PythonのWebフレームワークです。

The web framework for perfectionists with deadlines | Django

Gin

GoのWebフレームワークです。

Gin Web Framework

Node.js

サーバーサイドJavaScript実行環境です。
SSRを実現したり,JavaScriptでフルスタック開発したりと色々できるようです。

npm(Node Package Manager)というNode.js用のパッケージ管理ツールを使用します。

Node.js

Express.js

Node.jsのWebアプリケーションフレームワークです。

Express - Node.js web application framework

【フロントエンドのフレームワークなど】

SPAを実現するJavaScript(TypeScript)フレームワーク(もしくはライブラリ)です。
AngularReactVue.jsが御三家です。

Angular (2.0以降)

Googleが開発しました。2016年リリース。
前身のAngularJS(Angular 1)は2010年リリースです。

Angular 日本語ドキュメンテーション

React

Facebook(現Meta)が開発したJavaScriptライブラリです。2013年リリース。
レンダラーに依存しないという原則があり,Webに限らずスマホアプリなどにも適用できます。

React – ユーザインターフェース構築のための JavaScript ライブラリ

Next.js

Reactベースのフレームワークです。2016年リリース。
SSRSSGISRが使えます。

フロント技術の中でも先進的なようです。

Next.js by Vercel - The React Framework

Vue.js

JavaScriptフレームワークです。2014年リリース。
日本では使用率が高いようです。

Vue.js - The Progressive JavaScript Framework | Vue.js

Nuxt.js

Vue.jsベースのフレームワークです。
Next.jsにインスパイアされたらしいです。
SSRSSGが使えます。

Nuxt: The Intuitive Web Framework

その他,JavaScriptやReactで使われるライブラリ

jQuery
Redux
Recoil
SWR

【MPAとSPA】

現在,新規開発されるWebシステムはSPAが多いです。

MPA(Multiple Page Application)

従来から存在するWebの仕組みです。
ブラウザからのHTTPリクエストに対して,サーバーからHTMLが返って来て,レンダリングし,画面遷移します。
ユーザーが操作する度にこれを何度も繰り返します。

JSPなどで開発されます。
画面とビジネスロジックを分離しづらいという欠点がありました。
例えばWebデザイナーが納品したHTML/CSSからJSPを作る作業をエンジニアがしたり。

SPA(Single Page Application)

現在主流の仕組みです。
ブラウザはWebシステムにアクセスした初回のみHTMLを受け取ります。
以降はAPIへのHTTPリクエストに対してデータのみを受け取って差分のみ画面を更新します。

  • ユーザーのメリット

    • 操作毎に読み込みを待たなくて良いので快適
  • 開発者のメリット

    • フロントエンドエンジニアは画面の開発に集中できる
    • バックエンドエンジニアはビジネスロジックの開発に集中できる
    • ブラウザ,スマホアプリ,デスクトップアプリでAPIを共用できる
  • デメリット

    • ユーザーにとって初回の読み込みが長い
    • API通信は少し知識のあるユーザーには丸見えなのでMPAでは起こらないセキュリティ問題が発生し得る
      (TwitterのAPIに問題があって個人情報が大量流出した事件などは記憶に新しいです)
    • SEO(検索エンジン最適化)がMPAより難しくなる
    • 画面遷移してもURLが変わらない(変える為に開発者はRouterというものを書かないといけない)

【SPAのレンダリング方式】

ページのレンダリングをいつどこでするか,方式によって特徴が変わります。
使用できる方式はフレームワークによって変わります。
また,1つのシステムでも機能ごとに方式を使い分ける事もできます。

CSR(Client Side Rendering)

ブラウザでページをレンダリングします。
読み込みに時間がかかります。
特にスマホや低スペックなPCでは遅くなります。

SSR(Server Side Rendering)

CSRの欠点を解消するためにサーバー上でレンダリングを行います。
レンダリングがサーバーサイドで行われるという点ではMPAと同じですね。

サーバー上でJavaScriptを処理するためにNode.jsなどを使用します。

  • メリット

    • CSRより読み込みが早い
    • SEOに有利
  • デメリット

    • サーバーの負荷が増える

SSG(Static Site Generation)

SSRの欠点を解消するために,ビルド時にレンダリングを済ませておきます。
内容が更新されない静的なコンテンツ向けです。

  • メリット

    • CSRSSRより読み込みが早い
    • SEOに有利
  • デメリット

    • APIで取得するような動的な情報に依存すると不都合が生まれる

ISR(Incremental Static Regeneration)

SSGの欠点を解消するために,サーバーで定期的にレンダリングを行います。
こちらもNode.jsなどを使用します。

  • メリット

    • SSGのメリットを享受しつつ,動的な情報に対応できる
  • デメリット

    • タイミングによってはユーザーが最新の情報を得られない

【WebAPIアーキテクチャ】

クライアントとサーバー,あるいはサーバーとサーバーはWebAPIを介して通信することが多いです。
HTTPリクエストに対してレスポンスによってデータを送ります。

APIという言葉はカーネルなどWeb以外の分野でも使いますが,
Webシステム開発の文脈で単に「API」と言った場合はWebAPI(HTTPでアクセスするAPI)の事を指します。

SOAP

データをやり取りするためのプロトコルです。XMLを使用しています。
メッセージはSOAPヘッダーSOAPボディから成るSOAPエンベロープという構造を持ちます。
WebAPIではHTTPリクエストXMLを返すものですが,下位プロトコルはHTTPに限りません。

REST(Representational State Transfer)

アーキテクチャースタイルです。
RESTの制約に従ったシステムを「RESTfulである」などと言います。

Webの文脈ではHTTPリクエストに対してJSONXMLHTMLプレーンテキストなどを返す実装を指します。
特にJSONがポピュラーです。
これをREST APIRESTful APIと呼ぶことが多いです。

扱いが簡単な一方で,項目のボリュームが増えると管理が煩雑です。
とはいえ,最も広く使用されていてエコシステムが豊富なのでデフォルトの選択肢になります。

Architectural Styles and the Design of Network-based Software Architectures

OAS(OpenAPI Specification)/OpenAPI 仕様

Swaggerで定められて広まったRESTful Webサービスの仕様です。
主にYAMLでAPI仕様を記述します。

Home - OpenAPI Initiative

なお,一般(or 提携企業)に公開するAPIはOpen APIsと呼ぶようです。
日本語では「オープンAPI」と呼ばれています。(まぎらわしい……)

GraphQL

Facebook(現Meta)が開発しました
クエリーで必要な項目を指定してデータをJSONで取得します。

GraphQLではリクエストする側がレスポンスに必要な項目をPOSTします。
これにより,REST APIであった過剰なデータ取得やAPI開発の手間を削減できます。

GraphQL | A query language for your API

gRPC(Google Remote Procedure Calls)

Googleが開発しました。
RPCをモダン化したものです。
データをシリアライズするのでREST APIより軽量なAPIが実現されます。

gRPC

【Ajax】(Asynchronous JavaScript And XML)

ブラウザから非同期で(=ページ遷移せず)HTTPリクエストを送る方法です。
これによってSPAが実現できます。
名前にXMLが入っていますが,もはやXMLに限りません。

XHR(XMLHttpRequest)

初期の技術です。
標準で使用できます。

jQuery.ajax

jQueryJavaScriptライブラリです。
その中にAjax機能があります。

axios

Ajax送信のためのJavaScriptライブラリです。

Fetch API

XHRより新しく便利な仕組みです。
標準で使用できます。

フェッチ API - Web API | MDN

【IDE(統合開発環境)】

ソースコードを書いたりデバッグしたりするためのソフトです。
構文が間違っているとすぐに指摘してくれたり,コードを補完してくれたり,
最近ではAIがコードをサジェストしてくれたりします。
IDEによって得意な言語が変わります。

Visual Studio

Microsoftの製品です。
主にC#の開発に用いられます。
個人,学習環境などであれば無償版のVisual Studio Communityが利用できます。

VSCode(Visual Studio Code)

Microsoftが開発したOSSのテキストエディタです。
拡張機能をインストールすることで様々な言語に対応できます。

優秀過ぎてAtomを開発終了に追い込んだと言われています。

Eclipse

OSSです。
主にJava系の開発で使われる開発環境です。

IntelliJ IDEA

JetBrainsの製品です。
主にJava系の開発で使われるIDEです。

有償ですが,教育目的や非営利など条件を満たせば無償で利用できます。

GoLand

JetBrainsの製品です。
主にGoの開発で使われるIDEです。

有償ですが,教育目的や非営利など条件を満たせば無償で利用できます。

Xcode

Apple公式のmacOSIDEです。
Swift等の開発に使用されます。

【OS】(Operating System)

UNIX

1969年に開発されました。
現代人が「OS」と聞いて思い浮かべるもので最も古いです。

Linux

1991年にUNIXを真似して作られたOSです。
無数のディストリビューションがあります。

サーバーサイドのOSはLinuxが選ばれる事がほとんどだと思います。

有名なディストリビューション

  • Red Hat

    • Fedora: Red Hatが支援するコミュニティで開発されています。RHELの実験場のような位置付けです。
    • Red Hat Enterprise Linux(RHEL): 名前の通りエンタープライズ品質です。高いです。個人開発者は無料で16ノード使えます。
    • CentOS: RHELのクローンです。無料かつ高品質ですがサポート終了します。
    • Amazon Linux 2: AWSでお世話になります。
  • Debian

    • Ubuntu: 使いやすさを重視しています。
    • Linux mint: Ubuntuの派生です。

Windows

Microsoftのパソコン向けOSです。
大企業の業務環境は大抵Windowsです。

Windows Server

MicrosoftのサーバーOSです。
ADサーバーに使われる事が多いです。

Android

Googleが開発したスマートフォン向け汎用OSです。

iOS

AppleiPhoneのOSです。

macOS

AppleMacのOSです。

【RDBMS/データベース】(Relational Database Management System)

Webシステムでは必ずと言っていいほどRDB(Relational Database)を使用します。
SQL(Structured Query Language)を書けることはエンジニアを名乗るなら必須スキルです。

Oracle Database

OracleRDBMS製品です。
高い信頼性を謳っています。
価格がとても高いです。大企業向けです。

IBM Db2

IBMRDBMS製品です。
こちらも大企業向けなイメージです。

Microsoft SQL Server

MicrosoftRDBMS製品です。

MySQL

OSSのRDBMSです。
Oracleが所有しています。

MySQL

Maria DB

MySQLから派生したOSSのRDBMSです。
多くの点でMySQLより優れている

MariaDB Enterprise Open Source Database & SkySQL MariaDB Cloud | MariaDB

PostgreSQLポストグレスキューエル

OSSのRDBMSです。
通称「ポスグレ」

Oracle Databaseと高い互換性があります。
Oracle Databaseが高いと感じた企業が移行先に選ぶ事がよくある気がします。

日本PostgreSQLユーザ会 | 日本PostgreSQLユーザ会

【データベース接続クライアント/SQLクライアント】

OracleだとOracle SQL Developer(開発環境),Oracle Database Client(アプリ用ライブラリ)などがありますが,
そんな事はきっと会社の手順書に書いてあるので,ここは汎用的なSQLクライアントのメモです。

A5:SQL Mk-2

フリーソフトです。

A5:SQL Mk-2

DBeaver

OSSです。
有償版もあります。

DBeaver Community | Free Universal Database Tool

【NoSQL】

RDBではない,SQLを使用しないデータベースです。
RDBに比べると整合性が担保されない代わりに,高速で大容量のデータを扱えます。
ビッグデータの分野などでも使われます。

HBase(Apache HBase)

列指向の非リレーショナル・データベース管理システムです。
Hadoop(Apache Hadoop)という分散技術を使用しています。
Solr(Apache Solr)というサーチエンジンが使えます。

SolrではクエリーをURIで表現でき,アプリはHTTPでデータを受け取る事ができます。

Apache HBase – Apache HBase™ Home

MongoDB

ドキュメント志向のデータベースです。

【コンテナ仮想化技術】

現在のWebシステム開発で必須となっているのがコンテナ仮想化に関する技術です。
アプリケーションやミドルウェアをまとめてパッケージ化し,1つのホストOSの中で複数の環境を運用することがきでます。

OSの仮想化に比べて,リソースが効率的に活用できます。
(仮想OSの中でコンテナを動かすこともできます)

Docker

コンテナ仮想化のオープンプラットフォームです。
Windows上で動くデスクトップ版もあります。

Docker: Accelerated, Containerized Application Development

Kubernetesクーバ(ル)ネティス(K8s)

コンテナ・オーケストレーション・プラットフォーム(コンテナを管理する仕組み)です。
多くの場合でDockerと共に使用されます。

Dockerは1つのノード(OS)内でコンテナを管理しますが,
Kubernetesは複数ノードにまたがってシステム全体を管理します。

Kubernetes

【OS仮想化技術】

コンテナ化の技術が普及したことで,アプリ開発者は仮想OSを意識する事が減りました。

VMware vSphere

VMware社の製品です。

KVM

Red Hatの製品です。
Linuxハイパーバイザーになります。

【バージョン管理システム(ソース管理ツール)】

ソースコードの参照,更新をする上でこれらのツールの操作は必須となります。

Git

現在,最も使用されているバージョン管理ツールです。
使うためにはリモートリポジトリローカルリポジトリの概念を理解する必要があります。
主要なクラウドプラットフォームは標準的にGitを備えています。

Git

GitHub

Gitを使用しているインターネット上の開発プラットフォームです。
2018年にMicrosoftが買収しました。

様々なプロジェクトのソースコードが見れます。
GitHubにリポジトリを持つ企業沢山もあります。

GitHub

SVN(Apache Subversion)

Gitより昔からあるソース管理ツールです。
TortoiseSVNというクライアントソフトがよく使われます。
かつてはSVNでソースコードを管理していましたが,多くの現場はGitに移行しています。

【CI/CDパイプライン】

CI/CD(Continuous Integration/Continuous Delivery)とは,
ビルド -> テスト -> デプロイなどを自動化するアプローチです。

開発作業を効率化・高品質化します。
主要なクラウドプラットフォームはCI/CDサービスを備えています

CI/CD パイプラインとは | Red Hat

AWS CodePipeline

AWSCI/CDサービスです。

Azure Pipelines

AzureCI/CDサービスです。

Cloud Build

GCPCI/CDサービスです。

Jenkins

オープンソースのCIツールです。
社内環境でも使えます。

Jenkins

GitLabギットラブ

Gitのマネージャーです。
GitLab CI/CDというツールを備えています。

GitLab DevOps プラットフォーム

【Javaのビルドツール】

主にJava系言語のプロジェクトでお世話になります。

Mavenメイヴェン(Apache Maven)

Java用プロジェクト管理ツールです。
Antの後継です。
pom.xmlを編集します

Gradle

現在Java系で主流となっているビルドツールです。
build.gradleを編集します。

Mavenとの最大の違いはスクリプトでビルドの手続きを記述することです。

Gradle Build Tool

【Webサーバー】

クライアントからのHTTPリクエストを処理するミドルウェアです。
(もしくはこの機能を担うサーバー装置を指す場合もあります)

Apache HTTP Server

OSSのWebサーバーです。
歴史的に,単に「Apache」というとこれを指す事が多いです。

IIS(Microsoft Internet Information Services)

Windowsサーバーが備えるWebサーバーです。

nginxエンジンエックス

OSSのWebサーバーです。
リバースプロキシ機能があります。

性能が高く,大量のリクエストの処理や静的コンテンツが得意です。

NGINX(エンジンエックス)|日本公式サイト

【APサーバー】

Webサーバーから受けた要求によってビジネスロジックを実行したりDBアクセスをするJavaアプリケーションを動かすためのミドルウェアです。
(もしくはこの機能を担うサーバー装置を指す場合もあります)

2023/8/4 追記
ここに記載しているのはJavaのAPサーバーです。
Java以外の言語では、例えば、Webサーバーの拡張機能でアプリが動いていたり、その言語用のAPサーバー相当のものがあったりするようです。(Java以外でのAPサーバーという言葉の取扱はよくわかりませんでした)

Apache Tomcat

OSSのAPサーバーです。
Java ServletJSP(JavaServer Pages)を実行するサーブレットコンテナです。

WARファイルをデプロイできます。

同等のミドルウェア: Jetty

WildFly(旧JBoss AS)

Red Hatが開発したOSSのAPサーバーです。
Jakarta EEに対応しており,Tomcatより高機能です。

WARファイルやEARファイルをデプロイできます。

同等のミドルウェア: WebSphere(IBM),WebLogic(Oracle),GlassFish(OSS)

WildFly

JBoss EAP(JBoss Enterprise Application Platform)

WildFlyの商用版です。
商用利用のためにはサポート契約が必要です。

【API開発者向けツール】

APIの仕様を管理したり,実際にHTTPリクエストを送るためのツールです。

Swagger

YAMLOpenAPIの仕様を定義し,管理できます。

API Documentation & Design Tools for Teams | Swagger

Postman

Postman Inc.の製品です。
変数などを扱えてSwaggerより使い勝手が良かったです。
無料で機能制限があるクライアント版を使用でき,設定ファイルの入出力も可能です。
有償版ではチームで設定を共有できます。

Postman API Platform | Sign Up for Free

cURLカール

ライブラリです。
Linuxに最初からインストールされていたりします。
手軽にコマンドでHTTPリクエストを実行できます。

curl

【IaC】(Infrastructure as Code)

ネットワーク,サーバー,ミドルウェアなどのインフラをコードとして定義する技術です。
同じインフラ構成を別の場所で再現するのに便利です。

よく使われるAnsibleTerraformはエージェントレスですが,エージェント型のものもあります。

Ansible

手続き型のIaCです。
構築の手順を記述します。
サーバー,ネットワークの環境構築によく使われます。

Ansible is Simple IT Automation

Terraform

宣言型のIaCです。
環境のあるべき姿を記述します。
クラウド上のサーバー,ネットワークの構築でよく使われます。

Terraform by HashiCorp

【認証技術】

OAuth 2.0

標準的に使われる認可プロトコルです。
複数のシステムの連携に使用できます。
認証の際に利用可能なリソースまで定義されるのが特徴です。

TwitterFacebookのアプリ連携もこの仕組です。

OAuth 2.0 — OAuth

OpenID Connect

SSOを実現する認証プロトコルです。
OAuth 2.0を拡張したものです。

GoogleLINEYahoo! Japanなどが準拠しています。

OpenID Connect | OpenID

SAML(Security Assertion Markup Language)

SSOを実現する認証プロトコルです。
HTTPSOAPを使用します。

社内システムでよく使用されます。

Security Assertion Markup Language (SAML) V2.0 Technical Overview

【マークアップ言語】

単純なテキストと決められた構文で何かを表現する言語です。

HTML(HyperText Ma rkup Language)

Webページを表現するための言語です。

CSS(Cascading Style Sheets)

スタイルシート言語です。(マークアップ言語とは違うかもしれませんが)

XML(Extensible Markup Language)

コンピューターが理解しやすい構文です。
人間には見づらいです。

JSON(JavaScript Object Notation)

XMLと同等のデータを表現できますが,XMLよりも人間が読み書きしやすい構文です。

JSON Example

YAML

見た目はJSONに似ています。(JSONYAMLのサブセットなので当たり前らしいですが)
設定ファイルなどでよく使用します。

The Official YAML Web Site

Markdown

HTMLの書きづらさを解消した言語です。
簡単な記載でHTMLにレンダリングされます。
ソースコードと横並びのドキュメントの記載などで使用します。
Wikiなどでも使います。
Qiitaの記事もMarkdownで記載されます。(HTMLも使えますが)

PlantUML

UML図を記載する言語です。

PlantUML 概要

Mermaid

UML図を記載する言語です。

Mermaid | Diagramming and charting tool

TeX

数式を記載する言語です。

【技術スタック】

完全なアプリケーションを実現するための技術(フレームワークやミドルウェアやDB)の集まりに対する呼称です。

アプリケーションを作るために絶対に必要という訳ではないですが,スタックを使えば必要な技術要素が揃う事が保証されます。

LAMP

  • Linux
  • Apache HTTP Server
  • MySQL(or MariaDB)
  • PHP(, Perl or Python)
    の頭文字です。

MEAN

  • MongoDB
  • Express
  • AngularJS
  • Node.js
    の頭文字です。

AngularVue.jsに置き換えたMEVNや,
Reactに置き換えたMERNという言葉もあります。

JAM

  • JavaScript
  • APIs
  • Markup
    の頭文字です。

【プロトコル】

HTTP(Hypertext Transfer Protocol)

Webシステム開発で最も重要な技術です。
API設計やトラブルシューティングをする上で必ず理解する必要があります。

  • HTTPリクエストの構造(HEADER, BODY)
  • HTTPメソッド(GET, POST, PUT, DELETE, etc.)
  • HTTPレスポンスの構造
  • HTTPステータスコード(200, 400, 401, 403, 404, 500, etc.)

実際の運用ではトランスポート層で暗号化されたHTTPSを使用します。

SSH(Secure Shell)

ノードにリモートアクセスするためのプロトコルです。
Telnetは認証を平文で行うため脆弱性がありますが,SSHはセキュアです。

【技術用語】

認証(Authentication)

「アクセスしている人が誰か」を確かめる仕組みです。

認証の要素はIDとパスワードBASIC認証ワンタイムパスワードTwitterクライアント証明書など。

認可(Authorization)

認証された人に対してリソースに対する権限を与えることです。

参照権限,更新権限,承認権限など。

SSO(Single Sign On)

シングルサインオンです。

例: 会社のWindowsにADアカウントでログインしたら社内の複数のシステムがそのまま使える

証明書/認証局

クライアントやサーバーが本物であることを証明するための仕組みです。

公開鍵と秘密鍵を使います。
ある認証局のルート証明書を信頼していると,認証局にアクセスせずにその認証局が発行したクライアント証明書・サーバー証明書を検証することができます。

FQDN(Fully Qualified Domain Name)

ドメインとサーバー名を組み合わせたものです。

このような関係です。
URL: https://www.microsoft.com/
ドメイン名: microsoft.com
ホスト名: www
FQDN: www.microsoft.com

大抵はDNSによってFQDNが1つのIPアドレスと紐付きます。

CDN(Content Delivery Network)

世界中のサーバーにコンテンツをミラーする仕組みです。
大量のユーザーがアクセスするサービスで使用されます。
アカマイCloudflareAmazon CloudFrontが有名です。

【おわりに】

ここでは取り上げていない技術や概念も無数にあります。
やっと何かを理解したと思ったら,別の新技術が流行っていたりもします。

同列に語られる技術でもカバーする範囲が微妙に違ったり,
言葉によっては厳密な意味が定義されていなかったり,
「実装までは言及していない仕様」と「よくある実装」を混同している記事が多かったり,
で調べるのが中々大変です。
(アプリを開発する上でそこまで細かい事を正確に知る意味はあまり無いかもしれませんが……)

【参考】

SPA(Single Page Application)と利用されるレンダリング技術まとめ | yutaro blog

本当にRESTは「4つの原則」?原文に当たって分かった驚きの事実 | 日経クロステック(xTECH)

Kubernetes と Docker の比較 | Microsoft Azure

Tomcat vs JBoss - What's the Difference? (Pros and Cons)

103
138
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
103
138