支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

IT業界で一重にエンジニアといってもその種類は豊富で、それぞれに担当する仕事は異なります。SE(システムエンジニア)、サーバー系エンジニア 、Web系エンジニア等の大きなカテゴリ分けはもちろん、Web系エンジニア一つ取ってもさらに細かく分けることができます。今回は、Web系エンジニアの中の一つであるサーバーサイドエンジニアの概要と、サーバーサイドで利用されることの多いプログラミング言語について紹介していきます。

サーバーサイドとは?

サーバーサイドと聞けばサーバー側の何かを示しているということは誰もが想像できると思いますが、WebサイトやWebアプリといったWeb系システムの構築に携わったことがないと聞くことの少ない言葉ではないでしょう。Webサービスのシステムを構築する際はユーザー側の開発、サーバー側の開発がそれぞれ必要となり、それらを切り分ける目的で「サーバーサイド」「クライアントサイド」と 使われることが多いです。

呼び名は様々

サーバーサイドエンジニアは、クライアントサイドエンジニアの対照とされる名称です。サーバーサイドは「バックエンド」と呼ばれることもあり、「バックエンド」の対照とされる場合、クライアントサイドは「フロントエンド」と呼ばれることになります。企業の求人内容によって職種の記載のされ方は様々ですが、サーバーサイド=バックエンド、クライアントサイド= フロントエンドと覚えておけば問題ありません。

Webサービスの仕組み

もう少しサーバーサイドとクライアントサイドの棲み分けが明確になるように、Webサービスの基本的な仕組みについて簡単に解説しておきます。ここでは分かりやすいようにクライアントサイドを「ユーザー(閲覧者)」として話を進めます。

ユーザーはパソコンでホームページを見たい時に検索をかけますが、この時入力する検索キーワードは「検索」ボタンやEnterキーを押して検索結果を要求します。要求先はサーバーであり、このことを一般的にサーバーへのリクエストと呼びます。サーバーはこのリクエストに相応しい内容をユーザー側へ返しますが、こちらはレスポンスと呼ばれます。またユーザーが検索結果から目的のサイトを見つけてサイトにアクセスするとページが表示されますが、この時もページの情報を取得するためにサーバーへリクエストを出しています。それに対してサイトを運用するWebサーバーからレスポンスが送られてきて初めてユーザーはサイトの閲覧が可能となります。

サーバーサイドエンジニアの仕事内容とは?

再びフロントエンドエンジニアの話からとなりますが、フロントエンドエンジニアは、検索エンジンの場合であれば検索ページ周りのデザインや表示内容の構成を担当します。Googleの検索エンジンを見ると日によって様々なデザインのGoogleロゴが表示されていますが、デザインは別として、このロゴを表示させる部分はフロントエンドの担当範囲になります。具体的にはHTMLやCSS、XML、JavaScriptといったマークアップ言語やプログラミング言語を利用します。

対するサーバーサイドエンジニアは、検索エンジンで入力されたキーワードを受け取ってデータベース内のデータを照合して結果をクライアント側にレスポンスするプログラムの作成、あるいはサイト内でボタンがクリックされたことによって発生する処理内容等をプログラミングします。メールフォームの画面で「送信」ボタンを押した時に実際に設定されたメールアドレス宛にメール送信を行う、地図が動かされた時に新たに表示しなければいけない部分の情報を取得する等です。

サーバーサイドエンジニアはデザインや画面表示に関するHTMLやCSSといったマークアップ言語を使うことはなく、これから紹介するJavaやPHP等のプログラミング言語でシステムを構築していきます。またプログラミング言語だけではなく、フロントエンドエンジニア以上にサーバーやネットワーク、データベースに関する知識が求められる職種です。

サーバーサイドエンジニアが使うプログラミング言語は?

サーバーサイドエンジニアは開発するシステムによって最適なプログラミング言語を採用します。今回はサーバーサイドの言語として使われることの多い言語を5つ紹介します。

Java

JVM(Java仮想マシン)がインストールされているコンピュータであればどこでも動作可能な人気のオブジェクト指向型言語です。APIやフレームワークも充実していて、Webサイトやアプリ、スマホアプリ、ゲーム、組込系システム等、幅広いシステムで採用されています。習得難易度はやや高いものの、一度習得してしまえば多くあるJava案件に携わる機会ができるだけではなく、その他のオブジェクト指向型言語にも応用が可能となります。金融系システムでも採用される等、処理速度に優れていて信頼性も高い歴史ある言語の一つです。

