PHPの「フレームワーク」とは何でしょうか?説明してもらえないでしょうか。


PHPに限らずJAVAなどにもあるようですが(Strutsなど)私はPHPしか使ったことがありません。それを背景に説明してもらえるとありがたいです。

みなさんよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/04/16 05:57:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:toteri No.5

回答回数52ベストアンサー獲得回数3

ポイント24pt

みなさんが概念を説明されているので、最近初めて使ってみた実感を書いてみます。(使ったのは上でtokyosmashさんがあげられている[[Ethna]]です。なのでこれに沿って記述します)

良い点

  • コマンド1つでクラスやらHTMLテンプレートやらを生成
  • 入力フォームの定義を書くだけで入力チェックやデータの引継ぎをしてくれる
  • 画面遷移がわかりやすい(上であげられていますが、コントローラーで管理しているので)
  • HTMLとPHPなどのプログラムを切り離せるので、デザイナーがいじり易い
  • コードが綺麗に書ける(重要)

悪い点

  • 構造や仕組みを覚えるのに時間がかかる
  • 万能ではないので手を加える必要がある(例えば、ライブラリで用意されているもの意外でバリデーターが必要な場合は自作で対応)
  • 現段階では出来ることに限りがある(DBクラスなんかの機能制限があったりします)。
  • フレームワーク自体にバグあった場合大変

初めは「こんなのベタに書いたほうが早いじゃん」とか思うかもしれませんが、個人的にはデバッグとかも含めるとフレームワークを使ったほうが早い気がします。

保守性はかなり高いんじゃないかと。

一度ルールを覚えてしまえば、さほど考えずにガンガン作っていけると思います。あと、MVCモデルを覚える勉強にもなりますので、他のところでも言及されていますが初心者こそ使うべきではないかと。


PEARは私も使っていますが、EthnaはそのPEARを継承したクラスが沢山定義されています。

PEAR単体と異なるのは、PEARはincludeして関数呼び出すだけですが、Ethna(フレームワーク全般も含めて)はディレクトリの構造から記述の仕方まで結構かっちり決まってます。なので毛嫌いする人は結構いますね。自由に作らせろとか。


ちなみに私がフレームワーク検討段階で候補に挙がったのは

SymfonyとZendFrameworkとEthnaでしたが、Ethnaにした理由は

  • Symfonyはドキュメントや機能は豊富ですが覚えることが多そうだったので却下。
  • ZendFrameworkは信頼性はバッチリですが、まだバージョンが低いので却下。
  • Ethnaはあまり知らなかったのですが、GREEでの実績とか開発のスピードが早そうなとことかよりも“PHP4が使える”っていうのが大きかった気がします。PHP4で案件が来た時も使えるってのは潰しがきくから良いかな、と。
id:tokyosmash

おお、丁寧にありがとうございます。

実際に使われている方の感想は本当に貴重だと思ってます。

>初心者こそ使うべき

実際にEthnaをインストールしてみました。ドキュメントを見ながら今まで作ったスクリプトをいじろうと思ったのですが、何をどうしたらいいのかさっぱり状態です。nonプログラマには結構敷居が高いです。腰を据えて勉強する必要があるようです。

ZendFrameworkが将来的にはデファクトになるという記事をよく見かけたのでぜひ使おうと思ったのですが、現時点で日本語ドキュメントは皆無に等しいので止めました。日本語でも理解に苦しむのに英語じゃ厳しすぎます。

Ethnaは日本人が作られているんですね。この世界では珍しいのではないでしょうか?Rubyなんて凄いものもありますけど、日本発ってあまりないですよね。応援する意味合いも込めてEthna使おうと思います。

それからまた質問になってしまいますが、フレームワーク(例えばEthna)とPearは併用可能なのでしょうか??

2007/04/14 03:43:46

その他の回答5件)

id:studioes No.1

回答回数523ベストアンサー獲得回数61

ポイント18pt

 フレームワークとは、その名の通り開発を簡易化するための枠組みです。 データベースであるとか、スクリプトだかという言い方と同じように、フレームワークというソフトがあるわけではありません。

 フレームワークは、よく使う機能をクラスとして用意しておく物です。 それを継承するなどして自分が欲しいように改良します。

 例えば、掲示板では、書き込みや読み出し、検索などをフレームワークとして用意しておいて、実際の掲示板の見た目や、個別の掲示板毎の機能を個別に開発します。

 ログイン処理も、ユーザIDとパスワードを受け取ってデータベースで正しければログインするなど、どこでも同じような処理ですので、フレームワークの仕組みを利用すれば、開発者はデータベースの設定であるとか、表示する画面であるとか、ログイン成功時・失敗時の遷移先だけを記述すれば良く、面倒なロジック開発が不要になります。

 このような、開発を補助するための仕組みがフレームワークです。

http://e-words.jp/w/E38395E383ACE383BCE383A0E383AFE383BCE382AF.h...

