February 21, 2008
10年という長い間、名前が残り続ける有償プロダクトとはなんなのか?を考えさせられるイベントでした。
最初に紹介された、今回のイベントのために作ったと言う開発者インタビューはとても素敵な内容でした。
Dreamweaver は "19 dreams" というシナリオをもとに開発されました。その19 dreams に含まれていたコンセプトを紹介すると共に、生みの親 Kevin Lynch による開発秘話をご紹介します。
結論を書いてしまえば、19 dreamsという要求仕様が最初に描いた内容が、10年続くポイントなんだと思った。
要求仕様というよりは、ビジョンと言うべきかも。まだ実現できていないものもあるみたいだし。
一つのビジョンを中心に置くことでやるべきことやらないべきことを定める。そして、それがある層のユーザーに支持されて、売り上げを上げ続ければ、次の進化ができる。その関係性の中で、「継続的改善」を行う。
チームの開発者は、最初はHTMLが何かわからなかったとのこと。そして、現Adobe CTOのKevin Lynchというビジョナリーの元で、現場で働く制作者コミュニティとうまく連携しながら発展してきたこと。そんな話が素敵だった。是非、Webで公開して欲しいです。
次のCS4の話もちょっとだけ紹介してくれた。(まだ仕様は変わる可能性があるとのこと)
次は、SafariエンジンであるWebkitを内蔵して、ライブプレビューができるようになること。
Ajaxアプリなどの状態遷移を捕捉するためにJavascriptの一時停止などができるようです。
開発をメインにする僕が10周年記念イベントに参加できたのは、Dreamweaverというプロダクトが徐々に本当に開発者層とリンクするかも?!というところまで来たからかもしれない。
今は、Spry FrameworkというJavaScriptフレームワークが僕とDreamweaverを繋げる。
あと何世代かを経由して、もっと僕も日常的にドリを使って、いろんなことができるようになるだろう。
今回来日していた、CSアプリ間のワークフローを担当するDouglasさんに、railsやSmartyやCatalystなどの、「HTMLのテンプレートファイルがWeb領域から隠蔽されているアーキテクチャ」に対応できないか?というお願いをしてきました。
今のDreamweaverの構造は、サイトルートからフォルダで追えるパスを管理してくれるわけですが、テンプレートファイルは、物理パスとURLが全然違うマッピングになっているので、ここをどうにかして結びつけてくれるとありがたいわけです。
例えばmovatwitterは、OS上では
「[プロジェクトのroot]/app/view/user/log.tpl」
というSmartyテンプレートになっています。これをプレビューするときに、
「http://test.movatwitter.jp/なにやら/user/log」
という全然違うURLにマッピングしてくれれば、テンプレートを編集しながら、すぐにプレビューできる。画像やcssは、
「[プロジェクトのroot]/public/img」
「[プロジェクトのroot]/public/css」
と言った公開領域のimgフォルダやcssフォルダなどに挿入されるわけで、これDreamweaverの機能を考えると簡単じゃない。SmartyテンプレートがURLベースのシンボリックリンクを持っているような感じになるのかな。
railsなどのメジャープロダクトに関しては、ルーティングを記述したファイルを読んでくれると良いですね。struts.xmlとか?!
テンプレートエンジンを使ったサービスを一度作ってしまうと、後の改善はtplのファイルをいじる日々になるので、今のままだと仕事でDreamweaverを使うことはできない。
それに対応するのはDreamweaverの本分ではないかもしれない、Dreamweaverが制作の効率化を支援するアプリであるなら、その部分が効率的である必要性は高くないWebのサービスでは不要かと思っていたが、今後、僕のような開発者もチームのワークフロー連携の中で、Drewmeaverを使うことが可能だとすれば!?
少なくともCS4で見たライブプレビューに関しては、今後の10年に対してそんな期待をさせてくれる内容だったなぁと思っています。
ところでDreamweaverは、Dreamweaver自身がJavaScriptエンジンを持ち、僕らがいじるUIがJavaScriptで記述されている、実にイマドキなアーキテクチャでできています。だから、プラガブルに「機能拡張」で拡張可能なんですよね。最近のshibuya系Javascriptエンジニアとうまくリンクすれば、もっと面白いことになると思うんだけどな。
ドリの最初の頃から関わっているアンカーテクノロジーの植木さん開発で、i-modeのコーディングに対応した機能拡張が出るそうです。絵文字の挿入機能など日本独自の機能が追加されていて楽しみです。
何が良いってFireworksなども自動でコントロールしてバッチ処理みたいなのができること。WordとExcelをマクロで操作してドキュメントを自動操作するように、CS3をコントロールしてWebサイトを作るようなことがJavaScriptで書けます。って書くと、ちょっと生産管理技術っぽくイメージされちゃうかな。
あと僕が参加した大喜利の発表の後、Spry Widgetについて質問していただいた方で、Spryのエラーメッセージを全然違うところに表示したいという質問に、開発者脳で変なレスをしてしまいましたが、質問者の要求への適切な回答としては、
「エラーメッセージはCSSで設定するので、CSSでposition absoluteなどを使うことで位置をずらすことが可能」
という答えでしたね。この辺は、今回のイベントの内容をAdobe Developer Connectionの記事にするのでそこで書きますね。他にももうちょっと良い解決法がないかを考えてみます。
Smarty なんかのテンプレートを使う時は、サイトルート相対パスを使っておくと問題を回避できる気がしますね。
なので、自分で最初からサイトを作れるときは間違いなくサイトルート相対パスを使っています。
デザイナー等には、Web サーバーにアップしてからじゃないと確認できない(ファイルシステム上に置いてある状態では画像等のパスが異なるので)という点で不評ではありますが。
イベント楽しませていただきました。さっそくSpry1.6を使ってみようと思ったのですが、Adobe Labsライセンスに、「プレリリース版と書いてある物は商用利用不可」と書いてあるように読めますが、1.6はPrereleaseと書いてあるので商用利用はできないと言うことになりますか?
http://labs.adobe.com/misc/terms_of_use.html
たびたびおじゃまします。いま1.6のサンプル見てます。「Spryのエラーメッセージを全然違うところに表示したい」の質問の件ですが、確かページが長いから、エラーがあるのかないのかわからない可能性がある、と言うことだったと思うので、各項目用のエラーメッセージとは別に、
http://labs.adobe.com/technologies/spry/samples/validationwidgets/Single_error_message_onSubmit.html
の#error_zone要素のようなものを目立つ場所に配置すればOKなのではないでしょうか。1.4でも使えるのかわかりませんが。
>twkさん
SpryのライセンスはBSDライセンスなので、利用も改造も制限がないと思っています。
引用されたURLのprereleaseが適用されるのは、他のアプリケーションのライセンスと思われます。
ダウンロードしたspryのlicense.htmlを見てください。
あとerror表示は、その辺の記憶があったので質問の時にうまく答えられなかったのですが、確か1.6あたりに追加された機能だと記憶しています。
ちゃんと調べて、developer connectionの記事の方には書きますね。
僕がとぼけてなければ、1.4にはそういう機能はなくて、まさに同じ事を実現するためにspryを改造してました。機能要望を出したような記憶はあるので、ひょっとしたら採用されたのかも?!
あと他の解決法としては、cssの方で位置ずらしちゃえばいいじゃんと他の講演者からツッコミを受けました。
質問された方への回答はそれで良かったんですよね。ついつい開発者脳で答えてしまって反省しています。