はじめまして。小舘と申します。
私もそろそろ「ブログを書こう!」と思い立ちまして、
GeneXusに関するTipsや、開発時のノウハウや手法・ツールなどを紹介してまいりますので、
チョットた息抜きに、楽しんで頂ければ幸いです。

 

さて、第1回目の内容ですが、

「おひとり様開発におけるGeneXusバージョン管理について」ご紹介させて頂きます。

突然ですが、皆様の中で「GeneXusではバージョン管理は無理」といった先入観をお持ちの方はいらっしゃらないでしょうか?

製品名 バージョン管理
 GeneXus × (履歴機能は標準で使えるし、ナレッジベース吐き出して管理するんだよね)
 GeneXus Server ○ (チーム開発を想定した製品なのでバージョン管理が出来る)

GeneXus開発は、データ構造の変更が容易であり、機能追加や改修が行いやすいといった開発ツール特性があるため、アジャイル開発に向いていると思います。実際に私が担当している現場でも、1週間を1サイクルとして開発・改修を続けておりますが、今までのバージョン管理については、【ナレッジベースをエクスポートする】ことで対応しておりました。

* GeneXusの標準機能:[ナレッジマネージャ->エクスポート]

 

ほぼ毎日、改修内容や特定のチェックポイント時に適時吐き出しているわけですが、

エキスポート

エキスポート

れには結構手間が掛かります! (笑) 

 

アジャイル開発においては、実際にプロトタイプを作ってみて、お客様に動きを見せながら要件を詰めていくわけですが、当然のことながら要件の変更は度々起こります。 何パターンかのロジックやアクションを作って選んで頂く場合もありますが、ソースレベルでの管理は蔑ろになってきます。

私としては、SVNと同じようにバージョン管理や、ベース管理を効率よくやりたいわけです。

 そんなモヤモヤを14カ月程持ち続けておりました・・・。

 

ええ。ありました!先月ふとしたキッカケで【表示】メニューにバージョン管理機能があったことに気付き、目から鱗状態でした!

 

バージョン管理についてまとめると、

  • 1つのナレッジベース上で、ベース管理、バージョン管理が可能である。
  • 但し、ナレッジベースをエクスポートした場合には、バージョン履歴はエクスポートされないので注意が必要

*以上より、おひとり様開発用としては、十分に活用できると思います。

 

前置きが長くなりましたが、ここからはキャプチャで簡単にご説明させて頂きます。

1.サンプルのトランザクションを作成する

サンプルトランザクション

サンプルトランザクション

* 書籍を扱うトランザクション

 

2.メニュー ⇒ 表示 ⇒ バージョン を選択する

メニュー->表示->バージョン

メニュー->表示->バージョン

3.初期のバージョン(自動生成)が表示される

バージョン画面

バージョン画面

4.[上記3.]のcorenext_blogを右クリックして、現在の作業バージョンをフリーズする

フリーズ

フリーズ

フリーズ

フリーズ

5.[上記4]のver1.0を右クリックして、新バージョンを作成する

ver2.0作成

ver2.0作成

新バージョンver2.0が作られるのでアクティブとして指定する

ver2.0

ver2.0

ver2.0がアクティブとなる

ver2.0アクティブ

ver2.0アクティブ

 

6.この状態で、ビルド・コンパイルを行うと、データベースの作成から開始されます。

ver1.0とは異なるデータベースを作成することにより、従来のバージョンとダミーデータは残しつつ、管理することが可能です。またver2.0上で右クリックを行い、ver2.0をver1.0上のソースに戻すといったことも可能です。(これにより、色々なオブジェクトを作ってコンパイルしたがエラーとなった。戻すのが大変といった場合等において、瞬時に戻すことが可能となります)

尚、別バージョンを作成してアクティブとしている場合は、生成されるwebモジュールのPathが変わります。ローカル環境以外にモジュールをアップロードする場合には要注意です。

通常 :[プロジェクト指定Path]CSharpModelweb

バージョン別 :[プロジェクト指定Path]Data[番号]web *バージョン毎にDataフォルダが作られます。

細かい使い方はGeneXus Serverの説明ページを見てみてください。

(GeneXus用の参考ページは見当たりませんでした)

参考:アプリケーションリリースごとのバージョン定義

(バージョン管理一覧)

尚、このナレッジベースをエキスポートして、新規ナレッジベースとして取り込む実験を行ったところ、

最新のアクティブバージョンのみが有効となり、上記キャプチャ[3]の結果となりました。ここら辺はまだ検証中ですが、詳細判りましたらご紹介したいと思います。

では、また次回! 😀