id:tokyosmash

回答ありがとうございます。

私はログイン処理についてはPearAuthを使っているんですね。だからログインのロジックを書いた事は無いのですが、フレームワークを導入すれば同じ結果になるという事でしょうか?最初からPearのAuthが導入されているというか。

うーんやはり使ってみないとイマイチつかめませんね。とりあえずEthnaを試してみようと思います。

2007/04/13 18:23:53
id:studioes No.2

回答回数523ベストアンサー獲得回数61

ポイント18pt

 フレームワークはどれも同じ訳ではありません。

 つまり、印刷フレームワークであるとか、ネットワークフレームワークであるとかというように、目的に応じたフレームワークがあり、同じ目的でもいろいろなフレームワークがあって、それぞれ使い方(設定すべき項目)や、中身も異なります。

 ですので、フレームワークを利用した開発を行う場合には、どのフレームワークが適切であるか、と言うのを選定します。

 目的を達成するのに必要な機能のフレームワークが存在すれば、それを利用することで開発コストを削減できるわけです。

 そして、デザインパターンとは、開発で良く用いられるパターンです。 例えば、ログイン処理はユーザIDとパスワードを入力して、データベースを検索して、ログイン可否を決定する、と言うパターンが一般的でしょう。 フォーム送信でも、フォームを表示して、入力項目が正しいか確認して、確認画面を表示して、送信する、と言うパターンが一般的かと思います。

 このような形式化された問題の解決には、適切な解決方法が見つけられている物です。

 このようなよく使われるパターンの適当な解決方法をまとめた物がフレームワークというわけです。

id:SALINGER No.3

回答回数3454ベストアンサー獲得回数969

ポイント40pt

PHPは利用者も多いということで、フレームワークはたくさんあります。

PHPのフレームワーク一覧

フレームワークを一言で言えば雛形です。

ソフト開発において一からソフトを何度も作っていると、その作業に共通する部分がほとんどで同じ作業の繰り返しのことがあります。

その同じ部分をあらかじめ出来た物を使い、あるいは自動生成させて作業の効率化を図るという考えからフレームワークは生まれました。

最近のフレームワークはWebアプリケーションを構成するのに不可欠なコードを自動生成する機能を備えています。簡単なデータベース・アプリケーションならばコードを1行も書かずに作ることも可能です。

 実際にWebアプリケーション・フレームワークを使って開発を行う際には、自動生成機能によってとりあえず動くものを手に入れ、必要な機能、例えばユーザー認証などの機能を付け足していく形で進めていきます。

 フレームワークを理解する上で避けて通れないのが、MVCパターンです。Model,View,Controllerを示します。モデルはデータベース処理などを行う部分。コントローラはアプリケーションの制御を司る司令塔。ビューは見た目のWebページの部分です。

 大きなサイトになるとリンク構造が複雑になりページごとの繋がりが分かりづらくなることがあります。コントローラはページごとの遷移をコントローラを経由することで集中管理します。

 ビューは開発の効率化のため複数のWebページの共通部分からなる「テンプレート」を提供します。テンプレートはデータ部分と見た目を分離することで組織での開発のしやすいものとなってます。

 モデルはデータベースを意識することなく開発できるように工夫されたものです。Ruby on Rails ではO/Rマッピングツールを内臓しています。O/Rマッピングツールを正しく使えばSQLインジェクションの対策としても有効です。

 簡単なサイトならばフレームワークを使わずに自分で書いた方が早いということもありますが、ちょっと凝ったサイトを手抜きをして作れるということです。

id:tokyosmash

>簡単なデータベース・アプリケーションならばコードを1行も書かずに

これは本当でしょうか?その辺りを実感できるサイトはあるでしょうか?

コントローラはなんだか便利そうですね。でも、実際に何なのかはよくわかりません。使ってみなければ理解できなさそうですね。

モデルがあればSQLをいちいち書かなくてもいいのでしょうか。

テンプレートとは、Smartyのようなものでしょうか?

うーん難しいですね。でも「MVC」というキーワードを知ることができました。ありがとうございます。

2007/04/14 00:25:14
id:kiikkoko No.4

回答回数222ベストアンサー獲得回数1

id:tokyosmash

kiikkokoさんは物知りですね。

2007/04/13 23:17:04
id:toteri No.5

回答回数52ベストアンサー獲得回数3ここでベストアンサー

ポイント24pt

みなさんが概念を説明されているので、最近初めて使ってみた実感を書いてみます。(使ったのは上でtokyosmashさんがあげられている[[Ethna]]です。なのでこれに沿って記述します)

良い点

  • コマンド1つでクラスやらHTMLテンプレートやらを生成
  • 入力フォームの定義を書くだけで入力チェックやデータの引継ぎをしてくれる
  • 画面遷移がわかりやすい(上であげられていますが、コントローラーで管理しているので)
  • HTMLとPHPなどのプログラムを切り離せるので、デザイナーがいじり易い
  • コードが綺麗に書ける(重要)

