プログラミング プログラミング思考

MVCフレームワークはなぜ必要?【開発効率化】

悩む人
プログラミングの勉強を始めて間もないけど、フレームワークの話をよく聞きます。でも、実際は、なんで使用するかわかってないし、開発の効率化って聞いても、ピンとこないです・・

 

今のWEB開発業務は、「データベースを扱う」という時点で、フレームワークを採用し、業務を進めていくことがほとんどです。

逆を言うと、それほど便利だという裏付けになりますが、初学者の方は、「何がどう便利なのか」ということが不明瞭になりがちです。

今回は、フレームワークを使用することで、どんなメリットがあるのかを具体的に明示します。

 

本記事を読むことで、以下のメリットを得られます。

  • MVCフレームワークを使用するメリットが理解できる
  • ざっくりでもModel・View・Controllerの意味がわかる
  • なぜフレームワークを使用するのか、納得しながら開発ができるようになる

 

 

MVCざっくり解説

なぜ、ざっくり解説なのかというと、各フレームワークの公開サイトで解説されていますし、情報が溢れているからです。

本記事では、「フレームワークを使用する必要性」にフォーカスします。

毎日の勉強は時に辛いから、納得感を持って勉強したいですよね。

 

MVCの役割については、ざっくり以下です。

  • Model - データに関する処理などの記述がメイン。「モデル=データ」という感覚でOK
  • View - テンプレートとして、WEBブラウザに表示される部分の役割。「ビュー = 見る」
  • Controller - モデルとビューの手つなぎ役。各メソッドの呼び出し役。

上記のリストをしっかりと頭に叩き込んでおけば、全然OKだと思います。

小難しく解説されている本とか、情報がたくさんありますが、大体忘れますよ。だって余計だもん。

 

でも、役割を無視して開発を行うことはできないので、最低限、覚える所は覚えておきましょう

 

データベース・セキュリティの扱いが楽になる

まず、フレームワークを扱うメリットとして、最初に考えられるのは、「データベースの扱いが楽になる」ということです。

以下、ツイートしています。

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によって覚える必要があるが、長期的に見ると、規約に沿うのでソースコードが綺麗になる。
  • フレームワークを使用することで、属人性を極力排除できる。人の代替えが利く。

-プログラミング, プログラミング思考
-

© 2021 FuwaFuwaShoChan BLOG