※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

テストデータを作る


 検索まわりのテーブルは作ったので、とりあえずテストデータを入れてみることに。
 最初はテストのバリエーションも兼ねて自分で作っていたけど、なんかパターンの作成が面倒になったのと、実データに近いほうが得るものがあるだろう(あれは考慮してなかった、こういうケースもあるのか等々、いろいろ出てくる)と思ったのとで、実際のサーチで登録されているデータ70件ほどを参考にしました。

 でも、テーブルが多いだけにさすがに大変。特に項目の多いサイト情報テーブル。
 なので最終的にはOpenOfficeのCalcで入力、INSERT文を記載したSQLファイルをマクロで自動生成しました。おかげで初めて実用的なOOoのマクロを作っちゃった(Excelにしなかったのは、Excelが入っていないマシンでも作業するため)。
 ただOOoのマクロは、文字コードを考慮したファイル出力はできないようですね。なのでいったんShift_JISで出力、エディタを使って手作業で文字コードを変換することに。ほとんどは数値データのテーブルとあって、変換が必要なのはサイト情報と更新履歴くらいだから、大した手間じゃないけど。

 文字コードと言えば、苦労したのはマスタのINSERT文のほう。
 こっちはスタティックなデータだからエディタで直にファイルを作ったけど、普段使っているサクラエディタだと、UTF-8でもキャラマスタで桓魋の字が化ける上、実際に文字データも壊れるんだよね……。Notepadだとちゃんと表示・編集できるけど、こっちは保存するとき勝手にBOMがついちゃう。
 とにかくデータが壊れてはどうしようもないので、結局はNotepadで編集→バイナリエディタでBOM削除、というアホな手順にしました(その後、Meryという軽量エディタで乗り切ることに)。

 ちなみにテーブルやビューのCREATE文もファイルにまとめてあるため、テスト用のデータでデータベースを作り直したくなったら、それらSQLファイル群を順に流すだけ。最初はSQLiteで使えるSQLを確認しながらだったこともあって、頻繁にエラーも出したし面倒だったけど、環境が整ってきたらかなり省力化できるようになりました。

 プロトタイプとはテーブル名やカラム名が微妙に違うので、それに合わせてPHPコードを修正、登録サイトがある項目のみメニューに表示、当該メニュー項目に張ってあるリンクをクリックして該当するサイト情報を整形表示、までは動作することを確認。
 もっともサイト情報は100件もないため、当然ながらあっという間に表示されるけど。

検索結果

 せっかくなのでヘッダのHTMLも作り、メニューにもちゃんとスタイルを指定して検索を実行した画面がコレ。
 なおデバッグ中なので、その辺の余計な情報も出してます。



 まあ、悪くはないと思うけど……本当はフレームにしたくないので、その辺が不満。
 最初のイメージだと単一のページにして、小さな画面を使っている人に配慮してコンテンツ表示の最大幅を700px前後に留め、上部にヘッダ、メニューは右、検索結果は左、というレイアウトにしたかったんだよね。メニュー項目リンクのクリックによる実行だとPOSTでデータを送るわけじゃないため、ページに埋め込んだメニューの再表示時にユーザの入力状態を復元できなくてあきらめたけど。
 ……まあ、リンクに見せかけたSUBMITボタンにすれば不可能ではないんで、どうするかなぁ。

 あと当然ながらHTMLは表現が限られるので(JavaScriptは極力使わない)、どうしても冗長になりがちというのがねー。

更新履歴一覧

 サイト情報に付随するテーブルは全部作ったため、テストデータを入れてしまえば後は何をどのように検索するかだけだから、こんなのも思いつきで簡単に作れちゃいます。





 なんか、こうやってスクリーンショットを出すとほぼ完成に見えるけど、検索結果についてはページ切り替え(1ページにつき表示上限数までしか表示せず、前後リンクでページを切り替えられるようにする)を実装していなかったりするし、ここまでなら、ちょっとプログラミングができる人なら誰でもできるようなレベルだったりします(ページ切り替えは、まず全体の件数を取得してから、実際に表示する範囲のデータを取得する等々しなきゃいけないので何かと煩雑)。

 それよりはるかに面倒というかキモなのは、ユーザの認証と、それに付随する管理画面の機能。ユーザが管理画面から自分でサイト情報(複数サイト登録可)をメンテできるようにしたいんで。違反報告とかも、まずは当事者(指摘する閲覧者と、相手のサイト管理人)で匿名でやりとりしてもらって、それでも指摘側が不満だった場合のみサーチ管理者に申し立てできるようにしたいため、その辺の機能の作りこみがかなり面倒だったりします。

2010/09/07 20:50:08