バックエンドエンジニアは「サーバーサイドエンジニア」とも呼ばれます。Webサービスのバックエンド、つまりサーバ側のコンピュータ上で動作するプログラムを作ることが主な業務になります。
Web系エンジニアの中では最も人数が多く間口の広い職種であること、言語や技術の選択肢が幅広いこと、スキルの掛け算や他の職種との兼務がやりやすいこと、キャリアアップの選択肢が多いこと等が特徴です。
また業務未経験からWeb系エンジニアにジョブチェンジする方は、最初はこのバックエンドエンジニアの見習い的なポジションからキャリアを開始するケースが多いようです。上記の通り間口が広いので、どの職種が自分に向いているかわからない方はバックエンドエンジニアとしてキャリアを開始するのが無難で良いでしょう。
仕事内容
①サーバ構築 サーバ構築では、WebサーバやDBサーバなど、システムに必要なサーバの設計と構築をおこないます。例えば、Webサービスにおける会員登録や金額計算などのシステム構築が挙げられます。 こうしたシステムは、ユーザがWebサービスを利用する際には、画面上に表示される指示にしたがって操作を進めていくだけなので、裏側の処理について考えることはほとんどないでしょう。バックエンドエンジニアは、サービスを利用する側からは見えづらいものの、このようなWebサービスには欠かせない非常に重要な仕組みの構築を担っています。②プログラム開発
バックエンドエンジニアは、GO、Python、C#、Javaなどのサーバサイドのプログラミング言語を使ってシステム開発をおこないます。プログラミング言語は、システム要件に合わせて変わります。例えば、Windowsサーバで動く場合はC#、AIを使用する場合Python、大人数で開発する場合Java、といった言語が選ばれます。
③保守・運用
バックエンドエンジニアは、構築したサーバや、開発したプログラムなどの保守や運用を担当する場合もあります。
完成したシステムは公開され、毎日多くの人に利用されます。利用が進むと、未知のバグが発生したり、仕様の追加、変更なども発生します。こうした要望に応えてシステムをより使いやすい状態に保つのも、バックエンドエンジニアの業務の一つです。
必要知識
バックエンドエンジニアには、データベース・Webサーバやアプリケーションサーバ、HTTPプロトコル、APIやクッキーの知識等、様々な知見が必要になります。その中で個人的に重要だと思う内容を3つ紹介します。①Webフレームワーク
アプリケーションを開発する際は全てのコードを自分たちで書くわけではなく、様々な汎用的な機能がまとめられた「ライブラリ」や「パッケージ」を使用することが一般的です。 Webフレームワークもそういったライブラリの一種で、Webアプリケーションを開発する際に必要な様々な機能が「雛形」としてまとめられており、エンジニアはその雛形に従ってコードを書くことで効率よく開発作業を進めることができます。 Webフレームワークには、言語ごとに様々な種類があります。RubyはRuby on Rails、PHPはLaravel、PythonはDjangom等の代表的なWebフレームワークとなります。 一般的には「MVC」と呼ばれるアーキテクチャのWebフレームワークが多いです。何か一つのWebフレームワークの使い方を覚えれば、他の一つも比較的習得しやすくなります。②Webサーバ/アプリケーションサーバ
ブラウザやスマホアプリ等のクライアントアプリケーションからHTTPリクエストに対して、何らかの処理を行ってHTTPレスポンスを返すのがWebサーバの役割です。 この際にクライアントから「CSSファイル/画像ファイル」等の「静的ファイル」をリクエストされた場合は、基本的にはWebサーバ自体がそれらのファイルを返す処理を行いますが、「データベースにアクセスして商品データを取得する」等の「動的な処理」が必要な場合には、「アプリケーションサーバ」に対して処理を依頼して、その処理結果をクライアントに返します。 アプリケーションサーバは、Ruby on Rails等で作られたWebアプリケーションを実行して、Webサーバに対して実行結果を返すことが役割です。③REST API
「API」とは「アプリケーション・プログラミング・インターフェイス」の略です。「アプリケーション同士がコミュニケーションするための約束事や取り決め」のことです。 Webアプリケーションのクライアントやサーバのやり取りのインターフェイスを定義したAPIは「Web API」と言い、その中でも「REST」という設計原則に従って作成されたAPIは「REST API」と言います。 REST APIを用いることで、APIを利用するサービス開発者の生産性が上がる、サーバ、クライアント間では何も共有されないので負荷に応じたスケーラビリティが向上する、等のメリットが挙げられます。参考文献、データ
勝又健太著「Web系エンジニアになろう」 https://www.amazon.co.jp/dp/4408339334?tag=note0e2a-22&linkCode=ogi&th=1&psc=1modis「バックエンジニアとは?」
Qiita「RESTful APIとは何なのか」
https://qiita.com/NagaokaKenichi/items/0647c30ef596cedf4bf2