BPStudy#26(at EBiS303)

  • テーマ「デザイナ/プログラマの“干渉のない並列作業”を支援するWebフレームワークCaty」
  • 檜山さんがなんかおもしろそうなことをやってるというので見に行ったらあのkuwataさんがいた。実物を見たのは初めて
  • kuwataさんのエントリ
  • 以下、てきとうメモ
  • 個人商店レベルの簡単なWebサイトを構築できるツールがほしい
  • プログラマとデザイナの役割をきっちり分離したい
  • プログラマとデザイナの間にサイト全体の構造/仕様に責任を持つスーパーバイザというロールを設定
    • スーパーバイザは独立した人を割り当てても、プログラマもしくはデザイナが兼務してもOK
  • →スーパーバイザのために、書き方間違えてもこわいことが起こらないWeb用超簡単言語「Catyスクリプト」を用意
  • →専用の言語処理系を実装。言語処理系なのでWebからだけでなくコマンドラインからも呼び出せる
  • といったところ。あんまり変なことやってるようには見えなかった。自分が普段つきあってるのが変な人ばかりだからかな
  • Terence Parrの「厳密分離の原則」
  • 一方Catyでは
    • プログラマ)コマンドクラス→=コマンド=→Catyスクリプト→=コンテキスト=→テンプレート(デザイナ)という感じ
    • もっと下には、ストレージドライバ→=ファシリティ=→コマンドクラスという構造も
  • 古き良きCGIのモデル。必ずURLに対応したファイルがある(ように見える。実際にはファシリティは仮想化されてるので実際のファイルシステムじゃなくてGAEのkey-value storeみたいなのでもOK)
  • テンプレートは意図的に低機能に
    • 現行はSmartyのサブセット。Smartyがもっともメジャーなのでユーザーの学習コストが低いという判断。会場からは、Smartyっぽいのは機能としても妥当だという意見
    • 基本的にプレースホルダのみ。ユーザーに任意 任意回数の繰り返し処理を許さない
  • Terence ParrのString Templeteは変態すぎるので却下
  • プログラマが用意したコマンドをパイプでつないでいく
  • do(diagrammatic order)記法。左から右に読める。これは檜山さんの趣味っぽい
  • 一貫して静的に型チェックができる。JSON DB使えばDBも
  • スキーマで型チェック
  • コマンドに使用する言語と処理のありかはスキーマで指定
  • テストモードのみevalが使える。普通の人は使っちゃだめ。ただしこれでコードを書くのは大変。SKIコンビネータみたいな感じのプログラミングで頭がこんがらがる