Category Archives: Mayaa

プログラマーとデザイナーとの協業について←結構本気で考えてること

零細企業の一プログラマーなんてのは、いわば「なんでもやさん」なので、これといった専門分野を持たない僕ですが、強いて言うなら今までで一番とりくんできたことが、表題のことです。その様子は次のエントリで書きました。

僕としては次のステップを考えなければならないので、こんなこともしていました。

で、最終的に、(こんなことは分かっていたのですが、)

車輪の再発明だったと。良いんです。一度は実装してみたかった。

さらに、SEO、SMO対応は、既に2年くらい前の記事ですがこちらの記事で、解決策が提示されています、

あとは、これらを全部からめて、appengine上に構築して遅くないか、実装しやすいかを見るだけで終わりなのですね……ちゃんちゃん♪

まあ、それが僕の仕事です。

きっと続く…

追記

しかしながら、負け惜しみを言えば、技術的に「できる」はゴールじゃなくて始まりであって、「つかえる」がゴールだと思っています。

今、うちのデザイナーさん(なんどもブログで登場させてしまってごめんなさい)が、mayaaのidベースでデザイン組み込みをやってくれていますが、彼女はmayaaをあたかもcssの一種のように理解しているのだと思います。もし、mayaaが組み込まれていなければ、動かないデザインを打ち込むだけの仕事でした。これがあるおかげで、サーバ上で動かしながらシステムを作り上げる、プログラマーにしか味わえなかった楽しみを味わっているのではないかと思います。

プログラミングの楽しみをより多くの人に開放したい。それは見せかけのものではなく、本当に使える物を作れるようにしてあげたい。そんなことを思って日々やっています。

追記2

このエントリでやっているように記事にリンクして、はてぶカウントを書くのって、みなさんどうやってるんでしょう。今回は手動で以下のような書き方したんですが、すごい大変でした。すみません、教えてください。

<a href="http://d.hatena.ne.jp/s-ishigami/20101124/1290589045">pureってテンプレートエンジンが良さそう</a><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/s-ishigami/20101124/1290589045">

Mayaaでお客様が感動してるんですよ!

うちの会議室、大きな声などは執務室に漏れてしまうのですが、ある日聞いてしまったんです。
「これはすごい。感動した!」
営業の人が、MayaaによるHTMLテンプレートで、デザインがカスタマイズできるところを、デモしてたみたいなんです。

1年前から、ECサイトのフロントのビューをmayaaを使った完全HTMLでデザインできるようにしてきました。ヘッダーとかフッターも、iframeをいじってそれっぽく見せたりしています。徹底したIDの命名規約と追加更新管理によって、デザイナーさんがプログラマーに質問しなくても自分でデザインが出来るようになっています。また、Mayaaの拡張性を最大限に活かして、mayaaファイルの多段化や、PathAdjusterの拡張、キャッシュ管理等、地道にカスタマイズしてきました。

評判は聞いていたのですが(逆に使いにくいという意見もあった)こんなに生の声が聞こえたのは初めてです。この言葉を聞いてしまった僕こそ泣きそうになりました。
僕はMayaaの開発者の方々に感謝します!

Mayaaで動的なidを作るw

Mayaa的には非推奨のはずで、マニュアルにも全然記載がないのだけど、どうしてもと顧客から要望があったので、次のように実装しました。

テンプレートにこのように書いたとします。

<span m:id="HOGEHOGE_NAME_OF_HOGEHOGE_ID" m:HOGEHOGE_ID="1">dummy</span>

で、実はHOGEHOGE_NAMEは、Map hogehoge に、HOGEHOGE_IDをキーとして与えられているとします。

public static Map<String, String> hogehoge = new HashMap<String, String>();
static {
hogehoge.put("1", "ほげほげ");
hogehoge.put("2", "ふがふが");
}

この場合、このようにすれば、m:HOGEHOGE_IDをキーにして「ほげほげ」等を返すidが作成できます。

<m:write m:id="HOGEHOGE_NAME_OF_HOGEHOGE_ID" value="${hogehoge.get(originalNode.getAttribute(
  Packages.org.seasar.mayaa.impl.engine.specification.SpecificationUtil.createQName("HOGEHOGE_ID")
).value)}" />

参考にさせていただいたのは次のML投稿です。
http://ml.seasar.org/archives/mayaa-user/2009-May/000793.html

本当は、Namespaceにmayaaの物を使わず自分でちゃんと定義するべきでしょう。

この使い方はMayaa作者が意図した範囲から外れていると思うので、今後のMayaaバージョンによってはサポートされなくなるリスクは0ではないでしょう。