現行バージョンはv20の4D、新しい環境に移行できないプロジェクトの話。v17まで使えていたEdit formというコマンドがある。このコマンドを実行すると、エンドユーザがグラフィカルユーザインタフェースでフォームを編集できる、という便利な機能だ。v18から「_O_」がついてしまった。
// ユーザフォーム
_O_EDIT FORM([PRINT_JOB];"PJ01_Print";$nameStr)
「_O_」は、次のバージョンでなくなるコマンド、という意味だ。実際、v19では使えなくなっていた。
4Dは進化の過程で、より高性能で便利な機能を提供するために、旧式の内部コードを見直しているらしい。この流れで現時点ではEdit formは却下された模様。テキストで保存できるプロジェクトモードは画期的だったし、オブジェクト記法で記述できることはうれしい。しかし弊害もある。プロジェクトモードを4D Serverで運用すると接続クライアントからメソッドやフォームの編集ができなくなってしまった。つまり、以前のバージョンで提供されていた機能がなくなり、前バージョンよりも劣る製品になっている部分がある。Edit formについて言えば、代わりに良くなったことが一つもない。ただ単に優れた機能がなくなった、というだけである。自力で実装して提供することもできなくはないが、かなりヘビー。
当社はテーブル定義を読み込んで、テーブル作成(TableGenerator)や関連メソッドを自動生成する(MethodGenerator)仕組みを持っている。これにフォーム生成(FormGenerator)も自動化したくて試行錯誤していたが、4Dの実装が伴わない限り前に進めない、という状況だった。2014年にフランスに行ったとき、Create Formとか、フォームを自動作成するための機能を実装する予定はないのか?と聞いたら、「ない」と言われた。それからたったの4年で、v18でプロジェクトモードが使えるようになり、結果的にフォームを自動生成できるようになった。Create Formというコマンドが提供されたわけではなかったが、フォームの定義がテキストファイルで記述できるようになった。所定のフォーマットのテキストファイルを所定のフォルダに作成すればフォームが追加される、というものだった。この仕組みを利用して当社のフォーム自動生成機能(FormGenerator)は完成した。
プロジェクトモードを4D Serverで運用する際に編集できない問題については、v19で同じマシン上のクライアントからは編集可能になった。これはだんだん良くなっている。
Edit Formついても、おそらく近い将来、形を変えて提供される可能性が高い、と勝手に妄想している。なぜならこんなグレードダウンは許されないと誰もが思うだろうし4D社がそう思っていないはずがない。このため当社が自力で、エンドユーザにグラフィカルユーザインタフェースによるフォーム編集機能を提供することには躊躇するのだった。苦労して作っても、4D社がもっとうまい方法で実装してくる可能性は十分にあるからだ。