見出し画像

Webフレームワークの選び方を紹介します

世の中には非常に多くのWebフレームワークが存在します。

選択肢が多いのは良いことですが、どのWebフレームワークを選べばよいのかと悩まれる方もいらっしゃると思います。

そこで本記事ではWebフレームワークを選ぶ際の判断材料としてどのようなものがあり、どのような基準でWebフレームワークを選べばよいかについて私なりの考えをまとめてみました。

Webの基本

フレームワークのお話に入る前に、Webの基本について簡単に整理しておきたいと思います。

下図はユーザーがブラウザからWebサイトにアクセスしたときの一連の流れを説明していますが、WebアプリケーションがHTMLを作成してブラウザ側に返していることがわかります。

画像43

図の詳細は下記のリンクをご確認ください。

一方、Single Page Application(略してSPA)という実現方法では下図のようにWebアプリケーションはHTMLの代わりにデータをブラウザ側に返しています

画像43

図の詳細は下記のリンクをご確認ください。

Webフレームワークの分類

上記で述べたことを1つにまとめたのが下図で、上段が「従来の実現方法」で下段が「SPAでの実現方法」です。

画像37

図の詳細は下記のリンクをご確認ください。

上図の赤線と青線で囲まれている箇所がありますが、次のことを意味しています。

赤線 → サーバーサイドのWebフレームワークが動く場所
青線 → クライアントサイドのWebフレームワークが動く場所

サーバーサイドのWebフレームワーク(バックエンドフレームワーク)とクライアントサイドのWebフレームワーク(フロントエンドフレームワーク)には次のようなものがあります。

サーバーサイドのWebフレームワークの例

ASP.NET/ASP.NET Core
Ruby on Rails
Django
Laravel
Spring
Express
Flask
FastAPI
...

クライアントサイドのWebフレームワークの例

React
Angular
Vue.js
...

以上のようにWebフレームワークといってもサーバーサイドのWebフレームワークとクライアントサイドのWebフレームワークでは動く場所も役割も違いますのでご注意ください。

Webフレームワークを選ぶ際の判断材料

世の中には多くのWebフレームワークが存在していますが、その中からどれかを選ぶには何らかの判断材料が必要となります。

私が重要だと考えている判断材料は下記の7つです。

1.Webフレームワークランキング
2.プログラミング言語ランキング
3.公式ドキュメントの充実度
4.本格的なチュートリアルの有無
5.本格的なアプリのサンプルコードの有無
6.長時間YouTube動画の有無
7.その他の判断材料

以下でそれぞれを簡単に紹介します。

1.Webフレームワークランキング

Webフレームワークを選ぶ際の判断材料として一番重要なのはWebフレームワークのランキング情報だと考えています。

ここでは下記の2つのサイトのランキング情報を紹介します。

HotFrameworks
Stack Overflow Developer Survey

HotFrameworks

現在のランキングは下図のとおりです。

画像2

HotFrameworksでは下図のようにランキングの推移も確認することができます。

画像3

下記にサイトのリンクを貼っておきます。

Stack Overflow Developer Survey

下図の赤線の「Technology」の箇所ではいろいろなランキングが紹介されています。

画像8

Webフレームワーク関連の4つのランキングを紹介します。

人気フレームワークのランキング(全ての投票者)

画像4

人気フレームワークのランキング(プロの開発者のみ)

画像5

好きなフレームワークのランキング

画像6

使ってみたいフレームワークのランキング

画像7

下記にサイトのリンクを貼っておきます。

2.プログラミング言語ランキング

サーバーサイドのフレームワークは様々なプログラミング言語で実現されているため、Webフレームワークを選ぶ際の判断材料としてプログラミング言語のランキングも重要だと考えています。

ここでは下記の2つのサイトのランキング情報を紹介します。

PYPL PopularitY of Programming Language
TIOBE Index

PYPL PopularitY of Programming Languageのランキング

画像9

下記にサイトのリンクを貼っておきます。

TIOBE Indexのランキング

画像10

下記にサイトのリンクを貼っておきます。

3.公式ドキュメントの充実度

Webフレームワークを学習する際に一番信頼できる情報源は公式ドキュメントです。

