フレームワークのメリット・デメリット

こんばんは。松本です。
昨日25日にはオフィスで第一回目の授業を開講させていただきました。広島よりお越しのIさんご参加ありがとうございます!
さて、Iさんとの授業の中で気づいたことですが、エンジニア就職志望者の中にはプログラミングの技術だけでなく、就職までにどれくらいのことができればよいのか?フレームワークはできたほうがいいのか?など様々な疑問があると思います。
今回本来だったら配列の2回目の授業をする予定ですが、こういった小話も重要だと思いますし、中でもフレームワークは関心が集まりやすい部分だと思いますので、今回説明させていただきます。
Contents
フレームワークとは?
フレームワークについて一応説明させていただきますと、「アプリを作るのに良く使われるような汎用的な機能をあらかじめ装備して、アプリを作りやすくしたソフトウェア」のことです。
例えばシンプルな掲示板1つを作るにも
- ログイン機能
- メール送信
- セッション管理
- ページング
- etc・・・・
などたくさんの機能を実装しなければなりません。
SNSサイトでもECサイトでもよく使われるような機能は大体にかよっています。それならそういった機能をあらかじめ集めて、使いやすくしたら便利だし、速く作れるのでは?といった発想から作られたのがフレームワークです。
これを使いますと例えば自分でPHPを書く場合には100行必要なところがフレームワークを使うと10行ですんだりします。
実際の現場でもフレームワークを使用しているところは非常に多く、求人条件でも経験2年・フレームワークの使用経験があると望ましい、などはよく見かけます。
PHPのフレームワーク
PHPにも数多くのフレームワークがあります。
ざっとあげると下記のようなものが有名でしょうか。
- Codeigniter(コードイグニッター)
- CakePHP(ケイクピーエイチピー)
- Symfony(シンフォニー)
- ZendFramework(ゼンドフレームワーク)
- FuelPHP(フューエルピーエイチピー)
一番使用されているのはCakePHPですね。私も使用したことがありますが、PHP自体を自分で書くのと比べると圧倒的なスピードで開発ができますし、便利ですね。
RubyでもJavaでも有名なフレームワークが多数存在し、実際の開発現場で使われています。Rubyの場合はほぼRuby on Rails一択でしょうが・・
フレームワークのメリット
速く作れる
先ほどフレームワークの定義からわかるようにあらかじめよく使う機能が標準搭載されているので、これが一番のポイントでしょう。
時と場合によりますが、フレームワークを使ったときと使わないときとでは作る時間が半分~3分の1程度になるのでは、と思います。
コードの書き方を統一させることができる
実は本来のフレームワークが使われている意図はこちらです。コードの書き方を統一させるのが目的です。
プログラマに限らず、どんな仕事でもそうですが個人個人の色があります。それは仕事をしていく上でいいことでもありますが、まずい部分でもあります。多くの仕事はチームでするものですので、1人だけやり方が違っていると周りのみんなが迷惑します。
社会人として仕事をしている方であれば誰でも実感していることだと思います。
これはプログラムにおいても同じでして、コードの書き方というのも個人個人で非常に癖がでます。それはスキルの差もありますし、性格的な部分やキャリアによるところもあります。人が書いたコードを修正するというのは非常に大変な作業です。
それでは書き方をルール化して統一させればいいのでは?といった思考になるのではないでしょうか?フレームワークは速く作れるということ以上に、大人数での開発において、書き方を統一させる、というのが主な目的です。
バグが少ない
フレームワークなしでプログラムを書くと多くのところでバグがでます。
これはプログラマの力量不足もありますが、正確なコードを書いても想定されていない使い方をユーザーがするからというのも理由の1つです。
全部のシュチュエーションを想定するのはかなり大変なんですが、フレームワークではあらかじめそのようなことを想定して書かれています。
結果として自力で書くときと比べてバグが出にくくなる傾向にあります。
フレームワークのデメリット
このように便利なところが多数ありますが、デメリットも当然あります。
フレームワーク自体を覚えるのに時間・労力がかかる
これは当たり前といえば当たり前なのですが、便利な道具といってもエンジニアが使うものですので、一通りの使い方を覚えるのに時間と労力がかかります。要は楽をするための努力ですね。
特に大変なのがまだ使用人口が少ないフレームワークです。使用人口が少ないと書籍もでていなかったり、WEBで検索しても情報が出てきません(涙)。覚えれば楽なんだけど、フレームワーク自体を覚えるのに時間がかかるのです。
私は今Javaのフレームワークを仕事で扱っていますが、あまり使用者がいないために調べるのがとても大変です(爆)
仕組みを理解しなくても書けてしまう
さきほど話したようにフレームワークでは通常であれば100行かかるような処理をたった10行でかけます。正しく使えば開発時間を短縮できる反面、その処理を良くわからなくても作れてしまいます。
「なんだかよくわからないけどこう書けば動いた」というのはただそのアプリを作るのが目的ならよいですが、エンジニアとしてはNGでしょう。
エンジニアとしては内部の動きがどうなっているのか?これをフレームワーク無しでかいたらどうなるのか?といったことを理解しておかねばなりません。そうしないといざ修正があったときに対応できません。
というのも、実際の業務ではフレームワークを使っていてもソース全てがフレームワークのルールどおりに書かれていることはまれだからです。
ソースの量の全体が10だとしたら6だけはフレームワークの書き方をしているが、あとの4はフレームワーク以外の書き方をしているといったところがほとんどです。そのため、フレームワークを使わない書き方というのも当然理解しておく必要があります。
カスタマイズに限界がある
アプリを作りこんでいるとどうしても自分なりのカスタマイズをしたくなります。フレームワークは汎用的な機能をあつめたものですが、自分なりのマニアックな機能を搭載したい場合には自分でその処理を書かなくてはいけなくなります。
そうなるとフレームワーク内部をいじらなくてはいけません。そういった機能が多数ある場合にはそのフレームワークを使うメリットが徐々に薄れてきます。
実際にフレームワークを使い始めたものの、カスタマイズが多く、独自のフレームワークを社内で作っているというケースもあります。
結論:フレームワークの健全な取り入れ方
エンジニアとして仕事をすることを考えると、ある程度の開発経験がある方はいいのですが、普通のPHPをかけない初心者の場合フレームワークを使用することはお勧めしません。
フレームワークを使わずに通常の書き方でどのようにコードを書くのか?といったことを理解せずに使用してもあとあと応用が利かないからです。これは私だけの意見というのではなく、「フレームワーク デメリット」などで検索すると多くの方が似たようなことをいっています。
どんな道具にもメリット・デメリットがあります。
使用する場合にはそれを熟知して使うこと。そうすればフレームワークに限らず全てが皆さんの強力な道具になります。
関連記事
-
-
初心者でもできる!作れる!WEBサービスの開発 その2 制作体験記編
前回からの続きですが、主にプログラムの勉強目的として、簡単なWEBサービス(アフィリエイトサイト)を
-
-
セミナー告知のお知らせ
突然ですが2018/06/16にIT業界への就職希望者を対象とした無料プログラミングセミナーを開催さ
-
-
よく使う処理をまとめよう その1 (関数)
おはようございます。松本です。 私の会社では10時半から掃除の時間でして、ここ数ヶ月ずっとやっ
-
-
PHPで掲示板を作ろう!(データベース編) その5 PHP-MySQL連結編
今回はMySQLの第5回目の講義です。 前回までの記事 PHPで掲示板を作ろう!(データベース編
-
-
プログラミングをする上で超大切な検索方法の身につけ方
今日はプログラミングで大切な検索方法の身につけ方について私なりのコツなどを書いていこうかなと思います
-
-
お問い合わせフォームを作ろう! その3(PHP)
それでは前回のコードを例に少しずつ内容について説明をしていきます。 値を取得するには まず一番最
-
-
ゼロからWEBプログラミング(PHP)をマスターするのに何時間かかる?
おはようございます。松本です。 さて、本日のテーマはタイトルのとおりです。以前受講生の方に「ゼ
-
-
あなたのPHPレベルを判定してみよう!未経験者限定スキル判定表
プログラムを勉強していると自分のレベルみたいなものが気になる方は多いでしょう。 私の場合も独学
-
-
バグをゼロに近づけるテスト手法とは?
私は去年のはじめまではPHP、去年の春~年末はJavaScript、今年からはJavaを触っています
-
-
初心者が知っておくべきプログラミングの学習法
おはようございます。松本です。 最近、体重が増えているのが悩みでして今現在71kgあります。去