こんにちは。もんしょー(@sima199407)です。
という疑問があるかと思います。
動画でも解説してます
キーワードから申しますと、「作成キット」です。
「プログラミングとフレームワークってなにが違うの?」
「使うとなにかいいことあるの?」
という意見に応えていこうと思います。
フレームワークとは?
ざっくりとフレームワークってなにするものかを解説します。
コーディングを簡単に、また、きれいにやってくれる仕組みのことです。
ちょっとこれだけだと分かりにくいですよね。
「フレームワーク」って辞書で調べると「骨組み」・「構成」・「ひな形」っていう言葉が出てきます。
まさにこの名前の通りでWebサイトの骨組みを作る仕組みなんですね。
なんでフレームワークが使われるの?
プログラミングとかWebサイトを作るときは、けっこう最初のと同じような動きをするわけです。
例えばWebサイトで必要なものユーザのログインページ、お問い合わせのメールの送信、データベースの接続など、割とよくあると思います。
こういったような「どのサイトにも共通してあるものは最初から作っておいたほうがいいよね」ということでフレームワークっていうものがあるわけなんです。
どんなフレームワークがあるかは次で解説します。
代表的なもの
今回はWeb系の言語に絞ってフロント・サーバサイド側で各種説明していきます。
フロント側のフレームワーク
フロントでだいたいみんな使うフレームワークをまとめてみました。
CSSって装飾とかするものなんですけども、これのフレームワークBootstrap。
よくプログラミング言語だけにしかフレームワークないんじゃないのって思いがちなんですが、CSSにもあります。
Bootstrapとは?
Bootstrapがなにかというと画面に応じたデザインの幅、たとえばスマホだったらスマホのデザイン、パソコンだったらパソコンの画面サイズに合わせて伸び縮みして作ってくれるレスポンシブ機能、グリッド機能とBootstrapでは言うんですけども、そういうものを作ることができます。
LPとかの作成だったりとかWebサービスの開発のときにすごく役に立つものになります。
JavaScript系なら
これのフレームワークがVue.jsとかReactって言われているものですね。
最近需要が高まっているフレームワークです。
サーバサイドのフレームワークはたくさんあるのですがフロントサイドだと限られており、特にJavaScriptのフレームワークは重宝されます。
Vue.jsは覚えやすいと言われていてサーバサイドの勉強をしている人も一緒に覚えていくっていうケースが多いです。
Reactは、FaceBookが作ったフレームワークでしてSNSを運用する会社ならではのユーザの使いやすさにフォーカスしたフレームワークです。
サーバサイドのフレームワーク
4つの言語でお話していきます。
Ruby
Rubyのフレームワークと言えばこれしかない!っていうものがあります。
それがRuby on RailsっていうものなんですけどもRubyを勉強する人なら大抵Ruby on Rails も一緒に勉強します。
8割~9割の方は一緒に勉強していると思います。
僕がプログラミングスクールに行っていた時ときRuby on Rails を勉強していました。
書き方として覚えやすいっていうのはありましたね。
PHP
これはよく使われます。そしてPHPはフレームワークホントに多いです。
今回は僕が仕事で使うものとか考えて選考しました。
3つほど紹介します。
1:Laravel(ララベル)
2:CakePHP(ケイクピーエイチピー)
3:Code Igniter(コードイグナイター)
1つ目Laravelですが、これは勢いが一番あると言われているフレームワークです。
最近アメリカで一気に爆発的にブームになってそこから日本にも輸入されてきてどんどん世界中で使われているフレームワークになります。
2つ目CakePHPなんですけども、すいませんあんまり使ったことないんですけども、Ruby on Railsに似ているって言われててRubyを使っていた人がCakePHPを使うっていう傾向はあります。
3つ目Code Igniterっていうのは小規模の開発とかに用いられることが多いです。
PHPだったらLaravel使うのが無難かなっていうところは正直あります。
Python
Pythonも良く使われます。
機械学習とかがメインだと思われるんですけども、Webサイトを作るのにも向いています。
Webサイトを作るとき2つのフレームワークの候補にあがります。
FlaskとDjangoって言われているものなんですね。
使い分け
これはどういう使い分けされているかというとFlaskが小規模向け、Djangoはある程度大規模な開発のときに使われます。
この2つのフレームワークだけで7割~8割くらいのシェア取っちゃうくらいPythonのフレームワークの中ではトップクラスのものです。
Java
Javaはよく使われる方多いと思うんですよ。
学校の教材とかでもJavaが取り扱われたり、開発会社に行ったら、Javaを最初に研修でやるとか結構あると思います。
Javaで用いられるフレームワークは、Spring Frameworkっていうのがあるんですね。
これはどういうものかというと普通にWebサイトを作るときに適していて大規模な開発とかにも使えます。
Javaとかを扱っているプログラミングスクールに行くとこのフレームワークを覚えてECサイトを作ったりとかしているみたいです。
僕が一度取材に行ったプログラミングスクールの中でSpring Frameworkを使ってサイトやWebページ作るとかをやっていました。
ここが便利!
フレームワークを使うとどんなメリットがあるのか?
3つのポイントでお話してきます。
1つ目コードの量が減る。
2つ目ルールが決まっている。
3つ目MVCの考え方。
ということ。順に解説していきます。
1.コードの量が減る
先ほども言いましたが、ある程度Webサイトを作るときに使う機能っていうのは決まっているわけです。
そういったものは自分が書かなくてもいいわけなんですよ。
そうすると自作で関数を作ったりとか自分でロジック組んでいく必要がなくなるんですごく便利になるかなと思います。
2.ルールが決まっている
プログラミング自体にももちろんルールがあります。
たまに書き方のところで個性的なところが出てきたりとかするんですね。
ただ、フレームワークを使うことによってある程度やれることが絞られることによって書き方が画一的になりやすいんですね。
もちろん、クセの強い人もいるんですけどもある程度個性が出にくくなるんですね。
これがフレームワークの一番いいところかなと思います。
開発あるある
これのなにが良いかというと、開発環境に入ると分かるんですけども、以前書いた人のコードとかを修正するっていうときあるんですけども、すごくクセの強い人のコードになっていると「これってどういう動きをしているのかな?」とか解読で時間取っちゃうわけなんですね。
フレームワークを使うことによってある程度「こういう動きだからこうだよね」っていうのがある程度予測できるので改修もしやすかったりとか複数人で開発するときに便利になってくるかなと思います。
3.MVCの考え方
これはサーバサイドに多いかなと思うんですけども、MVCっていう言葉があるんですよ。
これなにかというとWebサービスに使われる機能の頭文字3つを取ったんですね。
MはModel、VはView、CはController。
ざっくりまとめると、
Modelっていうのが裏側で処理してくれるパーツ。
ViewっていうのがWebサイトを表示してくれるフロント部分。
ControllerっていうのがModelとViewをうまく調整してくれる中間管理職。
あまり触れませんがこの考え方が非常に重要になってくるので覚えておきましょう。
どうやって勉強すればいい?
フレームワークを学びたいっていう人はけっこう多いと思うんですよ。
おすすめの勉強法を先に言っちゃいます。
それは「フレームワークでプロダクトを作ろう」です。
シンプルに実際使ってみないといけないってわけなんですね。
「なんだそんなことか」
「そんなことわかってるよ」
と思うかもしれないんですけども、意外とみんなできてないんです。
例えば動画とか教材を見てなんとなく理解した、本を読んでなんとなくわかった気がするなど手を動かしていない場合がけっこうあるんですよ。
基礎の勉強はプロダクトで学ぼう
あと手を動かしても形になっていないとか文法の勉強したとか、そういう形が多いので非常にもったいないんです。
シンプルなものでもいいからひとつ作品を作ってみるってのがいいかなと思います。
おすすめとしてはサーバサイドだったら掲示板とかそういうものを作るのがいいかなと思います。
フロントだとVue.jsとかだったらToDoリストとか作るとけっこう使い方がわかるかなと思います。
フレームワークは両面で学ぼう
あとフロントエンド系フレームワークとサーバサイド系フレームワークって、一緒に勉強できるんですね。
例えばRuby on Railsを勉強したときに一緒にVue.jsの勉強をするとかLaravelの勉強したときにBootstrapを一緒に勉強するとかってのは可能です。
むしろ現場では同時に使うことが多いのでよりリアルに仕事に入ったときのようにコードを書くのであれば2つ一緒に勉強しておくっていうのは選択肢としてアリかなと思います。
まとめ
1つ目、フレームワークとは作成キットである!
ある程度形ができており、それに基本機能っていうのがついており、あらかじめ使えるように設定されているので、それらの設定を調整して自分のWebサイトを作っていきます。
2つ目、フロントエンドにもサーバサイドにもフレームワークはある!
フレームワークってサーバサイドのイメージがあるんですけども、フロントエンドにももちろんありますし、プログラミング言語以外でもフレームワークはあります。
そういったキットになっている、骨組みになっているものを使うとより効率的にWebサービスを作れます。
3つ目、勉強法はプロダクト作成が効果的!
やっぱり手を動かさないといけないのでプログラミング学習と一緒なんですよ。
なにか作ってみて「こういったものなんだな」って実際に触れてみて自分で「どこがつまずくのかな?」とか「どういうところが楽になったのかな?」っていうのを実感するっていうのが勉強としてはおすすめです。
今回のまとめです。
・フレームワークとは作成キットである
・フロントエンドにもサーバサイドにもフレームワークはある
・勉強法はプロダクト作成が効果的