symfonyによる実践的なPHPアプリケーション開発
WINGSプロジェクト 川北 季 [著] 山田 祥寛 [監修] 2006/11/28 00:00

sample.zip 0.79 KB
1 2 3 4 →

はじめに

 本連載では、PHP上で動作するアプリケーションフレームワークであるsymfonyでアプリケーション開発を行う方法について紹介します。本連載で扱う内容は、次のとおりです。

  • symfonyフレームワークの特徴
  • symfony利用のための環境設定手順
  • Hello, Worldアプリケーションの作成
  • データベースと連携したアプリケーションの作成
  • その他、役立つsymfony関連のテクニック

 導入の今回は、まずsymfonyの特徴と環境設定手順、「Hello, World」アプリケーションの作成までを紹介します。

対象読者

 PHPの基本構文は一通り理解しているが、フレームワークを利用したことはないという方を対象としています。

必要な環境

 symfonyは、PHP5とWebサーバがインストールされている環境で利用可能です。本稿ではWebサーバとしてApache2.2を、OSにWindows XPを採用し、アプリケーションを作成していきます。また、次回以降のサンプルでは、データベースとしてMySQLを用いる予定です。以下に、今回アプリケーション作成/動作確認に用いた環境を示します(インストールにあたっては最新安定版の使用を推奨します)。各項目の詳細なインストール手順は、「サーバサイド技術の学び舎 - WINGS」より、「サーバサイド環境構築設定手順」を参照ください。

  • Windows XP SP2
  • PHP 5.2
  • PEAR
  • Apache 2.2.3
  • MySQL 5.0.24a

 LinuxやFreeBSDなどUNIX系OSをお使いの方もコマンドはほぼ一緒ですので、パスなどは適宜読み替えてください(MySQLは次回以降で使用します)。

フレームワークとは

 実際にsymfonyを活用する前にまず、フレームワークというものについてざっと見ていきましょう。

なぜフレームワークなのか

 さて、PHPの基礎を一通り学習しスキルを身につけたとしても、実際にそれなりのサイトを一から作ろうとすると、それなりの作業量が要求されます。そしてある程度規模のあるサイトを一定の期間内に作ろうとすれば必然的に、共同作業になります。その際、次のような問題点が浮上してくることでしょう。

  1. 平行作業(ビューとロジックの切り分け)
  2. 片方の変更作業がもう片方の作業に影響する。例えば、デザイナーがデザインを変更するたびにプログラマーが呼び出されるなど。
  1. 定型的なコードの記述
  2. よく使うコードを何度も書く事になり、作業効率が悪い。
  1. コーディングルールの統一性
  2. 開発メンバー間でコーディングの歩調をあわせることが困難なうえ、部分部分で製品の品質が一定しない。
  1. メンテナンス
  2. 皆がそれぞれ独自のルールでコードを作成すると、一元的な管理ができない。アプリケーション全体を把握するだけでも大変な作業になる。

 これらの問題を解決すべく登場したのが、フレームワークです。フレームワークとは本来「枠組み」を意味し、簡単に言えば「プログラミングなどの際によく使う機能やお作法をすぐ利用できるよう詰め合わせたソフトウェア群」のことを言います。実際、あいまいな定義なのですが、多くのフレームワークには開発支援のためのツールやドキュメント、クラスライブラリなどが含まれています。例えば、Webアプリケーションフレームワークであれば、認証/セッション管理や、データベース管理、テンプレートなどが提供されます。

 あらかじめ枠組みを用意することで、先ほど挙げたような問題がある程度解決されます。フレームワークを用いる利点は、まず、自分で一から枠を作る必要がなくなることです。つまり、アプリケーションを作る時に本来いつも用意する必要のある部分を自分で作る手間が省けます。そしてもう一つは、皆が同じ枠組みの中で作業をするので、コードにある程度統一性が確保できる点です。完成後のメンテナンスもしやすくなります。具体的には、次のような改善点が見込まれます。

