ソフトウェア エンジニアリングにおいて、フロントエンドとバックエンド(バックエンドまたはバックエンドと表記されることもある)という用語は、ソフトウェア、または物理的なインフラストラクチャやハードウェアのプレゼンテーション層(フロントエンド) とデータ アクセス層(バックエンド)の間の関心の分離を指します。クライアント サーバー モデルでは、一部のプレゼンテーション作業が実際にはサーバー自体で行われる場合でも、通常は クライアントがフロントエンド、サーバーがバックエンドと見なされます。
導入
ソフトウェア アーキテクチャでは、ハードウェアとエンド ユーザーの間に多くのレイヤーが存在する場合があります。フロントは抽象化されており、ユーザー フレンドリなインターフェイスを提供することで基礎となるコンポーネントを簡素化し、バックでは通常、データ ストレージとビジネス ロジックを処理します。
電気通信においては、フロントはデバイスまたはサービスと考えられ、バックはサービスの提供をサポートするインフラストラクチャです。
経験則として、クライアント側 (または「フロントエンド」) は、ユーザーが操作するコンポーネントです。サーバー側 (または「バックエンド」) のコードは通常、サーバー上に存在し、ユーザーから物理的に遠く離れていることがよくあります。
ソフトウェア定義
コンテンツ管理システムでは、フロントエンドとバックエンドという用語は、それぞれCMSのエンドユーザー向けのビューと管理ビューを指すことがあります。[1] [2]
音声合成において、フロントエンドは入力テキストを記号的な 音声表現に変換する合成システムの部分を指し、バックエンドは記号的な音声表現を実際の音に変換する。[3]
コンパイラでは、フロントエンドが コンピュータプログラミングのソースコードを中間表現に変換し、バックエンドが中間表現を使用してコンピュータ出力言語のコードを生成します。バックエンドは通常、より高速に実行されるコードを生成するために最適化されます。フロントエンドとバックエンドの区別により、ソースコードを処理するパーサーセクションと、コードを生成して最適化するバックエンドを分離できます。GCCなどの一部の設計では、複数のフロントエンド(異なるソース言語を解析)またはバックエンド(異なるターゲットプロセッサ用のコードを生成する)の選択肢が提供されています。[4]
デスクトップ環境で実行される一部のグラフィカル ユーザー インターフェイス(GUI) アプリケーションは、ユーザーが特殊な用語を学習したりコマンドを記憶したりする手間を省くために、基盤となるコマンド ライン インターフェイス(CLI) プログラムのシンプルなフロントエンドとして実装されています。
Web開発を例に
両者の違いを理解するもう 1 つの方法は、フロントエンド ソフトウェア開発者とバックエンドソフトウェア開発者に必要な知識を理解することです。以下のリストは、例として Web 開発に焦点を当てています。
両方
フロントエンドに重点を置く
- HTML、CSS、JavaScriptなどのマークアップ言語と、それらの言語でよく使用されるSassやjQueryなどの補助ライブラリ
- 非同期リクエスト処理とAJAX
- シングルページアプリケーション(React、Angular、Vue.jsなどのフレームワークを使用)
- Web パフォーマンス(最大コンテンツ ペイント、インタラクティブになるまでの時間、60 FPS のアニメーションとインタラクション、メモリ使用量など)
- レスポンシブウェブデザイン
- ブラウザ間の互換性の問題と回避策
- ヘッドレスブラウザによるエンドツーエンドのテスト
- WebpackやGulp.jsなどのツールを使用して、JavaScriptファイルの変換とバンドル、画像サイズの縮小、その他のプロセスを自動的に構築します。
- 検索エンジン最適化
- アクセシビリティに関する懸念
- GIMPやPhotoshopなどの画像編集ツールの基本的な使い方
- ユーザーインターフェース
バックエンド重視
- PHP、Python、Ruby、Perl、Node.jsなどのスクリプト言語、またはC#、Java、Goなどのコンパイル言語
- データアクセス層
- ビジネスロジック
- データベース管理
- スケーラビリティ
- 高可用性
- セキュリティ上の懸念、認証、承認
- ソフトウェアアーキテクチャ
- データ変換
- バックアップ方法とソフトウェア
両方の職種は、同じ製品に取り組んでいる可能性はあるものの、非常に異なるスキルセットを持っていることに注意してください。
翻訳
フロントエンドは、APIを介してバックエンドと通信します。Webおよびモバイルフロントエンドの場合、APIはHTTPリクエスト/レスポンスに基づいていることがよくあります。APIは、フロントエンド側の処理を容易にするためにレスポンスを提供する「Backend for Frontend」(BFF)パターンを使用して設計されることもあります。[5]
ハードウェアの定義
ネットワークコンピューティングでは、フロントエンドとは、ネットワークトラフィックを最適化または保護するハードウェアを指します。[6]ネットワークの外側に面したフロントエンドまたは境界に配置されるため、アプリケーションフロントエンドハードウェアと呼ばれます。ネットワークトラフィックは、ネットワークに入る前にフロントエンドハードウェアを通過します。
プロセッサ設計において、フロントエンド設計はVerilogなどのハードウェア記述言語で回路の動作を最初に記述することであり、バックエンド設計はその動作をダイ上の物理的なトランジスタにマッピングするプロセスである。[7]
参照
参考文献
- ^ 「ウェブサイトのフロントエンドとバックエンド:知っておくべきことすべて」DOJO Creative 2020年2月7日。2022年9月1日時点のオリジナルよりアーカイブ。 2022年8月31日閲覧。
- ^ Thapliyal, Vimal. 「フロントエンドとバックエンドのMVCの違い - Joomlatuts」。joomlatuts.net 。 2016年12月30日時点のオリジナルよりアーカイブ。2016年12月30日閲覧。
- ^ Gutierrez--Osuna, Ricardo. 「L18: 音声合成 (バックエンド)」(PDF) . tamu.edu . テキサス A&M 大学。2019年 2 月 14 日時点のオリジナル(PDF)からアーカイブ。2016 年12 月 29 日閲覧。
- ^ Bin Muhammad, Rashid. 「オペレーティングシステムノート」www.personal.kent.edu。ケント州立大学。2018年8月31日時点のオリジナルよりアーカイブ。 2016年12月30日閲覧。
- ^ Wickramarachchi, Viduni (2021年2月24日). 「BFFパターン(バックエンド・フォー・フロントエンド):入門」。Bits and Pieces。2024年3月27日時点のオリジナルよりアーカイブ。 2021年11月13日閲覧。
- ^ O'Dell, Mike. 「ネットワーク フロントエンド プロセッサ、再び | 2009 年 6 月 | Communications of the ACM」。cacm.acm.org。2016年 12 月 30 日時点のオリジナルよりアーカイブ。2016年 12 月 30 日閲覧。
- ^ 「フロントエンド設計 | Altium 製品のオンライン ドキュメント」。techdocs.altium.com。2016年12 月 30 日時点のオリジナルよりアーカイブ。2016 年 12 月 30 日取得。
