💻

フルスタック開発

に公開

🔹 フロントエンド

アーキテクチャ

基本三大要素


HTML, CSS

Webブラウザ(Google Chrome, Safari, Edgeなど)は、「ブラウザで表示するためのタグづけ言語」であるHTMLを解釈し、画面表示。CSSはHTMLの装飾(フォントや見出しの大きさ、背景色など)を効率的に行うために用いられる。別々に管理することで、同じWebサイト内で共通の装飾を使い回すことができる。

JavaScript

ブラウザ上で動く「スクリプト」の1つ。主にWebページやアプリケーションにおける動きや機能を実現する役割を持っている。逆に言えば、クライアントサイドで動作するため、ブラウザにできることしかできない。サーバー内のデータの取得や更新などは、例えばPHP、Python、Java、サーバーサイドJavaScriptなどにバックエンドで処理してもらう必要がある。
(JavaScriptは、HTMLパーサーとは別のスクリプトエンジンによってコンパイルされる。)
JavaScriptを用いたフロントエンドアーキテクチャ
React, Angular, Vue.js, jQuery, Node.js, Next.js


SPA(Single Page Application)

最初に1つのHTMLページを読み込んだ後、必要なデータだけをサーバーから非同期的に取得し、動的に画面を変化させられる。

  • ページ遷移がなく画面の一部のみが更新されるため、ユーザーエクスペリエンスが向上する。
  • サーバーとの通信が非同期に行われるため、リアルタイムな情報の取得や更新が可能になる。
  • フロントエンドがJavaScriptを中心に開発され、高度なインタラクティブUIを実現できる。
  • 初回のページロードには多少時間がかかるが、その後のページ遷移は高速。

CSRとSSR

CSR(Client-Side Rendering):クライアント(Webブラウザ)側でページの表示やデータの取得・処理を行う。
SSR(Server-Side Rendering):サーバー側でページのレンダリング。

🔹 バックエンド

基本原理

  1. クライアントからのリクエスト受信
  2. 要求に応じたコンテンツ生成
  3. ビジネスロジックの実行
  4. レンダリングし画面を返す

アーキテクチャ

主に4つの層で構成される。

OS層

クラウドを含む
例:AWS, Azure, Google CloudPlatform

ミドルウェア層

VMのようなソフトウェアの実行環境
例:Apache, IIS, TOMCAT, nginx

言語

例:Java, Ruby, PHP, Python

フレームワークやAPI

例:Spring, Rails, Laravel, Django

🔹 モデル層

データベースや外部システムを指し、データを管理して提供する。
例:RDB, NoSQL, 郵便番号から住所を返すようなWebAPI

リレーショナルデータベース(RDB)

最も主流。データを表形式で保存し、それらの表の間の関係性を定義するデータベース。行(レコード)と列(カラム)の形式でデータを整理。
SQLという「データ操作・管理」を目的とする言語でコントロールする。
例:MySQL

モデルの利用方法

データを表で受け渡しするRDBやSQLと、オブジェクトのプロパティとして扱おうとするオブジェクト指向言語のデータモデルは必ずしも相性が良くない。そのため、プログラムやフレームワークからデータアクセスを行う際にはDAOやORMを使用して、直接SQLをプログラムを発行しない方法が主流になっている。


その他

インタプリタ言語

一般的に「解析」のオーバーヘッドが実行時にかかるため、パフォーマンスが出にくい言語が多くある。また、実行時に読み込んげ解析する動作の仕組み上、プロセスやスレッドの管理がこんなんで「アクセス数だけプロセスが立ち上がる」などの特徴を持つ言語もある。結果、リソースをコントロールしにくく、サーバー資源を圧迫し、パフォーマンスに影響を与えることがある。
例:Python, Ruby, JavaScript

コンパイル言語

都度解析する負荷がかからないことと、同時多数のスレッドやプロセスを管理できる構造の言語が多く、リソース資源を無駄にしにくい構造が特徴として挙げられる。また、コンパイル時にある程度のエラーチェックが行われるため不具合を減らしやすい性質や、マシンコードで配布することでソースコードを流出させにくい性質がある。
例:C, C++, Rust, Java

フロントエンド/バックエンドを分ける意味

それぞれ求められることが違う。
フロントエンド:変化に強く、高度なUIに対応でき、スマートフォンなどで軽く動作すること。
バックエンド:変化に対して堅牢で、可用性が高く、セキュアで正確であること。

フロントエンド/バックエンドの連携方法

紐付けは、Webを用いたAPIを作成し、それをフロント側から呼び出す方法で実現することが多い。その際に最もよく用いられるのがRestful API。HTTPのメソッド(Get, POST, PUT, DELETE)を用いてやり取りを行い、送受信するデータはJSON形式を取る。


参考文献

実装で学ぶフルスタックWeb開発

Discussion