| コメント(0) | トラックバック(0)

3 月 14 日 (土) に大阪梅田の株式会社ロックオン様大阪本社で PHP 関西勉強会 (宗近龍一郎氏主催) が開催されました。1 週遅れとなってしまいましたが、この記事ではその内容についてお伝えしたいと思います。今回は株式会社ロックオン様が開発されているオープンソースの E コマース CMS EC-CUBE 関連の 2 つのセッションと、筆者が発表させていただいた「PHP でメタプログラミング カスタム DSL 作成入門」、合わせて 3 つのセッションが行われました。

KUBO Atsuhiro

セッション #1 EC ショップ * 動画共有サイト セミナー - 株式会社キズナ 田端厚賢氏

午前に行われた最初のセッションでは、PHP で書かれた動画共有 CMS PHPmotion の概要を紹介いただきました。

PHPmotion は、ニコニコ動画YouTube のようなユーザ投稿型の動画共有サイトを作るための CMS と理解しました。

発表では触れられていませんでしたが、PHPmotion のライセンスについて書いておきます。PHPmotion の Web サイトには、

PHPmotion is 100% free to download and to use

と書かれていますが、ソースコードには、

License: You are not to sell or distribute this software without permission

と書かれています。少なくともオープンソースライセンスではありませんので、利用の際はその点に注意する必要があります。

セッション #2 PHP でメタプログラミング カスタム DSL 作成入門 - 株式会社アイテマン / Piece Project 久保敦啓

PHP でメタプログラミング カスタム DSL 作成入門

View more presentations from Atsuhiro Kubo.

さて、筆者の発表ですが、現在開発中の Piece_ORM の次期メジャーバージョンで採用予定の DSL を例に、PHP で独自の文法を持つ外部 DSL を取り扱う方法についてお話ししました。DSL は下記のようなものです。

association skills {
    table skills
    type manyToMany
    property skills
}

association computer {
    table computers
    type oneToOne
    property computer
}

method findByIdAndNote {
    query "SELECT * FROM $__table WHERE id = $id AND note = $note"
}

method findAllWithSkills1 {
    association skills
}
...

このような外部 DSL を取り扱うための Lexer Generator, Parser Generator として、それぞれ PHP_LexerGeneratorPHP_ParserGenerator を取り上げました。これらは、PEAR 自体を含む数多くの PEAR パッケージの開発者で、PHP 本体の開発者でもある cellog こと Greg Beaver 氏によるものです。PEAR のパッケージ情報ではこれらはともに alpha の安定度になっておりますが、まったく問題なく使うことができます。(すみません、少し嘘が入っています。実際に使われる場合は CVS 版をお勧めします。)

DSL の処理系を実装する技術と DSL を設計する技術は特に関係がなく、筆者自身 DSL の設計についてはまだまだ試行錯誤の段階です。書籍ジェネレーティブプログラミング (IT Architects'Archive CLASSIC MODER)には、DSL の設計技術について具体的な例を使った詳細な記述があり、非常に参考になります。

また、DSL の処理系の実装技術については、ジェネレーティブプログラミング (IT Architects'Archive CLASSIC MODER)Martin Fowler 氏の記事 (特に DSL Book WIP ) が参考になります。ちなみに、ロードマップによれば、この DSL Book は 2010 年に出る見込みのようです。

DSL はソフトウェアの自動生産を目指す筆者の方向性の中心となる技術要素のひとつです。DSL については、今後も機会があればお話ししたり記事を書いたりしたいと思っています。

セッション #3 (タイトル失念) - 株式会社ロックオン 福田博一氏

タイトルを失念して申し訳ありません。最後のセッションでは EC-CUBE 事業部責任者 福田氏より、EC-CUBE の開発の裏側をお話しいただきました。パートナー企業のグレードが、開発コミュニティへの貢献度 (バグ報告、コード提供、フォーラムへの回答など) によって決まるというインテグテートパートナー制度の設計の上手さに感動しました。コミュニティ規模に大きな相違があるため Piece Project には適用できないのが残念なところです。

また、EC-CUBEオーナーズストアで購入したテンプレートを、自身の EC-CUBE アプリケーションから取得・反映できる機能が素敵でした。

さらに、昨年秋の EC-CUBE の脆弱性「JVN#26621646: EC-CUBE におけるクロスサイトスクリプティングの脆弱性」の公開についてもお話しいただきました。福田氏らは既存のユーザの安全を第一に考え、JPCERT/CC, IPA に対策を相談した上で、下記の手順で公開を行われたとのことでした。

  1. 把握しているユーザに対する個別の案内 (修正済みファイルの添付は NG)
  2. 個々の EC-CUBE の管理ページ上での案内
  3. 一般公開

各機関への脆弱性の届出や公開について現場の動きを知ることができ、筆者にとって有意義なセッションでした。

おわりに

すべてのセッションが終わったあとは、お初天神通のニューミュンヘン本店で懇親会があり、明るいうちからビールを飲ませていただきました。

次回の開催も数ヶ月後にはあるかもしれないとのことで、その時はまた参加させていただきたいと思います。また、Piece Network のこともたまには思い出していますので、こちらも折を見て計画したいと考えています。

最後に、参加者および発表者の皆様、会場をご提供いただきました株式会社ロックオン様、主催の宗近龍一郎氏に御礼申し上げます。ありがとうございました。

トラックバック(0)
  • このブログ記事のトラックバックURL:
コメント