2010年8月24日

ほしい物リストを作る 2

前回のつづき。
どうやって必要な情報を取得するかより先に、ほしい物リストに必要な情報はなにか、という点について考えなければいけません。
商品名、販売価格、画像URL、説明文、+α。こんなところでしょうか。

前回も書きましたが、ほしい物リストを実現するためには二通りの方法が考えられます。
・Cookieに必要な情報すべてを書き込む方法
・商品IDだけ書き込んで随時商品ページから必要な情報を読み出す方法

作成するにあたり、Cookieの知識は重要ですので、まず先にその点について。

[引用] OPEN SPACE-Cookieファイルについて
■Cookieファイルの制限
cookieファイルは1行単位で処理され、ファイルの最大サイズは4KB (4096文字)、エントリーの合計は300、サーバーまたはドメインで最大20となっています。この制限を越えた場合使用されていないものから削除されていきます。
まず文字数制限があること。
ほしい物リストの必要情報すべてをCookieに書き込むとしたら、一商品あたりどれくらいの文字数が必要でしょうか。登録する商品点数は? ファイルサイズは足りますか? Cookieが二個以上必要になりますか?
いくつか制限はあるものの、なんとか切り抜けられそうなことが想像できます。

それでもここでは、もう一方の商品IDだけを書き込む方法を採用しています。かんたんな仕様は前回書いたとおりですが、あらためて以下に示します。
・「ほしい物リストに追加する」ボタンをクリックすると、Cookieに商品IDを書き込む
・ほしい物リスト一覧ページをフリーページで作成し、ページデザインをする
・商品ID以外にも表示に必要な情報を取得
・「ほしい物リストから削除する」ボタンをつくる

なぜ手間のかかる方を採用したか。
私がほしい物リスト機能を設置したショップの取り扱い商品は、基本的に一点もの(売れると表示されない)、という事情がありました。ほしい物リストに追加したはいいが、見たさいに在庫がないという状況は容易に想像できます。
ということで、「ほしい物リストページを表示したさいに、在庫のないものは消す」と設計をしました(お客様に手動で消してもらうのは手間で、申し訳なかったから)。
在庫の有無をCookieに書き込むことは無理ですし(情報が反映されない)、soldout_flgのような在庫の独自タグを参照できればよいのですが、フリーページからではそれもままなりません。
ほしい物リストの表示のたびに商品詳細ページに在庫の有無を確認しに行く必要があった訳です。
ということで、結局このような手間のかかる方法を採用することになりました。

そのほかにも細かい点で気になることがあります。
必要な情報内容が変更されたら? たとえば、価格改定が行われたら?
一度Cookieに書き込んでしまうと、修正するタイミングがありません。
ほしい物リストページに必要な情報を追加したくなったら?
Cookieに必要情報をすべて書き込む方法は柔軟性の面で、少し弱点がありました。

次回「ほしい物リストを作る 3」は、どうやって必要情報を取ってくるのか(XMLHttpRequestという機能を使用します)についてと、そのほか機能実現のための手段について。


【参照リンク】
OPEN SPACE-Ajaxを勉強しよう