MySQLとphpでアプリケーション

概要

 MySQLデータベースとPHPで Web上から操作可能なアプリケーションを作ってみようと思います。まず最初に機能を整理したいと思いますが、アプリケーションの設計ではその機能を、
  • ユーザーが利用する機能
  • 設計及び制作者が必要とする機能
の二つに分けて考えないとわけがわからなくなります。ここではユーザーが利用する機能から派生して設計者側が必要とする構成と機能を主に考えたいと思います。まずユーザーが利用する機能ですが、データベースを使って顧客管理やマネージメントが楽にできるアプリケーションを考えたいと思います。ユーザー、つまり顧客管理をする人物が必要とする機能はその仕事やサービスによっていろいろと異なるので、まずはデータベースの作成が柔軟であることが求められると思います。いわゆる定型の名簿だと役に立たないのでここではサービスに応じて柔軟にそのデータベーステーブルのフィールド(カラム)やデータ型を指定できるシステムにしようと思います。第二に世界のどこからでもその顧客管理ができるという意味でWeb上からインターフェイスとして操作可能なようにします。第三にそのサービスが必要とする管理体制に合わせてそれぞれの機能をプラグインとして後から追加できるようにするというのがよい筈です。例えば誕生日にメールを送信するとか、満期や更新日ちょっと前にメールでお知らせするとか、また顧客の重要事項や日付に関して管理者自身にアラーム(お知らせ)としてメールを送信するとか...いろいろな機能が必要です。またメールマガジンのように全員にくまなく情報を配信したり、顧客の管理を自身のホームページと関連づけるという機能も必要かもしれません。それらの詳細な機能をプラグインでもって実現しようというものです。いわゆるCRMというものです。

ユーザーの利用する機能

 ユーザーが利用する機能は、第一に顧客名簿...顧客情報のデータベースですが、顧客の情報というのもそのサービスによって様々なので、ユーザーがどのような顧客情報を管理したいのか?ということに関して自由にフィールドを設定できるような機能を提供しなくてはなりません。第二にその顧客情報の管理においてレコードの挿入と削除を自由に行えるようにすることと、削除に関してはそのバックアップも必要かもしれません。(つまりカテゴリーから移動するだけで本来的な削除はしないということです。)また、現存の顧客情報はエクセルなどで管理している場合は個々の情報を一つ一つ登録するのは非常に面倒です。ある程度のフォーマットをアプリケーションに読み込めるようにしておいた方がいいでしょう。また、そのフォーマットの種類も多様なので、少なくともCSV,txtなどから流し込めるようにしたい。第三にそれぞれのサービス機能をプラグイン化することが大切かもしれません。ある固定した管理システムですとすぐに時代遅れになるだろうし、またサービス業務の変更などで新しい機能が必要になるかもしれないからです。プラグインのデフォルトの内容だけでもかなり沢山あります。
 まずは日付の管理です。ある日付(更新日の一ヶ月前とか...)に、管理者にアラームやメールでお知らせする、または顧客に直接メールを送信して知らせるなどの機能、またそれに関連してお知らせしたメールに書かれてあるURLのクリックカウンターなどです。日付に関連する機能は特に豊富である必要があるかもしれません。またある日付になるとメールマガジンを一斉送信するシステムやそれらを実行したという記録(ログ)が必要です。これらの機能は、自身のホームページとの関連で機能しなくてはならない場合もあるでしょう。
 ここ最近のプログラムの新機能としてpdfファイルに文字列を書き込み出力するという機能もあります。これはとても便利でイチイチ個別に作成しなくてはならないテンプレートなどを作成しておけばpdfファイルでもって自動的に出力可能になります。それらはDMの印刷に利用することもできますし、メールに直接添付することも可能です。
  • わかりやすいインターフェイスによるデータベースの作成、及びテーブルと自由なフィールドの作成。またはその削除とバックアップ。
  • レコードの挿入と削除(テキストデータなどから複数のレコードの挿入と削除も含む)
  • プラグインによる管理サービスの追加と削除、または更新

設計及び制作者が必要とする機能

 製作者が必要とする機能(もちろんユーザーも必要としているわけですが...)は大きく分けて、インターフェイス、実行スクリプト、サブルーチン(ユーザー関数)の3つです。最終的にはいわゆるヘンテコなコマンド群をわかりやすいインターフェイスでコントロールできるようにするという目的なので、コマンド操作以上のことは実のところできません。つまり、機能を種別分別してそのコマンドを整理してそれらを関数化する作業が必要です。

database_appli_image.jpg

 開発の半ばで必ず必要になってくるのが開発者側&製作者側のデバック機能です。自分で書いたコードのデバックもなかなか面倒なもので...といってもプログラミングの作業の半分以上がデバックだったりするわけでしてこの機能は必然的に出現してしまう。そんなわけでプリケーション全体の動きを監視する意味でも、またフィードバックや後日のバグ修正のためにもデバック機能とログをとる機能は付加しておくべきです。(また、選択することで付加することができるようにしたいものです。)
 いずれにしろMySQLとPHP以上の機能は有せないというわけですから限定的な機能内の話になってくるのでデバック機能もそれほど問題ではないと思います。
 






プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer