こんにちは。倉内です。
プログラミング学習の目的は人それぞれだと思いますが、「基礎学習を終えたらWebアプリケーションやWebサービスを自作してみたい」となるのではないでしょうか。
ただ、プログラミング初心者の方にとって、そもそもどのように開発に取り組んでいけばいいのか、自分で方針を立てるのは少し難しいかもしれません。
Webアプリ開発には、画面や機能を実装するためのコードの書き方だけでなく、サーバやミドルウェア、インターネットの仕組み(HTTP通信、TCP/IP、セッション管理の仕方)などかなり幅広い知識が必要です。
ただし、それらすべてを基礎から学び理解していなくても「Webアプリケーションフレームワーク」(以降、フレームワーク)を使えば、アプリやサービスを作成することができます。(もちろん学んでおいて損はありません)
そこで今回はプログラミング言語ごとによく利用されているWebフレームワークと学習できるサービスをまとめてご紹介したいと思います。
フレームワークを使うと何がうれしいか
そもそもの話になりますが、フレームワークを使ってアプリケーションやサービスを開発するとどんないいことがあるのでしょうか?
フレームワークは、Webアプリケーションを構築するための土台となる共通機能をまとめて提供してくれるものです。
実は必ずフレームワークを使わないと開発できないということはありません。冒頭に書いたとおり、機能を実装するためのプログラミングスキルと周辺技術やインフラ周りの知識があれば実現することができます。
ただし、フレームワークにあらかじめ備わっている以下のようなWeb開発に必要な機能まで、すべて自前で実装しなければなりません。
- データベース管理機能(データベースへのアクセス、マッピングなど)
- セッション管理機能
- セキュリティに関する機能(ユーザー認証、アクセス制御など)
- Webテンプレート生成機能
etc...
もちろんフレームワークの種類にもよりますが、基本的な機能はどのフレームワークも持っています。それらを用いることで開発効率が上がり、フレームワークが持つ共通機能を使うことで品質とメンテナンス性を維持することができます。
<参考>
PythonのWebフレームワーク
近年はデータ解析や機械学習といった分野でよく採用されているPython。言語の登場は1991年とそう新しくはありませんが、シンプルで分かりやすいコードということも手伝ってWebアプリケーション開発でも非常に人気が高い言語です。
Pythonの代表的なWebフレームワークとして、Django、Flask、bottle、Tornadoの4つをご紹介します。
Django(ジャンゴ)
DjangoはPythonのWebフレームワークの中では特に人気が高く、中規模以上のWebアプリケーションの開発で採用されることが多いです。
Webアプリケーション開発に必要な基本機能(たとえば、ユーザー認証やセッション管理、データベースとの連携など)はひと通り備わっており「フルスタックフレームワーク」と呼ばれています。また、機械学習でよく使われるPythonのライブラリも利用できるというのが特徴です。
非常に機能が多いため、小規模のWebアプリケーション開発には後述のFlaskのほうが扱いやすい場合もあります。
Djangoの学習方法
その他学習方法についてはこちらの記事でも紹介しています。
<参考>
- 公式サイト:Home | djangoproject.jp
- 公式ドキュメント:Django ドキュメント | Django ドキュメント | Django
- http://python.zombie-hunting-club.com/entry/2017/11/03/223435
Flask(フラスク)
Flaskは軽量なWebアプリケーションフレームワークで、「マイクロフレームワーク」と呼ばれているとおり、標準で提供する機能を最小限に絞っているという特徴があります。
Djangoに比べると学習コストが低く、初めてPythonでWebアプリ開発をしようとしている方にもオススメです。
拡張性が高いため複雑なことを実現したい場合は、Flaskがもともと持っているコア機能に拡張機能を組み合わせて使うという設計思想を持っています。
Flaskの学習方法
Flaskの入門書としてオススメの書籍もご紹介します。
その他学習方法についてはこちらの記事でも紹介しています。
<参考>
- 公式サイト:Flask | The Pallets Projects
- 公式ドキュメント:https://a2c.bitbucket.io/flask/
- PythonのWebフレームワーク Flaskについて初心者向けにまとめてみた - DAINOTE
Bottle(ボトル)
BottleはFlaskと同じく「マイクロフレームワーク」に分類され、Pythonのフレームワークの中ではもっとも軽量です。
最大の特徴としては、軽量と書いたとおり、たった1つのbottle.pyというファイルで構成されているということが挙げられます。もちろんWebアプリケーションに必要な機能は含まれています。
学習にあたり日本語サイトが少ないのが難点ですが、公式ドキュメントを日本語訳してくださっているサイトなどもありますので参考にしてみてください。
Bottleの学習方法
- Bottle Tutorials(YouTube)
<参考>
Tornado(トルネード)
TornadoはDjangoほどではないにせよ機能は充実しており、Webサーバとしての役割も担います。
非同期処理が可能であるという点が他のフレームワークと異なり、Tornadoの最大の特徴と言えるでしょう。多くの同時接続を処理することができ、静的ファイルの配信に関しては他のフレームワークに比べて非常に高速に動作します。
Tornadoの学習方法
Bottleと同様、学習サイトがあまりないのでO'Reillyから出ている書籍も紹介しておきます。
<参考>
- 公式ドキュメント:Tornado Web Server — Tornado 6.3.2 documentation
- PythonのWebフレームワークTornadoを使ってみる その1 - Qiita
RubyのWebフレームワーク
RubyのフレームワークといえばRuby on Railsがもっとも有名ですよね。Ruby on Railsは大規模なWebアプリケーション開発に採用されることが多いフレームワークです。
それ以外にもフレームワークがありますので、ここではSinatra、HANAMI、Ramazeと合わせて4つをご紹介します。
Ruby on Rails(ルビーオンレイルズ)
Ruby on Railsは「フルスタックフレームワーク」です。MVCアーキテクチャに基づいて構築されており、他のフレームワークより少ないコードでアプリケーション開発ができるように考慮されています。
それを実現するためにRailsには制約が多く存在し、慣れるまでは少し窮屈に感じることもあるかもしれません。しかし、ルールを理解すればとても簡単にアプリケーション開発が実現できることに気づくと思います。
Ruby on Railsの学習方法
以下の記事では、Ruby on Railsの開発環境をIDEのPaizaCloudに構築し、アプリケーションを作成する手順をご紹介しています。初心者の方は開発環境のインストールに戸惑うこともあると思いますのでぜひ参考にしてみてください。
その他の学習方法についてはこちらの記事でも紹介しています。
<参考>
- 公式サイト:Ruby on Rails — A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.
- Ruby on Rails ガイド:体系的に Rails を学ぼう
Sinatra(シナトラ)
Sinatraは軽量なフレームワークで簡潔に記述できるため、最小限の労力でWebアプリケーションをすばやく作れるという特徴を持っています。
MVCアーキテクチャに基づいた設計にはなっておらず、小規模開発に向いており柔軟な拡張性を備えています。
Sinatraの学習方法
その他の学習方法についてはこちらの記事でも紹介しています。
<参考>
- 公式サイト:Sinatra
- 公式ドキュメント:Sinatra: Documentation
HANAMI(ハナミ)
HANAMIは、バージョン1.0が2017年4月にリリースされた比較的新しいフレームワークです。Ruby on Railsと同様にMVCアーキテクチャに基づいて構築されています。
最大の特徴はメモリの消費を抑えるために提供されている100以上の安定したAPIを利用できる点でしょう。応答速度などで高いパフォーマンスを発揮します。シンプルで軽量というのはSinatraやRamazeと同じです。
HANAMIの学習方法
こちらも公式のインストールガイドの手順を進めていくといいでしょう。
と言っても英語で難しいので、チュートリアルを丁寧に進めてくださっている以下の記事も参考にしてみてください。
<参考>
- 公式サイト:Hanami | The web, with simplicity
- https://qiita.com/maxmellon/items/9bd3fbef815d92211cc3
- Ruby Webフレームワーク ~Hello Hanami world~ - Qiita
Ramaze(ラマゼ)
RamazeはSinatraと同様にシンプルかつ軽量で柔軟性のあるフレームワークです。
Ramazeの特徴としては、Rubyの書き方をそのまま踏襲できるようになっていること、モジュラーデザイン*1であることです。
Ramazeの学習方法
Ramazeは日本語の情報が少なく、初心者が取り組みやすい学習講座を提供しているようなサービスがないため、公式ドキュメントなどを用いて学びましょう。
2009年の記事で古いですが、Ramazeでの単語帳アプリの作成ができる記事がありましたので紹介します。
<参考>
PHPのWebフレームワーク
PHPはWeb開発のサーバサイドで実行される言語として広く利用されており、初心者にもとっつきやすい人気言語のひとつです。
PHPのフレームワークといえば、近年はLaravelが非常に人気ですが、今回はLaravelの他にSymfony、CakePHP、CodeIgniter、FuelPHPの5つを紹介します。
Laravel(ララベル)
Laravelは国内外問わず現在もっとも人気のあるPHPのWebフレームワークです。習得難易度は高くはないので、今からPHPのWebフレームワークを初めて学ぶという方にはオススメです。
Laravelは「フルスタックフレームワーク」でWebアプリに必要な機能をひと通り備えています。PHPのフレームワークの中では後発で、アップデート頻度も高いため今後も機能の充実が期待できます。
自由度がとても高いことと、AWSとの連携が容易であることも人気の理由でしょう。
Laravelの学習方法
以下の記事では、Laravelの開発環境をIDEのPaizaCloudに構築し、タスクリストを管理する簡単なアプリケーションを作成する手順をご紹介しています。
その他の学習方法についてはこちらの記事でも紹介しています。
<参考>
- 公式サイト:Laravel - The PHP Framework For Web Artisans
- 公式ドキュメント:Installation - Laravel - The PHP Framework For Web Artisans
Symfony(シンフォニー)
Symfonyも人気の高いPHPのフレームワークで、アプリケーション開発と保守の効率化を目的としています。
Laravelが分かりやすく初心者でも手を出しやすかったことと比べると、Symfonyは構造が作り込まれていて堅牢性が高いため個人開発よりも企業の開発案件で採用されることが多いのが特徴です。
Symfonyの学習方法
- Beginners Symfony 4 Tutorial(YouTube)
Symfonyは公式ドキュメントに沿っての学習がメインになると思いますが、こちらのチュートリアルが日本語で書かれていて初心者の方の助けになるかと思いますので紹介します。
<参考>
- 公式サイト:Symfony, High Performance PHP Framework for Web Development
- 公式ドキュメント:Symfony Documentation
- Symfony初心者がつまづきがちな22個のポイント - Qiita
CakePHP(ケイクピーエイチピー)
CakePHPは、登場以来2017年まではもっとも人気のあるPHPのフレームワークでした。
Ruby on Railsの概念が多く取り入れられているオープンソースのフレームワークで、リリースが2005年ということもあって開発実績と情報量が非常に豊富です。
MVCアーキテクチャを採用し、多くの機能をそろえています。また、PHPですばやく快適に開発ができるようにという目標のもと作られています。
CakePHPの学習方法
<参考>
CodeIgniter(コードイグナイター)
CodeIgniterの特徴はなんといっても軽量で処理速度が速いことです。ライブラリが豊富にあり、そのライブラリを利用するためのインタフェースも用意されています。
CakePHPが厳格な規約に基づいて書く必要があるのと対象的で、CodeIgniterはある程度自由に書いても動きます。また、複数のデータベースプラットフォームをサポートしているため、ユーザーが自由にデータベースを設計できるという利点もあります。
CodeIgniterの学習方法
<参考>
- 公式サイト:Welcome to CodeIgniter
- 公式ドキュメント:https://codeigniter.com/en/docs
- Codeigniterをはじめる時にまず読んで欲しい記事10選|リレーションデザイン研究所
FuelPHP(フューエルピーエイチピー)
FuelPHPは、リリースが2011年と比較的新しく、サポートしているPHPのバージョンがPHP5.3以上となり「最先端のフレームワーク」というコンセプトを持っています。
既存のフレームワークのよいところを集めたフレームワークで、MVCモデルを採用しており高速かつ軽量という特徴を持っています。
FuelPHPの学習方法
<参考>
- 公式サイト:FuelPHP » A simple, flexible, community driven PHP5.3 framework.
- 公式ドキュメント:FuelPHP.JP 日本語ドキュメント
ちなみに、Rails・Django・Laravelを比較してみた記事もありますので参考にしてみてください。
まとめ
Webアプリケーション開発で人気のPython、Ruby、PHPのフレームワークについて特徴と学習方法についてお伝えしてきました。
フレームワークを利用するとWebアプリケーション開発に関するさまざまなことがあらかじめ用意された機能で実現できますが、Web技術の基本はITエンジニアであれば学んでおいたほうがいいと思いますので、paizaラーニングの学習講座「Web技術入門編」も合わせてチェックしてみてください。
また、Webセキュリティの基本を実際の攻撃手法を試しながら学べる「ハッカー入門(Webセキュリティ入門)」の受講もおすすめです。
個人での開発やとりあえず触ってみたいといった方は、人気があり情報量が多く、自由度が高いなど学習コストが低いものを選択すると効率よく学習が進められると思います。
逆に業務で使う予定のフレームワークを選定したいといった方は、バグの作り込みを避けるために、規約が厳しく堅牢性の高いフレームワークを選択するといった視点も持つとよいでしょう。
今回紹介しきれなかったフレームワークもありますし、学習サイトもたくさんありますので自分に合った方法で学んでみてくださいね。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
*1:いろいろな機能がモジュール化されており、部分取替や組み合わせが可能