フロントエンド「エンジニア」とは何か?

フロントエンド「エンジニア」

僕は、良くフロントエンドのコミュニティに顔を出していて、フロントエンドの動向などの情報を交換を良くしているのだが、最近、というか昔から、同じフロントエンドエンジニアでも技術的関心事が全然違う事に気がつく。

同じ技術的な領域であるはずにも関わらず全然違う事を話しているのだ。なぜこのような事が起るのだろうか? 今回の記事はそのことについてだ。

なぜ彼らは「フロントエンドコミュニティ」に集まっているのか?

なぜ、彼らはフロントエンドのコミュニティを形成しているのかを記述していきたい。

フロントエンドがなんなのか漠然としている

アンカンファレンスなんか開いていたりすると毎回の如く「フロントエンドエンジニアとは何か?」という話題が出てくる。そういう話題が出てくるというのは、そもそも「フロントエンドエンジニア」がどういうものか曖昧であり共通認識が無いからだと考えている。

HTMLとCSSJavaScriptの会

では何故会話できるかというと、HTMLとCSSJavaScriptを使っているからだということだ。つまり、HTMLとCSSJavascriptの会がフロントエンドコミュニティの本質だと考えても良い。そのどれかを理解していれば、たぶん誰でもコミュニティに参加し発言できると思う。

技術的関心の違いはどこから?

さて、技術的な関心が違うというのはどこからくるのだろうか?

3つの技術と領域の広さ

さて、HTMLとCSS、JSの3つの言語がありフロントエンドコミュニティにはそのどれかに関して関心がある人が参加するわけだが、その結果技術的領域の広さを産んでいるように思える。JSのフロントエンドフレームワークを使ってSPAを構築する人がいれば、CSSの設計を考えたり、アクセシビリティを考えマークアップに励む人もいる。フロントエンドコミュニティの技術的な領域が広くなって来ている。

デザイナーとエンジニアの接触

フロントエンドは基本的にユーザインターフェースを構築する。その結果、デザインの知識を求められたりすることも往々にしてある。なので、IAやUIやUXについて学習しなければならないと思っている人も一定数いる。

みんな作っているものが違う

そもそも「フロントエンドエンジニア」と言っても作っているシステムが違うのだ。とある自社プロダクトのWebアプリケーションのフロントエンドってこともあれば、業務システムのフロントエンドってこともあれば、サイト制作におけるフロントエンドって領域もある。そもそも、それぞれにおいてビジネスが異なるのだ。

さて、フロントエンドはユーザと接触するところである。とすれば、ビジネスが異なればユーザが異なり、要求されるフロントエンド技術が異なるものになるのだ。その結果、違う業界のフロントエンドエンジニアは求められる技術が全然違うことになり、フロントエンドに対する意見が全く異なるものになる。

フロントエンドエンジニアに関する持論

とすれば、「フロントエンド」エンジニアという領域はなかなか難しいところになるかもしれない。なぜなら、フロントエンドエンジニア同士で技術的なコンセンサスを取ることが難しいからだ。

しかし僕は、フロントエンドエンジニアとは何か?について考えていて最近なにか納得したことがあり、それを共有したいと思っている。

「エンジニア」であるということ。

フロントエンドエンジニアは「エンジニア」であるということ

そもそもフロントエンドエンジニアは「エンジニア」なのである。「デザイナー」では無い。この点に注意してほしい。つまり、フロントエンドエンジニアとはシステムを設計、構築する人でありその視点が必要になってくると思っている。

エンジニアとデザイナーの違い

一方デザインとは何か?という疑問も出てくるだろう。デザイナーもまた「設計する人」であるからだ。と考えると、エンジニアとデザイナーの区別って相当に難しいし、実際に領域が被っていることも多い。ただ、なんとなく「デザイナー」というと装飾的なビジュアル設計をイメージする人が多いだろう。

これに対して僕は一つの意見を持っている。デザイナーとエンジニアの違いは設計しているものが違いから来ているのだ。

デザイナーがやる「設計」というのは、ユーザが持つ課題に対して「どのように問題解決をするか」という設計であると思うだ。一方エンジニアは「問題解決の実現するため」に設計するのだ。この違いがある。つまり、エンジニアはより実現性に重きと置いているように思う。

フロントエンドとは?

さて、フロントエンドとは何か?ということである。

ユーザとの接触するところ。

僕はフロントエンドとは何か?というのは、「システムとユーザと接触するところ全体」であると考えている。Webのシステムにおいてそれは、往々にしてHTMLでありCSSでありJavaScriptだったりするわけだ。つまり、クライアントサイド技術ということである。

バックエンドとの関係

そもそも一般にWebのシステムにおいては、バックエンド、フロントエンドと区別がある。一般的にはサーバーサイドとクライアントサイド技術に分けられるが、フロントエンドエンジニアはサーバーサイド技術をある程度求められる事もある。なぜならフロントエンドはあくまでもシステムとユーザを結びつけるものでありその為にはシステムを知る必要性はあるだろう。

フロントエンドエンジニアとは何か?

つまり、以上をまとめると、フロントエンドエンジニアは、「システムの一部を実現するための仕組みを設計し構築する」人であり、そのシステム全体として「ユーザと接触する所」であり「システムとユーザの関係性の仕組みを構築するエンジニア」であるということだ。

フロントエンドコミュニティというのは、まずそれを議論できる場であると僕は考えている。その認識において、フロントエンドに関わっていくとなるほど納得できる事が多いのでは無いかと思う。

さて、露骨にアフィリエイトすることにしよう。