新米エンジニアがバックエンドの仕事をざっくりまとめてみた

はじめに

こんにちは。新卒2年目エンジニアの細川です。普段の仕事ではWebアプリのバックエンド側の開発を行っています。今回同期の龍ちゃんに頼まれて非エンジニアの方向けに「バックエンドエンジニアの仕事ってなに?」というブログを書いてみます。僕自身まだ新米で、分からないことも多々あるので、間違っているところありましたら優しく教えていただけると幸いです。

バックエンドエンジニアとは?

Webアプリの開発を行う際、大きく分けると、フロントエンドとバックエンドに分かれています。フロントやバックといきなり言われても伝わりづらいかもしれません。ざっくりと同期が解説してくれてるのでこちらのブログを参考にしてみてください。ネットでこれらを調べてみると、フロントエンドは基本的にお客様が触る画面部分を開発を行い、それに対して、バックエンドエンジニアは基本的にそれ以外のすべての業務を担当するエンジニアと書かれていました。サーバー周りの知識やDBに関すること、サーバーサイドのロジックの実装など、バックエンドエンジニアがやる業務はすごくたくさんあります。

ただ、大きいプロジェクトになると、サーバー周りの設定などはその専門のエンジニア(インフラエンジニア)がやってくれることもあります。

僕が入ってるプロジェクトではインフラエンジニアの方がいるので、サーバー周りの設定などは仕事ではほとんどしたことがありません….

じゃあ僕が仕事で何をやっているのかというと、ずばりWeb APIを作ることです。「アプリで必要な処理をフロント側から呼ぶだけで使える」というものを作っています。Web APIという言葉に聞き慣れない方もいるかもしれません。言葉の定義としてはアプリケーションなどの一部を外部に向けて公開し、機能などを共有しているものです(APIの定義はこちらのページが分かりやすかったです)。イメージとしては、複雑な処理でも呼び出すだけで簡単に使えるようにしたものみたいな感じです。そして、Web ブラウザ(Chromeとか)を介してアクセスするAPIをWeb APIといいます。

 

僕の仕事は基本的にはこのAPIを作ることです。フロント側から「こういうことがしたいです」とお願いされたロジックを実装して、それをフロントから呼ぶだけで使えるようにするということをしています。

アプリ開発を行う場合データは最終的にデータベース(DB)に保存することが多く、画面側とDBのやり取りの間の部分を作っていることが多いです。

 

この図ではフロントとのやり取り部分をAPIとしています。元の言葉の意味としてはこれが正しいのですが、実際の業務の中ではロジックやDBとのやり取り部分も含めてAPIと呼んでいる気がします。

 

フロントがやってほしいことって?(CRUD)

先ほどフロント側にお願いされたロジックを実装するといいましたが、具体的にフロントがやってほしいことを考えてみたいと思います。

フロントがやってほしいことはアプリによって異なり、多岐にわたります。アプリにログインをしたかったり、データを登録したかったり、検索をしたかったり、様々ありますが、基本的にはどの操作も以下の4つのどれかに割り当てることができます。

例えば、ユーザー関連の機能の場合、ユーザー登録API、ユーザー取得API、ユーザー更新API、ユーザー削除APIを作るようになります。

フロントから送られてきたメソッドやデータに応じた処理を行ってDBに反映させたり、

もちろんアプリによって必要な機能と必要でない機能がありますが、基本的にはこの4つで、後はこれらの派生という感じが多い気がします。

これらの操作は、英語でそれぞれCREATE(登録)、READ(取得)、UPDATE(更新)、DELETE(削除)といい、頭文字をとってCRUDと呼ばれます。APIを作る際はこのCRUDが基本になります。

 

APIを作るために決めるべきこと

ここまでどんなものを作るかの説明を大まかにしてきましたが、APIを作るためにいくつか決めなければならないことがあります。

大まかに分けるとテーブル設計とAPI設計に分かれるかなと思います。

テーブル設計はDBにどのような構造でデータを保存するかを考えることです。(大きなプロジェクトの場合はDB専門のエンジニアが設計することもあるそうです。)

API設計はフロントエンドとやり取りする形式を決めることです。フロントエンドとAPIがやり取りするとき、フロントがAPIにリクエスト(要求)を送ってそれに応じたレスポンス(応答)が返ってきます。それらの形式を決める必要があります。

プロジェクトの走り始めの時は、使用技術の選定やサーバー周りの構築など、もっと決めなければならないことはありますが、それらが決まって以降は基本的にテーブル設計・API設計をしてから実装に入っています。

設計と聞くと難しそうに聞こえるかもしれません(細部まで考えると実際に難しいです)が、「作るためにこれは決めないといけないよね」ということを決めるのが設計です。

バックエンドエンジニアに必要な知識

バックエンドエンジニアになるために必要そうな知識を考えてみました。

1つ目のコーディングについてはPython、Go、TypeScriptなどが、書きやすく、とっつきやすいと思います。ただ、Pythonは動的型付け、Go、TypeScriptは静的型付けですが構造的部分型(比較的緩めの型付け)ですので、これらの言語に慣れた後は公称型(より厳密な型付け)の言語であるJavaなどに触れてみるといいかもしれません。PythonとGoはProgateに講座がありますので、試しにやってみてもよさそうです。TypeScriptは講座がありませんでしたが、JavaScriptの講座はありましたので、それをTypeScriptで書き換えながら勉強すると勉強になるかもしれません。

僕自身がまだ新米なので、これらの知識もまだまだ勉強中ですが、きちんとバックエンドエンジニアを名乗るためにはこれらの知識が必要になってくると思います。新米の場合、いきなりサーバー周りの設定やインフラ構築に携わることはあまりないかもしれません。ですので、勉強する順番としては上から順番に勉強していくのがいいかなと思っています。

初学者の方は、ここで挙げている語句などを調べながら、とりあえずアプリを作ってみることをお勧めします!

おわりに

バックエンドエンジニアはフロントに比べると動く画面が無くて少し地味に感じるかもしれません。ですが、うまく動いた時はうれしいですし、黙々とロジックを書きたい人とかは意外と楽しいかもしれません。また、個人的にはCSSとお友達になれていないので、CSSの調整などに比べるとバックエンドの作業の方が楽しいです(あくまでも個人の感想です。新米の戯言と思ってくださいw)。

この記事をまとめてみて、僕自身一人前のバックエンドエンジニアを名乗れるようになるための道のりはまだまだ長いですが、少しずつでも知識の幅を広げていきたいと思っています。

 

 

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です