よって、公式ドキュメントの充実度もWebフレームワークを選ぶ際の判断材料として重要だと考えています。

例えばVue.jsとFastAPIの公式ドキュメントはとても読みやすくて、内容も充実しているのでフレームワークの学習には非常に適していると思います。

Vue.jsの公式ドキュメント

学習のための動画が用意されています。

画像11

動画の一覧です。

画像12

YouTube上に動画が公開されていましたのでリンクを貼っておきます。

公式ドキュメントの中にCodePenの環境が埋め込まれているので動かしながら学習することができます。

画像13

FastAPIの公式ドキュメント

FastAPIはチュートリアルがとても充実しています。

画像14

たくさんのチュートリアルが用意されています。

画像15

初学者向けのチュートリアルの例

画像16

実践的なチュートリアルの例

画像17

4.本格的なチュートリアルの有無

Webフレームワークをじっくりと学習する場合は本格的なチュートリアルがあると非常に助かります。

例えばRailsにはRuby on Railsチュートリアルという非常に有益なチュートリアルがあります。

画像18

下図はチュートリアルで作成するアプリです。

画像20

また、Djangoには下記のようなチュートリアルがあります。(Djangoのバージョンが1なのでちょっと内容が古いのが残念ですが。。。)

画像19

下図のようなアプリをチュートリアルで作成していきます。

画像21

5.本格的なアプリのサンプルコードの有無

Webフレームワークを学習する場合は本格的なアプリケーションのサンプルコードがあると非常に助かります。

GitHub上にはRealWorld example appsというリポジトリがあり、そこではいろいろなフレームワークのサンプルコードが公開されています。

画像22

下図のようなアプリをさまざまなフレームワークで実現しています。

画像42

下図の一覧画面からフレームワークを選択します。

画像23

例えばASP.NET Core(現在3つ存在)から1つを選択すると下記のリポジトリに飛びますが、GitHubのスター数が1.5kもあります。

画像24

FastAPIのリポジトリも存在しますが、GitHubのスター数が1.6kもあります。

画像25

下記にRealWorld example appsのリポジトリのリンクを貼っておきます。

6.長時間YouTube動画の有無

Webフレームワークを学習する方法として、YouTube動画で学ぶ方法もありますが、長時間の動画で学習すればフレームワークについてかなり詳しく理解することができるので非常に助かります。

例えばYouTube上で「django tutorial」で検索すると下記のような長時間動画が見つかりました。

画像39

今度は「laravel 8 tutorial」で検索すると下記のような長時間動画が見つかりました。

画像26

7.その他の判断材料

その他の判断材料としては書籍の多さ、求人数、パフォーマンス、、、などいろいろあると思いますが、ネットで検索するといろいろと情報が得られますので必要に応じて調べていただくのが良いと思います。

フレームワークの選び方の例

以上の内容を踏まえまして、ここでは下記の3つの基準でフレームワークを選んでみようと思います。

1.人気で選ぶ
2.人気+習得のしやすさで選ぶ
3.プログラミング言語で選ぶ

1.人気で選ぶ

フロントエンドフレームワーク → React
バックエンドフレームワーク → ASP.NET/ASP.NET Core

フロントエンドは多くのランキングで1位となっているReactを選びました。

バックエンドは多くのランキングで上位のASP.NET/ASP.NET Coreを選びました。(上記のランキングではASP.NETとASP.NET Coreは別に扱われていましたが、ここでは1つとして考えることにします)

2.人気+習得のしやすさで選ぶ

フロントエンドフレームワーク → Vue.js
バックエンドフレームワーク → FastAPI

フロントエンドは多くのランキングで上位で、習得難易度が低く、公式ドキュメントも充実しているVue.jsを選びました。

バックエンドは好きなフレームワークのランキングで上位で、習得難易度が低く、公式ドキュメントも充実しているFastAPIを選びました。

FastAPIは登場してまだ3年の新しいフレームワークなので現時点ではランキングが低いですが、今後は伸びてくることが予想されます。

3.プログラミング言語で選ぶ

Python → Django or FastAPI
Java → Spring
JavaScript → React or Vue.js / Express
C# → ASP.NET/ASP.NET Core
PHP → Laravel
Ruby → Rails

