フロントエンドは見える場所、バックエンドは見えない場所を担当
広く技術者を意味する「エンジニア」という言葉は、近年の日本において、特にITエンジニアを指すことが増えてきました。本連載でもこれに従い、ITエンジニアのことを「エンジニア」と呼ぶことにします。
エンジニアと一口に言っても、人によって専門とする分野は異なります。大きくは、フロントエンド開発者とバックエンド開発者の二つに分けられます。
フロントエンド開発者は、ITシステムの見た目を担当する人たちです。ウェブサイト・アプリのデザインや操作といった、私たちユーザーが実際に目で見たり手で触れたりする「表側」を作るのが仕事です。デザインに深く関わる分野なので、デザイナー出身の方も多いですし、デザインとその実装を一手に引き受けるデザインエンジニアと呼ばれる方も最近増えています。
対して、ウェブサイトやアプリの「裏側」を作るのが、バックエンド開発者です。情報の登録やデータの保存、各種機能が動作する仕組みなど、ユーザー側からは見えない部分を受け持っています。
フロントエンドとバックエンドの関係性は、レストランを想像するとわかりやすいでしょう。フロントエンド開発者は、お店の内装やメニュー、ウェイターといった、お客さんから見える場所を担当する人であるのに対し、バックエンド開発者は、キッチンで料理を作ったり、倉庫を整備したりと、お客さんから見えない場所を担当します。
レストランのホールスタッフとキッチンスタッフは、同じ飲食業ではありつつも別の職種ですよね。エンジニア業界も同様で、フロントエンド開発者とバックエンド開発者は、業務や知識には一定の共通点がありながらも、個々人の専門に応じて、果たす役割や身につけているスキルが違っているのです。
専門分野に関する大まかな認識を持つ
フロントエンドとバックエンドという大きな分類だけでなく、より専門をはっきり表現する分類もあります。
スマートフォンやタブレット端末などのアプリを専門に開発する、モバイルアプリエンジニア。AIにデータを分析させるための仕組みを構築する機械学習エンジニアは、データサイエンティストやデータアナリストと呼ばれることもあります。データベースの設計や管理を専門とするデータベースエンジニアは、データを整備し、ビッグデータ活用を可能とするために欠かせない存在。プロジェクトが大規模になると、開発したソフトウェアが実際にしっかり動作するかをテストするQAエンジニア(品質保証エンジニア。QAはQuality Assuranceの略)も活躍します。システムを動かす基盤となるサーバーやネットワークなどを構築・保守するのは、インフラエンジニアの方々です。
管理職はシステム開発の工程のなかで、こうした異なる専門分野のエンジニアと接する機会があると思いますが、まずは「Aさんはフロントエンドの担当なんだな」という大まかな認識を持つことが、スムーズなコミュニケーションに繋がるでしょう。
エンジニアは建築家で、プログラマーは大工
ITシステムの開発者として、もう一つよく耳にするのが「プログラマー」という言葉です。PGと表記されることもあります。エンジニアとプログラマーは、どう違うのでしょうか。
例えると、エンジニアは建築家で、プログラマーは大工さんです。実際に家を建てる技術を持っているのは大工さんで、大工さんだけでも家は建てることはできますが、高層マンションのような大きい家を造ろうとすると、建物全体の設計図を作る建築家の存在が不可欠になります。
システム開発も家造りと同じ。課題を解消するために、何をどのように組み合わせるかという全体像を俯瞰して考える人がエンジニアです。プログラマーは、全体の設計図に基づき、求められた要件や仕様の通りに正しくプログラムを組む役割を担います。
エンジニアはプログラミングができる人が圧倒的に多いですが、“ただプログラムを書くだけの人”ではないことを認識することが重要です。
引く手あまたのエンジニア、優秀な人材に来てもらうためには
それぞれで役割が異なるエンジニア。自分たちの組織やプロジェクトに採用するとき、どのように考えるべきかで悩んでいる文系管理職の方もいるでしょう。
冒頭で、エンジニアはフロントエンド開発者とバックエンド開発者に大きく分けられるとお話ししました。実は、一昔前は、フロントエンドもバックエンドも分け隔てなく担当するというエンジニアが一般的でした。しかし、ウェブサイトやアプリの複雑化、個人情報保護などの法令の厳格化といった時代の変化がそれぞれの領域の専門性を高め、次第にエンジニアの分業化が進んでいきました。
最近では、仕事の細分化が行きすぎた結果、フルスタックエンジニアと呼ばれる、“すべて一人でできる”人材が歓迎される場も増えてきています。
フルスタックの人材を求める傾向があるのは、やはり、ベンチャーやスタートアップといった小さい会社です。料理に例えるなら、「カレーを作れる人募集」というイメージですね。
反対に、「野菜をきれいに切れる人募集」「鍋での煮込みが上手い人募集」という求人を出すのは、大企業。人員が多いぶん、個々のエンジニアの役割が細分化されているからです。「マイクロサービス化」といって、ひとつの大規模なシステムを複数の独立した小さい部品に分割して開発する手法を取る大企業が近年増えていることも、採用で専門性を重視する一因でしょう。
日本におけるエンジニアの人材不足は深刻です。経済産業省「IT人材の最新動向と将来推計に関する調査結果(2016年)」は、2030年時点で最大約79万人のIT人材が不足すると推計しています。エンジニアという職業自体がまだ生まれて間もないこと、プログラミングがそもそも難しいこと、日本企業が即戦力を求めすぎていて人材育成が進んでいないことなどが背景にあると考えられます。
人材不足の業界でより一層重要になるのは、求める人材にまずは正しくリーチすることです。ウェブサイトのデザインを刷新したいときはフロントエンドのエンジニアを、アプリに新機能を追加する際はバックエンド開発者を、データ活用を推進したい場合はデータベースエンジニアや機械学習エンジニアを、システム開発の全工程を一手に引き受けてほしい場合はフルスタックエンジニアを募集するなど、プロジェクトの目的と対象エンジニアを明確にした求人情報を出すよう心がけましょう。
ただでさえ数が少ないエンジニアですが、新しいプログラミング言語に通じていたり、高度なシステム設計ができたりといったスキルの高い人材は、全体の数%に過ぎません。引く手あまたの優秀なエンジニアに自分のチームへ加わってもらうためには、やはり、文系管理職といえどもエンジニアリングについて最低限の知識を身につけることが、必要不可欠です。


