Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

symfony入門(1):symfonyで始めるPHPフレームワーク

symfonyによる実践的なPHPアプリケーション開発

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/11/28 00:00

ダウンロード sample.zip (794.0 B)

本連載では、PHP上で動作するアプリケーションフレームワーク「symfony」で、アプリケーション開発を行う方法を紹介します。導入の今回は、まずsymfonyの特徴と環境設定手順、「Hello, World」アプリケーションの作成までを紹介します。PHPの基本構文は一通り理解しているが、フレームワークを利用したことはないという方を対象としているので、symfonyに興味のある方はこれを機にぜひ導入してみてください。

目次

はじめに

 本連載では、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 特徴
symfony http://www.symfony-project.com/ 本文参照
Mojavi http://www.mojavi.org/ PHPフレームワークの草分け的存在(現在本家ダウン中。入手はMojavi Japanから可能)
Ethna http://ethna.jp/ GREEで使われている国産フレームワーク。PHP4/5に対応
Maple http://kunit.jp/maple/ 国産フレームワーク。DIコンテナ機能が特徴的
Zend Framework http://framework.zend.com/ PHP本家Zendが提供する純正フレームワーク
CakePHP http://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サポート
  • プラグインによる機能追加が可能

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


  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2006/12/29 15:07 symfony 1.0.0-beta対応に合わせ一部修正を行いました。

著者プロフィール

  • WINGSプロジェクト 川北 季(カワキタ ミノル)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:symfony入門
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5