フロントエンド

フロントエンド（）とバックエンド（）は、プロセスの最初と最後の工程を指す一般的用語である。フロントエンドは各種入力をユーザーから収集し、バックエンドが使える仕様に合うようにそれを加工し出力する。フロントエンドとバックエンドの結合部はインターフェースと呼ばれる。

 工学・技術 
無線通信
無線回路において、アンテナ側の送受信端の回路部分をフロントエンドと呼ぶ。通常は「弱い信号を増幅する」場合と、「高い周波数を低い周波数に変換する」場合を指すことが多い。一方バックエンドは増幅とフィルタリングを行って信号を精製・編集する。PA（電力増幅器）や高周波スイッチと組み合わせてフロントエンドモジュールとしたものがセットメーカ向けに販売されている。同様にICの場合はフロントエンドICという。後段のIF（中間周波数）部分以降とは、最適なプロセスが異なるため、ICを分けるのである。しかし、近年は半導体技術の進歩により、フロントエンドとIFを1チップにしたICも珍しくなくなって来ている。

半導体開発
EDAの設計において、フロントエンドとは論理的・電気的設計を行う工程を指す（論理合成など）。バックエンドは回路の配置と配線などレイアウトを決定し物理的検証を行う工程である（デザインルールチェックなど）。

自動車
自動車において、前照灯（ヘッドライト）・方向指示器・フロントグリル・バンパーがある前方の部分をフロントエンドと呼び、後方はバックエンドと呼ぶ。

自転車
自転車のフレームと車輪を繋ぐ部分をエンドと呼び、前輪部分をフロントエンド、後輪部分をリアエンドと呼ぶ。

原子力発電
原子力発電所で、燃料製造・発電所建設・運転などにかかわる事業を「フロントエンド事業」と呼ぶ。また原子炉の廃炉や放射性廃棄物の処理、核燃料サイクルにかかわる事業を「バックエンド事業」と呼ぶ。

データ通信
コンピュータネットワークにおいてフロントエンドと言えば、ネットワークのトラフィックを最適化したり保護したりするネットワーク機器を指す。ネットワークが外部からの攻撃にさらされる部分にそのような機器が置かれ、トラフィックは必ず最初にフロントエンドを通過してネットワーク内の他のマシンに到達する。

 ソフトウェア・ユーザーインタフェース 
ソフトウェア設計において、フロントエンドはユーザーからの入力を受け取りバックエンドからのレスポンスを表示するユーザインタフェースの部分を指し（＝クライアントサイド）、バックエンドはフロントエンドからのリクエストの処理やデータベースへの問い合わせ、フロントエンドへの出力を生成する部分を指す（＝サーバサイド）。

ソフトウェアシステムをフロントエンドとバックエンドに分けることは一種の抽象化であり、システムを異なる部分に分離して扱いやすくする効果がある。フロントエンドの処理をおこなうハードウェアやソフトウェアをフロントエンドプロセッサ（FEP）と言うことがある。

多くのコンピュータプログラムは概念的にフロントエンドとバックエンドに分割できるが、多くの場合バックエンドはユーザーからは見えない。しかし、既存のプログラムのフロントエンドとすべく開発されるプログラムもあり、例えばコマンド行インターフェースしかないプログラムにGUIを提供する。このような形態のフロントエンドはUNIXのGUIによくある。また、動画や音楽関連のソフトウェアでは、フロントエンドとCODEC（エンコーダーとデコーダー）の組合せで利用されることが多い。たとえば、CDリッピングソフトがMP3エンコーダーのフロントエンドとなったり、動画再生ソフトが動画デコーダーのフロントエンドとなる関係が一般化している分野と言える。

コンピュータとの相互作用の手法も「フロントエンド」と「バックエンド」に概念化することができる。例えば、グラフィカルなファイルマネージャ（例えば Windows ExplorerやMacのFinder）は、そのコンピュータのファイルシステムのフロントエンドと見なすことができる。OSレベルでは、GUIという概念はシステムの（一般ユーザーにとっての）フロントエンドと見なすことができ、その場合コマンド行やTUIはバックエンドと考えてもおかしくない。この考え方はソフトウェアパッケージにも適用され、グラフィカルなインタフェース（フロントエンド）とコマンド行スクリプト（バックエンド）を備えていることがある。

また、大規模なコンピュータシステムにおいて、メインとなるコンピュータへのデータ入力を処理したりジョブ管理を行うコンピュータをフロントエンドと呼び、出力を処理するコンピュータをバックエンドと呼ぶ。

コンパイラー
コンパイラでは、フロントエンドがプログラミング言語のソースコードを中間表現に変換し、バックエンドはそれを変換して機械語などの出力言語のコードを生成する。バックエンドはより高速に動作するコードを生成するよう、コンパイラ最適化を施すのが普通である。フロントエンドとバックエンドに分割することで、フロントエンドはコードを扱い、バックエンドが最適化を行うという役割分担ができる。例えば、GCCはC・C++・Objective-C・Fortran・JavaあるいはAdaといった各種入力言語を共通の中間形式に翻訳するフロントエンド群を含んでいる。また、バックエンドにはターゲットとなるプロセッサ毎に異なる機械語を生成するものがあるが、フロントエンドはプロセッサの違いを気にする必要はない。

また、主にコンパイラ言語において、上位の言語で書かれたコードからコンパイル可能な下位の言語で記述されたコードへ変換するプログラムをフロントエンドと呼ぶ。著名な物としてC++言語からC言語のソースを得るCfrontがある。

音声合成
音声合成においては、フロントエンドは入力テキストを記号的音素表現に変換する部分であり、バックエンドは記号的音素表現から実際の音を生成し出力する。

 ビジネス 
金融や財務でもフロントエンドとバックエンドという用語をいくつかの意味で使う。例えば会社型投資信託の購入で、フロントエンド型ロードでは購入時に手数料を支払い、バックエンド型ロードでは償還時に手数料を支払う。

他にもビジネスでは以下のような意味で使われる。
 「バックエンドピル」はポイズンピルの一種である。ある条件を満たしたときに現在の株主が所有する株式を債権や現金に交換できる権利を与えることで、買収を難しくする方式である。この場合、株式公開買付けを行う者は、この権利を行使しつつ取得価額の上昇を阻止することができない。
 新製品開発の初期段階をフロントエンドと呼ぶことがある。最も難しい段階であることから「ファジーフロントエンド」などとも呼ぶ。
 マーケティングにおいては、購入者を選別しやすい（売りやすい）商品をフロントエンドと呼び、フロントエンドを購入した顧客にさらに販売する商品をバックエンドと呼ぶ。

 スポーツ 
カーリングでは、リードとセカンドの選手をフロントエンドと呼び、サードとスキップの選手をバックエンドと呼ぶ。

 脚注 

 参考文献 

 関連項目 
 クライアントサーバモデル
 多層アーキテクチャ

Category:ソフトウェア工学用語
Category:技術
Category:経済