フロントエンドやバックエンドやインフラの領域
はじめに
この記事では3つの違いについてまとめます。
webアプリの構成を理解していれば特に難しい話ではないと思います。
ただどの領域も魅力があり難しさがあるのでとても面白いです。
各領域
まずは下記の画像をご覧ください。
画像に沿ってどの領域がどんなことをしてるのか軽くまとめましょう。
1.フロントエンド(クライアントサイド)⇒webアプリの画面部分を制作。
2.バックエンド(サーバサイド)⇒webアプリの動作を制作。
3.インフラ⇒サーバやDBなど処理や動作に必要なマシンの用意、運用、維持。
それでは各項目で詳しく話していきます。
1.フロントエンド(クライアントサイド)とは
webアプリの画面を制作する領域です。
主に使用する言語としてはHTML、CSS、JavaScriptを使用して画面を制作していきます。
画面を制作だけですと簡単そうに聞こえますが、これがなかなか鬼畜です。フロントエンドでは様々なことができるため、処理が増えれば増えるほど本当に大変です。また今ではTypeScript(静的型付言語)のスキルも必要となってきてる上にバックエンドの技術を知らないとテスト動作もできなかったりするので大変です。それとメインは見た目の制作ですのでデザイン力が必要となります...。webデザイナーの方がいればデザインを作って貰い、それに機能を追加していくということもできます。海外ではデザインもフロントエンドの領域なんて話をどこかの記事で見た気がします。また最近ではSPAという技術が流行っており、コンポーネント単位で画面を構成していくので、もう初めて勉強する方は頭がおかしくなると思います(僕はなりました泣)。それでもプログラムを書いていくうちに画面が出来ていくのは感動だと思います。またユーザが直接体験する部分なので、ユーザの声も聞くとさらにモチベは上がると思います。
大変ですがとてもやりがいがある領域です。
2.バックエンド(サーバサイド)とは
webアプリの動作を制作する領域です。
「動作ってなんやねん」ですよね。フロントエンドでもjavacriptで関数を作成して動作の制作をしますが、バックエンドで制作してる動作は目には見えづらい部分ですがとても重要な動作をします。簡単な例だとDBを作成してそこにユーザを登録する動作をwebAPIの部分で書いたりします。あとは認証や認可の処理、今では機械学習やAIの処理も書いたりします。使用する言語も、Python,Ruby,PHP,C/C++,java,javascript,Go,Rust.etcと色々あり、プロジェクトに適応した言語を選んでいかないといけないです。バックエンドはフロントエンドと違って見た目を作らない分、淡々とプログラムの処理を書いていくことになります。見た目を作るのに興味ないって人やすでに趣味で何かしらの言語を学んでる人はバックエンドからのほうが入りやすいかもしれないです。またフロントエンドでは使用しないといけない言語が決まってるので、色んな言語を使いたいって人は向いてると思います。バックエンドもやることは多いのでなかなかきついと思います。webAPIやDBの構築、サードパーティとの連携、各ミドルウェアの作成など覚える部分がたくさんあります。ですが効率化やプログラムを作るのが好きな人はバックエンドが向いてるかなって気がします。フロントエンドは目に見えるので結構色々言われたりするんですよねー(主に見た目)。そんなのどうでもいいと思ってる僕には中々苦痛でした。処理の部分は別にいいんですけどね(良くないときもあるけど)。ここら辺は考え方だったり、こだわるポイントで変わるのかな?って気がするので好きな領域を勉強するのがいいと思います。
3.インフラとは
サーバやDBなど処理や動作に必要なマシンの用意、運用、維持する領域。
ここが一番地味できつくて感謝されない領域です(僕の偏見)。皆さんは停電やガスがつかない、ネットに繋がらないときはどうしますか?管理会社に電話して「直して」とお願いすると思います。対応が遅いとどうでしょう。機嫌が悪くなりますか?対応が早いと感謝してますか?これはどのジャンルにおいても同じですが、インフラとはそうゆう仕事なんです。
webアプリのインフラ領域でも同じような仕事をし同じような扱いをされます。
文句が多く脱線してしまったので話を戻していきます。
webアプリを構築する際にはたくさんのサーバが必要になります。それを自分で用意する人もいれば他社が提供している仮想サーバ(マシン)を使用する人もいます。基本的には後者でしょうか。またAWSやGCPというサービスでは仮想サーバだけでなく、VPNと言って仮想のネットワークを構築してセキュリティや自由度を上げた運用を行ってます。また維持のほうも大変で、サーバに予期せぬエラーが起きた時の対応やお金の管理や増設なども行わないといけないので大変ですし、使用するサーバの機能も領域ごとで違うので全体の概要を理解してないと難しかったりします。大手のインフラであれば各部で担当する部分が決まっておりそこまでほかの部分を考えずに済むこともありますが、webアプリやスタートアップの企業だと担当する範囲がかなり広く知識もたくさん必要だと思うので最初に勉強する領域にしてはお勧めしません。ちなみに僕はAWSを一番最初に勉強してますが、元からインフラ部分の知識はあったので問題なかったです。各分野のワードをうっすら知ってるだけでも吸収力としては全然違うと思います。ネットワークも知らないといけないので「webアプリを制作したい!」って人はここは後回しでいいと思います。
ただ皆さん、インフラを担当してる方には心から感謝することを忘れてはいけません。
まとめ
以上3つの違いでした。どの領域も難しいですが魅力はあります。
前回の話と合わせてどの分野を勉強するかまとまったなら幸いです。
Discussion