この記事は以下のURLに引っ越しました。
http://www.maid-cafe.work/2015/34
このブログの内容は個人の見解であり、所属する組織の公式見解ではありません
この記事は以下のURLに引っ越しました。
http://www.maid-cafe.work/2015/34
これは Mayaa Advent Calendar 2015 の11日目です。昨日は「Spring BootのテンプレートエンジンにMayaaを使おうとしてみてできなかった #javaee #mayaa」でした。
ブログを10日間書いてきましたが、そろそろネタがきつくなってきました。でも、あと2日書けば、折り返し地点!マラソンだと思って頑張ります。
昨日は残念な結果となってしまい申し訳ありません。その後、何人かの詳しい方々にアドバイスを頂きました。
https://twitter.com/megascus/status/674901495137996800
https://twitter.com/making/status/674913610662064128
https://twitter.com/tty_twt/status/675299564476235776
https://twitter.com/tty_twt/status/675299730365145088
必ず25日までの間にリベンジ記事を書来ます!
さて、今日のネタはMayaaの拡張ポイントです。
Mayaaは非常に柔軟に作られています。うまく使うと、テンプレートエンジンをオレオレ言語並みに拡張して独自の世界を作れてしまいます。
そこで、今日はその中でもよく使う拡張ポイントを紹介します。
これは5日目に紹介しました。aタグのhref属性やimgタグのsrc属性に書いたパスを自動調整することができます。
これによって、いちいちm:idを作らず共通リンクを作ることができたりしますし、タイムスタンプをパラメータに追加したりできます。
拡張ポイントとしては簡単な方なので、Mayaaに慣れるために最初に拡張してみると良いと思います。
MayaaはJavaScriptエンジンRhinoと標準で連携しています。その部分を司っているのがこの部分で、ここを拡張すると、例えばRhino以外のスクリプトエンジンと連携することもできます。逆に、重いスクリプトエンジンを回避してJavaコードに直接連結して、高速化を図ったりもします。
ScriptEnvironmentは、例えば、スクリプト実行中にエラーが起きたらログを取る、画面を破綻させないようにする、エラーの行番号をポップアップさせるというような細工をするときの拡張ポイントです。地味ですが結構大事な拡張箇所です。
テンプレートやMayaaファイルのデータそのものをラップしたオブジェクトです。パスとマッピングして、ファイルシステムやURL、あるいは別のストレージから、マークアップファイルを取得する部分を司ります。
ここを拡張することによって、テンプレートを置く場所を拡張したり、ファイルシステムを使えない環境でDBにテンプレートを拡張するといったことが実現できます。
ただ、スピード勝負であまり重たいところにデータを置くと、Mayaaが相当もっさりエンジンになってしまうので注意が必要です。
m:ifや、m:writeなどのプロセッサーは独自に作成することができます。Mayaaでサイトを作ってると、「いつも同じようなMayaaファイル記述するなあー」と思うことがあります。
また、ifプロセッサーを改造して、「テンプレート上に m:NOT="" という属性を追加したら、逆条件になる」というようなものを作ったりできます。
Processorをマスターすると、Mayaaを相当強力に使いこなせます。
堂々の1位は、InjectionResolverです!
これは、テンプレートとプロセッサーをひも付けする部分で、これをうまく使うと、Mayaaファイルを使わないテンプレートエンジンや、MayaaファイルがXMLなのは嫌だからJSONにするというようなこともできてしまいます。
ここまで来ると、もうMayaaというより、独自テンプレートエンジンと言えるでしょう。
2015/09/26、5年ぶりに開催された、
Seasar Conference 2015 Not 同窓会
に参加し、次のスライドでLT登壇してきました。
僕はこれまでにもMayaa関係の勉強会登壇を繰り返してきました。
JJUG CCC 2013 Fall: テンプレートエンジンを利用してプログラマーとWebデザイナーが共同作業をする上で大切なこと
JJUG ナイトセミナー 2013/08: from JSP to Design-friendly Template Endine JSPからMayaaに移行した本当の話
このブログでも、Mayaaについての発信が多めです。
5年間Mayaaを使って思ったこと
Mayaaでm:idの解決の仕方を自分好みにカスタマイズする方法
MayaaなどRhinoを使っていてハマること。It is not a function, it is String
2年間Mayaaを使ってわかったこと その2
そろそろ2年間Mayaa使ってわかったことを書く
MayaaでHTML5のスマートフォンページを作る際にはまったこと
Mayaaファイルを命名規則から一括作成するEmEditorマクロ
MayaaでGuice2.0 AOPを使うとうまく動かない件〜解決編
MayaaでGuice2.0 AOPを使うとうまく動かない件
Mayaaは、自分が大変お世話になっているOSSで、不具合報告などでOSS活動にも関わらせていただくなど、技術者として成長させてもらった思い入れの強いライブラリです。
この日、作者である栗原 傑享さんや、現在メインコミッターを務められる須賀 幸次さんがいらっしゃるということで、彼らへの感謝の気持ちを表現したいという、実に個人的な動機がLTをした理由でした。
それにしては、Seasar Foundationの重鎮の方々に好意的に受け入れて頂いたようです。考えてみるとMayaaが生まれた土壌である、Seasarコミュニティの存在も肯定する内容でもあったからかなと思います。そういったわけでは、Seasarコミュニティーに対しても感謝の気持ちを明確に表すべきでした。この場を持って、感謝の意を表明致します。
Seasar Conference は2010年を最後に開催されず、Seasar2も既に機能の追加が中断されていました。既に、JavaのトレンドはSpringやJava EEに移行しており、Seasarは時代の中でフェードアウトしたように見えていました。その中で、なぜ?今 Seasar Conference なのか?と多くの方が興味を持ったと思います。
蓋を開けてみると、5年前まで、あんなに先導的なメッセージを発信して日本のJava系エンジニアの最大のカリスマだったひがやすをさんが、どうも、中立的というか、大人な話し方をされている印象でした。まして、Seasar2のサポート終了(2016/09/26)を宣言される。あれあれ、なんか暗いぞ??
そこへ栗原 傑享さんの喝が入ります。どどどんな展開((((;゚Д゚))))ガクブル
5年間Seasar Conferenceが行われなかった裏で何が起きていたかについては、理事長の橋本さんのセッションで説明がありました。開催されなかった理由:
NPO活動を行うにも、イベント一つ行うのも、裏での苦労が絶えないのだなあということが伝わりました。その一方で、福岡の方では「明星和楽」というイベントが行われ、これは「テクノロジーとクリエイティブ」にフォーカスしたイベントで、業界の流れがSIからスタートアップに向かう中での実験として成功だったそうです。
自分は新参者なので、知りませんでしたが、Seasarコミュニティを支えていた方々は、SIerの精鋭たちが中心であって、SeasarとSI・受託開発という枠組みは切っても切れない存在のようです。2010年頃には、ひがさんはSlim3をリリースしていてAppEngineなどでのスタートアップ志向にシフトしていたし、橋本さんの経営されるヌーラボは、Cacooなどのサービスを打ち出していたので、どちらかと言うと、サービス指向をもともと持っていた人たちだと思っていましたが、SIにおける、エンタープライズJavaからのニーズがSeasarの原点だったのです。
2010年から、2015年の間に震災やスマホブーム、ソシャゲブーム、クラウドの興隆を経て、今時「受託かスタートアップか」という議論自体が古臭いと思いますが、Seasarというコミュニティは、その原点と、その名前が足かせとなって、進むべき方向性に難儀していたそうです。こういうことを赤裸々に話してくれたことに大変感謝します。
個人的には、僕のような、当時接点を持てなかった者がかつてSeasarで有名だった方々と繋がることができたのが大変ありがたく思いました。懇親会にも参加させていただきましたが、これからどうするのかというような議論が活発になされているようです。解散か?改名か?なにかの転換があるのか?Seasarの次の動向に期待したいです。
Mayaaの開発者にして、グルージェントの創業者で、サイオスの幹部として、現在はシリコンバレーに生活されてスタートアップをされている栗原 傑享さんの発表は刺激的でした。
アメリカでは、徹底的に生活の効率化が行われて、公共インフラが民間企業の寡占状態にある。例えば、警察を呼べばお巡りは来ずに、メールアドレスを聞かれて、CoplogicというWebサイトから被害届を出すように言われる。そのCoplogicは民間企業!部屋を探すときはcraigslistが必須。Coplogicもcraigslistもナニコノ垢抜けないデザインは!
「少年野球はミスも出やすいですから、基本積極プレーで」(引用:MAJOR 2nd 第25話)
これがアメリカのスタートアップのメンタルのようです。僕たちは、FacebookやGoogleといった超巨大な企業しか知らないために、すごいイメージがありますが、あれはメジャーリーグ、シリコンバレーのスタートアップは大半が少年野球!(マイナーリーグですらないのか。。。)彼らはCSSも書かずに平気で2塁まで突っ込んでいくんだそうです。
このメンタルでくると、要件定義をして、スケジュールを引いて、アサインして……のやり方では間に合わないのは確かですね。
前述のように、アメリカは公共インフラが徹底的に効率化され、民間企業の寡占状態にあります。この状況は、間違いなく未来の日本にもやってくる!今のうちにcraigslistをパクったら儲かるwwwまあ、100パーセント同じにはならないと思いますが。(^^;
稚拙な考察ですが、2010年ごろ不況もあり、業務システムのIT化も既にコモディティ化が済んでしまった以降、今までの形態のSIerのニーズは減少し、クラウドなど黒船の到来によって、この世界は縮小するのは明らかでした。
では、多くのITエンジニアが職を失ったのかといえば全く逆で、未だに「エンジニアが足りない」と言っている。何が起きたかといえば、これまでよりも多くのことにWebやスマホなどのITが使われるようになった(リアルなお店でものが売れなくなった)と言われます。
しかし、この業界の流動性は非常に速く、今までみたいにじっくり良い物を作っていくより、手が早い方が求められました。そうすると、1からスクラッチでシステムを作るより、WordPressを改造して目的を実現するとか、既存の何かをいじって楽をできる方が重要で、そうなってくるともう言語やフレームワークがどうこう言っていられない。WordPressに乗っかるのか、Google Appsに乗っかるのか?
ただ乗っかっているだけだとプラットフォーマーに吸い取られる仕組みになっています。そこで自ら何らかのプラットフォーマーになるか、あるいはレベニューシェアなど成果にコミットする方向性がこれから成功する秘訣なのかなあと思います。
そう考えると、2010年と今とでも時代は全然違うなあと思います。
ここまで理解したところで、何もできていない自分に比べたら、Seasarの中心の方々は僕よりも何十倍も優秀な方々の集まりなので、一人ひとりはこの波の中で成功されているのでしょう。でも、Seasarという糊がなければ、彼らはつながらずSeasarは時代の流れの中で役割を終えようとしている中で、外部の者がどうこう言うことではありませんが、同窓会だったとしても十分に価値があったと思います。そこに行って、憧れの彼らが今どうしているのか、話を聞かせてもらえたことは、新参者の自分として、大変刺激的で大変貴重な一日でした。
今、自分の年齢はSeasarの人たちが活発に活動をされていた年齢くらいに位置します。同世代のエンジニアを見渡すとSeasarを作る人は出てこないだろうなあと思いますが、CEOやCTOを名乗っている友人もいますし、ある意味、スタートアップ時代を生きています。そんな中で、僕らは、一まわり上の方の貴重な経験をもっと吸収して、自分たちこそ時代を盛り上げていかなければならない時ではないでしょうか。