ランキングの結果から、各プログラミング言語のフレームワークを1つか2つ選んでみました。

JavaScriptのみフロントエンドとバックエンドの両方のフレームワークを選んでいます。

Web開発がはじめての方におすすめのフレームワーク

初めてWebフレームワークを学習するという方は、まずは下図のようなMVCパターンを理解する必要があると思います。

画像27

図の詳細は下記のリンクをご確認ください。

MVCパターンを学習するのにおすすめのフレームワークはDjangoかLaravelかRailsです。

フレームワークでTodoアプリを作ってみよう

以上でWebフレームワークの選び方についていろいろと述べてきましたが、フレームワークとはどのようなものかを理解するには実際に動かしてみるのが一番です。

ということで下記の5つのフレームワークで簡単なTodoアプリを作成してみました。

フロントエンドフレームワーク → React、Vue.js
バックエンドフレームワーク → Django、Laravel、Rails

作成するTodoアプリは下図のようなものです。

画像43

それぞれのフレームワークでTodoアプリを作成する手順については別記事でまとめていますので、以下にリンクを貼っておきます。

ReactでTodoアプリを作成した記事のリンクは下記です。

Vue.jsでTodoアプリを作成した記事のリンクは下記です。

DjangoでTodoアプリを作成した記事のリンクは下記です。

LaravelでTodoアプリを作成した記事のリンクは下記です。

RailsでTodoアプリを作成した記事のリンクは下記です。

最後に

最後にWeb開発が初めての人向けにCSSについて少しお話をしようと思います。

話す内容は下記の2点です。

1.Webアプリ開発にはCSSの知識が必要
2.Tailwind CSSは便利

1.Webアプリ開発にはCSSの知識が必要

Webアプリ開発にはCSSの知識が必要になります。

実際のアプリを使って説明します。

例えば下記はReactの公式ドキュメントのExample Projectsというページですが、その中に「Snap Shot」というアプリがあります。

画像28

「Snap Shot」アプリの画面です。

画像29

下記がCSSのコードですが、赤線で囲まれた箇所にCSS Flexbox関連の記載があるように、このアプリはCSS Flexboxを使って画面レイアウトが作られています。

画像30

下記はFlaskというフレームワークのチュートリアルページです。

画像31

下図はチュートリアルで作成するアプリです。

画像32

下記がCSSのコードですが、赤線で囲まれた箇所にCSS Flexbox関連の記載があるように、このアプリはCSS Flexboxを使って画面レイアウトが作られています。

画像33

以上のようにWebフレームワークを使ってアプリ開発を行う場合にはWebフレームワークの知識だけではなくCSSの知識も必要となります。

「Webフレームワークを学習するだけでも大変なのにCSSも学習する必要があるなんて、、、」と思われた方もいらっしゃると思います。

そんな方に朗報です。

今はYouTubeがあります。

CSSの基本を理解するだけならYouTube動画で手っ取り早く学習することができます。

下記の記事ではおすすめの動画を紹介していますので、興味のある方はご確認ください。

2.Tailwind CSSは便利

Webアプリの画面を作成する方法としてCSSを用意する代わりにCSSフレームワークを使う方法もあります。

CSSフレームワークにはいろいろなものがありますが、CSSに近いことが実現できる自由度が高いCSSフレームワークにTailwind CSSがあります。

下図はTailwind CSSの公式サイトですが、赤線で囲まれたもの(例:bg-gray-100、w-24、h-24)がTailwind CSSで用意されたclassです。

画像34

Tailwind CSSを使う場合はTailwind側で用意されているclassをhtmlのコードに埋め込んでいきながらアプリの画面を作っていきます。

Tailwind CSSに関しては公式の動画も用意されていますので、Tailwind CSSに興味のある方はチェックされると良いでしょう。

公式ページからは下記の赤線のScreencastsをクリックすると動画のページに飛びます。

画像35

Tailwind CSSを初めて学習される方は下記の赤線の動画がおすすめです。

画像36

YouTube上にも動画が公開されていますので初回の動画のリンクを貼っておきます。

下記はNext.js(React)とTailwind CSSでAmazonのサイトの画面を作成する動画ですが非常に面白かったので紹介します。