Webが日常に浸透し、当たり前のものになった今、人々はちょっと忘れかけているかもしれません。この30年足らずの間に、Webがどれだけ凄まじい発展を遂げたかということを。
今や、個人がやっている小さなお店でさえ、ネットで広告を打ち、予約サイトや通販サイトに出店し、自前でネットショップを運営したりしています。
証券会社や暗号通貨取引所などの、巨額のマネーを動かすサイトも、数え切れないほど存在します。
このような、巨大なインフラとなったWebの世界を作っているのが、「Webエンジニア」と呼ばれる人たちです。
この記事では、Webエンジニアという職業について、その仕事内容を紹介し、何を勉強すればなれるのかということを解説します。
Webエンジニアとは
Webエンジニアとは、WebサイトやWebアプリケーションの作成や保守などを行う職業のことです。当然、インターネットが普及する前には存在しなかったので、非常に新しい職業です。
歴史が浅いとはいえ、技術が猛烈な速さで進歩しているので、仕事内容は昔と今とではだいぶ違う部分もあります。
今や、大企業はもとより、中小企業や個人事業主でも、広報や集客や求人のためにWebサイトを運営するのが普通になっています。販売や店の予約などは、WebサイトやWebアプリが主な窓口という企業もたくさんあります。また、官庁も大事な情報をWebでも発信しています。
組織によっては建物と同じか、それ以上に大事なものにもなりうるWebサイトやWebアプリを作るのが、Webエンジニアの仕事です。
情報インフラを支える仕事
インターネットは多くの人々にとって欠かすことのできないインフラです。ネットを介した情報の送り手と受け手の間に立つWebエンジニアもまた、現代において欠くことのできない仕事です。
例えて言うなら建設業のようなものです。インターネットという広大な空間の一角に、建設物のようにWebサイトを構築していきます。施主との打ち合わせから設計、実際の施工業務まで様々な段階を踏むところも似ています。
ひとつ大きく違うのは、Webサイト構築では、ビルや家を造るのとは異なり、物理的な資材は必要ないということです。最も必要なのは、人的資源、すなわちWebエンジニアやデザイナーといった人達です。
コンピューターという道具で、主に人の力で作る、それがWeb開発の世界です。我々が日々の生活の中で「インターネットが便利だ」と感じることができるのは、Webエンジニアの仕事に負うところが大きいのです。
他のIT系エンジニアとの比較
コンピューターや情報に関する産業では、たくさんのエンジニアが働いています。業界内にはたくさんの分野や業種があります。例えば、パソコンのデスクトップアプリを開発する、家電や工業機械などの中に組み込まれるソフトウエアを開発する、AIを使ってデータから有用な情報を引き出すなどです。
その中でも、Webの世界は巨大です。需要がとても高い分野で、この先もずっと人材が求め続けられる状況が続くものと見込まれます。
Webエンジニアになるために必要なスキルレベルは、他分野に比べて極端に高いということはなく、未経験からでも十分に目指せる程度です。よく使われるプログラミング言語は、JavaScriptやPHPなど、比較的簡単なものが多いので、初期の学習コストは低めに抑えることができます。
Webエンジニアの仕事内容
Webエンジニアの仕事は、主にWebサイトの構築に関わるものです。サイトに載せる文章や画像などのコンテンツは別のクリエーターなどが作るのが普通です。コンテンツを表示する「場所」を作るのがWebエンジニアの仕事になってきます。
その他に、Webアプリと呼ばれる、Webの仕組みを使ったサービスを作るのもWebエンジニアの仕事の範疇です。この分野も、大変に伸びてます。
また、すでにあるWebサイトやWebアプリの保守も、Webエンジニアの担当です。新規にWebサイトを作るのが家を新築することにあたるとすれば、保守は家の修繕やリフォームに相当します。
Webサイトの構築
Webサイトの構築は、Webエンジニアの仕事としては案件数の多いものとなっています。
Webサイトの構築は、何段階かの手順を経て行われます。どういうサイトにしたいか、サイトの運営者に聞いて決めていく「要件定義」、サイト全体の構成などを決める「設計」、見た目を決める「デザイン」、HTMLなどを使ってページを作っていく「実装」といったフェイズがあります。
これらのうち、「実装」は主にWebエンジニアの仕事になります。HTMLやCSS、JavaScriptといった言語のコードを打ち込む「コーディング」の作業を含みます。
Wbアプリの開発
Webアプリケーション(Webアプリ)とは、Web上で動作するアプリケーションのことです。通常のWebサイトよりも高度な機能を持っています。例えばネットショッピングサイトやネットバンキング、乗り換え案内など、幅広いものがあります。
Webアプリでは、データを保存したり、大量の計算を伴う処理を行ったりするために、サーバーサイドの技術を用います。ユーザーの目に直接触れる、ブラウザ上の表示を扱う「フロントエンド」に対して、サーバー側のことを「バックエンド」と呼びます。
Webアプリ開発では、通常、フロントエンドとバックエンドを別々のエンジニアが担当します。それぞれ、必要となるスキルが違うからです。
Webアプリ開発にも。「要件定義」「設計」「実装」等の段階があります。それら全てに、Webエンジニアが関わることになります。駆け出しのエンジニアならば実装の部分を担当することが多いでしょう。経験を積んでいくと、設計や要件定義といった上流工程に携われるようになる、というのが通常のキャリアパスです。
Webサイト・アプリの保守
WebサイトやWebアプリの保守も、Webエンジニアの大事な仕事です。
一般にソフトウエアというものは、最初のリリース時からなんの不具合もない完璧なものを作るのはとても難しいのです。不具合が見つかるたびにアップデートするというのが現実的な対応です。
また、ソフトウエアを取り巻く環境も常に変化しています。OSやプログラミング言語、Web関連ではブラウザのバージョンアップによって、影響を受けるかもしれません。技術的なことばかりではなく、世の中のニーズや見た目に対する好みも変化します。ユーザーに満足してもらうためには、こうした変化に対応することが不可欠です。
つまり、ソフトウエアは、1度作ったら終わりというものではなく、常に変化していくものなのです。それが「ソフト」であるということです。特に、ブラウザで表示されるWebサイト・アプリの場合は、デスクトップアプリなどのそれぞれの環境にインストールする必要のあるソフトウエアに比べれば、変更に強いという特徴があります。
こういった理由で、Web関連の保守の仕事は重要で、量もたくさんあるのです。
Webエンジニアの種類
企業などが運営するWebサイトやアプリは、1人が作るわけではなく、何人もの人が共同作業で作るのが普通です。複数のエンジニアが関わり、それぞれの専門知識に応じて役割分担して進めていきます。
Web関連のエンジニアは、大きく分ければ「フロントエンド」と「バックエンド」に分けられます。ユーザーの目に触れる部分を作るか、それともその奥にある仕組みを作るか、という違いがあります。
これは、コンピューターの世界に昔からある「クライアントサーバーモデル」というものに基づいています。ネットワークには、最低2台のコンピューターが関わっていています。そのうち情報を提供する側を「サーバー」、情報を受け取る側を「クライアント」と呼びます。
Web開発の世界では、クライアント側がフロントエンド、サーバー側がバックエンドということになります。
ここではフロントエンドとバックエンドの仕事の違いについて述べますが、それぞれが完全に分離して仕事をするというよりは、よいものを作るために互いに協力して、コミュニケーションを取りながら作っていくことになります。また、1人でフロントエンドもバックエンドもこなす「フルスタックエンジニア」という人々も存在します。
フロントエンド・エンジニア
フロントエンド・エンジニアとは、Web開発に携わるエンジニアのうち、スマホやパソコンなど、ユーザーの端末側で実行される部分を作る人達のことです。簡単に言えば、主に見た目や使い勝手に関わる部分を作る仕事です。
デザイナーが作ったデザイン案に従って、HTML、CSSを使ってページの枠組みやリンクといった構造などを作り、JavaScriptで視覚に訴える効果などを実装していきます。
多くの人に見てもらう、使ってもらうのがWebサイトやWebアプリの大きな目標ですから、見た目や使い勝手は非常に大事です。そのぶん、フロントエンド・エンジニアへの期待も大きくなります。
Web技術の進歩に伴い、フロントエンド・エンジニアにはより高度なスキルが求められるようになっています。サイトの見た目の流行り廃りなどもあるので、そういう動向への目配りも必要です。変化のスピードが速いので最新技術を常に取り入れ続けるのは大変ですが、それだけやりがいのある仕事とも言えます。
バックエンド・エンジニア
バックエンド・エンジニアとは、Web開発のうち、サーバー側のプログラムに関わる仕事です。ユーザーの目には直接触れないものの、情報の保存や計算処理に携わる、重要な仕事です。
バックエンドの仕事では、ユーザーからの入力データを保存したり、状況に応じて情報を提示したり、といった処理をします。その際に、データベースの技術を用います。
通常、フロントエンドではデータの保存処理は行いません。この「データを保存するかしないか」という点が、フロントエンドとバックエンドの最大の違いと言ってよいでしょう。
大切なユーザー情報を保存したり、場合によってはお金の計算などが絡んだりすることもあるので、責任は重大です。セキュリティーに細心の注意を払わなければなりません。サーバー側のバグは、重大な結果を招く恐れもありますので、修正は素早く行わなければなりません。保守業務は非常に重要です。
Webエンジニアになるには
Webエンジニアになるためには、Web開発を請け負う会社などに入って、経験を積むのが確実な道です。フリーランスのWebエンジニアもたくさんいます。
社員であれフリーランスであれ、様々なスキルを持っていなければWebエンジニアとしてやっていくことはできません。どのようにして学ぶか、ということも考えることも必要になります。
Webエンジニアとして必要なスキル
Webエンジニアとして必要なスキルには、幅広いものがあります。中でも、HTMLとCSSはWebページの骨格を成すものですから、職種にかかわらず把握しておく必要があります。Webエンジニアを目指すなら、まずHTML&CSSを学ぶのが妥当なところになります。
フロントエンドとバックエンドでは、よく使うプログラミング言語が違うので、どちらを目指すかによって学ぶべき順番も違ってきます。
実際の開発現場では、フレームワークを使うことが多くなっています。フレームワークとは、WebサイトやWebページの大枠を簡単に作ることができるソフトウエアです。フレームワークはたくさんの種類があるのですが、主なものを理解しておけば、応用が利くでしょう。
フロントエンド・エンジニアに必要なスキル
フロントエンドエンジニアにとって、HTML&CSSは、主な仕事道具ですから、深い習熟が必要です。
そして、HTML&CSSを学んだ次に学ぶべき原語は、JavaScriptです。これはもう、「絶対」なのです。なぜなら、現在の主なブラウザ上で動作するプログラミング言語が、JavaScriptだからです。
ブラウザが認識するのは、HTML&CSSとJavaScript、それにWebAssemblyという言語だけです。このうち、WebAssemblyは新しいもので、認知度はまだあまり高くありません。マークアップ言語であるHTML&CSSと、プログラミング言語であるJavaScriptさえ学べば、「言語」に関しては足りると言ってよいでしょう。
フロントエンドの開発でよく使われるフレームワークとしては、ReactやVue.jsなどがあります。これらについては深く学ぶ価値があります。ただし、浮き沈みの激しい世界であり、今後も新しいものが次々と台頭してくる可能性はあります。
フロントエンド・エンジニアは、いわばデザイナーとユーザーの橋渡しをする仕事です。よって、デザインに関してもある程度は知っておく必要があります。
バックエンド・エンジニアに必要なスキル
バックエンド・エンジニアに必要なスキルは、非常に多岐にわたります。プログラミング言語も、フロントエンドよりは多様なものが使われています。その他、サーバーやデータベース、フレームワークについての知識も必要です。
バックエンドで使われるプログラミング言語には、PHP、Java、Python、Rubyなどがあります。そのうち、圧倒的なシェアを占めるのがPHPです。世界のWebサイトのうち、およそ8割でPHPが使われているとも言われています。よって、サーバーサイドのエンジニアを目指す場合、最初に学ぶ言語としてPHPを選ぶのは妥当な選択です。
多くのWebサイトは、Linux系のOS上にWebサーバーソフトを動作させて運用されています。WebサーバーとしてはApacheがよく使われています。Linux並びにApacheについては、学んでおきたいところです。
サーバーサイドといったら、データベースの知識も欠かせません。データベースにデータを追加・更新したりするための言語であるSQLは、知っておかなければなりません。データベース監理システム(DBMS)には数多くのものがあります。主なものを挙げれば、Oracle、MySQL、Microsoft SQL Server、PostgreSQLなどです。リレーショナルデータベースの理論を理解していれば、それらの差に大きく戸惑うことはないでしょう。プログラミング言語のライブラリなどで、DBMS間の差を吸収する仕組みが提供されていることもよくあります。
サーバーダイド開発で使われるフレームワークは、各プログラミング言語ごとにたくさんあります。案件数を比較すると、PHPならばLaravelが多くのシェアを取っており、CakePHP、FuelPHP、Symfonyなどがそれに続いています。RubyではRuby on Railsがほぼ独走状態です。PythonではDjangoが多くのシェアを占め、Flaskがそれに続きます。
このように、バックエンドの世界では様々なシェア争いが発生していて、状況は複雑です。バックエンドのWeb開発者として生きていくためには、これらの技術の動向にも目を光らせておく必要がありそうです。
Webエンジニアになるための学習法
Webエンジニアになるためには、たくさんのことを学ぶ必要があります。効率よくやらなければ時間がかかって仕方がありません。それだけ、挫折してしまう可能性が高くなります。
IT系のエンジニアを目指すための学習をする上で、まず最初にすべきことは、目標を絞り込むことです。どの分野のエンジニアになりたいかはじめに決めてから、そのために必要な内容に絞って学習するのが効率のよいやり方です。
Webエンジニアを目指すと決めている方は、その時点ですでにかなり絞り込みがすんでいます。そこからさらに、フロントエンドに行くのか、バックエンドを目指すのか、ということも決めておくとよいでしょう。
スキルは、キャリアを積みながらでもどんどん学んで身につけることができるので、はじめから大風呂敷を広げる必要はありません。まずはひとつのプログラミング言語をしっかり学んでおいて、そのあとで別の言語を学ぶなりその他のスキルを学ぶなりすればよいでしょう。
学習方法は、主に2系統あります。独学するか、スクールなどを利用するか、です。
独学する
プログラミングは、独習が可能な技術です。そのための書籍も、各言語ごとにたくさん出版されています。ただし、書籍を使った学習は挫折率が高いとも言われています。自分で計画を立て、それを実行することができるかが鍵になります。
Web上で学ぶことができる教材もたくさんあります。動画で学ぶものや、ブラウザ上にコードを打ち込んでインタラクティブに学ぶタイプなど、様々なものがあります。質問ができるサービスがあるなど、完全な独学よりは一歩スクールのほうへ踏み出した形の学び方と言えます。
こちらの記事で、プログラミングの独学について詳しく紹介しています。ぜひ参考にしてみてください。
プログラミングスクールで学ぶ
プログラミングスクールで技術を学ぶこともできます。スクールでは、学習開始前の計画の段階から、修了後のアフターフォローまで、至れり尽くせりで面倒を見てもらえます。
教えてくれる人がいることで挫折しにくく、比較的短期間で身につけることができます。Webエンジニアになるためにはたくさんのことを学ぶ必要があるので、とにかく効率を重視したいという方には、スクールも有力な選択肢になってくるでしょう。
こちらの記事で、お薦めのプログラミングスクールを紹介していますので、ぜひ参考にしてみてください。
まとめ
Webエンジニアは、社会の情報インフラの構築や維持のためになくてはならない職業です。学ぶべきことはたくさんありますが、需要という点では申し分ありません。しっかりと、効率よくスキルを身につけ、立派なWebエンジニアを目指しましょう。