「サービスプランニングについて」という記事で、サービスを企画し、概念と構造を設計し、開発体制を決め、開発プロセス全体を方向付けるような行為を「サービスプランニング」と呼びたい、という話をしました。コメント欄でemeitchさんより、同じ意味で既存の言葉「サービスデザイン」があるよ、というご指摘を受けましたが、当面「プランニング」を使ってみようと思います。
「WebアプリケーションフレームワークCatyの特徴と方向性」で述べたように(当時は「コンダクター」という言葉を使ってましたが)、Catyはサービスプランナーのサポートに力を入れています。Catyにおけるサービスプランニングの雰囲気を絵(汚い手描きですが)にすると次にようになります。
サービスプランは、機械可読な形式で書き下されます。具体的には、Catyのcara(キャラ)モジュール群として記述され、メモリにロードされます。もちろん、サービスプラン記述は人間も読めて、いつでも参照することができます。
サービスプラン記述を参照しつつ、人間が手作りでサービスを実装することができます。このときの作り方は標準的な方法で、静的HTMLページやテンプレートを書いて、必要ならサーバー側プログラムも作る、というものです。サーバー側プログラムの記述には主にCatyScriptを使いますが、馴染みのないスクリプト言語はイヤだという人もいるでしょうから、CatyScriptインタープリターを経由せずに直接Pythonプログラムを呼び出す方法も準備中です。
手作りをしていると、定型的な作業の繰り返しに気がつくことがあります。そんなときはメタプログラミングを使ってください。サービスプラン記述はメモリ内に保持されていて、JSONデータ*1として取り出せるので、それをCatyScriptで加工すれば、ウンザリする作業を自動化できます。メタプログラミングと言っても、JSONデータの処理に過ぎないので、特別なプログラミング機構を使うわけではありません。
簡単なプロトタイプなら、サービスプラン記述を入力とするメタプログラムでサービス実装を自動生成することもできます。ただし、自動生成に過大な期待を抱くべきではありません。初期の試行錯誤の段階において便利に使える道具、と思っておいたほうがいいです。
現実には、手作りとメタプログラミングを混ぜることになるでしょう。混ぜ具合は自由に選べます。サービスプラン記述をベースに、手作りとメタプログラミングを併用することによって、試行錯誤のコストはかなり小さくなります。本格的にサービスを作り込む前に、実現可能性や構造/UIの適切さなどを実験で確認できます。プラン段階で、実際に動くプロトタイプで試行錯誤を繰り返し、問題点を事前につぶしておけば、その後の開発がスムーズに進むことが期待できます。
頑張って作ってしまうと、問題点や過ちが見つかっても作り直しが困難なことがあります。頑張る前に、スクラップ・アンド・ビルドがお手軽に出来る環境でアレコレやってみましょう、ってことです。