2015.2.10
0からはじめるPHP#23【MySQLで作るコメントフォーム#2-フレームワーク-】
だらだらだらだら続けているこの連載も、何気に第23回目です。
23回やってもまだろくなものが作れていないというのも情けない話ですね。(笑)
昨日のコメントフォームですが、あれは
#22での知識があれば余裕で作れる代物です。単にダミーデータをformデータにすり替えただけです。formデータに関しては
#18でさらっています。その他、ページに対するタグ埋め込みの云々に関しては、何回か自慢気に話した日記システムのPHP化の話でとりあげています。
先に言っときますと、昨日のコメントフォームのプログラムは
こちら(zip形式 3kb)です。もう使わないのでサンプルとして見たい方はどうぞ。
上のプログラムは、僕のローカル上では正常に動くので、フォームから値を送信して、データベースへ格納・・・・・・という一連の流れがこれでできたことになります。
データベースから値を取り出したり、検索したり、といった話はPHPというよりSQL文の話になるので、別に大して難しい話じゃないと思います。
この次に何をするべきなのかというと
管理画面の制作ですね。まぁどっちかっていうと、わざわざデータベース化する理由はこの管理画面を作りたかったからってのもあるんですよね。
というのも、以前使ってたものだと、ただ単にコメントを蓄積していくだけで
検索・ソートなどが不可能なんですよ。
あとついでに、コメントのコピペボタンとかくっつけたいですしね。昨日のスクショで気づいた方もいるかも知れませんが、名前やコメント内容の掲載可否もそれぞれ個別に送信できる機能もつけています。
SQL文さえ発行できれば、この辺の話は正直チョロいです。今持ってる知識だけでも充分作れます。
ただ、ちょっと想像すると分かると思うんですが、知識は必要ないんですが、やることが割と多くてしんどいです。機能をつければつけるほどコードが長くなっていきます。
つまり
スパゲッティコード化していくという問題を抱えることになります。
(※スパゲッティコード・・・まるでスパゲッティのような、処理の流れや構造を把握しにくく、修正や機能の追加が困難なプログラムのこと)
当然、昨日のコメントフォームのプログラムも、合計で250行程度のプログラムですが
既にスパゲッティコードの片鱗を見せています。
関数が増えれば増えるほど雑多になっていきます。ファイルを分ける、などの対策もありますが、もうちょっと体系的なプログラムを書くべきです。
書くべきです、って言って書けるようなものじゃないから困ってるんですが、まずプログラムを書く上で
保守ができないソースコードはゴミであるという前提があります。
本来はこんなスパゲッティコードを書いてはいけないのです。
さて、何故スパゲッティコードを書いてしまうのか。
それは
無駄が多いからです。
不必要な記述をだらだらと書いてしまうのがよくないのです。また、関数があっちこっちに分散してしまっているのもよくありません。プログラムを体系的に理解していれば、そんなことは起こり得ません。
だからといって、じゃあどこをどうすればいいのかなんてわからないものです。
で、ついに本題に入るわけですが、ここで
実際に動くサンプルとして
フレームワークの利用を考えてみましょう。
フレームワークって何やねんって話ですが、まぁ簡単に言うと
既に仕組みが作られているプログラムを利用するって解釈でいいんじゃないですかね。
例えば、今回のようなフォームから値を受け取って、それをデータベースに送信し、そのデータベースから必要な値を取り出して表示する・・・・・・みたいな機構を
ものの数秒で作れるという夢のような仕組みです。だって、既に準備されてるんだもの。
僕達が考えるのは、
データベースの構造と、ページのレイアウトだけでいいんですよ。すごいですね!!ラクラクですね!!!(笑)
最初からこういったフレームワークを使ってプログラムの勉強をするのは勧められませんし、将来性も考えたら僕はやめた方がいいとは思っています。
ただ、僕もある程度PHPのコードを読めるようになりましたし、書けって言われたら書けないこともないと思います。
ということで、そろそろフレームワークに手を出してもいい頃なのではないでしょうか・・・・・・!!
フレームワークを利用して学ぶべき点は2つほどあります。
まず1つめ。
実際に動くシステムを作るということです。
ある程度の規模のシステムを設計し、動かすことで得られる経験って大きいと思うんですよ。一体どういう障害があって、どういうところでハマるのか。また、後になって欲しかった機能をつけるとか、保守をする話とか、システムを動かすことで色々勉強になると思います。
当サイトの日記システムも、PHPのプログラムで動いているので、それはそれで動くシステムとしてとらえることができますが、ここで重要なのは
不特定多数の人の入力を受けつけ、それを管理するというところです。日記システムでは、自分が打ち込んだHTML文章をそのまま吐き出してるだけなので、システムとしては大した学習にはなりません。PHPのコードの勉強にはなりましたけどね。
もう1つ。
読みやすいコードが書けるようになるということ。フレームワーク利用の大きなところはこれですね。
関数やファイルの分け方って色々あると思うのですが、まずはフレームワークの真似をすることで、どのようにすれば読みやすい、管理しやすいコードになるのか、がはっきり見えるかなと思います。
そもそもフレームワーク自体が、効率的な作業を求めて開発されているものですからね。編集すべき点は最小限にまとめ、あとは全部ライブラリとして隔離されています。
口で言うのは簡単なのですが、意外とこういうのって我流でやると変なコードになっちゃったりするんですよね。こーいうのは先人の知恵にならった方がいいので、素直に従いたいと思います。ここで
管理しやすいプログラミングを学べたらな、と思います。
さて、PHPのフレームワークって色々あると思うのですが、有名な
CakePHPというものを用いてコメントフォームを実装してみようかなと思います。
CakePHPの文法自体はテキトーにリファレンス引けばいくらでも出てくるので、興味ある方はポチポチやってみてくださいな。実際にプログラムが動くとなんだか感動してしまいます・・・・・・!!
とりあえず次回は、データベースとの連携まで僕が理解したら、試作品を交えて話を進めてみたいなと思います。
ちなみに、僕は
初心者のためのCakePHP2.0 プログラミング入門というところを読んで学習しています。参考までに。