初心者向けWebアプリ開発手順

こんにちは、弱小エンジニアのいすいです。

早速ですが、初心者の頃って「こういうWebアプリを作りたいな、、」ってアイデアは出たものの、

「実際どうやって作るのか分からない、、🤷」なんてことあったりしますよね。

本日は、Webアプリケーションを開発する際に必要なことについてお話しします。

Webアプリを作るときに必要な技術

どういうWebアプリを作るかは概ね決まり、「じゃあさっそく作りましょう」

となったときにどうやって作れば良いのか、

それは以下の2パターンの構成によってやり方が変わります。

  • サーバー型
  • フロント-バックエンド型

つまり、上のどちらにするのか、Webアプリの設計段階で決める必要があります。

では、それぞれでどのような手順になるのか以降説明します。

サーバー型の場合

必要手順は以下です。

  1. サーバーサイドのアプリケーション開発
  2. Webサーバーを用意
  3. 1で作成したアプリケーションをWEBサーバーにアップロード
  4. WEBサーバー起動

1.サーバーサイドのアプリケーション開発

1のアプリケーション開発が一番重要な手順です。

ここでのアプリケーションは『データベースからデータを取ってきて、それをHTMLに埋め込んで返す』ことをやるプログラムです。

その際、全てを1から作成するのではなく、フレームワークというものを使います。

フレームワークとは『アプリケーションに最低限必要な機能がすでに実装されており、開発者はアプリ特有の機能の開発に集中できるためのツール』です。

サーバーサイドのフレームワークで有名なのは以下あたりです。
(実際は他にも沢山のフレームワークがあります)

  • pythonの「Django」「Flask」
  • PHPの「Laravel」
  • Rubyの「Ruby on Rails」
  • Javaの「Spring」
  • C#の「ASP.NET Core」

どのフレームワークを選んでもできることの差分はあまりない印象です。

通常、フレームワークの選定は、「人気なもの」「実装のしやすさ」「知見の多さ」などで選ぶと思います。

どれも仕組みは似通っているので、1つのフレームワークを学べば、他のフレームワークの学習コストはそこまで高くありません。

「なんかよくわからないな、、」という場合でも、

試しに上であげたフレームワークのいずれかの書籍を1冊読んでみると良いと思います!

(決して無駄にはならないと保証します!)

日本で人気なのはRubyなんですかね?求人でRubyを使えることが募集要項に入っていたりします。

世界的にはpythonの「Django」「Flask」が熱いと思います。

また、フレームワークを勉強すれば自然と学びますが、

「SQL(データベース)」「HTML/CSS」「プログラム言語(pythonなど)」の知識も必要です。

ちなみにデータベース作成も必要です。

(データベースも説明していたらボリュームがすごいので割愛します、、🙇)

2. Webサーバー用意

アプリケーションの開発ができましたら今度はWebサーバーを用意する必要があります。

個人PC上でも開発用のサーバーを立てることはできるのですが、

通常は他の人は個人PCにアクセスができません

そこで、他の人もアクセスできる場所にアップロードをします。

その場所はグローバルIPが付与されたサーバー(PC)上です。

誰でもアクセスできるためにはグローバルIPが必要なためです。

(実は個人PCでもルーターの設定とかをいじれば、外部の誰でもアクセスできるようにすることはできます。ただし、スペックやセキュリティの問題があるので、無闇に行うべきではありません。)

グローバルIPが付与されたサーバー(PC)はレンタルサーバーを使うか、

クラウドを使うことになると思います。

(昨今はクラウドが多いと思います。)

クラウドではAWS、GCP、Azureが人気です。

例えば、AWSにEC2仮想マシンを立て、Webサーバーのプログラムをインストールします。

この辺りは「EC2 Webアプリ」とかで検索してみてください。

3. Webサーバーにアップロード

Webサーバーが準備できたら、アプリケーションをWebサーバーにアップロードします。

アップロードには「FTP」や「SFTP」を使います。(Gitを使う方法もあります。)

4. Webサーバーを起動

あとは、WEBサーバーを起動して、WEBアプリケーション完成です。

フロントエンド-バックエンド型の場合

