HTML/CSS/JavaScriptを複雑に組み合わせてアプリケーションを作ろうという大きい流れがありますが、そもそも「アプリケーションを書くことを想定していないモノ」で無理矢理作ること自体に無理があるよねという考えがあってもいいと思います。
altJSがいくつか出ていたりJavaScriptを機械語のように使おうという発想が出ていたりしますが、これらはすべてJavaScriptが使いものにならないと判断したからこその取り組みですよね。だから1つ抽象化レイヤを引き上げて、JavaScriptを直接書きたくないからaltJSを書いて変換しようという話と同様に、ウェブサイトを直接書きたくないからaltWebSiteを書いて変換しようという話があってもいいはずです。
そういう言語ができたらいいなということで妄想してみました。なお用語定義はJavaに習っていますが深い意味はありません。
目標
DOMやJavaScriptなんてものを意識しないでクライアントサイド開発が行える。
できること
コンパイルするとHTML/JS/CSSなどの静的ファイルを吐き出す。
- サーバサイドとの連携
- 規模のあるサイトでの問題解決
やらなくていいこと
- オブジェクト編集用のフォームを自分で書く
- ID, class, nameといった概念をイメージする
- ページをコーディングしているときはデザインを考える必要ない
- 流しこむとか浮くとかアコーディオンとかタブとか色合いとかRWDとかどうでもいい
- ページの責務を書くイメージ(「責務」がUIに合う考えかどうか不明)
言語イメージ
言語仕様とかどうでもよくて、なにが関心ごとなのかということだけ提示できればと思います。
# sitemap.yml index: - signup - reset_password - portal: - logout - schedule - configure: - personal - social # yamlでこういう書き方はできなそう?
# area.yml admin: - /admin/* normal: - otherwise
# design/normal.yml component: # 登場人物と位置関係(デザイナーの関心事を設定ファイルに置くのは正しいのか?) - header - container: - menu - main: - breadcrumb - content - footer menu: # メニューに何を表示するか - portal # portal.yamlを解釈して勝手にサブメニューを作る - cart - recommend - history - setting header: - logo - logout footer: - jump_to_top # 画面最上部にスクロールするリンク - back_to_parent_page # 親ページに戻るリンク - link: # リンク集 - index - sitemap - help - copyright
# index.rb form( :action => "/login", :method => :POST, :value => :data_to_signin ) explain :how_to_reset_password with link to("/password/reset") explain :how_to_signup with link to("/signup") # 注:rubyでこういう構文のDSL作れるか知りません
これやると多言語化も簡単そうな気がしてきた。
関連
もちろんこういう話はすでに考えている人がいるはずで、実際以下の技術なんかはこれに近いことをやろうとしていると思います。
- twitter/flight · GitHub
- 白石俊平がいたころ。: Web開発を革命する(かも知れない)Web Componentsという仕様について
- Sencha TouchのMVCについて 〜スケールするアプリケーションを求めて〜
- 試したこと無いのですが、HTML書かないという点で似たスタンスだと思っています