つい先週webformとtwigについて書いた時は、8.x-5.0-rc7になったばかりだったが、今日早くも8.x-5.0-rc8に上がった。rcの数が上がっているのでもう正式版になるだろうと思っていたのだが、この期に及んで機能が追加されていて驚く。
webformはD7とは別物なので異論もあるようだが、非常にパワフルなモジュールである。それだけで、簡単な申請アプリケーションが書けてしまう。イベント登録のデモで申込数の上限を定義する機能が動くようになった説明が出ている。
この例では、申し込み上限をtokenを使って確認するハンドラーを使っているが、これが書けるなら、基本的に同じフォームなのに条件の違うwebform nodeを作れるわけだから、イベント毎のフォームも書ければ、応募者の属性によって異なるようなフォームも書けるだろう。
一番気になるのはremote post機能なのだが、まだ適当な例と説明が見当たらない。
DrupalをCMSとして捉えれば、もともとはnodeがメインコンテンツだから、伝票が処理された結果、確定したらnodeになるというのが自然な気がするけれど、D8からはentityが基本に変わったので、よりRDB的なデータストア側面が強くなっている。実装をきちんと見ないと分からないが、申請上限を設定するという事は、フォーム単位で何件登録されたかを見ているわけで、\Drupal\webform\entity\WebformSubmissionから情報を取る事になるのだろう。
申請アプリケーションを作る場合、複数の実装方法が考えられるわけで、何をどこまでnodeで実装するか、entityで実装するかは議論が分かれて当然に見える。プログラマー的には良くできているように感じるが、どう使っていくかを考えると悩みが尽きない。
また、webformはUIと密接にかかわるから、どうしてもcssやjsといったUIに関わる記述が加えたくなる。その気持ちを汲んだ実装になっていて、webformではそこかしこにcssやjsに関して記載できるようになっている。しかし、CMSにとって本質的な課題である「データストアとUIの分離」という視点で見ると便利だけど気持ち悪い。日本でアプリ開発にDrupalを使っている複数の有識者の意見が聞きたいと思っている。Drupalのコミュニティがまだ十分に立ち上がっていないのが残念でならない。一人で全部やることはできないので、どうしても仲間が必要になる。