バックエンドエンジニアのスキルと研修ロードマップ
はじめに
バックエンドエンジニア = プログラマ とも言えるほど、開発においては最も主流で、最も人口が多い職種です。主に Web アプリケーションの開発を担当し、 IT エンジニアの職種の中でも、最も守備範囲が広いのが特徴です。
そもそも Web アプリケーションは IT の総合格闘技とも言えるもので、必要な技術を挙げると、
- コンピュータサイエンス
- プログラミング言語
- Web アプリケーションフレームワーク
- アーキテクチャ
- 開発技術(テスト、設計)
- データベース
- バージョン管理
- サーバ OS
- ネットワークプロトコル
- セキュリティ
- フロントエンド
ご覧の通り、技術という技術をすべて網羅します。
Web アプリケーションが大規模になれば、フロントエンドやインフラ(サーバ OS やネットワークプロトコル、データベース)、セキュリティは専門チームが組織されますが、大規模でなければバックエンドエンジニアがフルスタックにカバーします。
なお、 OS やプログラミング言語、ブラウザソフト、 サーバソフト( Apache, Nginx )などハードウェアの制御・管理を行うソフトウェアの開発は、システムプログラミングとも呼ばれ、バックエンドエンジニアとは別に区別されます。
バックエンドエンジニアが浅く広く知るべきことと狭く深く知るべきこと
バックエンドエンジニアには幅広い知識とスキルが必要とされますが、フロントエンドやインフラなどそれぞれの専門職種のように、「狭く深く」知識とスキルが必要になるわけではなく、「浅く広く」必要になります。
例えば、膨大なネットワークのプロトコルのうち、最低限、主に関係する HTTP・HTTPS のリクエスト・レスポンスの仕組みや DNS 、 TCP / IP が理解できていれば、何とか Web アプリケーション開発はできます。
逆に、バックエンドエンジニアが「狭く深く」知識とスキルが求められるのが、
- コンピュータサイエンス
- プログラミング言語
- Web アプリケーションフレームワーク
- データベース
- 開発技術(テスト、設計)
- アーキテクチャ
- バージョン管理
この 7 つの領域です。
この中で、バージョン管理は必要ないと考えられるかも知れませんが、 Web アプリケーションのスタートアップの時期を除いて 1 人で開発することはなく、 2 人以上で開発することになるため、バージョン管理は必須となります。
また、 Web アプリケーションが大規模になればなるほど、ハードウェアの特性・性能を活かしたプログラムが求められ、コンピュータサイエンスの知識が必要になります。
アーキテクチャの変化の過渡期
これまでに触れたような知識に加え、近年~現在にかけて 5 つの変化があり、バックエンドエンジニアに求められる知識・スキルが変わっています。
- 「クラウド」
従来であれば、インフラ専門組織やチームがサーバを調達しネットワークを設定、開発環境を構築していたのですが、クラウドの登場により、バックエンドでも手軽に開発環境を構築・設定できるようになりました。
このため、多種多様なクラウドサービスからシステム特性に合わせて選定し、ベストな構成(クラウドデザインパターン)を考えられることが求められています(もちろん、前述のように求められているのは「狭く深く」ではなく「浅く広く」です)。 - 「ビッグデータ」
具体的には「 RDBMS ではないデータベース 」の登場です。
従来は RDBMS 一本で良かったものが、 NoSQL と呼ばれる、キャッシュやログのようなストリーム処理 ( 多くは JSON ) などに向いた KVS 形式の DBMS ( MongoDB, Redis など) や全文検索エンジン ( Elasticsearch など ) など、ビッグデータ時代の到来にあわせて様々な DBMS が登場し、それらを組み合わせるスキルが求められています。 - 「モバイルファースト」
全世代で利用時間の長いコンピュータが PC からスマートフォンに変わり、モバイルアプリを一番最初もしくは Web アプリと同時並行して開発するようになりました。これに伴って、従来はブラウザのリクエストに応じて HTML ページを返すものだったのが、モバイルアプリを含めた様々な端末やブラウザのリクエストに対して JSON 形式のレスポンスを返す API の開発に移りつつあります。 - 「 API の変化」
3. に関連して、 API にもモバイルアプリなどから使いやすさが求められ、従来の REST に変わり、 OpenAPI, gRPC ( Google が開発) , GraphQL ( Facebook が開発) など新しい API が登場し、移行が始まっています。 - 「マイクロサービス」
スタートアップ企業を中心に、少人数でも多機能開発ができる、モノリシック (*) な Web アプリケーションフレームワーク ( Ruby on Rails など) を使って省コストに手早くリリースすることが隆盛しています(現在も続いています)。そのスタートアップ企業が成長・拡大期に入り、今度はモノリシックなままでは開発スピードが落ち、組織の拡大率とプロダクトの成長率が伴わないことが多く発生するようになりました。
これを打開すべく、アプリケーションの構成要素を分離・疎結合にして、各要素の連携は API で行う「マイクロサービス」が生まれ、クックパッドやメルカリなど日本のテックカンパニーでも採用が広がっています。
* モノリシック
フロントエンドも API もアプリケーションのすべての機能が 1 つのリポジトリで完結するもの。規模が大きくなるとテスト工数の増加やデグレッションなどが発生しやすくなる
時系列でバックエンドエンジニアに求められることの変化を挙げましたが、このうち 1. 2. はすでに成熟期(技術的には枯れつつある)を迎えています。一方で、 3. 以降は、現在普及期(技術的には変化がある)のものです。このため、現在のスキルに応じて 3. 以降は取り組むのがオススメです。
バックエンドエンジニアの研修ロードマップ
では、どのようにスキルアップすると良いのでしょうか? SE カレッジで 2021 年の春夏シーズンに開催しているコースをもとに、そのロードマップを公開しました。
ロードマップのコース種類の見方
play_circleアーカイブ動画(いつでも受講可能)
live_tvライブ配信
1. コンピュータサイエンス入門
プログラミングの概念とその方法を理解し、各プログラミング言語を学ぶ上でのベース知識を習得する。
2. プログラミング言語
プログラミング言語の基本構文を理解し、プログラミングを習得する(はじめは 1 つのプログラミング言語を選択)。
Java
Python
C# や その他言語
3. データベース 入門 ~ RDBMS の操作
データベースの概念、 SQL の基本構文、及び DML ( Data Manipulation Language ) / DDL ( Data Definition Language ) を習得する。
4. Web アプリケーション開発
Web アプリケーション開発の構造と MVC の基本およびその実装を習得する。
Java
5. セキュリティ
Web アプリケーションやソフトウェアに対する攻撃と必要なセキュリティ対策を習得する。
6. テスト
品質管理の基本と、テストの書き方/進め方を理解する。
7. バージョン管理
チームでソフトウェア開発を進める上でバージョン管理が必要な理由がわかり、その技術を習得する。
8. アーキテクチャなど設計原則
設計の参考になるパターンや考え方を習得する。
9. データベース設計
データベースの設計に関わる様々な知識・スキル(正規化、各設計方法)を習得する。
10. クラウド
基本知識から、使用頻度の高いメジャーなサービスの名称とその使用方法・操作方法を実践を交えて習得する(クラウドベンダーから、どれか 1 つを選択)。
AWS
GCP
Azure
11. NoSQL やその他のデータベース
NoSQL について、 SQL と差異を含めて理解する。
12. API
開発者が使いやすい API の設計と実装を習得し、新しい API の仕様を理解する
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。