プログラミング学習を学ぶ前に知っておきたいこと~フレームワーク編~

## 初めに
この記事は**プログラミング学習を学ぶ前に知っておきたいこと**と題したシリーズの一つです。
このシリーズは各テーマごとに連日投稿予定です。

## このシリーズ記事の対象者
- プログラミングに興味を持って、学習を検討している方
- 学習したいけど、何から手をつけたらいいのかわからない方

::: note warn
※この記事はWebアプリケーションの開発の勉強をしたい方向けの情報になります。筆者が未経験のスマホアプリケーションやゲームについての記述はございませんのであらかじめご了承下さい。
:::

[前回の記事](https://qiita.com/MPrg2011/items/3af818f0d60814320571)の続きです。

https://qiita.com/MPrg2011/items/3af818f0d60814320571


## フレームワークとは
アプリケーションを作成する際に、必要な機能を提供するライブラリやツールが予め用意された枠組み(フレームワーク)のこと。ゼロから開発に必要な機能を用意する必要がなく作業の効率化につながります。

全て挙げるとものすごい数なので、[2日目に投稿した記事](https://qiita.com/MPrg2011/items/a77ec3632a9a013c6c72)の言語に対応するフレームワークをご紹介します。
あくまで一例です。ここに挙げたものが全てではありません。できるだけメジャーなものを紹介しています。

### Webアプリケーションの場合
**フロントエンド**
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="3">JavaScript</td>
			<td>React<br>Vue.js<br>Angular</td>
		</tr>
	</tbody>
</table>

日本だとReactかVueといった論争が多いですが、Angularのシェアは日本よりは海外の方が高めです。日本でも全く使われていないわけではありません。

**バックエンド**
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="3">Java</td>
			<td>Spring<br>Struts<br>play</td>
		</tr>
	</tbody>
</table>
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="4">PHP</td>
			<td>Laravel<br>CakePHP<br>Symfony<br>FuelPHP</td>
		</tr>
	</tbody>
</table>
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="3">Ruby</td>
			<td>Ruby on Rails<br>Sinatra<br>Cuba microframework</td>
		</tr>
	</tbody>
</table>
RubyはRuby on Railsが圧倒的に知名度が高い。
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="5">Python</td>
			<td>Django<br>bottle<br>Flask<br>Tornado<br>Plone</td>
		</tr>
	</tbody>
</table>
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="4">C++</td>
			<td>Drogon<br>Oat++<br>Crow<br>POCO</td>
		</tr>
	</tbody>
</table>
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="2">C#</td>
			<td>ASP.NET<br>Blazor</td>
		</tr>
	</tbody>
</table>
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="5">Go</td>
			<td>Gin<br>Ehco<br>Revel<br>Iris<br>Fiber</td>
		</tr>
	</tbody>
</table>

### スマホアプリケーションの場合
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td rowspan="3">Swift</td>
			<td>Express<br>Vapor<br>A</td>
		</tr>
	</tbody>
</table>
<table>
	<tbody>
        <tr>
			<td>言語</td>
			<td>フレームワーク</td>
		</tr>
		<tr>
			<td>Dart</td>
			<td>Flutter</td>
		</tr>
	</tbody>
</table>
Dartという言葉よりFlutterという言葉のほうがよく耳にする気がします。実際書店でもFlutterで〜と書かれている書籍を見かけます。

※Kotlin専用のフレームワークはなく、Javaのフレームワークを使用することが多い
※ゲームは割愛させていただきました。

## 個人的なおすすめ
自分が経験したものだけ挙げておきます。
JavaScript=>ReactかVue
これは好みや案件の問題もあるかと思います。Angularは単純に国内だと前2つに比べて案件数が少ない。

PHP=>Laravel
公式のマニュアルが日本語でボリュームが多い。

Java=>Spring
C#=>ASP.NET
MicroSoftがチュートリアルに力を入れているので、勉強しやすい。

### 最後に
短い記事でしたが最後まで見ていただきありがとうございました。

明日はプログラミングではなくPCの設定や操作について投稿予定です。

### 参照元サイト
[【2022年版】 Webフレームワーク のおすすめ 10選 | DS SOLUTION, INC.](https://www.dssolution.jp/ja/web-app-development-framework-top-10/#Web%E9%96%8B%E7%99%BA%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E3%81%8A%E3%81%99%E3%81%99%E3%82%8110%E9%81%B8)