プロトタイプでつまずいて…(1)

先月の初めからやっている求人マッチングサイトの制作は、引き続き基本設計を進めており、並行して技術的な課題等に取り組んでいます。
大企業の人員削減のニュースを耳にする度に、早く完成させねばと思っているのですが、1人で他の業務の合間にやっているので、なかなか進みません。さらに、1/23頃から、家族がインフルエンザにやられ、看病にも時間が取られています。幸い、私自身は半日寝込んだ程度で済んでいるのですが、今年のインフルエンザはかなり強力な様です。
さて、このサイトの設計作業の方は、エンティティと業務機能の洗い出し、エンティティと業務機能の関連の確認(CRUD分析)まで進めました。更に、一部の業務機能について詳細を設計し、プロトタイプを作っています。このプロトタイプを作るためにいろいろと試しているのですが、どうも凝り過ぎのところがあり、つまずいた、と言うか、深みにはまってなかなか抜け出せませんでした。


今回のプロトタイプは、PHPとMySQL環境でのWebアプリケーション開発のための技術検証と、このシステムと今後の開発にも使える共通部品(クラスや関数)を作るのが目的です。対象の業務機能は、事業者(=求人を出す企業や団体)の登録・更新処理の部分です。
共通部品の方は、以下のものを作っています。
1.データベースのテーブルアクセスのための共通処理を行なうクラス
全てのレコードに、登録と更新の管理情報(日時、ユーザーの識別情報)と無効フラグを設定するため、登録・更新時には必ず管理情報をセットし、検索時には、無効フラグがセットされていないものだけを対象とする、などの共通処理が必要です。このクラスを使うことにより、以前の「削除フラグ論議」の記事にある、コーディングのミスと手間を減らすことが可能です。また、テーブル毎にサブクラスを作り、項目の属性を定義しておくことで、SQLに記述する値に引用符を付けるかどうかを自動に判断します。
2.HTMLのFORMを生成するためのクラス
このクラスは、データ構造を元に自動でFORMのHTMLが生成できないかと思って作り始めたのですが、INPUTタグの多数の属性に対応しようとすると、定義情報を記述するために、INPUTタグを直接コーディングするのと同じ手間がかかってしまいそうなので、テスト途中で放棄しました。それに、実行時に動的にFORMを生成しようとすると、処理も重くなりそうです。作りかけのものを、FORM部分のコーディングを支援するためのツールとして使うに留めることとしました。
実用的なものにするには、項目の属性情報からINPUTタグの属性を自動で判断する等のルールを組み込む必要があります。凝りすぎるときりがないので、今回は先送りとします。
3.FORM、セッション、データベース等の項目をまとめて扱うためのクラス
FORMで入力した値を、データベースに登録する仕組みを作ろうとすると、以下の様に複数の項目をまとめて扱う処理が必要になります。
 POST⇒チェック処理、POST⇒データベース処理、データベース⇒FORM、セッション⇒FORM、…
項目が多くなると、名称が異なるだけでほとんど同じコーディングを多数くり返すことになり、大変です。ミスも発生しやすくなります。
そんな課題を解決するために、このクラスを検討しました。1つの連想配列を中心に、「POSTから読込む」、「セッションに保存する」、「データベースに登録する」などの処理を、メソッドとして定義しました。type=”hidden”のINPUTタグを自動生成するメソッドの案もありますが、今の所は実装していません。
4.タイトルやメニューなど、Webページの共通情報を扱う関数
サイトやページのタイトル、共通のメニュー項目、サイトのホームへの相対パスなどを定義しておき、HTMLの記述に埋め込んで使うための関数です。Wordpressのテンプレートの定義と似た様な使い方になります。定義情報を外部ファイルやデータベースで管理すれば、簡易なCMSとしても使えそうですが、今回は、各スクリプトで定義部分のスクリプトをincludeすることで、簡単に済ませています。
これはクラス定義にした方が良かったかもしれませんが、「オブジェクト名->メソッド名(…)」というコーディングが長くなってしまうのを嫌って、あえて関数としました。
いずれも試作段階で、まだ機能追加とテストが必要です。どうも処理の共通化とかになると凝りすぎてしまう所があるので、ほどほどにしないといけません。個々の詳細については、また別の機会に。
これらの共通備品を作るに至ったきっかけは、全て「繰り返しは面倒くさい」という怠け者の精神です。改めて、そう思いました。
プロトタイプのもう一方の目的である技術検証については、長くなりますので、次回。最大の課題は、認証処理でした。

“プロトタイプでつまずいて…(1)” への 1 件のフィードバック

  1. プロトタイプでつまずいて…(2)

    前回に続き、求人マッチングサイトのプロトタイプ開発、技術検証編です。 今回のプロトタイプでは、以下の点について、技術検証をしました。 1.特定のDBMSに依存しないコーディング 2.日本語メールの送信 3.認証処理 1.と2.は、特に問題ありませんでしたが、3.の認証処理..

コメントは受け付けていません。