XML-RPCネタその1(pingとRSS)

2007/03/06 | XML

最近XML-RPCを使う機会が増えてきた(単にそういう依頼がたまたまかさなったというだけかもしれないけれど)。いろいろ調べると、やっぱり世間でもそういう話題が多いみたいだ。うちが携わっている案件はこんな感じ。

■更新pingの受信とRSSの取得
ある顧客のサイトでCMS導入を希望されていらっしゃるところがあった。元受会社には「MTでしょ」といったのだが、どうも乗り気でない(理由は結局よくわからない)。あと予算も少ないような感じだったので、いっそのこと外部のブログを使えばいかが、という提案をしたらこちらは通った。
有料ブログのサービスは独自ドメインを使えるところもあるので、これをサブドメインで利用する。メインのドメインにはスクリプトを配置して、そのブログから更新pingを送信するよう設定し、pingを受信したら折り返しそのブログのRSSを取得する。取得したRSSから必要なデータ(記事のタイトルや記事への直リンク、投稿日時等)を蓄積し、メインのウェブサイトでその情報だけを表示する、というもの。
あとはブログのデザインさえ、メインのデザインとそろえておけば立派なCMSが出来上がり。

これはかなりいけてる提案だと思った。
プログラムとしては基本的にping受信とRSS取得の2つだけでよくて、あとは表示用のプログラムを少し。ソースコードは今のところまだ美しくないので、きれいに整形したら公開します。

ヘルパーがだめだめ

2007/03/05 | cakePHP

海外ではウェブのフォームで確認画面を出さないのはどうやらわりと一般的らしいが、少なくとも日本では一般的ではない。いくつかウェブを調べたら「確認画面なんていらないよね」といってる日本人技術者と思しき人たちはいるようだが、間違いなく彼らは間違っている。その真意には明らかに「ユーザビリティ考慮」の精神が欠けているからだ。どう転んでもウェブアプリのフォームで「確認画面をはさむ」という処理ははずせないのだ。
でもってcakePHP。いくら便利なscaffoldといってもデータ登録に確認画面はない。「入力=>完了」で終わりだ。ウェブを検索するとアプリのフレーム自動生成のbake.phpから出来たスクリプトを修正することで確認画面を実現されている方がいらっしゃった(こちら)。どうもこのページ、いろいろなサイトから参照されていて、cakePHPで確認画面を作る際の重要参考資料の位置づけとなっているようだ。こういうふうにスクリプトを惜しげもなく公開されていらっしゃる方には敬意を表します。
しかし・・・わざわざ確認画面用のビューを入力画面のとは別に作成しなくてはいけない。確認画面なんて入力画面とほとんど同じにもかかわらず、である。
今までmojaviを使っていたときはPEARのQuickFormを採用していたので、freeze()というメソッド一つで制御できていた。つまりフォームと確認画面のテンプレートを共通のファイル1つでまかなっていた。なんとかこれを実現したい。
作らなくてはいけないのは2つ。「コントローラー中での一般化された登録の仕組み」とヘルパー。仕組みはなんとなく今までの考え方をcakePHPに移植すれば出来そう。ヘルパーは現在のヘルパーを継承・拡張し、フォームがfreezeしたかどうかで表示を変更しさえすればよいはず・・・。
あと2日、cakePHPに時間を費やしてここまで作りたい。これを作って、さらに登録済み情報の編集機能を実装すれば、今後の開発はすべてmojaviからcakePHPに移行できる。
少し気合をいれて開発してみることにする(2日ということは細切れに時間を使って1週間くらいかかるということになりそうだけれど・・・)。

ファイルの構成

2007/03/04 | cakePHP

昨今ウェブアプリは「MVCパターン」という言葉でにぎわっているが、cakePHPでいうところのMVCとは以下のとおり。

[M]:モデル。データベース(テーブル)とかデータの構造について記述。
[V]:ビュー。表示(要は表示のためのテンプレート)のこと。
 表示の補助で使うスクリプトは「ヘルパー」とする。
[C]:コントローラー。処理手順を記述する。
 処理の補助で使うスクリプトは「コンポーネント」とする。

どこにどういうスクリプトを配置するのか、という場合の参考メモ。

データベースを使わない場合

2007/03/03 | cakePHP

cakePHPは基本的に(というかマニュアル上では)密接にデータベースと連携している。データベースと連携しているから、何も定義しなくてもテーブルの定義を読み取ってフォームやリストを作成してくれる。
とあるお客様から簡単なフォームの作成を依頼されたので、これをcakePHPでと思ったが、やり方がわからない(だってデータベース使わないから)。調べたら、やり方があった(元記事はcakephp.jp)。

(1)単純に静的なページを作りたい場合
「app/views/pages/」にhoge.thtmlなどとつくり、以下のようにアクセスする。
/pages/hoge
routes.phpの設定次第で、URLは如何様にもできる。

(2)モデル内で以下の記述をする。
「$useTable=false;」
「$useTable=null;」でもよいと書いてあったけど、こちらでは残念ながらNGでした。

一つ賢くなりました。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net