悪い点

  • 構造や仕組みを覚えるのに時間がかかる
  • 万能ではないので手を加える必要がある(例えば、ライブラリで用意されているもの意外でバリデーターが必要な場合は自作で対応)
  • 現段階では出来ることに限りがある(DBクラスなんかの機能制限があったりします)。
  • フレームワーク自体にバグあった場合大変

初めは「こんなのベタに書いたほうが早いじゃん」とか思うかもしれませんが、個人的にはデバッグとかも含めるとフレームワークを使ったほうが早い気がします。

保守性はかなり高いんじゃないかと。

一度ルールを覚えてしまえば、さほど考えずにガンガン作っていけると思います。あと、MVCモデルを覚える勉強にもなりますので、他のところでも言及されていますが初心者こそ使うべきではないかと。


PEARは私も使っていますが、EthnaはそのPEARを継承したクラスが沢山定義されています。

PEAR単体と異なるのは、PEARはincludeして関数呼び出すだけですが、Ethna(フレームワーク全般も含めて)はディレクトリの構造から記述の仕方まで結構かっちり決まってます。なので毛嫌いする人は結構いますね。自由に作らせろとか。


ちなみに私がフレームワーク検討段階で候補に挙がったのは

SymfonyとZendFrameworkとEthnaでしたが、Ethnaにした理由は

  • Symfonyはドキュメントや機能は豊富ですが覚えることが多そうだったので却下。
  • ZendFrameworkは信頼性はバッチリですが、まだバージョンが低いので却下。
  • Ethnaはあまり知らなかったのですが、GREEでの実績とか開発のスピードが早そうなとことかよりも“PHP4が使える”っていうのが大きかった気がします。PHP4で案件が来た時も使えるってのは潰しがきくから良いかな、と。
id:tokyosmash

おお、丁寧にありがとうございます。

実際に使われている方の感想は本当に貴重だと思ってます。

>初心者こそ使うべき

実際にEthnaをインストールしてみました。ドキュメントを見ながら今まで作ったスクリプトをいじろうと思ったのですが、何をどうしたらいいのかさっぱり状態です。nonプログラマには結構敷居が高いです。腰を据えて勉強する必要があるようです。

ZendFrameworkが将来的にはデファクトになるという記事をよく見かけたのでぜひ使おうと思ったのですが、現時点で日本語ドキュメントは皆無に等しいので止めました。日本語でも理解に苦しむのに英語じゃ厳しすぎます。

Ethnaは日本人が作られているんですね。この世界では珍しいのではないでしょうか?Rubyなんて凄いものもありますけど、日本発ってあまりないですよね。応援する意味合いも込めてEthna使おうと思います。

それからまた質問になってしまいますが、フレームワーク(例えばEthna)とPearは併用可能なのでしょうか??

2007/04/14 03:43:46
id:toteri No.6

回答回数52ベストアンサー獲得回数3

ポイント24pt

フレームワーク(例えばEthna)とPearは併用可能なのでしょうか??

実際にまだ併用していないのでハッキリとは言えませんが、恐らく使えるのではないかと思います。フレームワークに組み込むとなると面倒ですが、単体で読み込んで使う分にはどのフレームワークでも問題ないのではないでしょうか。

nonプログラマには結構敷居が高いです

確かにそうですね。私もまだ手探りしつつ、っていう感じです。

まずは簡単なログインとかフォームとかを1から始めてみると良いかもしれません。

チュートリアルもありますし

http://ethna.jp/ethna-document-tutorial.html

id:tokyosmash

結局ZendFrameworkを勉強する事にしました。マニュアルを見てみるとAmazon・GoogleのAPI用の機能までありました。これは凄い・・。

MVCの基本的な概念は理解できました。実際にZendFrameworkを使ったシステムが公開されていたので中身を解析中です。

みなさんありがとうございました。

2007/04/16 05:55:37
  • id:tokyosmash
    自分でも色々と調べていますが、実際に使ったことが無いので理解しづらいです。

    とりあえず自分の認識している知識を羅列します。
    ・様々な機能が最初から実装されているので楽になる
    ・自動サニタイズが実装されているのでセキュリティ面UP
    ・ドキュメントが少ないので初心者が手を出すべきではない
    ・大規模アプリケーションの開発には必須。でも小規模はあまり意味が無い?
    ・「デザインパターン(これはもっとよくわかりません)」と密接に関係がある。

    うーん、でもよくわかっていません。Pearは少しだけ使ったことがあるんですね。あれがもっと大規模になったイメージでしょうか。

    「一般的知識」から「現場では実際にこう使っている」とか、「実際にドキュメントが少ないので壁にぶつかるとプロでも~~」などなど。何でもいいので情報ください。体験談は検索してもなかなかHitしないので貴重です。

    よろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません