1分で分かる!サーバーサイドエンジニア
ねぇねぇ。サーバーサイドエンジニアってどういう人??
YoutubeやGmailなどのWebアプリケーションはフロントエンドとサーバーサイドの2つの仕組みで動いているんだよ。フロントエンドは、目に見えている画面側でこの間、フロントエンドエンジニアで説明したよね。
うん、、、
参考: フロントエンドエンジニア
逆にサーバーサイドっていうのはユーザーの目には見えないサーバー側を指すんだけど、サーバーサイドエンジニアはそのサーバー側の開発を担当するエンジニアのことだね。
画面じゃない部分を開発しているってことかぁ。でも、あんまりイメージが湧かないなぁ。サーバーサイドの開発ってどんなことをやっているの?
例えば、Youtubeで動画検索する時に検索結果一覧が表示されると思うんだけど、その検索や検索された結果を取得しているのがサーバサイドのお仕事だよ。ちなみにその結果を画面表示させてるのがフロントエンドエンジニアのお仕事ね。
サーバサイドエンジニアとフロントエンドエンジニアが協力して、Webアプリケーションがうまれてるんだね。
そうだよ。Youtubeの動画をアップするのも、ユーザーはフロントエンドエンジニアが作ったWeb画面にアップしているけど、実際はその後サーバサイドエンジニアがその動画のデータをYoutubeのサーバーに登録しているんだよ。あとは、Gmailにログインする時のパスワードの認証や、メールを受信してくれるのもサーバサイドエンジニアの仕事だね。
なるほどなるほど。少し分かってきた気がする!
もしサーバーサイドエンジニアを探しているのなら、ちょっと注意が必要だよ。
え?なんで??
サーバーサイドっていうのは、いろんなプログラミング言語でつくることができるんだ。たとえば、Java、PHP、Python、C#、Rubyなどだね。
え!そんなにたくさんあるの?
うん。だから募集している会社やプロジェクトが、どのプログラミング言語を使うのかは確認しておいた方がいいかもしれないね。
確かに!ありがとう!
あ、まだ注意してほしいところがあるんだ。
え、まだあるの…
サーバーサイドエンジニアって一言でいっても、担当する仕事も会社やプロジェクトで違う可能性があるよ。
サーバーサイドを開発するお仕事だから、どこも一緒じゃないの??
サーバーサイドのプログラミングだけを担当することもあるし、データベースの設計やチューニングまでやることもあるんだよ。さらには、会社によってはサーバー構築を任せられることもあったりするんだ。
なんかお仕事たくさんだね…。あ、そういえばサーバーサイドエンジニアとバックエンドエンジニアって何か違うの??
サーバーサイドもバックエンドもユーザーの目に見えない部分を表す言葉だね!だから同じ意味と思っておいて大丈夫!
よくわかったよ!ありがとう!
サーバーサイドエンジニアとは?採用のための基礎知識
サーバーサイドエンジニアの役割
サーバーサイドエンジニアは、サーバーと言われるコンピュータ側の処理を中心に開発します。フロントエンドとは異なり、画面などを開発することはありません。データへのアクセスやデータの操作、他システムとの連携など、アプリケーションの中心となる機能は、すべてサーバーサイドエンジニアが開発を担当します。
また、プログラミングだけではなく、サーバーやデータベースなどのインフラ面を構築することもあります。(インフラエンジニアが担当する業務領域も担当する場合がある。)人数が少ない企業やプロジェクトでは、必然的にエンジニア1人の担当領域も増えやすい傾向にあるため、どこまでを担当する可能性があるのかについては注意が必要です。
使用する言語は、Java、PHP、Python、C#、Rubyなどがメインで、開発するものによって言語を選択しています。
サーバサイドエンジニアとはどんな人か
フロントエンドエンジニアとは異なり、ユーザーの目に見えない部分を担当するため、クリエイティブ性やデザイン性はあまり必要としません。
サーバーサイドエンジニアは、アプリケーションの根幹となる部分を担当するため、アプリケーションとして最適な構成となっているか、共通化できる部分はないかなどといった観点が必要になります。また、処理速度や大量データでも問題なく処理できるかというパフォーマンス部分も考えながら開発する必要があります。
ユーザーの目に直接触れることはないですが、さまざまなポイントに気を配りながら開発する必要があるため、きめ細かな仕事ができる人、縁の下の力持ち的な存在を好む人が多いといえるでしょう。
サーバーサイドエンジニアの採用にあたって知っておいた方がよいポイント
業務範囲
役割の項目でも少し触れましたが、企業によってサーバーサイドエンジニアの担う役割が違ってきています。
どこまでが業務範囲なのか、明確に記載した方が候補者にとってもわかりやすく、またスキルマッチも防げます。
使用するフレームワーク
使用するプログラミング言語により、使用するフレームワークは異なります。基本的にはフレームワークを使用して開発することが多いため、各プログラミング言語の代表的なフレームワークについては開発経験があると望ましいでしょう。
以下が、各プログラミング言語に対してのフレームワークです。
・Java…Java EE、JavaServer Faces、Spring Framework
・PHP…Laravel、CakePHP
・Python…Django、Flask
・Ruby…Ruby on Rails
・C#….NET Framework
キャリアパス
サーバーサイドエンジニアは、開発に加えてインフラ面のスキルを身に付けている方も多いため、アプリケーションの広範囲に関する知識があることになります。そのため、プロジェクトのマネジメントを行うプロジェクトマネージャーやプロジェクトリーダーを目指すことができます。
もちろん、サーバーサイドエンジニアのスペシャリストとして技術を極めたり、フロントエンドのスキルを習得してフルスタックエンジニアを目指してもよいでしょう。
候補者によく聞かれる質問
使用しているバージョン
前述でも紹介したプログラミング言語やフレームワークは、人によって作り出されているため、絶えず進化し続けており、セキュリティやバグ回避のため、定期的にアップデートしています。
例えばJavaは、1.0から始まり現在(2021年6月現在)は15までアップデートしています。この数字の部分がバージョンになります。
言語とフレームワークもバージョンがあるので、両方把握しておくとよいでしょう。また、最新のバージョンも合わせて知っておくとよいと思います。使用しているバージョンが古い場合は、その理由やバージョンアップ予定なのかも現場に聞いておく方がよいです。
開発環境
サーバーへの処理を中心に開発を行うため、サーバーで稼働しているミドルウェア(OSとアプリケーションの間を取り持つ役割を担っており、ソフトウェアの一種)もサーバサイドエンジニアの気になるポイントです。どのミドルウェアでアプリケーションが動いているのか聞いておきましょう。代表的なものは、求人票に記載しておくと、エンジニアは想像しやすくなります。
プログラミングソフト
プログラミングソフトとは、プログラミング(開発する)ためのソフトです。基本、サーバサイドエンジニアは直接、サーバーでプログラミングせず、PCにインストールしたプログラミングソフトを使用して、プログラミングをします。その後、プログラミングしたコードをサーバーに移します。
ソフトは、無料のものから有料のものまであり、使用することによって効率よくプログラミングすることができます。
企業によっては有料のものを会社負担で購入していたりするので、聞いておきましょう。
サーバーサイドエンジニア採用豆知識
サーバーサイドとバックエンド
サーバーサイドとバックエンドという言葉ですが、ほぼ同じ意味であるということは前述したとおりです。諸説あるのですが、Web業界では「フロントエンド」に対して「バックエンド」という表現を用いることが多いようです。また、サーバーサイドという表現は、SIerや企業の基幹系システムの開発などで用いられるようです。繰り返しになりますが、両者に大差はないことをご認識いただければ問題ないでしょう。
言語の人気ランキング(主要の言語)とフレームワーク
Java
JavaはWebアプリケーション、スマートフォンアプリ、デスクトップアプリケーション、組み込みとさまざまなものを開発することができる汎用性が高いプログラミング言語です。
JavaのフレームワークはJavaServer FacesとSpring Frameworkが人気を二分しています。
PHP
PHPはフレームワークが豊富で学習コストも低いという特徴を持っています。そのため、初心者でも比較的短期間で1人前のPHPエンジニアになることができます。
PHPのフレームワークは、Laravelが圧倒的な人気を集めています。
Python
現在、最も注目を集めているプログラミング言語といっても過言ではありません。数学系、分析系のライブラリが豊富であるため、AI開発においてスタンダードな言語になっています。
Pythonのフレームワークは、Djangoを習得しておきたいところです。
サーバーサイドエンジニアに必要な知識
開発スキル
サーバーサイドエンジニアの主な業務は、サーバーサイド側のアプリケーションを開発することです。そのためには、設計→開発→テストという工程を進めていく必要があります。特にプログラミングや、開発で使用するプログラミング言語のフレームワークに関する知識は身に付けておきましょう。
インフラのスキル
前述したとおり、サーバーサイドエンジニアはインフラの構築なども担当することがあります。具体的にはデータベースの設計、運用、サーバーの構築などです。最近ではクラウド上にアプリケーションを構築するケースも多いため、AWSやAzureなどのクラウドに関する知識もあるとよいでしょう。
Web関連のスキル
サーバーサイドエンジニアになるのであれば、Web関連のスキルも必要となります。デスクトップアプリケーションとWebアプリケーションは、同じアプリケーションではありますが、仕組みは全く異なります。具体的にはクッキー、セッション、キャッシュといった仕組みなどといった仕組みは、Webアプリケーションならではです。Web関連の知識がない、または浅い場合、考慮不足により思わぬ障害を引き起こしてしまうリスクもあります。