フロントエンド-バックエンド型の場合、サーバー型よりやることが多めです。

サーバー型ではデータベースからのデータ取得とHTMLの返却を同じサーバー上で行なっていました

フロントエンド-バックエンド型の場合は、

「HTMLの生成はフロントエンドのアプリケーション」

「データベースからのデータ取得はバックエンドのアプリケーション」

というように分担した構成になります。

つまり、アプリケーションが少なくとも2つ存在します。

フロントエンドのアプリ開発にもフレームワークを使います。(言語はJavaScriptになります)

フロントエンドのフレームワークでは以下あたりが有名です。
(実際は他にも数えきれないほどフレームワークがあります)

  • React
  • Angular
  • Vue

(特にReactが今は熱いです)

フロントエンドのアプリはユーザーのブラウザ内で実行されます。

そして、データ取得や更新の際はフロントエンドアプリからバックエンドサーバーにアクセスし処理します。

ただし、フロントエンドアプリ用のサーバーも必要で、ユーザーがブラウザからWebアプリにアクセスする際、フロントエンドのサーバーからHTMLやJavaScriptを返しています。

バックエンドではサーバー型で紹介したフレームワークと同じ選択肢になるのが通常です。

(サーバー型で紹介したフレームワークはバックエンドサーバーでも使えます)

データベースからのデータ取得だったり、データ更新を行う役割を持たせたものを「Web API」と呼びます。

(実際は「Web API」はHTTPでアクセスすることで、何かしらデータをくれたり、メールを飛ばしてくれたり、何か処理をしてくれたりと、多方面の仕事をしてくれるものです。)

それでは必要な手順です。(フロントエンド = Front, バックエンド = Back)

  1. Frontのアプリケーションの開発
  2. Backのアプリケーション(WebAPI)の開発
  3. Front/Back用のWEBサーバーを作成
  4. WEBサーバーにFront/Backのアプリケーションをアップロード
  5. WEBサーバーを起動

1で必要な技術は「HTML/CSS/JavaScript」で、フレームワークを用いて開発します。

2はサーバー型で紹介したフレームワークを用いて、Web APIを開発します。

3はサーバー型の時と同じ作業です。例えばAWSにEC2をたてて、Webサーバーをインストールします。ただし、FrontとBackの両方用意します。(1つのEC2上で行うことも可能です)

4, 5はサーバー型と同じで、FTPなどでアップロード後、Webサーバーを起動します。

サーバー型と違い、フロントエンド-バックエンド型にするメリットとしては、SPA構成にできるということです。

SPAとは「Single Page Application」の略で、

サーバー型の場合、ページの一箇所の表示を変える時にページ全体を再取得する必要があるのですが、

フロントエンド-バックエンド型の場合、UI更新はUIを更新する箇所のみ更新され、ページ全体は再取得されません。

ユーザー体験としては大きい違いで、サーバー型の場合、何か情報を変える時はページ全体が一度真っ白になり、その間操作の続行は不可能になります。(ページ全体を再取得しているため)

フロントエンド-バックエンド型の場合、情報を書き換える際にその箇所だけ更新されるので、他の箇所は操作可能な状態のままとなります。

なので、ユーザビリティがフロントエンド-バックエンド型の方が高く、最近はSPAが主流です。

一方、シンプルなWebサイトとかはサーバー型で作られていることが多いと思います。

まとめ

まとめると、WEBアプリ開発で必要になる技術は以下です。

  • サーバー型
    • サーバーサイドのフレームワーク
    • HTML/CSS
    • データベース
    • AWSのEC2について
    • WEBサーバー
  • フロント-バックエンド型
    • フロントエンド(JavaScript)のフレームワーク
    • バックエンドのフレームワーク
    • HTML/CSS/Javascript
    • データベース
    • AWSのEC2について
    • Webサーバー

フロントエンド-バックエンド型が最近では多い印象ですが、

学習コストはより高いので、一旦サーバー型で慣れておいた方が良いかもしれないですね。

自分の場合は、サーバー型を学んだ後にフロント-バック型に取り掛かりました。

SNSでもご購読できます。

コメントを残す

*