フレームワーク利用による改善点
問題点 改善点
定型的なコードの記述 工数が短縮できる
平行作業(ビューとロジックの切り分け) プログラマーとデザイナーがまったく独立に作業を進められる
メンテナンス コーディングルールの統一性のために可読性も上がり、メンテナンスや機能拡張がしやすくなる
品質のバラツキ コーディングルールの統一性のために、一定の品質が確保される
MVC
 上記のメリットに関連しますが、アプリケーションをM(モデル)、V(ビュー)、C(コントローラ)、の組み合わせで開発するモデルをMVCと言います。モデルとはビジネスロジックを指し、プログラマーが担当する部分です。ビューは見た目を指し、デザイナーが担当する部分であり、そしてモデルとビューとが連携する橋渡しを行っているのがコントローラです。MVCアーキテクチャを利用することで、アプリケーション開発の際に仕事の切り分けがしっかりするので、デザイナーもプログラマーも自分の仕事に専念できるようになります。今回紹介するsymfonyも含め、多くのフレームワークで取り入れられている考え方です。

PHPとフレームワーク

 フレームワークそのものの歴史はわりと古いのですが、PHPのフレームワークが脚光を浴び出したのはここ1~2年くらいのことです。今回紹介するsymfonyのほかにも、Mojavi、Ethna、Mapleなど、既に多数のフレームワークがあります(下表)。

主なPHPフレームワーク
フレームワーク 入手先/HP 特徴
symfonyhttp://www.symfony-project.com/ 本文参照
Mojavihttp://www.mojavi.org/ PHPフレームワークの草分け的存在(現在本家ダウン中。入手はMojavi Japanから可能)
Ethnahttp://ethna.jp/ GREEで使われている国産フレームワーク。PHP4/5に対応
Maplehttp://kunit.jp/maple/ 国産フレームワーク。DIコンテナ機能が特徴的
Zend Frameworkhttp://framework.zend.com/ PHP本家Zendが提供する純正フレームワーク
CakePHPhttp://www.cakephp.org/ symfony同様Ruby on Rail系のフレームワークで軽快な動作が特徴。PHP4にも対応

symfonyについて

 今回紹介するsymfonyは、MITライセンスに基づくオープンソースのPHP5用フレームワークです。symfonyの冒頭ページによると「ものぐさのためのプロフェッショナルウェブツール」だそうです。

 今のところ、日本語のページでは「Symfony」と「symfony」が混合していますが、symfonyの「s」は、本家では小文字表記なので、本連載では「symfony」で統一します。

 Mojaviから派生し、Ruby用フレームワークRuby on Railの影響を色濃く受けて作られたフレームワークで、以下の様な特徴があります。

  • シンプルなテンプレートとヘルパー
  • キャッシュ・コントロール
  • 種々の環境(OS、データベース)に対応
  • 管理ツール(アプリケーションファイル群の管理――変更、更新など)
  • scaffolding機能(データベースの基本操作に必要なモジュールを自動生成する)
  • スマートURL(設定ファイルによりURLの形式を決めることができる)
  • 多言語(I18N)対応
  • オブジェクトモデルとMVC分離
  • Ajaxサポート
  • プラグインによる機能追加が可能

 非常に多機能で、本家ドキュメントも充実しています。対照的に日本語情報は比較的少ないのですが、活用できれば大いに役立つことと思います。


1 2 3 4
→
INDEX
symfony入門(1):symfonyで始めるPHPフレームワーク
Page1
はじめに
対象読者
必要な環境
フレームワークとは
symfonyを使ってみよう(1/3)
symfonyを使ってみよう(2/3)
symfonyを使ってみよう(3/3)
今回のまとめ
参考資料
プロフィール
WINGSプロジェクト 川北 季 カワキタ ミノル

WINGSプロジェクトについて>
有限会社 WINGSプロジェクトが運営する、テクニカル執筆プロジェクト(代表 山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・
雑誌/Web記事の執筆、講演等を幅広く手がける。2008年8月時点での登録メンバは25名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募頂きたい。著書多数


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


注目の求人情報
システムエンジニア/総合Webエージェンシー
▼業務内容 WebサイトにおけるPHP、Perlでのシステム開発、顧客折衝業務。また、プロジェクトリーダー...
プログラマ/ベンチャーSIer
ITプロジェクトにおける開発(プログラミング)作業 Java、C#、.NET等を使用しての開発業務 ...
プロジェクトマネージャー/国内大手SIer
会計系システムの導入コンサルティング。 具体的には、 ①グループ経営管理/予算管理/管理会計/財務会...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: