「GeneXus, Wagby, Web Performer 徹底比較セミナー」でわかったこと

f:id:ynie:20140109124530j:plain

さった2014年2月10日に催された「GeneXus, Wagby, Web Performer 徹底比較 – 自動生成ツールの効果的な使い方セミナー」は120名のお申し込みをいただき、満員御礼となりました。当日の来場者数も107名となり、主催した超高速開発コミュニティ幹事の立場として、改めて関心の高いテーマであると感じたところです。ご来場いただいた皆様、ありがとうございました。

開始20分前に、発表者*1による「じゃんけん」で発表順が決まりました。Web Performer, GeneXus, Wagbyという順となり、私たちは三番目(最後)になりました。これは結果的には好都合で、二社ともスマートフォン向けデモがあったため、急遽、この内容を加えさせていただきました。(実は当初、予定していたシナリオには含まれていませんでした。)

さて私自身、この企画をとても楽しみにしていました。いずれもお客様先でよく競合する製品ですが、どのようにしてアプリケーションをつくっていくのか、じっくり拝見したことはありませんでした。今回の企画は製品の優劣を決めるものではありません。むしろ「似ている製品のように感じられるが、実際にはここが違う。」という各ツールの思想や特徴を学べる機会として位置づけていました。以下、各ツールの発表を聞いて、私なりの視点でまとめてみました。

Web Performer

GeneXusやWagbyと違って、データベーススキーマは自動生成しません。はじめにデータベーススキーマ定義をRDB上で行い、そのスキーマ情報を Web Performer の設計情報に(手動もしくは半自動で)反映させるところが出発点になります。ですのでデータベース技術者からみると、既存のテーブルを活用しやすいでしょう。

データベースを操作する例として、二つの項目を検索条件に指定したあと、SQLに近い構文をエディタで入力し、検索ルールを規定しました。生のSQLではなく、これをラップした形で開発者が楽できるように、という配慮がされています。

そして複雑な業務処理については、別途開発者が作成したモジュールをどのタイミングで、どういうパラメータを付与して呼び出すかを指定することで対応します。Web Performerが自動生成したコードは変更しないというのが基本方針のようです。アピール点は「オブジェクト指向を知らなくてもJavaベースのWebアプリケーションが開発できる」でしたので、「RDBの知識があって、Javaは初心者レベルという技術者」であれば十分に使えると解釈しました。

会場からの質疑応答で「Web Performer は Struts 1 系ベースだが、今後はどうするのか。」というものがありました。鋭いです。実は Wagby もこの点に悩んだ末に Struts 1 系から Spring MVC へ乗り換えたところでした。「現在、検討中」ということでしたので、今後はどの技術をベースにされていくのか、興味があります。

GeneXus

GeneXusは「ナレッジベース」であるという表現をよく伺っていましたが、デモをみてその本質は Web Performer や Wagby がいう「リポジトリ」と同じであることがわかりました。言葉は違いますが、つまり設計情報のことです。

GeneXusはWagbyと同様、設計情報が起点になります。設計情報からデータベーススキーマを作成し、画面処理や業務処理のコードを生成します。設計情報の多くはパラメータ化されていますが、さらにGeneXus言語によって複雑なロジックも記述できます。

開発者が必ず気にする「生成されたソースコードの扱い」ですが、生成コードに手を加えることは想定されていない、でした。仮に手を加えたとしても、GeneXusが再び自動生成を行うと上書きされてしまいます。これに対するGeneXusの回答は、ソースコードに手を入れるのではなく、GeneXus言語を使う、です。GeneXusの世界で完結できればソースコードに手を入れる必要はありません。よって Java や C# はあくまでも実行環境であり、生成された Java コードがどういうものかはまったく気にしないでいいということになります。

まとめるとGeneXusは「設計情報 + これを補完するGeneXus言語」によって、Javaなどのオブジェクト指向を学ばなくてもWebアプリケーション開発ができる、というのがアピール点になります。設計情報のカバー範囲は広く、多くの業務処理はパラメータ設定によって実現できることも特徴です。*2

Wagby との違い

それでは2014年2月時点における Web Performer, GeneXus と Wagby の違いは何か。表にまとめてみました。

製品 設計情報の呼び方 テーブルスキーマ生成 開発ベース 生成コード 推奨カスタマイズ方法 求めるスキル
Web Performer リポジトリ なし Eclipse拡張 Java (Struts) 外部モジュールを呼び出す Java技術者(初心者も可)
GeneXus ナレッジベース あり Eclipse拡張 Java,C#,Ruby(独自コード) GeneXus言語で対応 GeneXus開発者(オブジェクト指向は不要)
Wagby リポジトリ あり Webブラウザ Java (Spring MVC+Hibernate) 生成コードの特徴を知ってカスタマイズ 非プログラマ+Java技術者(中級レベル以上)

ここで私が感じる最大の差別化ポイントは、開発者に求めるスキルです。

Web Performer はRDBを操作でき、Javaは初心者という方も使えるようにという意図を感じました。Java EE 6/7 でも Spring でもなく、オーソドックスな Java をベースにしていることも、採用理由の重要なポイントになりそうです。

GeneXus はテーブル定義を含め、完全に GeneXus が提供する世界を満喫してもらえばHappyという意図を感じました。Java EE の世界とは切り離しており、Java は単なる実行環境でしかありません。コード生成型ですが、生成コードに手を入れる必要はない(そしてオブジェクト指向を学ぶ必要がない)ということが採用理由の重要なポイントになりそうです。

そして Wagby は「プログラムを書かずに設計情報の定義に特化する人と、OSSの知識をもった中級以上の Java 技術者の組み合わせ」で開発してもらおうという意図があります。独自言語は提供せず、複雑な業務処理は Java で書きます。Wagby は多くの OSS をベースとしているため、業務処理を書く際にはこれら OSS の知識が求められます。よって Java 初心者には敷居が高く感じられるかも知れません。書くべきコードの全体量は削減されますが、自動生成の対象外として残った部分はそれなりの実装技術が要求されます。採用のポイントは、このような組み合わせからなるチームをいかにして実現するか、です。

例えばユーザ企業が自社システムの内製化で使おうとするなら

Web Performer なら、RDB(テーブル設計)と Java の技術者で開発チームをつくります。Java初心者であっても活躍の場があります。

GeneXus なら、Java や C# といった開発言語とは一線を画すと決めてしまいます。GeneXus の習得によって、すべてを一つの技術でカバーします。(スマートフォンアプリ開発にも対応できます。)

Wagby なら、設計情報を定義できる業務系技術者と、カスタマイズコードを作成できるJava中級以上の技術者の両方で開発チームをつくります。ただし後者は外注化できます。(例えばWagby販売代理店が担うことができます。)ユーザ企業は前者の設計情報に集中していただくようになります。その部分ではJavaやEclipseはいっさい登場しません。自らの関わりをはっきりと区分し、自動生成できるところを素早くまとめ、自動生成できないところ(複雑な処理)に外部の力を加えて完成させます。つまり自社だけの内製にこだわっていません。*3

まとめ - 三者三様があらためて浮き彫りになりました

Web Performer は発想がシンプルであり、現在の開発チームで採用することにあまり抵抗はなさそうです。GeneXus は従来の CASE の延長上にあり、完全性を求めています。一つの開発環境ですべてをカバーしたいというニーズに合致します。Wagby は逆に完全性を求めないという選択をしました。その代わりWagbyが生成するJavaコードを読み解く必要があります。99%は非プログラマによって自動生成できたとしても、残った1%の実現はJavaプログラマに参加してもらう、というのがWagby流です。

あくまでも私の視点ではありますが、同じ自動生成系といっても、ここまで使い方が異なるということがはっきりしたのは大いに収穫でした。一つ言えるのは、どのツールベンダーも「エンタープライズアプリケーション開発はまだ発展途上である」と考えているということです。いずれもさらなる改善を指向しており、その前提として「開発生産性はもっと高められる」という問題意識をもっています。開発プロジェクトの成功をマンパワーの投入ではなく、自動化で成し遂げたいという気持ちは共通しています。

超高速開発コミュニティでは、引き続き3月以降も同様のセミナーを企画しています。
http://www.x-rad.jp/

このような場をとおして、ツールの可能性がより高まって開発者が楽をし、ユーザー企業がメリットを享受できるようになる方法が見つかることを願っています。

次はジェネレーティブ・プログラミングの勉強会へ行ってきます

このセミナーが無事に終わってほっとしたのも束の間、週末は名古屋で開催される「ジェネレーティブ・プログラミングの世界」に登壇し、また勉強してきます。
http://atnd.org/events/47150

Wagbyの目指す方向は、ジェネレーティブ・プログラミングという世界の実現にあります。学会のような雰囲気かも知れませんが、理論と実践が同じ場で議論できるのはとても楽しみです。まだ参加可能なようですので、興味のある方は是非、お越し下さい。

*1:Wagbyは、代理店である株式会社エフ・エフ・ソルの古宮さんに発表していただきました。ありがとうございました!

*2:Java を直接、アドオンコードとして追加することもできるそうです。ただ思想的にはできるだけ GeneXus 言語を使った方が良いと感じました。

*3:もちろん自社に1名(以上)Java技術者を確保できれば最強です。