Webアプリをバックエンドの技術を使って開発する際に、どのフレームワークを使えばいいのか悩んでいる方も多いのではないでしょうか。
今回はバックエンドの中でも、Webアプリを作成する際におすすめなフレームワークを、それぞれの特徴を説明しながら比較し、ご紹介していきます。
この記事を読むことで、バックエンドのフレームワークについての理解を深めることができ、どのフレームワークを選定すればいいのか明確になります。
「バックエンドって何?」「Webアプリが何か分からない」
「フレームワークよりも、おすすめの言語について知りたい!」という方については、
にて詳しく紹介しているので、よろしければそちらも合わせてご覧ください。
今回は、世界的なエンジニアのQ&AサイトであるStackOverFlowの2022年データ(開発を仕事としている開発者のランキング)を参考に、ご紹介します。
[引用元] https://survey.stackoverflow.co/2022/
こちらのランキングをもとに、バックエンドのフレームワークでWebアプリを開発するものに絞ると、 Express、Django、Flask、Laravel、Ruby on Rails の5つが人気であることがわかります。
※ASP.NETはWeb開発ができるフレームワークであり、言語に依存しないなど特徴のあるフレームワークなのですが、ASP.NETの枠の中で何種類もフレームワークがあったりと比較対象が増えてしまうため、今回は除外して考えることとします。
Expressは2010年にリリースされた、Node.js上で動くJavaScriptのフレームワークです。
Node.jsとは、フロントエンドの言語であるJavaScriptが、バックエンドでも使えるようにするための土台のようなものです。
日本語の情報が多いため、初心者にも優しいフレームワークです。
必要最低限の機能を備えたフレームワークであるため、軽量です。
Express(Node.js)はシングルスレッドのため、同時接続に強いです。
シングルスレッドの反対にマルチスレッドがあります。
スレッドとは処理をおこなうための命令の流れであり、マルチスレッドでは複数の処理をスレッドを並行しておこなうことで効率よく処理をおこなうことができます。
これだけ聞くとマルチスレッドの方が良いように思えますが、マルチスレッドでは、同時に接続があった際に、スレッドやメモリが増え、処理が重たくなるといった問題があります。
その一方、シングルスレッドでは、同時接続があっても処理が重たくならないというメリットがあります。
処理を並行して行えないため、効率が悪いように思えますが、シングルスレッドの非効率を補う技術が非同期 I/Oです。
外部からのファイルなどの入出力には時間がかかります。
非同期 I/Oとは、簡単に説明すると、入出力などの待ち時間に他の作業をするといった処理のことです。
これらの技術を使うことで、Express(Node.js)では同時接続に強く、効率の良い処理をおこなうことができます。
普段フロントエンドの技術であるJavascriptをNode.jsを土台にバックエンドでも書けるようにしているため、どちらもJavascriptの言語1つで書くことできます。
新しく別の言語を学ぶ必要もなく、メリットであると言えます。
必要最低限の機能のみを備えているため、認証機能など、自分で追加しなければならないなどの手間があります。
Djangoは2005年にリリースされたフレームワークです。
Djangoで作られた有名なサービスとして、「Youtube」、「Instagram」、「Spotify」などがあります。
機械学習やデータ分析などが得意な言語Pythonのフレームワークであり、セキュリティに強く、大規模な開発にも向いているフレームワークです。
Djangoはキャッシュ機能も備えており、高速にページを表示することが可能です。
※キャッシュ機能とは……よく使う機能などを記憶装置に保存しておくことで何度も機能を呼び出さなくても記憶装置から機能を呼び出すことができる機能
Pythonには他にもフレームワークがありますが、Djangoはその中でも数少ないフルスタックフレームワークです。
最初からさまざまな機能がそろっているため、足りない機能を追加する手間が省け、特に大規模な開発では効率よく開発を進めることができます。
Djangoではパスワードを暗号化してからデータベースに保存する、XSS 攻撃からの保護などの機能が備わっており、セキュリティが強いことも人気の理由です。
Dangoは海外では人気ですが、日本ではまだそこまで多くの人が使っている訳ではありません。
そのため日本語の情報が少なく、エラーに陥った際は解決法を見つけるのに苦労するかもしれません。
フルスタックフレームワークであり、多機能を持つ点はメリットといえます。
ですが、その分覚えることも多く、日本語情報が少ないことも相まって、学習コストは高いと言えるでしょう。
Flaskは2010年にリリースされたフレームワークです。
Djangoと同じく、Pythonのフレームワークであり、最小限の機能を備えた軽量なフレームワークであることが特徴です。
先ほど紹介したDjangoがフルスタックフレームワークであり、多機能を初めから備えているのに対し、Flaskは必要な機能だけを備えたフレームワークです。
そのため、その他のフレームワークよりも軽量であると言えます。
Flaskはとてもシンプルな構造になっています。
そのためファイル構造などもわかりやすく、Webサイトを簡単に作成することができます。
使わない機能が備わっておらず、必要な機能があれば都度追加していくといった流れのため、オーバースペックになることを防ぐことができます。
必要最低限の機能を備えているため、元々備わっていない機能を追加するためには別途追加が必要です。
そのため大規模な開発には向いていないと言えます。
比較的自由にコードを書くことができるため、開発者によって書き方にズレが出ることがあります。
そのためチームでの開発の際は、コーディングのルールなどしっかり決める必要があります。
Flaskは日本語の情報が少ないため、日本語の情報が見つからないときは英語の情報から自分が必要としている方法を探し出す必要があります。
2011年にリリースされたPHPのフレームワークです。
Laravelで作られた有名なサービスとして「ぐるなび」などがあります。
PHPのフレームワークの中では、今までCakePHPが1番人気でしたが、多機能な点、バージョンアップも多く行われる点が評価され、時代に沿ってレベルアップしてきたLaravelがCakePHPを抜いて1番人気となりました。
LaravelではComposerというパッケージ管理を使用しています。
必要なライブラリ(一定の機能を持ったコードのまとまり)をインストールした際、合わせて必要なライブラリも一緒にインストールしてくれる便利なシステムで、依存関係などを考慮しなくて済むため開発効率が上がります。
Laravelは日本でも人気であり、求人の多さからプログラミングスクールの教材としても多く受講されているフレームワークです。
そのため日本語の方法も多く、エラーに陥った際も解決法を見つけやすいです。
元々PHP自体が自由度の高い言語であり、さまざまな書き方が可能であることや、開発者も多く、日本語の情報も多いことから、学習コストは低いと言えます。
自由度高く記述できる点や、学習コストが低い点から、スピード感を持って開発したいときなどに力を発揮するフレームワークです。
自由度高く記述できますが、その分開発者によってコードの書き方などに差が出てしまいます。
書き方に差が出ることで、可読性も落ちてしまいます。
コードの規約を作成するなどで、書き方の差が出ないようにすることも可能ですが、規約作成にも手間もかかってしまうため、大規模開発には向いていないでしょう。
2004年にリリースされたRubyのフレームワークです。
Ruby on Railsで作られた有名なサービスとして「クックパッド」、「Airbnb」、「Twitter」などがあります。
少ないコード量で書けることが人気の理由であり、開発効率を重視したベンチャー企業などに愛されてきました。
Ruby on Railsは、他のフレームワークに比べて少ない記述でコードを書くことができることや、コードを書く際のルールが決まっていてコードが書きやすいことが特徴です。
ログイン認証などのライブラリ(一定の機能を持ったコードのまとまり)が豊富であり、少ない記述で開発ができるため、スピード感を持って開発をおこなうことができます。
そのため少人数でも開発が可能で小規模開発に向いているといえます。
Ruby on Railsの言語であるRubyは、日本人であるまつもとゆきひろさんによって開発されました。
そのためRuby on Railsも日本人に馴染みがあり、ドキュメントも多いのが特徴です。
エラーに陥った際は情報を見つけやすいでしょう。
短い記述で書くことができる点、日本語の情報が多い点など初学者に優しいフレームワークですが、実際には数々の有名サービスがRuby on Railsで作成されており、とても優秀なフレームワークです。
Ruby on Railsはインタプリタ言語であるため、コンパイラ言語に比べて実行速度が遅いというデメリットがあります。
※インタプリタ言語とは……書いたコードを1行ずつ機械語に翻訳してそのプログラムを実行する方式を持った言語のこと。
※コンパイラ言語とは……書いたコードを一旦全部翻訳してからプログラムを一気に実行する方式を持った言語のこと。
以下、それぞれのフレームワークの違いを簡単に表にまとめました。
◎、◯、△の三段階で評価をつけています。
いかがでしたでしょうか?
今回はバックエンドのフレームワークの中でも、利用率の高いものを6つ紹介しました。
それぞれの言語に得意不得意があるため、ご自身の目的に合わせて使う言語を選んでみてください。
ご興味があれば、以下の記事も併せてご覧ください。
またクランチタイマーでは、フルリモートで一緒に働くエンジニアを募集中です。
詳細は、以下のWantedlyページをご確認ください。
SHARE:
お気軽にお問い合わせください。
TEL082-299-2286
代表の佐々⽊が⽉に1回お届けするメールマガジン。
国内外スタートアップの最新情報や最新技術のサマリー、クランチタイマーの開発事例紹介など、ITに関する役⽴つ情報を中⼼にお送りします!