*

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

公開日: : 最終更新日:2015/05/21 WEB全般, 講義 ,

こんばんは。松本です。

昨日25日にはオフィスで第一回目の授業を開講させていただきました。広島よりお越しのIさんご参加ありがとうございます!

さて、Iさんとの授業の中で気づいたことですが、エンジニア就職志望者の中にはプログラミングの技術だけでなく、就職までにどれくらいのことができればよいのか?フレームワークはできたほうがいいのか?など様々な疑問があると思います。

今回本来だったら配列の2回目の授業をする予定ですが、こういった小話も重要だと思いますし、中でもフレームワークは関心が集まりやすい部分だと思いますので、今回説明させていただきます。

フレームワークとは?

フレームワークについて一応説明させていただきますと、「アプリを作るのに良く使われるような汎用的な機能をあらかじめ装備して、アプリを作りやすくしたソフトウェア」のことです。

例えばシンプルな掲示板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をかけない初心者の場合フレームワークを使用することはお勧めしません。

フレームワークを使わずに通常の書き方でどのようにコードを書くのか?といったことを理解せずに使用してもあとあと応用が利かないからです。これは私だけの意見というのではなく、「フレームワーク デメリット」などで検索すると多くの方が似たようなことをいっています。

どんな道具にもメリット・デメリットがあります。

使用する場合にはそれを熟知して使うこと。そうすればフレームワークに限らず全てが皆さんの強力な道具になります。

関連記事

バグをゼロに近づけるテスト手法とは?

私は去年のはじめまではPHP、去年の春~年末はJavaScript、今年からはJavaを触っています

記事を読む

ガチンコ塾、人気記事ベスト5

このブログも開設して約半年たちましたね。 思った以上にたくさんの方に読んでもらえてうれしいです

記事を読む

データを扱ってみよう その3(多次元配列)

お疲れ様です。松本です。 さて前回の「データを扱ってみよう その2(配列)」から若干日が開いて

記事を読む

初心者でもできる!作れる!WEBサービスの開発 その4 総まとめ編

前3回の記事でWEBサービスを作ったお話をさせていただきました。 (前回までのお話し)

記事を読む

PHPで掲示板を作ろう!(データベース編) その1 データベースとは

以前、掲示板を作成するブログ記事を書きました。 その1 PHPで掲示板を作ろう! 掲示板の作成

記事を読む

未経験者がWEBエンジニアとして就職する前に身につけておいたほうがよいスキル一覧

夕方、用事から帰ってきてから寝てしまったので寝れなくなっている松本です。 寝れないので今日はも

記事を読む

WEBエンジニアだったら知っておきたいWEB開発ツール一覧

今回は仕事で使っているソフト、ツールやWEBサービスなんかを紹介していこうと思います。 それほ

記事を読む

お問い合わせフォームを作ろう! その3(PHP)

それでは前回のコードを例に少しずつ内容について説明をしていきます。 値を取得するには まず一番最

記事を読む

オブジェクト指向 その2 「設計図」と「部品」

それではオブジェクト指向を具体的に解説していこうと思います。といっても、天才でない限り、初学者でいき

記事を読む

データを扱ってみよう その1(変数)

こんにちわ、松本です。 前回の記事は読んでいただけたでしょうか。私よりPHPに関して知識のある

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

転職エージェントについて

さて、エンジニアとして転職を考えている人であれば転職エージェントを使っ

エンジニアが転職して年収を上げる方法を考えてみました。

えー前回の記事でも書きましたが、2020年2月現在転職活動中です。

2020年のご挨拶

今更ですが、明けましておめでとうございます。 2019年も2本し

自社開発>客先常駐である本当の理由

このブログでも何回か取り上げていますが、ITエンジニアの働き方としては

エンジニアにとって必要なコミュニケーション能力とは

気がついたらもう3月下旬になっていますね・・ 年末年始忙しかった

→もっと見る

  • follow us in feedly
PAGE TOP ↑