フロント‐エンド【front end】
フロントエンド
フロントエンド
フロントエンド
フロントエンド
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/26 02:21 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2016年7月) |
フロントエンド(英: front-end)とバックエンド(英: back-end)は、プロセスの最初と最後の工程を指す一般的用語である。フロントエンドは各種入力をユーザーから収集し、バックエンドが使える仕様に合うようにそれを加工する。フロントエンドとバックエンドの結合部はインタフェースと呼ばれる。
工学・技術
無線通信
無線回路において、アンテナ側の送受信端の回路部分をフロントエンドと呼ぶ。通常は「弱い信号を増幅する」場合と、「高い周波数を低い周波数に変換する」場合を指すことが多い。一方バックエンドは増幅とフィルタリングを行って信号を精製・編集する。PA(電力増幅器)や高周波スイッチと組み合わせてフロントエンドモジュールとしたものがセットメーカ向けに販売されている。同様にICの場合はフロントエンドICという。後段のIF(中間周波数)部分以降とは、最適なプロセスが異なるため、ICを分けるのである。しかし、近年は半導体技術の進歩により、フロントエンドとIFを1チップにしたICも珍しくなくなって来ている。
半導体開発
EDAでは、設計のフロントエンドとは論理的・電気的設計を行う工程を指す(論理合成など)。バックエンドは回路の配置と配線などレイアウトを決定し、物理的検証を行う工程である(デザインルールチェックなど)。
自動車
自動車の前面の、ヘッドライト・方向指示器・フロントグリル・フロントバンパーがある部分をフロントエンドと呼ぶ。後方はバックエンドと呼ぶ。
自転車
自転車のフレームと車輪を繋ぐ部分をエンドと呼び、前輪部分をフロントエンド、後輪部分をリアエンドと呼ぶ。
原子力発電
原子力発電所で、燃料製造・発電所建設・運転などにかかわる事業を「フロントエンド事業」と呼ぶ。また原子炉の廃炉や放射性廃棄物の処理、核燃料サイクルにかかわる事業を「バックエンド事業」と呼ぶ。
データ通信
コンピュータネットワークにおいてフロントエンドと言えば、ネットワークのトラフィックを最適化したり保護したりするネットワーク機器を指す。ネットワークが外部からの攻撃にさらされる部分にそのような機器が置かれ、トラフィックは必ず最初にフロントエンドを通過してネットワーク内の他のマシンに到達する。
ソフトウェア・ユーザーインターフェース
ソフトウェア設計におけるフロントエンドは、ユーザーと直接やりとりするソフトウェアシステムの部分を指し、バックエンドはフロントエンドへの出力を生成する部分を指す。ソフトウェアシステムをフロントエンドとバックエンドに分けることは一種の抽象化であり、システムを異なる部分に分離して扱いやすくする効果がある。フロントエンドの処理をおこなうハードウェアやソフトウェアをフロントエンドプロセッサ(FEP)と言うことがある。
多くのプログラムは概念的にフロントエンドとバックエンドに分割できるが、多くの場合バックエンドはユーザーからは見えない。しかし、既存のプログラムのフロントエンドとすべく開発されるプログラムもあり、例えばコマンド行インタフェースしかないプログラムにGUIを提供する。このような形態のフロントエンドはUNIXのGUIによくある。また、動画や音楽関連のソフトウェアでは、フロントエンドとCODEC(エンコーダーとデコーダー)の組合せで利用されることが多い。たとえば、CDリッピングソフトがMP3エンコーダーのフロントエンドとなったり、動画再生ソフトが動画デコーダーのフロントエンドとなる関係が一般化している分野と言える。
コンピュータとの相互作用の手法も「フロントエンド」と「バックエンド」に概念化することができる。例えば、グラフィカルなファイルマネージャ(例えば Windows Explorer)は、そのコンピュータのファイルシステムのフロントエンドと見なすことができる。OSレベルでは、GUIという概念はシステムの(一般ユーザーにとっての)フロントエンドと見なすことができ、その場合コマンド行やTUIはバックエンドと考えてもおかしくない。この考え方はソフトウェアパッケージにも適用され、グラフィカルなインタフェース(フロントエンド)とコマンド行スクリプト(バックエンド)を備えていることがある。
また、大規模なコンピュータシステムにおいて、メインとなるコンピュータへのデータ入力を処理したり、ジョブ管理を行うコンピュータをフロントエンドと呼ぶ。出力を処理するコンピュータをバックエンドと呼ぶ。
コンパイラー
コンパイラでは、フロントエンドがプログラミング言語のソースコードを中間表現に変換し、バックエンドはそれを変換して機械語などの出力言語のコードを生成する。バックエンドはより高速に動作するコードを生成するよう最適化を施すのが普通である。フロントエンドとバックエンドに分割することで、フロントエンドはソースコードを扱い、バックエンドが最適化を行うという役割分担ができる。例えば、GCCはC・C++・Objective-C・Fortran・JavaあるいはAdaといった各種入力言語を共通の中間形式に翻訳するフロントエンド群を含んでいる。また、バックエンドにはターゲットとなるプロセッサ毎に異なる機械語を生成するものがあるが、フロントエンドはプロセッサの違いを気にする必要はない。
また、主にコンパイラ言語において、上位の言語で書かれたソースコードからコンパイル可能な下位の言語で記述されたソースコードへ変換するプログラムをフロントエンドと呼ぶ。著名な物としてC++言語からC言語のソースを得るCfrontがある。
音声合成
音声合成においては、フロントエンドは入力テキストを記号的音素表現に変換する部分であり、バックエンドは記号的音素表現から実際の音を生成する。
ビジネス
金融や財務でもフロントエンドとバックエンドという用語をいくつかの意味で使う。例えば会社型投資信託の購入で、フロントエンド型ロードでは購入時に手数料を支払い、バックエンド型ロードでは償還時に手数料を支払う[1]。
他にもビジネスでは以下のような意味で使われる。
- 「バックエンドピル」はポイズンピルの一種である。ある条件を満たしたときに現在の株主が所有する株式を債権や現金に交換できる権利を与えることで、買収を難しくする方式である。この場合、株式公開買い付けを行う者は、この権利を行使しつつ取得価額の上昇を阻止することができない。
- 新製品開発の初期段階をフロントエンドと呼ぶことがある。最も難しい段階であることから「ファジーフロントエンド」などとも呼ぶ。
- マーケティングにおいては、購入者を選別しやすい(売りやすい)商品をフロントエンドと呼び、フロントエンドを購入した顧客にさらに販売する商品をバックエンドと呼ぶ。
スポーツ
カーリングで、リードとセカンドの選手をフロントエンドと呼ぶ。また、サードとスキップをバックエンドと呼ぶ。
脚注
- ^ “Mutual Fund Fees and Expenses”. Securities Exchange Commission. 2008年8月21日閲覧。
参考文献
![]() | この節の加筆が望まれています。 |
関連項目
フロントエンド
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/13 16:57 UTC 版)
フロントエンドはソースコードを分析して、中間表現または IR と呼ばれるプログラムの内部表現を構築する。また、シンボルテーブルを管理し、ソースコード内の各シンボルに対応したデータ構造に位置情報、型情報、スコープなどの情報を格納する。このような処理はいくつかのフェーズで実施される。たとえば以下のようなフェーズがある。 行再構築(Line reconstruction) - キーワードにストロッピング(英語版)を施す場合や識別子に空白を挿入可能な場合、字句解析の前に入力文字列を「正規化」する必要がある。1960年代の一般的なトップダウンの再帰下降型の表駆動構文解析では、ソースコードを一度読み込むだけでトークン化のフェーズは不要だった。ストロッピングを行う言語としては、Atlas Autocode(英語版)、Edinburgh IMP(英語版)、一部のALGOL処理系などがあり、これらは「行再構築」フェーズを持っている。ストロッピングとは、キーワードに何らかの記号をつけることでキーワードとして使われている文字列を予約語とせず、同じ文字列を変数名やサブルーチン名に利用できるようにしたものである。たとえば、シングルクオートでキーワードを囲むとか、%記号を先頭につけるなどの記法がある。 字句解析 - ソースコードを「トークン」と呼ばれる断片に分割する。各トークンは言語の最小構成要素であり、キーワード、識別子、シンボル名などである。トークンは一般に正規言語に従うため、正規表現を解釈する有限オートマトンで認識できる。字句解析を行うソフトウェアを字句解析器(lexical analyzer)と呼ぶ。 プリプロセッサ - コンパイル前の全処理を行うもの。マクロを実装や、定数の定義、ヘッダファイルの読み込みに使われる。一般にこのフェーズは構文解析や意味解析の前に行われる。プリプロセッサはトークンを操作するものであって、構文を考慮しない。だから、C言語などでは、プリプロセッサでマクロを実装できるが、LISPのような言語では構文解析後にマクロを置き換える必要があり、プリプロセッサは使われない。 構文解析 - トークン列を解析し、プログラムの構造を明らかにする。このフェーズで構文木が構築され、単なるトークンの列だったプログラムにその言語の文法を定義した形式文法の規則を適用することで木構造を生成する。構文木は、この後の工程で解析され、強化され、変換される。 意味解析(英語版) - 構文木の要素に意味を追加し、シンボルテーブルを作成する。型チェック(データ型などを間違っていないかのチェック)や、変数や関数の定義と参照箇所を結びつける処理、既定値代入(自動変数の初期化)、意味的に不正なプログラムを検出して通知するなどの処理が行われる。意味解析には完全な構文木が必要であり、理論上構文解析とコード生成の間に行わなければならない。もちろんコンパイラの実装によってはこれらを一度に行うこともある。
※この「フロントエンド」の解説は、「コンパイラ」の解説の一部です。
「フロントエンド」を含む「コンパイラ」の記事については、「コンパイラ」の概要を参照ください。
- フロントエンドのページへのリンク