SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

プログラミング未経験から始めるPHP入門

プログラムをブラッシュアップするテクニックを学ぼう!
プログラミング未経験から始めるPHP入門~応用編(9)

第16回

  • X ポスト
  • このエントリーをはてなブックマークに追加

より読みやすいプログラムとするために

 連載の最後となる本稿では、関数およびトランザクションの理解を深め、よりプログラムを安全に、読みやすいものにする方法を解説してきました。しかし、まだ学ぶべきことは多くあります。

 PHPには、さらに「テンプレートエンジン」や「フレームワーク」と呼ばれるツールが存在し、それらをうまく活用することで、プログラムをより読みやすく、管理しやすい物にすることが可能です。本稿では詳細には触れませんが、これらのツールを用いてどのようなことが実現できるかを説明しておきます。

 まず、これまで作成したプログラムの構造を見てみましょう。これまでは、次のようにHTMLとPHPが混在する構造でした。

HTMLとPHPが混在するプログラムの構造
HTMLとPHPが混在するプログラムの構造

 このままでも関数等のテクニックである程度読みやすさを高めることはできますが、HTMLのところどころに、

<?php print( $cart["price"] ); ?>

といったPHPが混在するのは、あまり読みやすいものではありません。

 また、Webサイトを制作する場合、1人でデザインもできればそれに越したことはないのですが、実際はプログラミングを担当するプログラマーと、HTMLなどでサイトの見た目をデザインするWebデザイナーが共同で開発することがほとんどです。しかし、プログラマーが記述するPHPとデザイナーが記述するHTMLが混在する状態では、同時に作業を進めることができません。できれば分業したいものです。

 これがもしも、PHPとHTMLに明確に分離できていればどうでしょうか?

PHPとHTMLを分離したプログラムの構造
PHPとHTMLを分離したプログラムの構造

 このような構造であれば、コードも読みやすく、分業もしやすくなりそうです。これを実現するのが、「テンプレートエンジン」です。テンプレートエンジンは、下図のようにプログラムとHTMLの橋渡しのような役割を担います。

テンプレートエンジンを用いるとPHPとHTMLの分離が可能になる
テンプレートエンジンを用いるとPHPとHTMLの分離が可能になる

 同様のことは、「フレームワーク」を利用しても実現できます。フレームワークの中でも特に「MVCモデル」と呼ばれる構造に基づいているものを利用することで、単なるプログラムとデザインの分離だけではない、さらに洗練された役割分担を行うことが可能です。MVCモデルについてはCodezineの記事の「MVCとは」という章に分かりやすくまとめられているので、参照ください。

 テンプレートエンジンやフレームワークを利用することで得られるメリットとして、次のようなものがあります。

  • プログラムの見通しがよくなり、機能追加などの修正がしやすい
  • プログラマーとWebデザイナーの分業がしやすい
  • 複数のプログラマーがチームで開発する時にも分業がしやすい
  • きちんと流儀に従ってプログラムを書く必要があるので、勝手なプログラムの構造(設計)ができなくなる
  • デザイン部分が分離されているため、PC版と携帯版の両方があるサイトでは、理論上、デザイン部分を切り替えるだけで携帯対応できる

 その他にフレームワークによっては、土台となるプログラムを自動生成してくれるscaffolding(スカフォールディング)と呼ばれる機能もついており、開発の時間が短縮できます。

 テンプレートエンジンの代表格としては、Smartyと呼ばれるものがあります。Smartyを学習するための参考サイトとして、ゼンド・ジャパン株式会社のサイトを挙げておきます。

 MVCフレームワークに関しては、有名なものとしてCakePHP、Symfony、Zend Framework、Ethnaなどがあります。MVCフレームワークの特徴を分かりやすく比較した参考サイトとしてPHPフレームワークの機能比較 - PHPプロ!を挙げておきます。必要に応じて目を通してみてください。

参考書籍

 また、より深く学習したい方のために、以下の参考書籍を挙げておきます。

まとめ

 それでは、今回のまとめです。

今回のまとめ
  • 関数を利用することで、同じ処理を何度も記述する必要がなくなり、読みやすいプログラムとなる
  • 関数は、引数として変数を受け取り、戻り値として変数を返す
  • 複数回のSQLを実行する際、トランザクション管理を行うことで中途半端なデータベースの状態を許可しないことができる
  • MDB2では、beginTransaction()commit()rollback()という命令を用いてトランザクションを管理する
  • MySQLが内部的に用いるエンジンを「ストレージエンジン」と呼び、代表的なものにMyISAMInnoDBがある
  • InnoDBトランザクション管理をサポートしているが、MyISAMではサポートされていない
  • テンプレートエンジンMVCフレームワークと呼ばれるツールを利用することで、さらに見通しの良いプログラムを作ることができる
  • テンプレートエンジンの代表格としてSmartyがある
  • 有名なフレームワークとしてCakePHPSymfonyZend FrameworkEthnaなどがある

 長期間に渡る学習、お疲れ様でした。プログラミングを一通り終えて、難しいと思ったでしょうか? それとも思ったよりも簡単だったでしょうか? ほとんどの方は、前者の感想だと思います。

 実は、本連載で取り上げたテーマはプログラミングの基本的な技術要素ばかりです。しかし、まだ先が長いとがっかりしないでください。基本的な単語を一通り覚えておけば英語圏でどうにか生活ができるように、基本的な技術を押さえておけばWebサイトの大半の機能は作ることができます。

 残りの技術の多くは、今回取り上げたテンプレートエンジンやフレームワークのような、読みやすさや機能追加のしやすさ、チームで実装する際の分業のしやすさを高めるといった応用的なテクニックです。より読みやすいプログラムを書くために、今回取り上げたテンプレートエンジンのようなテクニックをゆっくり身につけていきましょう。

 今後の学習は、書籍やネット上のサイト、掲示板などをうまく活用するとスムーズに進むはずです。掲示板やメーリングリストで技術的な質問をするときは「何が分からないか」「どこが動かないか」を明確にするよう心がけると、期待する回答が得られやすいかと思います。

 皆さまの今後のご活躍を陰ながら応援しています。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

大家 正登(オオイエ マサト)

デジタルハリウッド『PHP 講座』講師。学生時代、スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。その後中堅 SIer に 3 年間所属し、現在はフリーエンジニア。仕事の傍らジャズを演奏し、コントラバス 2 台と同居中。(ITエンジニア・大家正登のWeb...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4792 2010/01/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング