PHPやRubyの学習を始めると、そのうちフレームワークという言葉にぶつかると思います。
フレームワークを利用することは開発現場ではほぼ必須のスキルなのですが、そもそもフレームワークとは何なのか?使うメリットは何なのかを解説いたします。
フレームワークとは?
実際のところ、フレームワークを使わずともPHPやRubyでwebアプリを実装することは可能です。
ただしその場合は実装方法は千差万別となり、どこに何があるのか、そこにあるものがどんな機能なのかは作った本人にしかわからない状態となります。
またユーザ登録やログイン認証、テーブルへのインサートや参照など同じような機能を複数作ってしまうことにもつながります。
フレームワークではそういった共通処理があらかじめライブラリ化されており、決まった形に沿って利用する形になります。
なので例えばユーザー登録をして何か投稿する、といった仕組みを作成した場合には、基本的には誰が作っても似たような構成となるわけです。
このように基礎となる部分が用意されているのがフレームワークとなります。
フレームワークを使う理由・メリットは?
フレームワークを使うメリットはいくつかあります。
- 決まった形にそって作るので誰が作っても似たような形になる
- よく使う処理はライブラリ化されており再開発しなくても短いコードで利用可能
- セキュリティ対策もある程度されている
これはメリットと言えるかどうか微妙なので入れていませんが、フレームワークは無料でダウンロードしてきて誰でも利用が可能です。
もちろん有料関係の物もあるかもしれませんが、流行のフレームワークは無料で利用可能なので、何かフレームワーク関連のものをお金を出して購入したりする必要はありませんのでご安心ください。
それでは、メリットのリストについてそれぞれ解説していきます。
誰が作っても似たような形になる
文字だけ読むと個人の特性や独自性がなくてつまらないように感じますが、実務で開発を行う際に個人の独自性は必要ありません。
なぜなら大抵の開発は複数人のチームで行う、もしくは一人で開発するものでも後から誰かが修正する可能性があるからです。
その度に作った本人にここはどうなっているんですか?と聞かなければいけないような作りになっていると保守性は低いと言えます。
この処理はここ、これに関するファイルの置き場所はここ、といった具合に見る場所が決まっていれば人が作ったものでも後から読みやすくなります。
よく使う処理はライブラリ化されている
既にある処理をまたイチから開発してしまうと開発工数が多くなり、コストが高くなってしまいます。
例えばログイン認証まわりなどはどのwebサービスでも大抵はある機能です。こういう部分はあらかじめ用意されたライブラリを利用してサクッと作成してしまえるというわけです。
他にも画像のリサイズやトリミングができたり、ストレージにS3を使う処理がライブラリ化されていたりと良く使われる処理はライブラリ化されている可能性が高いです。
もちろん作成したい仕様にガッチリ一致するものは無いことも多いので、その場合はカスタマイズが必要になることも多いです。
セキュリティ対策もある程度されている
ありとあらゆるセキュリティ対策が完璧に施されているわけではないので油断はできませんが、ある程度は対策がされています。
例えばログイン認証の部分では、何も知らないと入力された値をそのままSQLに利用してしまうSQLインジェクションが起こる可能性があります。
フレームワークではSQLの直書きはほぼせず利用することがほとんどですので、入力された値をそのままSQLに使ってしまうようなことは起きづらいです。
またユーザーが入力した値をそのまま確認画面などで表示してしまうことによるXSSも、テンプレートに渡す値は自動的にHTMLエスケープされて防ぐことができるなど、主なところの対策が出来ています。
セキュリティについては以下の記事でも触れていますので、参考にしてみて下さい。
フレームワークにデメリットは無いの?
使えばハッピーいいことだらけのように思えますがもちろんデメリットもあります。
まず最初にフレームワーク独自の使い方を学習する学習コストが発生します。
その上フレームワークが変わったりバージョンアップすると覚えた使い方が全く役に立たなくなったりするので常に学習コストは必要です。
特にPHPはこれまで様々なフレームワークが出ては廃れといった感じで入れ替わっているので、何を選ぶのかというのは重要だと思います。
処理速度
中には処理速度が遅くなるフレームワークもあります。
素のPHPに比べれば読み込むファイルも行われる処理も多いので当然と言えば当然ですが、多機能であればあるほど重くなりリスクはあるわけです。
なのでよほど簡単な処理で、ユーザーによる入力もアカウント登録もないような最も簡素なものであればフレームワークを使わないという選択もあるでしょう。
ただそれでも実務上ではある程度の規模以上の開発ではフレームワークはほぼ必須となりますので、避けるのは不可能かと思います。
今使うならこのフレームワーク
私は主にwebアプリ専門なのでそちらのフレームワークの紹介になります。
- PHPならLaravel
- RubyならRails
RubyはほぼRails一択なのでシンプルでいいですね。
PHPは少し前はSymfonyが多かった気がしますが、最近はLaravelの流れかなと思います。
フレームワークも流行り廃りがあるので、使う時にトレンドを確認しておくのがいいかもしれません。
就職や転職を目指す場合
最終目標を就職や転職としている場合は、その企業がどんな言語やフレームワーク知識を持つ人を募集しているかをチェックしておくのが良いと思います。
求人案件が多いのはPHPかと思いますが、もしかするとあなたが就職したいと思っている企業はRubyの開発者を募集しているかもしれません。もしくはその逆もあるでしょう。
募集要項には言語だけしか書いていないこともあるのですが、どのようなフレームワークの知識が必要かを質問してみるのも良いかと思います。
現場では即戦力が求められることがほとんどなので、フレームワークの使い方を教えなくてもすぐに使えるのであればポイントは高いです。
フレームワークの学習方法
何度か書きましたがフレームワークの流行はサイクルが早いです。かつ同じフレームワークでもバージョンが上がると全く使い方が変わったりします。
なのでフレームワークの勉強は書籍ではバージョンが古いことも多いと思います。
最初の入り口として入門書的に使うのはOKですが、最終的には公式サイトのリファレンスなどで現在の使い方をチェックする必要があるでしょう。
全くフレームワークを使ったことが無いという方は概念を理解する為にそのフレームワークの書籍を一冊、その後は作りながら最新情報を調べつつ、というのが効率が良いと思います。
ただ公式サイトは英語の場合が多く、日本語サイトはあるにはあるけど翻訳ではわかりづらいことが多いのも事実です。
日本の方が日本語で書いた記事などを参考に、自分で試行錯誤しつつ頑張ってみてください!