|
フロントエンド()とバックエンド()は、プロセスの最初と最後の工程を指す一般的用語である。フロントエンドは各種入力をユーザーから収集し、バックエンドが使える仕様に合うようにそれを加工する。フロントエンドとバックエンドの結合部はインタフェースと呼ばれる。 == コンピュータ == ソフトウェア設計におけるフロントエンドは、ユーザーと直接やりとりするソフトウェアシステムの部分を指し、バックエンドはフロントエンドへの出力を生成する部分を指す。ソフトウェアシステムをフロントエンドとバックエンドに分けることは一種の抽象化であり、システムを異なる部分に分離して扱いやすくする効果がある。フロントエンドの処理をおこなうハードウェアやソフトウェアをフロントエンドプロセッサ(FEP)と言うことがある。 多くのプログラムは概念的にフロントエンドとバックエンドに分割できるが、多くの場合バックエンドはユーザーからは見えない。しかし、既存のプログラムのフロントエンドとすべく開発されるプログラムもあり、例えばコマンド行インタフェースしかないプログラムにGUIを提供する。このような形態のフロントエンドはUNIXのGUIによくある。また、動画や音楽関連のソフトウェアでは、フロントエンドとCODEC(エンコーダーとデコーダー)の組合せで利用されることが多い。たとえば、CDリッピングソフトがMP3エンコーダーのフロントエンドとなったり、動画再生ソフトが動画デコーダーのフロントエンドとなる関係が一般化している分野と言える。 コンピュータとの相互作用の手法も「フロントエンド」と「バックエンド」に概念化することができる。例えば、グラフィカルなファイルマネージャ(例えば Windows Explorer)は、そのコンピュータのファイルシステムのフロントエンドと見なすことができる。OSレベルでは、GUIという概念はシステムの(一般ユーザーにとっての)フロントエンドと見なすことができ、その場合コマンド行やTUIはバックエンドと考えてもおかしくない。この考え方はソフトウェアパッケージにも適用され、グラフィカルなインタフェース(フロントエンド)とコマンド行スクリプト(バックエンド)を備えていることがある。 コンピュータネットワークにおいてフロントエンドと言えば、ネットワークのトラフィックを最適化したり保護したりするネットワーク機器を指す。ネットワークが外部からの攻撃にさらされる部分にそのような機器が置かれ、トラフィックは必ず最初にフロントエンドを通過してネットワーク内の他のマシンに到達する。 また、大規模なコンピュータシステムにおいて、メインとなるコンピュータへのデータ入力を処理したり、ジョブ管理を行うコンピュータをフロントエンドと呼ぶ。出力を処理するコンピュータをバックエンドと呼ぶ。 コンパイラでは、フロントエンドがプログラミング言語のソースコードを中間表現に変換し、バックエンドはそれを変換して機械語などの出力言語のコードを生成する。バックエンドはより高速に動作するコードを生成するよう最適化を施すのが普通である。フロントエンドとバックエンドに分割することで、フロントエンドはソースコードを扱い、バックエンドが最適化を行うという役割分担ができる。例えば、GCCはC・C++・Objective-C・Fortran・JavaあるいはAdaといった各種入力言語を共通の中間形式に翻訳するフロントエンド群を含んでいる。また、バックエンドにはターゲットとなるプロセッサ毎に異なる機械語を生成するものがあるが、フロントエンドはプロセッサの違いを気にする必要はない。 また、主にコンパイラ言語において、上位の言語で書かれたソースコードからコンパイル可能な下位の言語で記述されたソースコードへ変換するプログラムをフロントエンドと呼ぶ。著名な物としてC++言語からC言語のソースを得るCfrontがある。 音声合成においては、フロントエンドは入力テキストを記号的音素表現に変換する部分であり、バックエンドは記号的音素表現から実際の音を生成する。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「フロントエンド」の詳細全文を読む スポンサード リンク
|