そもそもフレームワークとは
「フレームワーク」という言葉には元来、「枠組み」という意味があります。開発を行う際に、頻繁に必要とされる基礎的な機能をまとめて提供してくれるものです。そのため、枠組みを使ってweb開発作業(プログラミング)をするのがフレームワークになります。
例えば、「人に何かを訴求するときに文章を書くコツ」として「起承転結」という考え方があります。これも一種のフレームワークと言えるでしょう。「人に何かを訴える文章」を書いたことがない! という人でも、「起承転結」になぞらえて書けば、分かりやすい文章を書くことができます。
このようにフレームワークとは、「そのルールに沿って使用することで高度な知識や技術がなくても、うまくいくように考えられた道具やツール」ということです。
プログラミング言語とは違うのでしょうか?
プログラミング言語は、例えばコンピュータに「”おはようございます。”と表示しなさい」と、人間が命令するために使う文字や言葉と同じものです。日本語や英語中国語など普段使用する言語に種類があるように、CやJavaなどコンピュータ言語もさまざまな種類があります。
それに対してフレームワークは、コンピュータ言語を使用して何かのweb開発をしたいと考えたとき、その手助けをしてくれるツールの1つです。例えば、履歴書を作成するとき、市販されているような様式や枠組みなど記載項目が初めからあるものと、真っ白な紙に枠組みから書いていくのでは、作業量は全く違いますね。
フレームワークは「このように制作してください」と予めルール化されているので、利用することで開発するまでの作業量はグッと効率化されます。無論、Rubyやpythonのフレームワークならば、フレームワーク自体がRuby、pythonの言語で制作されている箇所もあるので、全く関連性がないとは言えませんので、それ自体を習得する必要はあります。
ライブラリとの違いは?
Webフレームワークの説明に入る前に、Webフレームワークに近い考え方として「ライブラリ」というものもあるので抑えておきましょう。
ライブラリとは、よく使う機能や自分で実装することが面倒なものを「パッケージ化」して使用する「部品」のことです。
Webアプリケーションは毎回ゼロから組み上げていくのではなく、このようなパッケージ化された「部品」を組み合わせて使うことがほとんどです。例えば「画像のスライドを作るライブラリ」、「Facebookログイン機能を付けるライブラリ」など、さまざまなものが存在します。
ライブラリを上手く使いこなしていくことで、一定以上の質を保った機能を素早く開発することができます。いくつかのライブラリは、フレームワークに予め実装されています。そのようなものをwebアプリケーションフレームワークと呼びます。
Webフレームワークとは、前述した「ライブラリ」をまとめて提供してくれるものであり、Webアプリケーションを開発するために必要な機能を詰め合わせたパッケージのようなものです。
近年「ライブラリ」という表現と「Webフレームワーク」という表現の境目は曖昧になりつつあります。
自分で書くコードがアプリケーションの動作の主軸となるものが「ライブラリ」、雛形ができていて自分のコードでカスタマイズするのが「Webフレームワーク」
という捉え方をすると分かりやすいでしょう。
つまり、「Webフレームワーク」はWebアプリケーションの土台となりえるものです。
また、webフレームワークの使用は、アプリやシステム開発の作業性を各段に上げてくれます。
メリットとしては、
webフレームワークはプログラミング言語ごとにそれぞれ存在し、特徴などもさまざまです。ここではその中でも特に有名なおすすめのものを紹介します。
Rubyのフレームワークは、Rubyと呼ばれる言語を使用して、SNSなど小規模から大規模なWebアプリケーションやシステム開発に使用されています。
Webサービス開発をする場合、「Ruby」=「Ruby on Railsを使った開発」を指すことがほとんどです。ベンチャー界隈で最も採用されているWebフレームワークといっても過言ではないほど有名ですが、そんなRuby on Railsも含めて、主なRubyのフレームワークについて解説します。
「Rubyのフレームワークは?」と聞けば、ほとんど返ってくる答えが「Ruby on Rails」と言われるほど有名です。正直に言ってしまえば、Rubyでアプリ、システム開発を行いたいなら、Ruby on Railsを選択すれば間違いありません。
それは多くのプログラマーが素早くかんたんに開発するために、2つの大原則を設定しているのが特徴です。
一つめは、Don’t Repeat Yourself(DRY)と呼ばれる決まりで、同じようなコードや似たコードを何度も書くことをやめて、作業の効率化を図っています。
二つめは、Convention Over Configuration(COC)と呼ばれる決まりで、「規約を優先する」というルールを課すことで、プログラマー個々人がこのようにコードを書きたいという意思を抑制しています。
このように徹底的に規約という「レール」に乗ることで、Webアプリの最速開発を目指します。
Rubyで記述されているオープンソースのフレームワークになります。フレームワークの中では、最も少ないコードでWebアプリなどの開発が可能です。
そのため学習コストが少なくて済み、最も手軽にwebフレームワークを使用した開発を始めることができます。
数ファイルの作成で済む単純で小規模な開発には向いていますが、複雑で大規模な開発は向いていません。遊びでwebフレームワークを使ってみたいという人にはおすすめです。
上で説明したSinatraをベースに設計されたwebフレームワークになります。Sinatraにはなかった機能群があり、かつRuby on Railsよりも少ないコードでWebアプリ開発ができるので、初心者だけど、少々複雑なものを開発したい人向けです。
正直なところ、Ruby on Railsで開発したほうが良いと思いますが、軽量なwebフレームワークでまずは開発したいと考えた場合、導入を検討してみてはいかがでしょうか。
PHPはRubyと並んでWebアプリやシステム開発に使用されるなど、有名なプログラミング言語です。PHPにも優秀なwebフレームワークがたくさん存在しますので、いくつか紹介します。
数あるPHPのwebフレームワークで、Laravelは2011年に登場した最も若いwebフレームワークです。PHPエンジニアの中で人気が急騰しており、2020年以降も最も注目されているwebフレームワークになります。
人気の理由は、「Love beautiful code? We do too」という理念どおり、初心者であっても美しいコードを書ける点です。コードが書きやすく、すぐに書き始めることができるので、PHPを習得した人が真っ先に使用できます。
また日本語のドキュメントやライブラリがたくさんありますので、Webアプリやシステム開発がはかどります。
PHPの中でも有名なwebフレームワークです。「ケーキを焼くように簡単に開発」を理念として開発されており、Ruby onRailsの影響も強く受けています。
特徴的なのは、MVC(モデル・ビュー・コントローラ)と呼ばれる実装デザインに関する先駆けになったことです。ライブラリも数多くあります。
PHPエンジニアには長らく使われてきたwebフレームワークですが、近年はLaravelにその座を取って代わられるようになりました。
FuelPHPもLaravelと同じように、比較的最近登場したwebフレームワークです。そのため、ほかのPHPフレームワークの良いところ吸収しているので、使いやすいwebフレームワークです。
特徴としては、動作が軽量でwebフレームワークの規約が少ないため、自由にコードを記述できます。ただ、先に説明したLaravelやCakePHPほどの人気はありません。
JavaはOSに依存せず、どんな環境でもソフトを動かすことができるため、プログラミング言語の中でも最も人気があります。現在だと、Andoroidアプリの開発にも使用されています。
そんな人気のJava webフレームワークについて解説していきます。
Spring FrameworkはJavaで開発を行う際に広く利用されているWebフレームワークです。Spring Frameworkはさまざまな機能を担当するパーツの集合体であり、部分的に利用することもあれば、大部分のシステムをSpring Frameworkで構築する場合もあります。
Javaで大規模なシステム開発を行う際によく利用されます。
Play Frameworkの1番の特徴は、CPUやメモリの使用量が少なく、軽量ゆえに生産性が高いことが挙げられます。また、Ruby on Railsに影響を受けています。
2004年に開発されたJavaのwebフレームワークです。MVCモデルを採用しており、コンポーネントwebフレームワークや、XML方式のHTML表示であることが特徴です。
HTMLの場合はブラウザで表示できるので、デザインの確認がしやすくなっています。
JavaScriptは、Webサイト上における画像や文字の動き、アニメーション操作や更新されたコンテンツの定期表示など、動的なWebサイト作成には欠かせないプログラミング言語です。
そんなJavaScriptのwebフレームワークについて解説していきます。
AngularJSはJavaScriptでできたWebフレームワークです。見た目の動きをきれいに作るために使用されます。
例えばSPA(Single-page application)と呼ばれる、「ページを移動しなくてもなめらかにページ内のコンテンツが現れるような1ページで完結するアプリケーション」の開発を行う時などに採用されます。
AngularJSはRuby on Railsのように比較的多機能で大きなwebフレームワークなのですが、データの管理(サーバーサイドの動き)をRuby on Railsで行い、見た目(フロントサイドの動き)に関するものをAngularJSで作りこむという複数のwebフレームワークの共存という使い方も存在します。
Vue.jsはAngularJSよりも後に開発されいます。そのため、他のwebフレームワークの良いところを組み込んだ設計になっています。
AngularJSよりも規約が少ないため、比較的自由にコードを記述できるので、個人開発においておすすめできます。また学習コストも低いので、JavaScriptを学習した初心者の方が手をだすのに最適です。
「Facebook」が中心となって開発したwebフレームワークです。
React Nativeと呼ばれる、全く同じソースコードでiOSとAndoroidアプリ両方を動作させることが可能なため、モバイルアプリ開発に適しています。
Webサイトの体裁を整えるCSSにもwebフレームワークは存在します。
素晴らしいデザインの制作を手助けしてくれるwebフレームワークが用意されています。
Bootstrapは「Webデザインフレームワーク」と呼ばれ、CSS/JavaScriptから構成されています。
Twitter社より提供されるwebフレームワークになるため、Twitterのようなフラットなデザインを簡単に作成することができます。
また「レスポンシブデザイン」という様々な画面サイズ(PC・タブレット・スマホ)に対応したwebフレームワークになるため、デザインが苦手だというエンジニアでも綺麗なサイトを簡単に作成できるという点でも重宝されています。
テンプレートも無料のものから有料のものまで存在するため、色合いや字体などを入れ替え、イメージに合わせて作成することも可能です。
Bootstrapと並んで、人気の高いCSS webフレームワークです。
Bootstrapと同じ感覚で利用できるうえ、カスタマイズ性がより高いので、凝り性の人が使用するイメージもあります。
ただ全ての機能を利用しようとすると膨大なデータ量が必要となるので、カスタムダウンロードで必要な機能のみ選択するという点に、注意が必要です。
軽量かつ、綺麗なデザインのWebサイトを制作したい人に人気の高いwebフレームワークです。
ユーザーにとって視覚的にも使いやすく、jQueryなどプラグインを導入しても速度が遅くならないという特徴があります。
Bootstrapに触れたことがある人なら、カスタマイズも簡単にできます。また初心者の方にも手が出しやすいのでおすすめです。
いかがでしたでしょうか。今回の記事は、短期間で質の高いWebアプリケーション開発ができるようになるための方法として、Webフレームワークをご紹介しました。
この記事を読まれている方でWeb系エンジニアを目指している方がいたなら、バックエンドからフロントエンドまでエンジニアとしての基礎スキルを着実に身に着けることをお勧めいたします。
そして業務内容や開発するシステム規模、特性や将来性を分析して、最も使いやすいwebフレームワークを選択することをお勧めいたします。