*

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

公開日: : 最終更新日: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をかけない初心者の場合フレームワークを使用することはお勧めしません。

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

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

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

関連記事

勘違いしてはいけない未経験ややる気という言葉

かなり久しぶりの投稿になってしまいました・・・ 以前ダイエットに成功し、2年以上かけて10kg

記事を読む

データを扱ってみよう その2(配列)

こんばんは松本です。 少しずつ暖かくなってきましたね。暖かいのはいいんですが、オフィスでブログ

記事を読む

作業が遅くてイライラしている方必見!作業スピードを改善するネタ・ツールなど

エンジニアとして仕事をしていますと、「ある機能を実装する最適な方法(設計やプログラムの組み方全般)を

記事を読む

PHPで掲示板を作ろう! 掲示板の作成方法 その2

前回の学習 PHPで掲示板を作ろう! 掲示板の作成方法 その1 それでは掲示板の作成方法その

記事を読む

「初級」〜「中級」のPHPエンジニアのスキルについてまとめてみる(DB編)

本日はデータベース系の必要な技術について。 ウェブエンジニアといっても技術領域が非常に広いので

記事を読む

よく使う処理をまとめよう その1 (関数)

おはようございます。松本です。 私の会社では10時半から掃除の時間でして、ここ数ヶ月ずっとやっ

記事を読む

プログラミング開発環境構築で挫折・・ wandboxを使ってみよう

本日はプログラミングの環境構築で挫折した方のために、前回の記事で紹介したwandboxというツールを

記事を読む

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

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

記事を読む

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

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

記事を読む

セミナー告知のお知らせ

突然ですが2018/06/16にIT業界への就職希望者を対象とした無料プログラミングセミナーを開催さ

記事を読む

Message

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

無料PHPスクール
自社開発>客先常駐である本当の理由

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

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

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

エンジニアを採用する上で大事なこと

本日はエンジニアの採用について書きたいと思います。最近少し採用に絡んだ

エンジニアが給料を上げる方法を真面目に考えて見ました。

本日はエンジニアと給料の話題について触れて行こうと思います。 エ

エンジニアの「スキル」とはなんぞや

給与が低いことに悩んでるエンジニアへのアドバイスをツイートで見たところ

→もっと見る

  • follow us in feedly
PAGE TOP ↑