これからエンジニアになりたいと思っている人に、サーバーサイドエンジニアはおすすめの選択肢です。
サーバーサイドエンジニアはシステム開発に必ず必要な存在であり、需要が尽きることがないからです。
また、システム開発のエッセンスがサーバーサイドには詰まっていますので、将来的には他の領域のエンジニアになりたい場合でも一度経験しておくと必ず糧になります。
それでは、サーバーサイドエンジニアになるにはどのようなことを学べばよいのでしょうか?
本記事では、サーバーサイドエンジニアが習得しておくべき技術要素について俯瞰的にざっくりと解説をしていきます。
Contents
サーバーサイド言語
Webサーバーで動作する言語に関して理解する必要があります。
サーバーサイドにはRuby,Python,PHP,Javaなどと様々な選択肢がありますが、初心者であればまずは一つに絞って学習を進めたほうが良いでしょう。
Webフレームワーク
前述したサーバーサイド言語の基本的な文法を覚えるだけでは実務には十分ではありません。
最近のシステム開発ではプログラミング言語に標準で搭載された機能だけを使ってサーバーサイド開発をすることはあまりなく、ほとんどの場合はフレームワークを使うことになります。実務で開発をする上では、フレームワークの理解は必須と言えます。
自分の選択したサーバーサイド言語によって覚えるべきフレームワークは異なってきますが、例えばRubyではRuby on Rails、JavaならばSpring Frameworkが広く使われています。
データベース・SQL
サーバーサイドの主な役割として、「データベースからデータを取ってきてフロントに渡す」というものがあります。この役割を満たすために、データベースの関する知識が必要になります。
また、システムの運用に従って予期せぬバグなどでデータベースの状態が不正な状態になることがあります。こういった問題を調査するためにSQLの知識が必要となります。
HTTP通信の基本的な知識
HTTP通信の取り扱いはフレームワークの内部に隠蔽されていて、普段は意識することが少ないかもしれませんが、これらの知識が無いと、うまくシステムが動かなかったときに問題の切り分けが困難になります。
フレームワークがなくても自分で処理の内容を説明できるようになるのが理想です。
HTTP通信自体は安定した技術であり、時代による変化も緩やかですので、覚えた知識が無駄になることがありません。スキマ時間を見つけて知識をキャッチアップしていきましょう。
チーム開発の進め方
プロのエンジニアとして働く場合、「一人で働く」よりも「チームで働く」ことのほうが多くなります。自分がコードを書ければ良い、というのでは職業エンジニアとしては不十分です。
チームで開発を行う場合、以下のようなことについて理解しておくことが必要となります。
- コードレビューのやり方
- チーム内での仕様策定などのコミュニケーション手法・顧客折衝
- 開発手法(ウォーターフォール、アジャイルなど)の理解
- 品質管理・バグ管理・報告フロー
これらのやり方は各現場によって異なることが多いので、適宜コミュニケーションを取りながら進めることが必要となります。
バージョン管理ツールgitの使い方
仕事としてプログラミングを行う場合、必ずといっていいほどソースコードのバージョン管理を行うことになります。
バージョン管理を学習することによって、ファイルを以前の状態まで戻したり、プロジェクト丸ごとを以前の状態に戻したり、過去の変更履歴を見直したり、問題が起こっているかもしれないものを誰が最後に修正したか、誰がいつ問題点を混入させたかを確認したりといった様々なことができるようになります。
バージョン管理ツールとしては、「git」「subversion」などがありますが、gitのシェアが圧倒的ですので、gitをまずは理解しましょう。
加えて、「Git Flow」と呼ばれるgitを用いたチーム開発フローについて学習しておくことが推奨されます。「万が一バグを発生させてしまった場合に、あとから追いかけやすいようにしておく」のもスキルの一つです。