PHP

1996年のリリース以来バージョンアップを繰り返し、2021年現在も第一線で利用されている人気の言語です。歴史が長いため多くのフレームワークも登場している他、HTML内に埋め込んで実行できるためWeb系サービスとの相性も抜群です。またPHPで開発をするには専用の開発環境が必要となりますが、LAMP、XAMPP等の簡単に開発環境を構築できる仕組みが揃っています。書籍やオンライン上の学習サイト等、十分に独学できるようなツールが揃っていることも特徴で、比較的習得することは安易と言われている言語です。

Ruby

Rubyは日本で開発されたプログラミング言語であるため、日本語のドキュメントや参考書が充実しています。またシンプルなコードで一つのプログラムを作成することができるので、初心者でも学習しやすい言語と言われています。Rubyという言語自体はJavaやPHPとそう変わらない1995年にリリースされていますが、世界的に使われるようになったのはRuby on railsといういまやWebアプリケーションの構築に欠かせないフレームワークが登場して以降です。その他にもSinatra、Padrino、cuba microframework等様々なフレームワークがあり、元々シンプルなコードである特徴と共に開発のスピードアップに貢献しています。作業効率のアップができる言語であるため、スタートアップやベンチャー企業で使われることが多い言語であるというのも一つの特徴です。

Python

近年注目されているディープラーニングやAI、データ解析の分野で使われることの多い言語ですが、歴史は長く最初のリリースはPHP等よりも早い1991年でした。Rubyと同様に少ないコードでコーディングでき、ライブラリの種類も数万以上と充実していることが特徴として挙げられます。またPythonは文法もシンプルであり、学習しやすい言語の一つと言えます。なお元々統計処理、数値計算が得意な言語であることからディープラーニングやAIの分野でも利用されるようになったという経緯があります。

C言語

ここまでに紹介してきた4言語よりはるかに歴史の長い言語でリリースは1972年ですが、いまだに需要が多いのがC言語です。C言語は自由度が高く、システムの制御に関するプログラミングもできますが、逆にいうと一般的な言語では自動的に処理してくれることも自身でプログラミングしなければならず、言語の知識だけではなくコンピュータに関する深い知識が必要となります。そのためC言語は学習の難易度が高いと言われていますが、歴史の長い言語であるため学習ツールは充実しています。なおC言語が採用される分野としては、組込系やソフトウェアの開発からOSの開発や基幹系システムの開発でも利用されています。さらにC言語には派生言語としてC++があり、こちらはC言語と互換性を保ちつつオブジェクト指向の要素が加わり、同じくWebアプリやロボット技術等の様々な開発で利用されています。

番外:JavaScript

JavaScriptはブラウザ上で動作するため、フロントエンドのプログラミング言語として紹介されることが多いですが、「Node.js」という実行環境をインストールすることでサーバーサイドでのプログラミングも可能となります。この実行環境のおかげでJavaScriptでのファイルの読み書き、ネットワーク通信ができるようになります。Node.jsの公式ページでは「ネットワークアプリケーションを構築するために設計された非同期型のイベント駆動のJavaScript環境」と紹介されています。なおNode.jsは決してサーバーサイドでしか動作できないわけではなく、クライアントサイドでも利用可能なことにご注意ください。

まとめ

サーバーサイドエンジニアはWebシステムを構築する中でデザインの知識を深める必要があるような機会はあまり発生しませんが、その分サーバー、ネットワーク、データベース等のインフラ知識が求められ、企業によってはプロジェクトごとに異なるプログラミング言語の利用が必要になることがあります。サーバーサイドエンジニアを目指し始めた時点で複数言語を一気に習得するのは難しいですが、一つの言語を着実なものとした後は、別言語も習得すると業務の幅が広がることでしょう。なおバックエンド、フロントエンドの両方をこなせるようになると「フルスタックエンジニア」という職種へキャリアアップできる可能性もあり、Webシステムの開発における万能型のエンジニアとなります。Web系のエンジニアを目指している方は、まずサーバーサイドエンジニアの仕事を身につけたうえで、翌々はフルスタックエンジニアを目指してみてはいかがでしょうか。