情シスは何度でも甦るさ。

OracleDB/Ruby好きの情シス部員がお送りします

噂のジェネクサスを試す2(まとめ)

前回から、少し時間が経って、ジェネクサスクイックスタートを試してみた上でのGenexusのまとめ。

Genexusとは(おさらい)

ウルグアイ産の超イケてる自動コード生成ツール
よく言われるメリットは、

  1. ノンコーディングでアプリ開発
  2. 画面の自動生成
  3. 環境に依存しない。(Genexusが対応している環境がかなり広い)
    1. メジャーな言語は、簡単に移行できる(Web⇒クラサバなどもOK)
    2. DBもOK(メジャーな商用DB、オープンソースDBにはほとんど対応)
  4. データモデルの変更を自動で正規化。データの移行も一緒に実施
  5. 短納期化

という感じです。使ってみての感想は後述します。
Genexusについての詳細の記事こちらを参照

Genexusの開発方法について

クイックスタートを使ってみた範囲では、Genexusの開発フローは以下の3ステップをクルクル回していく感じでした。

STEP1.データモデル設定


ポイント

  1. Transactionオブジェクトというオブジェクトを作成し、データモデルを設定する
  2. 項目名、データタイプ、桁数、Null許容、導出項目の場合は式を設定
  3. データの基本項目と詳細項目(従属関係)を表すことができる
  4. 異なるTransactionオブジェクトに同じ項目名があると、同じ項目と見なしビルド時に正規化

Genexusでは、データモデルをツールに入力するところから始まる。
それも物理レベル(型や桁数)なので、データモデルの設計はある程度完了している必要がある。
後でデータモデルを変更してもGenexusが、影響箇所の反映を自動でやってくれるので、とりあえず決まっているところからデータモデルを登録していくというスタイルになるだろう。
なお、影響箇所をどうやって判断しているかというと、項目名で判断する。
Genexusは、命名規則が厳密で、その規則で作成した同じ項目名は同一のものと見なすというルールがある。
確かに、1システムで同じ項目名にも関わらず違う意味を持たせるという設計は有り得ないので妥当な判断。

STEP2.入出力設定


ポイント

  1. Transactionオブジェクト作成後、タブを切り替えると、既に画面が自動で生成
  2. Webやクラサバ、どちらも選べる。同じ機能であればGenexusへの一回の設定でどちらも開発可能
  3. データの追加、更新、削除などの基本機能も自動で生成
  4. モーダルウィンドウや入力項目チェックなど、javascriptAjax)で実施
  5. PDFファイル、グラフなどの挿入も可能

ビルドをしなくても、タブを切り替えるだけで、リアルタイムに画面が変更されるのは恐れ入った。
画面生成機能は使えないとの噂だったが、基本機能なら全然使えるのでは。と思った。
(Genexusでビジネスロジック部分をWebサービスとして作成し、画面部分はBiz Browserで作成しSOAP連携するのが流行りだそうだ)

STEP3.ビルド


ポイント

  1. ビルドすることにより、データモデルを変更した場合でも自動で正規化
  2. どこをどう正規化するかの確認もできる。さらに、データの移行も実施
  3. プログラミング不要なので、いきなり結合テストから実施できる

これにより、ユーザーの変更要求にも柔軟に対応可能でき、機能単位で要件を固めて開発していくアジャイル開発に向いている
ビルドには、規模が大きくなるとそれなりに時間がかかるようだ。
今回のサンプルアプリでは、1分もかかっていないが。
変更に際してDBのテーブル構成に変更がある場合は、上記のような確認画面が出るので、Genexusが何をやろうとしているかは、チェックはできる。

サンプルアプリについて

では、クイックスタートで作ったアプリについて簡単に説明します。

  1. 請求管理アプリ( WEBアプリ)
  2. データモデル:3つ
  3. 画面:10くらい(9割自動生成)
  4. 作成時間:資料上では3時間、実際6時間(資料のページ数:65ページ)

データモデルは超簡単に書くとこんな感じ

自動生成した画面を載せてみます。

請求書一覧画面

メインの画面です。
各部分の説明は以下の通り

日付に日付じゃない値を入力してフォーカスを外すと、その場でエラーが表示。


請求書新規登録画面
一覧画面から遷移

顧客番号の上矢印ボタンを押すと、Javascriptによるモーダルウィンドウが開いてマスタに登録されている顧客一覧から選択できます。

画面については、本気で9割以上自動生成ですので、何もせずにこれだけの画面が生成されるのは驚愕。
その他にもたくさん画面ありますが、まぁ同じような感じなので省略

評価

サンプルアプリ作ってみた上での評価を、品質、コスト、期間の視点から書いてみます。

分類 項目 評価 説明
品質 ノンプログラミング 印刷ルールや、表示、入力項目のルールなど、一部固有のスクリプトを記述する必要がある
  画面の自動生成 基本的なレベルの画面は自動生成。Javascriptを使用したりイメージよりもすごい
  環境に依存しない OS,言語,DBなど、意識する必要が全くない。変更する際も、特別な手順は不要
  変更内容の反映 データ項目に変更があると、自動で関連を調査し正規化。データの移行までも実施
コスト ライセンス料 × ユーザーライセンス250万(保守60万(初年度不要))
  教育コスト × ベンダーによると1ヶ月間の教育期間が必要との回答。実際は、もっと必要との印象。それほどの教育期間、コストをかけれるかが課題
  導入コスト 開発サイクルにルールがある企業だと、Genexus用にルールを変更する必要があり時間がかかる
期間 短納期化 Genexusに任せてしまえば、画面設計、DB設計も大幅に作業が減る。プログラミング部分は勿論大幅に減少

評価:◎超すごい、○すごい、△まぁまぁ、×ダメ

総括

ツールの機能としては、かなり凄いが、やはりコストの部分がネックになる。
ライセンス料ももちろんだが、問題は教育コスト。
それなりのプログラマーが、有料の研修+自己学習により、1ヶ月でそれなりのものが作れるところまでイケるという話だったが、開発の考え方が根底から覆かねんツールなので、本当に1ヶ月でモノになるのか微妙なところ。
どうしても、小規模なシステムで試し試し使ってみてという進め方になるかとは思うが、システム開発の担当者が多ければ多いほど、ライセンス、教育コストがかさんでしまうので、少数精鋭のユーザー企業で高い効果があるという事例が多いのは頷ける。

SIerがGenexusを使って、システムを構築するという事例も報告されているが、Genexusを使えば短納期低価格で開発ができるが、エンドユーザー側が必ずしもコストが安くなるというわけでもない(SIer側は、ライセンスや教育コスト分を上乗せする)ので、短納期化、途中での仕様変更に対する柔軟性をウリにする方向だろうが、そこはユーザー側からは、ちょっとメリットを感じにくくなってしまい、それよりもそんなツールの開発で本当に大丈夫かいな。という不安の方が勝ってしまうのではないだろうか。
それに、Genexusを使用した場合はアジャイル開発が向いているが、そもそもアジャイル開発を請負えるSIerはまだ少ないのではないだろうか。(契約形態が難しい)


というわけで、私が思うGenexusで速攻で効果が出る企業の特徴

  1. ユーザー企業
  2. システム部門が少数
  3. システムを内製化したい
  4. システム開発工程におけるルールや縛りが少ない(新しいものを受入やすい)
  5. もっぱらシステムは、社内向けばかり(外部向けだと自動生成の画面だと対応できない部分がありそう)

私の会社では、2番と4番がひっかかって簡単には導入できそうもありません。。。