2008.06.25
「フロントエンド・エンジニア」という呼び名のパワー
私の仕事は、Zope/PloneをベースとしたカスタムCMS(その顧客専用のコンテンツ管理システム)を開発するというもので、これは「Web開発」とか「サーバサイド開発」とか呼ばれるカテゴリに入る。

これに対して、HTMLやCSS、JavaScriptなどクライアントサイドの開発・コーディングを担当する人を、最近のWeb業界では「フロントエンド・エンジニア」と呼ぶ場合があるようだ。これはなかなかいい呼び名だと思う。

一般的に「Webデザイナー」と呼ばれる人の仕事は、じつに幅広い。ビジュアル的に「デザイン」すること(どんなサイトにするかの「絵」を作ること)や、サイトの構造・ラベリング・ナビゲーションといった「情報アーキテクチャ」を決めること、そしてHTMLやCSS、JavaScriptといった技術によってそれらを実装することは、それぞれ異質な作業であり、別種のスキルが求められる。

最近はこうした作業・スキルが分解されて、情報アーキテクチャを決めるのは「情報アーキテクト」、HTMLやCSS、JavaScriptなどによる実装は「フロントエンド・エンジニア」とか「マークアップ・エンジニア」といったように、それぞれ名前が与えられるようになってきた。実際上は、これらすべてを「Webデザイナー」が担当することも多いようだが、基本的に別の作業・別のスキルであることも確かなので、同一人物が担当するのだとしても、それぞれに名称をつけるようになってきたのはいい傾向だと思う。

このうちの「フロントエンド・エンジニア」、つまりHTMLやCSS、JavaScriptによるコーディングをおこなう人については、昔から「コーダー」という呼び名もあった(いまでも使われている)。しかし「フロントエンド・エンジニア」は、昔ながらの「コーダー」よりも格が高い感じがする。

私のイメージでは、「コーダー」と「フロントエンド・エンジニア」の違いは、次のような感じだ。

・コーダー : Photoshopなどで作られた「絵」から、ただHTMLを起こす。ブラウザで表示できればOK。

・フロントエンド・エンジニア : 技術を熟知した上で、Web標準を守り、できるだけ保守性の高いコードによって実装する。

一般人レベルだと、この2つの違いはおそらくわかりにくいだろう。ブラウザで見ているだけであれば、どちらであっても違いはない。しかし、Webサイトを作ったり運用する現場の視点から見ると、これが大違いなのだ。

作られたコードが、ただ「ブラウザで表示できる」レベルなのか、「Web標準を守った、保守性が高い」コードなのかの違いは、そのWebサイトがサーバサイド技術を使うとき(動的サイトのとき)、より顕著に出てくる。

サーバサイド開発、動的サイトの開発では、HTMLを分解したり、テンプレート化する。「HTMLと格闘する」といってもいい。そのHTMLが「きれい」なのか、「きたない」のかで、この開発のやりやすさは大きく違ってくる。そして開発効率だけでなく、システムの設計にも影響しかねないのだ。

サーバサイド開発とは、大ざっぱにいえば「HTMLを生成する」システムを作ることだ。そのシステムが工場だとすれば、その工場から出荷される「最終製品」がHTMLなのである。そのHTMLが「きたない」場合、その「きたない」最終製品が出てくるように、システムを作らねばならないのだ。

私が仕事で関与するプロジェクトでは、初期の段階からお客さんにこの話をして理解してもらい、デザイン担当の会社に「きれい」なHTMLを作ってもらっている。HTMLが「きれい」だと、CMSに入れ込むときもやりやすいし、お客さんがコードを保守する場合もやりやすい。

HTMLやCSS、JavaScriptを「きれい」に書けるという技術は、一般的にはその価値がなかなか見えにくいけれども、きわめて重要だし、投資対効果の高いスキルだと思う。これに「フロントエンド・エンジニア」といった独自の名称を与えて、「Webデザイナー」という大ざっぱな領域からそれを引っぱり出し、際立たせたことには、大きな意義がある。

もし「フロントエンド・エンジニア」といった名前がなく、「Webデザイナー」といった大ざっぱな名称しかないと、実際はそこにさまざまなスキルや作業が入り込んでいるのに、単一のスキル・作業であるかのように思われる。すると実際に必要なスキルの幅や作業量に対して、理解や評価、対価などが過少になりがちだ。これはその「Webデザイナー」にとって不幸なだけでなく、その成果物の品質低下、ひいてはシステム全体の品質低下につながるので、みんなが不幸になる。

「それがどういう仕事なのか」にきちんとフォーカスされた名前、つまり「職種」は、その仕事の役割や、必要なスキルがどんなものなのかを語る。その名称は、それにたずさわる「人」を際立たせ、その役割・スキルを広く認知させる。これはその「人」にとっても、その役割・スキルを必要としているシステム全体にとっても、いい方向に作用する。「フロントエンド・エンジニア」という呼び名には、そのようなパワーがある。

関連エントリ:
弁当屋の弁当は 「動的」 コンビニ弁当は 「静的」
http://mojix.org/2006/01/06/202935
ブログがWebにもたらしたMVCモデル - コンテンツ、デザイン、テクノロジー
http://mojix.org/2005/10/02/140609