今のWEB開発業務は、「データベースを扱う」という時点で、フレームワークを採用し、業務を進めていくことがほとんどです。
逆を言うと、それほど便利だという裏付けになりますが、初学者の方は、「何がどう便利なのか」ということが不明瞭になりがちです。
今回は、フレームワークを使用することで、どんなメリットがあるのかを具体的に明示します。
本記事を読むことで、以下のメリットを得られます。
- MVCフレームワークを使用するメリットが理解できる
- ざっくりでもModel・View・Controllerの意味がわかる
- なぜフレームワークを使用するのか、納得しながら開発ができるようになる
MVCざっくり解説
なぜ、ざっくり解説なのかというと、各フレームワークの公開サイトで解説されていますし、情報が溢れているからです。
本記事では、「フレームワークを使用する必要性」にフォーカスします。
毎日の勉強は時に辛いから、納得感を持って勉強したいですよね。
MVCの役割については、ざっくり以下です。
- Model - データに関する処理などの記述がメイン。「モデル=データ」という感覚でOK
- View - テンプレートとして、WEBブラウザに表示される部分の役割。「ビュー = 見る」
- Controller - モデルとビューの手つなぎ役。各メソッドの呼び出し役。
上記のリストをしっかりと頭に叩き込んでおけば、全然OKだと思います。
小難しく解説されている本とか、情報がたくさんありますが、大体忘れますよ。だって余計だもん。
でも、役割を無視して開発を行うことはできないので、最低限、覚える所は覚えておきましょう。
データベース・セキュリティの扱いが楽になる
まず、フレームワークを扱うメリットとして、最初に考えられるのは、「データベースの扱いが楽になる」ということです。
以下、ツイートしています。
プログラミングを始めた最初の頃は、PDOを使ってDBにコネクトするだけでも一苦労。
— ふわふわしょうちゃん@WEBエンジニア・メンター (@FuwaFuwaShoChan) October 10, 2020
でも、今のWEB開発は大体フレームワークを使用するので、わざわざコネクト書かなくても、設定のみで接続できちゃう。
でもね、スクラッチで勉強がてら一度でもやっておくと
利便性がわかりますよ。SQL文も一緒ですわ😌
PHPでは、通常、PDOライブラリを使用し、DBにコネクトする部分から、ソースコードを書かなければいけません。
かつ、SQLインジェクションという、SQL文を使用した、データベースを不正に攻撃される可能性などのセキュリティを考慮し、プリペアドステートメントなどを使用して、コードを書きます。
すでに頭痛くなりませんか?
僕は、白目向きましたね。
WEBシステムをパブリックで公開するということは、ユーザーはURLさえわかれば、操作することが可能です。
WEBシステムを不正に操作しようと思えば、いくらでも操作できます。
WEB開発は、ネイティブアプリ(端末にインストールするアプリ)と違って、セキュリティを強く意識しなければ、安心・安全なWEBサービスは運用できない、難しい分野です。
フレームワークは、セキュリティの部分も予め考慮した上で設計されています。
メリットだと思いませんか?
僕は、WEB開発の度に、多くのコードが必要となる、セキュリティなどにリソースを割かれることが嫌です。
もっと、クリエイティブなことだけに意識を向けたい。なので、この時点でフレームワークで開発することは、超効率が良いです。
データベースとコネクトするのも、1ファイル内に、データベースにログインするユーザー名と、パスワードを設定するだけです。
しかも、データをフェッチ(取得)するのも、SELECT文を直接書かなくてもよいのです。
例えば、 「テーブル名→get();」 などで、よく使うようなSQL文は、わざわざ書かなくても、データを引っ張ってくることが可能です。
「それじゃ、SQL文を覚える必要なくね?」
そうですね。SQL文は、基本的な構文以外は覚えなくていいんじゃないかと僕は思います。
多少複雑なSQL文は「SQLビルダー」というフレームワークに定義されている構文で、簡潔に書けるように考慮されています。
SQL文の構文を、ガッツリ覚える必要はなく、求めるデータを取得する条件には~句を使えばいいんだな。ぐらいの把握でOKだと思います。
まあ、SQL構文を覚えていても、フレームワークを使用して開発していると、そんなに使わないので忘れますよ。
覚えることは繰り返しが必要なので時間が必要です。
無駄なリソースは省いてしまいましょう。それより、役割把握重視で。
汎用的な機能が備わっている
いくつかのプロジェクトをこなすようになってくると、同じような機能が必要になる場合があります。
例えば、ログイン機能とか、ページネーション機能とか。他にもありますが、フレームワークには、こうした汎用的な機能が予め用意されています。
DRY(Don't Repeat Your Self:繰り返しを避けること)の法則という有名な思想がありますが、フレームワークにも、この法則に沿えるように、提供されています。
ページネーションとか、スクラッチ(ゼロから全て開発すること)で作ろうと思ったら、結構、骨が折れる作業ですよ。
初学者は、確実に心折れます。
よく使う機能を、わざわざゼロから作る必要はなく、フレームワークの利用の仕方を覚えて、機能を利用する方が、遥に簡単だし、便利です。
ここまで読むだけで、なぜ、フレームワークを使用して開発するのかが、理解できるのではないでしょうか?
ソースコードが綺麗になる
MVCフレームワークを利用するには、そのフレームワーク独自のコードの書き方を覚える必要があります。あと、規約と設定を強く求められます。
例えば、DBのテーブル名とカラム名の付け方とか、ファイルの命名規則とか。
こういった、規約を覚えることに最初は四苦八苦するかと思います。
これは、デメリットにもなり得るのですが、メリットのベクトルの方がはるかに大きいです。
なぜなら、「ソースコードが綺麗になりやすい」からです。
それと、他の人が開発しても同じような書き方になるので、理解がしやすくなります。
初学者の人は、PHPの文法を覚えて、その後にすぐ、フレームワークの勉強をしても、チンプンカンプンになりがちです。
それは、PHPと書き方が違う場合が多いからです。
なので、考え方としては、PHPのフレームワークだからといって、PHPに頭を寄せるのではなく、完全に切り離して勉強を進める方が、気が楽です。
「PHPと全然ちゃうやんけ」
という、無駄な思考にリソースを吸い取られなくて済むので。
「ベースはPHPだけども、コードの書き方は利用するフレームワーク独自の規約を覚えなければいけない」と考えるようにしてください。
もちろん、PHPの関数は利用できます。基本的な文法も同じです。
運用・保守が容易になる
ソースコードが綺麗になるということは、「運用・保守がしやすくなる」ということにもつながります。
例えば、Laravelフレームワークを使用したWEBシステムの担当していた人が辞めてしまった場合でも、Laravelを触ったことがある人であれば、変わりに担当することが、比較的容易になります。
つまり、強い属人性(その人しかやり方がわからない状態)を排除し、代替えが利きやすくなることは大きなメリットです。
スクラッチで作られたWEBシステムとか、独自フレームワークを採用しているWEBシステムは、属人性が高く、他の人が運用を変わりにしようとしても、どんな仕様になっているのかわからないので、一つの変更に時間がかかり、システムを停止しかねることにつながります。精神的にも億劫になります。
また、PHPではLaravelが一番採用されていますが、Laravelを勉強することで、企業側から求められる可能性が高くなることにもつながります。
つまり、普及したフレームワークを習得する方が、転職にも強い。ということになります。
「PHP フレームワークランキング」などのキーワードでググり、一番日本で人気のあるフレームワークを勉強すればよいです。
今後も、WEBシステム開発には、フレームワークを土台とした業務が多いと予想できます。
しっかりと時間を投下して、勉強するようにしましょう。
まとめ
- 最低限、Model・View・Controllerの役目は把握しておくこと。
- FWは、DBやセキュリティの扱いを楽にしてくれる。
- FWは、よく使う機能を予め用意してくれている。その使い方を覚える方が効率的。
- コーディングの仕方を各FWによって覚える必要があるが、長期的に見ると、規約に沿うのでソースコードが綺麗になる。
- フレームワークを使用することで、属人性を極力排除できる。人の代替えが利く。