現在実験中!のお話。
Excelの仕様書から、Excel VBAで、Javaなり、いろいろな設定ファイルなり、テストデータなりを自動生成させるっていうことは、良くあると思います。というか、ウィリアムのいたずらの仕事の大半は、それです。
で、この作業は、基本的にはこうなります。
(1)元データとなる、仕様書をExcelファイルで用意する
(2)自動生成する雛形(プログラムなり、スクリプトなり)を用意する。
そこに、元データのどこがはいるかを、タグで指定する
(3)Excelで、雛形をよみこみ、タグが出てきたら、そのタグを解釈し、
繰り返しなら繰り返す
条件なら条件判定して、OKなら書き出す、NGなら書かない
値をとってくる場合は、元データからとってくる
というプログラムをマクロ(VBA)でつくる
(4)Excelの上記マクロを実行する。
でもでもでも、ですよ。。。
(1)の元データって、実は、CSVでもぜんぜんOKなんですよ。
で、
(2)の雛形ファイル、これを、PHPでかく。
つまり、ソースコードのあたまに、
<? //==============================// // 文頭の呪文 // //==============================// session_start(); $data = $_SESSION['data']; ?> <html> <BODY> <pre> |
(実際の<>は、半角)
って、かいちゃうわけよ。で、ソースプログラムを書く。
で、最後に
</pre> </body> </html> |
(実際の<>は、半角)
ってかくと、中身は、JavaやCなんかのソースプログラムなんだけど、PHPで扱える形式になるよねえ。。。
なので、PHPファイルとして(拡張子phpで)保存しておく。
もちろん、このとき、(Java等の)ソース中の(半角の)< > &は、 < > &(&は、本当は小文字)に、「すべて置換」しておくこと。(じゃないと、タグと思われて、異常終了になってしまう)
そうすると
(3)のプログラムは、CSVファイルを読み込み、雛形PHPファイルを解釈して、ソースを書き出すっていうことだよねえ。。。
ところが、PHPを使えば
・CSVファイルを読み込んで、
・今まで説明したように、その内容をセッションに入れる。
・そして、雛形ファイルをLocationで設定して呼び出すと。。。
・呼ばれた雛形ファイルは、
セッションの中に入っている元データをもとに、
ソースを(展開して)作成するよねえ
→つまり、プログラムを自動生成する。。よねえ。。
おお、そうすると、
(1)元データをCSVで用意して、
(2)雛形ファイルをPHPで、
上記呪文部分と、
値を出力する部分を<?=data[1][2]?>のように指定
条件部分(IF文を書く)
繰り返し部分
<?for($i = 5 ; $i <count($data) ; $i++){?>とか書くのと
を指定して用意し、
(3)はじめのフォームからCSVと雛形のありかを指定し、
(4)サーバーで、CSVファイルを読んで、雛形をLocationで呼び出すPHPプログラム(これは汎用的に使える)を書けば、
もう、なんでも、自動生成できるじゃん!
すげー、Excelなんかだと、このタグを解釈する部分のプログラムが難しい(IF文や繰り返し処理などが難しい)んだけど、PHPなら、そこの部分を書く必要がない(PHPのエンジンがやってくれるので)から。。。数十行でかけちゃう!(Excelだと、数百行、や千行以上になってくる)
おおおお
というのを、今実験中です。上の意味がわかんなかった人でも、実験結果をみれば、分かってもらえると思います。現在、普通のファイルの自動生成はOKなんですけど、今度は、実際のプログラムを雛形にして、テストしてみるつもりです(実際の説明のときのサンプルは、この実験したものと異なり、もっとわけりやすいのにすると思いますけど)
以上、現在ウィリアムのいたずらが、研究中の中間報告でした
P.S 本当のことを言うと、今日、これを書こうと思って、つくってたんだけど、テストが終わらなかったのです。