人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:Java PHP Struts フレームワーク
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● studioes
●18ポイント

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

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

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

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

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

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

◎質問者からの返答

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

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

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


2 ● studioes
●18ポイント

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

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

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

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

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

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

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


3 ● SALINGER
●40ポイント

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

PHPのフレームワーク一覧

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

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

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

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

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

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

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

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

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

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

◎質問者からの返答

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

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

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

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

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

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


4 ● kiikkoko
●0ポイント

http://www.stackasterisk.jp/tech/php/mojavi01_01.jsp

フレームワークとは

◎質問者からの返答

kiikkokoさんは物知りですね。


5 ● yoccola
●24ポイント ベストアンサー

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

良い点

悪い点

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

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

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


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

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


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

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

◎質問者からの返答

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

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

>初心者こそ使うべき

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

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

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

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


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