独自フレームワーク Collabo-Xを紹介する第3弾。
今回は個人的には一番気にっている機能。
「ドキュメントのように書く」機能です。
たいしたことではないんですが、コロンブスの卵と言うか、
あると便利と言う機能になります。
Collabo-Xの開発工程で、ワークフローや操作権限の実装を一番最後に持ってきたのは、
こうした仕様は最終段階までどう変更が掛かるかわからないからですが、
一方で、納品後にすら変更が掛かるかもしれないのがこれらの処理です。
そうした処理を、簡単に変更するためには、
「ドキュメントのように書かれている」ことが一番だと考えました。
ちょっとわかりにくいお話ですが、どうかお付き合い願います。
4.ドキュメントのように書く(関数マトリックスとテーブル作成機能)
業務システムなどを開発する場合、仕様書や設計書の多くは、表形式で記述されます。
例えばワークフローや、ユーザ権限などは表形式で記述することが多いものです。
表形式はフロー図などの図形に比べて、狭い紙面上に膨大な情報を記述できます。
ぱっと見のわかりやすさでは図形にはかないませんが、
面積あたりの情報量と、書く側の手軽さから言えば表の方が上を行くと思います。
もう一つ、特徴があります。表形式は例えばCSVと言った形式で、
その気になれば、単なるテキストファイルであっても、そのデータをそっくり記述できます。
つまり、うまくすればソースコードに、仕様書と同じような記述で実装させることができます。
いわゆる組込み系と言われる主にC言語を使った開発を行う分野で、
一般的なテクニックとして「関数マトリックス」といわれるものがあります。
関数マトリックスとは、「関数ポインタ」を多次元配列に並べることで、
実行する処理の場合わけを膨大なif文やswitch/case文を使わずに実装する方法です。
例えば、「ユーザ権限」と「操作ID」でそれぞれ実行したい処理が違う場合、
条件分岐を使うとif文やswitch/case文をネストして長大な処理を書くことになります。
これを関数マトリックスにするなら、分岐先の処理はすべて関数として作成しておき、
「ユーザ権限」と「操作ID」をキーとする二次元配列を作成し、
その値に各関数へのポインタを代入してやるようにします。
実際に処理を実行するときには、配列の添え字に「ユーザ権限」と「操作ID」を指定して、
関数ポインタを取り出し、ポインタが指し示す関数を実行するだけになるので、
処理の効率も著しく向上します。
表形式のデータと言うのは、先に述べたように仕様書や設計書に良く使われるものですから、
処理速度や可読性の向上だけでなく、仕様書に近い形でソースコードが書かれることにより、
開発時点での作業量を減らし、メンテナンスのしやすいプログラムにすることもできます。
Collabo-Xでは、この関数マトリックスと同じような処理を行うための機能を用意しています。
多次元配列に入った関数名を用い、添え字を指定するだけで、目的の関数を実行できます。
しかし、ここにPHPゆえの問題があります。
PHPでは、C言語のように簡単に、ソースコード上でも表らしく、2次元配列を記載することができません。
PHPの場合、2次元配列は次のように書きます。
array()関数の中にarray()関数が入る感じです。
これならまだどうにかと言う気もするのですが、
この書き方だと添え字は数字しか使えません。
PHPでは連想配列をサポートしているのですから、
添え字には文字列を使いたくなったりします。
これが長くなると、すっかりこんなものを書く気はなくなってしまいます。
これを、Collabo-Xでは次のように書けるようにしました。
文字列として、CSVモドキを書き込むと先に書いたような2次元連想配列を作成することが出来ます。
同様の方法で、「連想配列の配列」や「配列の配列」、「配列の連想配列」も書き出せるようになっています。
これらの関数は先に述べた関数マトリクスや、上記のような権限などの情報を記載するだけでなく、
データベースに変わってSmartyに引き渡すためのテストデータを記述することにも利用できます。
Excelで作成したデータを、エディタに貼り付けて、ちょっとした変換をするだけでこの書式のデータを作れます。
EXCELからエディタにコピペした場合は、[TAB]を[,]に、[\r\n]を[;\r\n]に変更してやれば出来上がります。
あとは、自分でTABやスペースを足して、表らしい形に整形してやればいいだけです。
逆もまたしかり、ソースコードから該当箇所をコピペして、
EXCELで取り扱える形に変換してやれば、ソースコードからドキュメントに変更を反映できます。
今回は個人的には一番気にっている機能。
「ドキュメントのように書く」機能です。
たいしたことではないんですが、コロンブスの卵と言うか、
あると便利と言う機能になります。
Collabo-Xの開発工程で、ワークフローや操作権限の実装を一番最後に持ってきたのは、
こうした仕様は最終段階までどう変更が掛かるかわからないからですが、
一方で、納品後にすら変更が掛かるかもしれないのがこれらの処理です。
そうした処理を、簡単に変更するためには、
「ドキュメントのように書かれている」ことが一番だと考えました。
ちょっとわかりにくいお話ですが、どうかお付き合い願います。
4.ドキュメントのように書く(関数マトリックスとテーブル作成機能)
業務システムなどを開発する場合、仕様書や設計書の多くは、表形式で記述されます。
例えばワークフローや、ユーザ権限などは表形式で記述することが多いものです。
表形式はフロー図などの図形に比べて、狭い紙面上に膨大な情報を記述できます。
ぱっと見のわかりやすさでは図形にはかないませんが、
面積あたりの情報量と、書く側の手軽さから言えば表の方が上を行くと思います。
もう一つ、特徴があります。表形式は例えばCSVと言った形式で、
その気になれば、単なるテキストファイルであっても、そのデータをそっくり記述できます。
つまり、うまくすればソースコードに、仕様書と同じような記述で実装させることができます。
いわゆる組込み系と言われる主にC言語を使った開発を行う分野で、
一般的なテクニックとして「関数マトリックス」といわれるものがあります。
関数マトリックスとは、「関数ポインタ」を多次元配列に並べることで、
実行する処理の場合わけを膨大なif文やswitch/case文を使わずに実装する方法です。
例えば、「ユーザ権限」と「操作ID」でそれぞれ実行したい処理が違う場合、
条件分岐を使うとif文やswitch/case文をネストして長大な処理を書くことになります。
これを関数マトリックスにするなら、分岐先の処理はすべて関数として作成しておき、
「ユーザ権限」と「操作ID」をキーとする二次元配列を作成し、
その値に各関数へのポインタを代入してやるようにします。
実際に処理を実行するときには、配列の添え字に「ユーザ権限」と「操作ID」を指定して、
関数ポインタを取り出し、ポインタが指し示す関数を実行するだけになるので、
処理の効率も著しく向上します。
表形式のデータと言うのは、先に述べたように仕様書や設計書に良く使われるものですから、
処理速度や可読性の向上だけでなく、仕様書に近い形でソースコードが書かれることにより、
開発時点での作業量を減らし、メンテナンスのしやすいプログラムにすることもできます。
Collabo-Xでは、この関数マトリックスと同じような処理を行うための機能を用意しています。
多次元配列に入った関数名を用い、添え字を指定するだけで、目的の関数を実行できます。
しかし、ここにPHPゆえの問題があります。
PHPでは、C言語のように簡単に、ソースコード上でも表らしく、2次元配列を記載することができません。
PHPの場合、2次元配列は次のように書きます。
$matrix = array(
array(1,2,3),
array(4,5,6),
array(7,8,9)
);
array()関数の中にarray()関数が入る感じです。
これならまだどうにかと言う気もするのですが、
この書き方だと添え字は数字しか使えません。
PHPでは連想配列をサポートしているのですから、
添え字には文字列を使いたくなったりします。
$matrix = array(
'guest' =>array(name=>'ゲスト',role=>'0',color=>'#000000'),
'menber'=>array(name=>'メンバー',role=>'1',color=>'#773333'),
'admin' =>array(name=>'管理者',role=>'2',color=>'#337777'),
);
これが長くなると、すっかりこんなものを書く気はなくなってしまいます。
これを、Collabo-Xでは次のように書けるようにしました。
$matrix = btable("
, name, role, color;
guest, ゲスト, 0, #000000;
menber, メンバー, 1, #773333;
admin, 管理者, 2, #337777;
");
文字列として、CSVモドキを書き込むと先に書いたような2次元連想配列を作成することが出来ます。
同様の方法で、「連想配列の配列」や「配列の配列」、「配列の連想配列」も書き出せるようになっています。
これらの関数は先に述べた関数マトリクスや、上記のような権限などの情報を記載するだけでなく、
データベースに変わってSmartyに引き渡すためのテストデータを記述することにも利用できます。
Excelで作成したデータを、エディタに貼り付けて、ちょっとした変換をするだけでこの書式のデータを作れます。
EXCELからエディタにコピペした場合は、[TAB]を[,]に、[\r\n]を[;\r\n]に変更してやれば出来上がります。
あとは、自分でTABやスペースを足して、表らしい形に整形してやればいいだけです。
逆もまたしかり、ソースコードから該当箇所をコピペして、
EXCELで取り扱える形に変換してやれば、ソースコードからドキュメントに変更を反映できます。