今日、Drupal関連の原稿の締切があって、昨日、任意レビューアーの方が原稿をチェックしてくださって、現行どおりにやっても、いくつかうまくいかない点が2点あった。Moduleが運悪く6月30日にリビジョンアップして仕様変更があって管理画面が変わっていたことによるもので、もう一つはミスオペで同一URLで2つのEntityへのリンクが作成されてしまったのが原因だった。Moduleは、Webformと共に、私がとても気に入っていて頼りにしているモジュールなのだが、まだ許容できるレベルとはいえ不具合は残っていて、リビジョンアップする時に微妙に動作が変わることがある。Moduleの今回のリビジョンアップの目玉は以下の変更だ。once.リビジョン対応ができたことで、同時にPublish/Unpublish状態を管理できるようになった。従来はアクセス権の設定は見られるか見られないかといったレベルだったのだが、公開状態(Published)のものを見られるようにするか、非公開のものも見られるようにするか、過去のリビジョンを巻き戻せるかといった設定が必要となる。管理機能が拡大すれば、粒度が細かくなり設定は難しくなる。ちなみにリリースノートには、もう一点重要事項が書かれている。hello@factorial.ioDrupalで特に難しいのは、(言い換えれば優れているのは)権限設定だ。コンテンツ作成・公開Workflowと多言語対応は頻繁に問題となる。リビジョン管理だけでも面倒なのにWorkflowsが入ると、Unpublishedのサブステータスが独自に定義できるようになるので、権限設定の役割分担が格段に難しくなる。多言語も難物で、コンテンツ(あるいはエンティティ)に対応する翻訳があるとは限らないし、翻訳を行う権限設定も翻訳の承認ワークフローも欲しくなる。Moduleの直行性(相互非依存性)を強く意識しつつ、同時に相互連携を意識しなければならないので、サブモジュールや別モジュールで複数のベースモジュールを連携させることになる。パラレルワールド管理、Groupはユーザーとその属性を単純なツリー構造でなく管理するもう一つのアクセス管理軸となる。作者が計算量の検討結果も公開していて、よく考えないとパフォーマンスへの影響は時に破壊的になる。現実社会は複雑なのだ。loginができなくなった。問題分析してみれば、URLに/ja/あるいは/en/が入るからcallbackが変わるのはあたりまえで、Google側の設定に2行加えればよいだけなので15分程度で解決したのだけれど、対応言語が増えるたびに対応するのは面倒だ。対応の選択肢は複数あり、それぞれに長短がある。「教育は不便なるがよし」という言葉を思い出した。