2013年12月27日金曜日

2013年、今年もありがとうございました

早いもので今年も残すところあと4日となりました。ジーマインドは本日で仕事納めとなります。本年も皆様には大変お世話になりました。

来年はジーマインドを創業して10年目となります。この節目の年にジーマインドのさらなる飛躍と、GeneXusの一層の普及を目指して今年以上に邁進するつもりです。

来年もご愛顧の程、よろしくお願い致します。皆様も良いお年をお迎え下さい。





2013年12月4日水曜日

Internet Explorer 11 (IE11)の対応

Windows8.1がリリースされ1ヶ月以上が経過しました。Windows8.1からInternet Explorer(以下IE)も11にバージョンアップされました。又、Windows7用のIE11もリリースされています。

一方、GeneXusの最新バージョンであるEvolution2 Upgrade3で生成さたアプリケーションをIE11で動作させると、一部動作しません。

トランザクションでレコードセレクターや実行ボタンを押すと
グレースクリーンのまま応答が無くなる

開発者ツールでこの時の動作を見てみると

GeneXusのJavaScriptライブラリ(gxgral.js)の中でJavaScriptエラーが発生しています

恐らく、IE11になってJavaScriptの仕様が一部変更になった箇所があると思われます。

このエラーの対処ですが、Artechのサイトを探してみるとWikiの中のページ「GeneXus X Evolution 2 Hardware and Software Requirement(ハードウェアとソフトウェアの前提条件)」に以下のコメントがありました。



という事で、まもなくリリースされるアップグレード4にてIE11対応がされるそうです。
プレビュー版はこちらからダウンロードできます。


2013年11月14日木曜日

【News】株式会社システムライフ主催「GeneXus紹介セミナー in 博多」が開催されました

去る11月13日、株式会社システムライフ主催の「GeneXus紹介セミナー in 博多」が開催されました。以下、同社Facebookページより。





2013年10月25日金曜日

【News】GeneXus Day 2013 in Japan が開催されます。

今年もこの時期恒例ジェネクサス・ジャパン社主催のGeneXus Day 2013が開催されます。今回はGeneXusユーザー向けとGeneXusを検討している企業向けの2部構成になっています。以下、同社のホームページから




ジェネクサス・ジャパン、1 年に一度のビックイベント「GeneXus Day 2013」を 2013年11月22日 (金) に開催致します。
今年も GeneXus 開発元の Artech 社より 2 名のスピーカーを迎えます。
― CEO 就任後、初の GeneXus Day 登壇となる Nicolás Jodal、そして昨年に続き Aretch 社 CTO の Gastón Milano ―
2 人 のキーパーソンより GeneXus のホットな情報をお伝えします。
また、ジェネクサス・ジャパンからの新製品リリース情報や、午後の部では GeneXus の開発事例を、2 社よりご紹介致します。
ジェネクサス・ジャパンが総力を挙げてお届けする「GeneXus Day 2013」、是非ご参加ください!


申し込みはこちらの申し込みフォームからです。



2013年10月17日木曜日

GeneXusミーティングレポート 2日目その3:オフライン - GX23

オフラインのセッションが続きます。

スピーカーは開発チームのMarcos Crispino です。ブログも書いていますが、技術的には結構ディープな奴です。








オフラインデータベースオブジェクト。メインオブジェクトのをOfflineに設定すると生成されます。データ同期に関する定義を行います。

2013年10月9日水曜日

GeneXusミーティングレポート 2日目その2:オフライン - GX23

引き続きオフラインのセッションです。

※当情報は製品出荷前の情報であり、製品出荷時には変更になる場合もあります。あらかじめご了承ください。

スピーカーは開発チームのLeonardo Pineyroです。






2013年10月8日火曜日

GeneXusミーティングレポート 2日目その1:オフライン - GX23

GeneXusミーティング2日目はいよいよ次期バージョンに関するセッションが続きます。

まずは、オフライン機能の話です。これは次期バージョンであるTiloの目玉機能ですが、対象はスマートデバイスアプリケーションです。

※当情報は製品出荷前の情報であり、製品出荷時には変更になる場合もあります。あらかじめご了承ください。

スピーカーはサポートチームのPablo Mazzilli
昨年からTilo及びオフライン機能の
開発に係わっています
現行バージョンであるEvolution2で作成されたスマートデバイスアプリは基本的にコネクションが無いと(通信回線が接続していないと)使えません。つまりローカル(デバイス上)にデータベースを持たず、常にサーバーと通信してサーバー側のデータベースにI/Oする、いわゆるクライアント/サーバー型のアプリケーションです。
これに対し業務系のアプリケーションとしては、コネクションが無い状態でも利用できるオフライン機能のニーズが非常に強くありました。

2013年10月7日月曜日

GeneXusミーティングレポート 1日目その3 - GX23

GeneXusミーティング初日の最後のレポートは私のセッションです。

ウルグアイでのセッションスピーカーは今回で3回目になります。最初のきっかけはArtech側からスピーチしてみないか? と声を掛けてもらったのですが、その後自分自身の経験値アップと南米を中心としたGeneXusワールドでの知名度向上を狙って毎年チャレンジしています。


これまでの2回は主に日本の事情を紹介するという聞く側にとっても興味がある、話をする側にとってもプレゼンを作りやすい内容だったのですが、今回は自分達で企画したソリューションの発表というチャレンジングな内容になりました。

というのもソリューションのプレゼンはそこの至るまでのストーリー(現状認識、問題点、解決策とそこに至るロジック)を英語でスピーチしなくてはならず、技術的な話ならともかく、前半部分の解決策に至るストーリー部分は私の稚拙な英語では非常に苦労しました。

2013年10月5日土曜日

GeneXus X Evolution2 インストラクター アップグレード試験に合格しました

TwitterやFaceBookで先に報告しましたが、GeneXus X Evolution2インストラクターのアップグレード試験に無事合格しました。

合格証書を手にマイマスターのRodolfoとツーショットで記念撮影

インストラクター合格証書。前回とデザインが変わってる

実は今回のインターナショナルミーティングではアップグレード試験を受ける予定ではありませんでした。というのも、本来試験は3日間のミーティング中に予定されているのですが、私がカンファレンススピーチを予定していて、しかも日程がぎりぎりまで決まらなかった(公開されなかった)ので、スピーチと試験が被ってしまうとまずいと思い諦めていました。ところがウルグアイに来てからRodolfoと話をした所「だったらミーティング終了後の木・金の都合のいい時間で試験をしよう」とアレンジしてくれたのでした。なんの準備もしていませんでしたが二つ返事で「やります!!」とトライする事になった次第です。

GeneXusミーティングレポート 1日目その2 - GX23

GeneXusミーティングレポート1日目その2です。

ブラジルでの事例紹介です。
Public Assessor社のRicardo Gavaさんです

GeneXusでは珍しく機器制御のシステムです

2013年10月4日金曜日

GeneXusミーティングレポート 1日目 - GX23

9月30日から10月2日までの3日間で第23回GeneXusインターナショナルミーティングが開催されました。これから何回かに渡ってその様子をレポートします。セッション自体は170にもなりますので全て紹介はできませんが、個人的に興味を持って視聴したセッションからピックアップしていきます。

1日目(9月30日)

インターナショナルミーティングのスタートはNicolas Jodal(ニコラス・ホダール)社長のオープニングスピーチからです。このオープニングスピーチ、昨年まではBoreogan Gonda(ボレオガン・ゴンダ)会長(当時社長)が行っていましたが、昨年のミーティングの最後に経営の交代発表がされ、社長がGonda氏からJodal氏になりました。という事で、毎年見慣れたスピーチがJodal氏になった事で経営の交代が象徴的なインターナショナルミーティングの始まりとなりました。

続いてのセッションはArmin Bachmann(アルミン・バッハマン)氏から今回のミーティングのイントロとしてGeneXus X Evolution2のおさらいと事例紹介がありました。

2013年9月27日金曜日

まもなくGeneXusインターナショナルミーティングが開催されます

いよいよ来週、ウルグアイでGeneXusインターナショナルミーティングが開催されます。
もちろん私も参加します。今このブログも成田空港の搭乗口で書いています。

今年の目玉は何と言っても次期バージョンであるコードネームTiloのお披露目です。
Windows8ジェネレーターやオフラインモードの追加などスマートデバイスジェネレーターの進化の詳細が明らかにされるでしょう。

カンファレンスの内容はこのブログでも追ってアップしていく予定です。

あと、かくいう私もセッションスピーカーを務めます。
そろそろ搭乗開始です。地球の反対側まで30数時間のフライトが始まります。
では行ってきます。



2013年9月20日金曜日

【News】株式会社システムライフ - GeneXus販売店契約を締結

株式会社システムライフが本日GeneXus販売店契約を締結したそうです。

以下、同社のリリースから

株式会社システムライフ(本社:福岡県福岡市 代表取締役:吉浦 勇次)は、アルテッチ社(Artech Consultores S.R.L. 本社:ウルグアイ CEO:Nicola Jodal)が開発し、ジェネクサス・ジャパン株式会社(本社:東京都品川区 代表取締役:大脇 文雄)が日本総代理店の超高速開発ツール「GeneXus(ジェネクサス)」の九州地区初販売店契約を締結し、同ソフトウエアの販売を開始しました。

<中略>

システムライフは2011年よりGeneXusの研究・適用を開始し2年間の経験をもとにエンドユーザ様に超高速開発ツールのメリット(高品質・低コスト・短納期)をご提供出来ると確信し本日、販売店契約を締結致しました。
今後は30年以上にわたる九州地区を中心としたシステム受託開発の実績に加え超高速開発ツールGeneXusを活用した高品質・高生産性なシステム開発をご提案して参ります。

株式会社システムライフのWebサイトはこちらです。

九州地区初のGeneXus販売店という事で、今後の活躍に期待したいです。



2013年9月12日木曜日

【News】株式会社コアネクスト - 10月17日~18日に開催される『FIT2013』に出展

GeneXusの販売代理店である株式会社コアネクストが「FIT2013(金融国際情報技術展)」に出展されるそうです。以下、同社の告知から

10月17日~18日に開催される『FIT2013』に出展いたします
来る10月17日~18日に東京国際フォーラムで開催される「FIT2013(金融国際情報技術展)」に、コアネクストとして「GeneXus」を出展致します。

今回はソルクシーズグループである、ソルクシーズ、インターディメンションズとの共同出展ブースとなっておりますので、弊社グループの強みである金融業界向けに特化したソリューションをご紹介いたします。
また、Salesforce.com社やAmazon.com社とのコラボレーションワークの紹介も企画しております。



2013年9月4日水曜日

列挙型ドメインとマスタ化の判断基準

画面上での選択肢(コンボボックス等)を実装する手段としては、列挙型ドメインの定義とトランザクションでマスタテーブルを作る方法の2種類ありますが、皆さんはどういうケースで列挙型ドメインにし、どういうケースでマスタ化を選択しますか?




2013年8月30日金曜日

項目属性名の変更にはご注意を

GeneXus教育をしていてよく見受けられるGeneXusビギナーが陥る操作ミスとして、項目属性名の変更があります。


1.項目属性名の変更方法

項目属性の登録作業はトランザクションオブジェクトでのストラクチャーエディタで項目属性を追加する事ですが、一旦登録した項目属性の名称を変更する時にストラクチャーエディタ上でダイレクトに変更してはいけません。

トランザクションのストラクチャー(Structure)エディタ上で
項目属性名を直接変更してみる

2013年8月28日水曜日

オプションに関するTips

GeneXusのオプションに関するTipsです。

1.起動オプション


GeneXusの実行ファイル(GeneXus.exe)に対するオプションです。基本はショートカットのプロパティで指定します。オプションの中でも便利なものを紹介します。

起動オプションはショートカットのプロパティで指定します

2013年8月26日月曜日

プロンプトに関するあれこれ - その3

今回はプロンプトの仕様についてです

プロンプトの目的はキー項目の入力補助です。従ってプロンプトから返されるのはキー項目の値のみです。外部キー項目に従属する参照項目はプロンプトからは返されません。
参照項目はトランザクション画面に制御が移り、キー項目からフォーカス移動したタイミングにDBからデータを取得・表示します(外部キー項目を手入力した時と同じ動作)。

Country(国)プロンプトを閉じた直後
フォーカスは外部キー項目である国番号にあり、
プロンプトから返された値がセットされている
参照項目である国名にはまだデータが表示されていない

2013年8月22日木曜日

プロンプトに関するあれこれ - その2

前回の話の続きです。

3.プロンプトを使用したくない場合

トランザクションオブジェクトでの主キー項目と外部キー項目は自動でプロンプトが紐付けられます。逆にプロンプトを使いたくない場合(プロンプトアイコンを表示したくない場合)はどうしたらよいでしょうか?


2013年8月21日水曜日

プロンプトに関するあれこれ - その1

プロンプトオブジェクトは自動生成される為、なにげなく使っている人も多いと思いますが、その実態(仕様)をちゃんと知っていますか? 今回はプロンプトにまつわる話です。

1.プロンプトとは


プロンプトとはいわゆるレコード選択用の一覧画面の事です。プロンプトオブジェクトという呼び方もしますが、実態はWebパネルオブジェクトです。
GeneXusでは、主キー項目、外部キー項目に対して自動的にプロンプトオブジェクトが作成されます。(ビルド時)

トランザクションの主キー項目、外部キー項目がプロンプトの対象になる

2013年8月7日水曜日

【ショーケース】GeneXusインターナショナルミーティング用アプリ #GX23

9月にウルグアイで開催されるGeneXusインターナショナルミーティング用のスマートデバイスアプリが公開されています。






これはGeneXusインターナショナルミーティングの各セッションやスピーカーの紹介やホテルの案内など、ミーティングに参加する人のナビゲーターになるアプリです。







もちろんGeneXusで開発されており、iOS版とAndroid版が各ストアに公開されています。


まだ、セッションやスピーカーが決まっていないので内容的にはまだまだですが、開催が近づくにつれ充実していくはずです。ウルグアイに行かない人もその雰囲気を味わってみて下さい。

2013年8月5日月曜日

GeneXusでのサブクエリ(副問い合わせ)の実装方法

前回のエントリーでGeneXusにおけるJOINの話をしましたが、今回はGeneXusでのサブクエリーの実装方法です。

以下の様なデータモデルで、Invoice一覧の画面を実装する時に、検索条件としてInvoiceDetailつまり明細の項目を含めたい場合はどう実装したらよいでしょうか?





例えばfor eachコマンドで記述してみます。

2013年7月31日水曜日

今年もGeneXusインターナショナルミーティングが開催されます。#GX23

今年もGeneXusインターナショナルミーティングがウルグアイにて開催されます。

イベント用Webサイトもオープンしました。


今年は9月30日から10月2日の3日間です。上記Webサイトからミーティング参加の登録、ホテルの予約も行えます。私も先ほど登録しました。



2013年7月29日月曜日

GeneXusで生成されるJOINの種類

前回までで「開発者は項目属性名のみ指定する → GeneXusがアクセスするテーブル・JOINする項目を推論する」というお話しをしました。

SQLという観点で「GeneXusってOUTER JOINはできないよね?」という質問をよく受けます。そこで今回はGeneXusでのJOINに関するお話しです。

具体的なJOINの指定方法の前に、まずはGeneXusにおける基本的なJOINの考え方についてです。

1.GeneXusにおけるJOINの考え方


一般的にJOINは以下の種類があります。

  • 内部結合(INNER JOIN)
  • 外部結合(LEFT JOIN / RIGHT JOIN / FULL OUTER JOIN)


GeneXusにも外部結合は存在します。但し、ベーステーブル・拡張テーブルの考え方が前提になるため、リレーションの方向に依存します。どういう事でしょうか? 下記のデータモデルを見てください。



2013年7月26日金曜日

ベーステーブルと拡張テーブルの特定方法

前回のエントリーで「ベーステーブルと拡張テーブルとは何か?」というお話しをしましたが、今回はGeneXusはどうやってベーステーブルや拡張テーブルを特定するのか?というお話しです。

推論のプロセスとしては
まずGeneXusが出力したデータモデルが前提となります。
そして、開発者が指定した項目属性群をインプットとして、データモデルから拡張テーブルの候補をピックアップします。
それら拡張テーブルの候補の中から、最小セットの拡張テーブルを選択します。


具体的な例で順を追って説明します。(以下のデータモデルを前提とした時)




2013年7月24日水曜日

【News】株式会社クリエティブキャスト主催 3社合同GeneXusセミナーが開催されました

株式会社クリエティブキャスト主催  販売店3社合同GeneXusセミナー「GeneXusの?を!に 事例から学ぶGeneXus活用のヒント」が開催されました。


主催 株式会社クリエイティブキャスト
協賛 アプリケーションアシスト株式会社
協賛 株式会社コアネクスト
後援 ジェネクサス・ジャパン株式会社

 私も参加してきましたので簡単ではありますが写真も交えてご紹介します。

2013年7月22日月曜日

ベーステーブルと拡張テーブルって何?

今回の話はGeneXusを扱うに当たって、一番基本となる考え方です。逆に言うと「ベーステーブルと拡張テーブルって何?」という質問に答えられない人はGeneXusを使っていても理解しているとは言えません。

GeneXusにおいては開発者はアクセスするテーブルを直接指定する事はありません(できません)。指定するのは項目属性名のみで、その項目属性が「どのテーブルに属していて?」「どのテーブルとをJOINする必要があるのか?」はGeneXusが推論します。その推論の基礎となっているのがベーステーブルと拡張テーブルという考え方です。

ベーステーブルとは

GeneXusがデータベースにアクセスする時に(実際には生成するSQL文としての)起点となるテーブルの事を指します。

拡張テーブルとは

ベーステーブルを起点とした時にアクセス可能な範囲(実際には生成するSQL文としてJOIN可能な範囲のテーブル)を言います。
又、拡張テーブルにはベーステーブルも含まれます。

拡張テーブルかどうかの判断基準はベーステーブルから見て「n→1の関係(リレーション)」のテーブルです。逆にベーステーブルから見て「1→nの関係」は拡張テーブルではありません。


例えば、以下のデータモデルを前提とした時に



2013年7月17日水曜日

GeneXusにおけるロック・排他制御

GeneXusにおいてデータベース更新処理(INSERT/UPDATE/DELETE)が可能なオブジェクトはトランザクションとプロシージャのみです。

データベース更新処理としてはロックと排他が重要な制御になってきますが、GeneXusでの仕様は以下の通りです。

トランザクションオブジェクト

1)ロック

  • 書き込み処理の直前にSELECTを実行しますが、その時のモードがLOCKモードになります。( Oracleだとfor update no wait指定/SQLServerだと WITH (UPDLOCK)指定 )
  • もし、ロックが失敗した場合(既に他のユーザーにロックされていた場合)はエラーが返されます。

2)排他制御

  • トランザクションオブジェクト内で独自の排他制御が実装されています。
  • レコードをLoad時(SELECT時)のデータを全て保持しておき、書き込みの直前のSELECT(上記ロック時)で取得した項目と全項目付け合わせをします。一項目でも差があれば他の誰かが変更を加えたと判断し排他エラーが返ります。= 楽観的排他
  • 一般的には更新回数や更新タイムスタンプ項目を設け、その項目を用いた比較で排他制御を実装するのが一般的だと思いますが、GeneXusの場合はトランザクション=テーブルではないのでストラクチャーで定義されている全項目の比較になります。


プロシージャオブジェクト

1)ロック

  • for eachによる更新処理にて、条件項目および更新対象項目がベーステーブルにある場合は、UPDATE/DELETE文が生成されます。
  • for eachによる更新処理にて、条件項目および更新対象項目がベーステーブル以外にもある場合は、SELECT文(条件指定用+ロック用)とUPDATE/DELETE文が生成されます。この場合は、トランザクションと同様にロックモードでのSELECTになります。



2)排他制御

  • 排他制御は盛り込まれていません。アプリケーションの仕様として開発者が実装する必要があります。


悲観的排他が必要な場合は、独自に設計し実装する必要があります。



2013年6月24日月曜日

GeneXus X Evolution2 Upgrade3 : エボリューション2 アップグレード3がリリースされました。

GeneXus X Evolution2 Upgrade3 (エボリューション2 アップグレード3)がリリースされました。

ダウンロードとリリースノートはこちらから。




通常、アップグレードはバグフィックスが多いのですが、今回はスマートデバイス・ジェネレーターを中心として数々の機能追加が入っています。

詳細はこちらから。

以前、私が書きました機能紹介PPTの翻訳はこちらです。




2013年6月13日木曜日

データベーステーブル作成・再編成にてよく使うオプション

データベーステーブル作成およびデータベース再編成処理時によく使うオプション(プロパティの設定)をご紹介します。  


1.Declare referential integrity

対象

  • 言語 : .NET、Java、Ruby
  • DBMS: SQLServer,Oracle,PostgreSQL,MySQL, DB2 UDB for iSeries,iSeries native, Informix


概要
データストアプロパティにある「Declare referential integrity」プロパティはデータベースに参照整合性(DBMSの制約)を作成する/しないの指定が可能です。


データストアプロパティ




設定値

  • Yes(既定値) :参照整合性が作成されます。(データベーステーブル作成、再編成時)
  • No : 参照整合性は作成されません。(データベーステーブル作成、再編成時)
  • Remove :参照整合性は作成されません。(データベーステーブル作成、再編成時) 但し、既に参照整合性がある場合は削除されます。


備考
例えば、プロパティをYes→Noに変更し、データベーステーブルの作成を行った場合、再編成プログラムはテーブルをDrop→Createしますが、参照整合性が既にあるとテーブルをDropできません。この場合は、Yes→Removeを選択する事により、既存の参照整合性も削除されます。

出典 : http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Declare+Referential+Integrity+Property,


2.Generate comment on statements

対象

  • インターフェイス : Web
  • DBMS: Oracle,DB2 UDB,DB2 for iSeries,PostgreSQL(エボリューション1以降)


概要
データストアプロパティにある「Generate comment on statements」プロパティはテーブル及びカラムのコメント作成を指定できます。

設定値

  • Yes : COMMENTステートメントを生成します。(データベーステーブル作成、再編成時)
  • No(既定値) : COMMENTステートメントを生成しません。(データベーステーブル作成、再編成時)



CREATE TABLE TestPropGenCom (TestCod smallint NOT NULL , TestDesc CHAR(50) NOT NULL , PRIMARY KEY(TestCod))
COMMENT ON TABLE TestPropGenCom IS 'Test property Generate comments on'
COMMENT ON COLUMN TestPropGenCom.TestCod IS 'Test Code'
COMMENT ON COLUMN TestPropGenCom.TestDesc IS 'Test Description'

出典 : http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Generate+COMMENT+ON+Statements+Property,

3.Enable national language support

対象

  • 言語 : .NET、Java、Ruby
  • DBMS: SQLServer,Oracle,MySQL, DB2 UDB,DB2 for iSeries,


概要
「Enable national language support」プロパティは文字列データ型(Char/VarChar)でのマルチバイト対応が指定できます。
バージョンによってプロパティの場所が違います。

  • バージョンXはデータストアプロパティ
  • エボリューション1以降はバージョン、項目属性、ドメインプロパティ


バージョンプロパティ



設定値

  • Yes:マルチバイトキャラクター対応(Char/VarCharの桁数=文字数)
  • No(既定値):マルチバイトキャラクター非対応(Char/VarCharの桁数=バイト数)

備考
Noを指定してもマルチバイトキャラクターは保存可能です。但し、DB上は桁数=バイト数、画面上は桁数=文字数と異なるため、画面上では入力可能な桁数の文字列がデータベース保存時に桁あふれでエラーとなる場合が出てきます。

どちらの設定を選択するかは設計ポリシーに依存します。但し、バージョン・項目属性・ドメインの各レベルで指定可能なので、全体指定と個別指定が可能です。

例) 全体指定はマルチバイト対応とし、個別にマルチバイト非対応とする。(バージョンプロパティではYes、必要に応じて任意の項目属性またはドメインプロパティではNoとする)

エボリューション2アップグレード3からはプロパティ値変更時、データベース再編成対象になります。それより前のバージョンでは、プロパティ値を変更しただけではデータベース再編成対象になりません。データベーステープルを再作成して下さい。

出典 : http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Enable+National+Language+Support+Property,



2013年6月5日水曜日

外部オブジェクトの使い方 : ネイティブ・オブジェクト編

外部オブジェクトを使う事でネイティブ・オブジェクトつまり各ジェネレーター環境における外部ライブラリ(GeneXusを使用せずに作成したライブラリ)を利用する事が可能になります。

1.外部オブジェクトの作成

ネイティブ・オブジェクトに関しては、Webサービスと同様にウィザードを使って簡単に外部オブジェクトを作成する事ができます。

「ツール」メニュー→「アプリケーションの統合」→「.Netアセンブリインポート」または「Java クラスのインボート」を選択



2013年6月3日月曜日

Google Chromeを業務用Webアプリケーションプラットフォームとして使用するためのTips


直接GeneXusのTipsではありませんが、Google ChromeをWebアプリケーションプラットフオームとして使用する場合に考慮したい事が何点かあります。

  1. 当該Webアプリケーション起動(表示)した時に必ずChromeとする。又、ブラウザのディフォルト起動設定を変更しない。
  2. アドレスバーやタブを表示させない
  3. 自動アップデートを禁止にする


2013年5月29日水曜日

Webアプリケーションでのキーボード制御系Tips

通常のWebアプリケーションだとあまりニーズはありませんが、業務系Webアプリケーション、特に旧来のホスト系やC/S(クライアント/サーバー)系システムからWebアプリへの移行だと(あるいはそういったシステムを使いなれた人達からのリクエストでは)レガシーなキーボード制御を要求される場合があります。GeneXusでの対応可・不可も含めて紹介します。


1.Enterキーでフォーカス移動したい

HTMLの標準ではEnterキーはFormのSubmitつまりサーバーへのデータ送信です。しかし、ホスト・C/S系だと(特にテンキーを使って操作する場合は)Enterキーでフォーカス移動が主流です。
GeneXusにはジェネレーターのプロパティに「Field exit」プロパティがあり、以下が選択できます。


2013年5月28日火曜日

【GeneXusユーザー事例】日本ハウズイング株式会社 : 日経コンピュータセミナー


昨年末のGeneXus Dayにて事例発表をされました日本ハウズイング株式会社 浅野執行役員が日経コンピューターセミナー「超高速開発・リノベーションセミナー2013」にて再び講演されました。



「GeneXusを利用した新統合基幹系システムプロジェクト推進事例のご紹介」
当社は、これまで運用していた6つの基幹系システムを統合し、2012年3月に新基幹系システム「ハウネット」をリリースしました。要件定義終了時点で開発工数が膨らんだため、当初計画していた開発工数よりも30%膨らんでしまいました。そこで、開発ベンダーであるアイ・ティ・フロンティア社からの提案により、自動生成ツールを利用した開発手法を採用し、リリースすることができました。本講演では、GeneXus採用までの経緯や開発短縮のために実践した工夫をご紹介するとともに、保守フェーズを1年経験した中で体感したメリットや今後の課題についても併せてご紹介します。


講 師
日本ハウズイング
執行役員 システム企画部長
浅野 尚 氏
マンション管理担当から支店長、人事グループ長を経て、2009年7月より情報システム担当となり、新基幹システム構築の指揮を執る。現在は勤怠管理、財務会計システム構築、インフラコストの見直しや次世代活用について統括にあたる。


2013年5月27日月曜日

セキュリティスキャナーその2 - Security Scanner part 2

前回に引き続きSecurity Scannerの説明です。出典はこちらSecurity Scanner extension users manualです。Security ScannerのダウンロードはGeneXusマーケットプレイスから。

3.ルール定義


Parameter encryption #100

Security Scannerはナレッジベースの環境とオブジェクトをスキャンし、パラメーターが暗号化されているかどうか調べます。具合的には「Encrypt URL Parameters」プロパティが「Session Key」または「Site key」が設定されているかチェックします。(Noの場合は暗号化されない)
もし、Parameter encryption問題を発見した場合は下記のメッセージを表示します。

error: #100 in WebPanel1 >> Object parameters not encrypted


2013年5月22日水曜日

セキュリティスキャナーその1 - Security Scanner part 1

先の投稿「GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications」で出てきましたSecurity Scannerですが、これは開発したナレッジベースにセキュリティリスクの有無をチェックする為のGeneXusエクステンション(拡張モジュール)で、OWASP Top10 をベースにチェック・レポートしてくれます。
※[注意]現状はEvolution1のみ動作します。

1.Security Scannerのインストール


Security ScannerエクステンションはGeneXusマーケットプレイスからダウンロードできます。(GxTechnicalアカウントの登録が必要です)



インストールは他のエクステンションと同様にGeneXusの
「ツール」メニューから「エクステンションマネージャ」を開きます。

2013年5月14日火曜日

GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications

最近よく質問を頂きます「GeneXus Webアプリケーションにおけるセキュリティ対策」に関して、OWASP Top10をベースに説明します。


まず、OWASPとはOpen Web Application Security Projectの略で、Webアプリケーションのセキュリティ向上を目的としてプロジェクトです。その中のOWASP Top 10プロジェクトがWebアプリケーションの脆弱性トップ10を公開しています。前回公開されたのが2010年版で、現在(2013年5月)は2013年版がRC(Release Candidate:リリース候補)版となっています。日本でもOWASP Japanとして活動しています。


一方、GeneXusとしてのWebアプリケーションセキュリティ対策状況はArtechのwikiサイト「OWASP 2010 Top 10 Security Risks in GeneXus Applications」にて公開されています。そのタイトルの通り2010年版がベースになります。今回はこの情報を元に対応状況を説明します。なにぶん英語の説明が回りくどいので直訳ではなく意訳をしています。翻訳や表現的に誤りを見つけた方はご連絡下さい。


又、説明の中で(Security Scanner #番号)という記述がありますが、これはArtech社が公開しているSecurity ScannerというGeneXusの拡張モジュールで、ナレッジベース内のセキュリティチェックを行いレポートしてくれるツールです。Security Scanner自身については別の機会に説明をしたいと思います。



2013年5月9日木曜日

64bit版Windowsで.NET Webアプリケーションを実行する時の注意事項

正確にはGeneXusのTipsではありませんが、最近も問い合わせをもらう事が多かったのでブログに書いておきます。

GeneXusでC#ジェネレーターを使用する場合は、生成されるWebアプリケーションはASP.NETとなり、実行環境はIISとなります。

この時、OSが64bit版Windowsを使用している場合、32bit用ワーカープロセスの設定を行わないとアプリケーションを実行する事ができません。これはGeneXusが生成するのが32bitアプリケーションのためです。

1.IIS6の設定

IIS6では32bit/64bitのどちらかでしか動作できません
切り替える為のコマンドは以下の通りです。
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
※1.パラメター値:1が32bit/0が64bit指定


2.IIS7の設定

IIS7はアプリケーションプール毎に32bitの有効/無効の指定が可能です。

IIS管理コンソール→アプリケーションプール→「Classic .NET AppPool」→詳細設定にて、「32ビットアプリケーションの有効化」をTrueに変更します。





2013年5月7日火曜日

【News】株式会社クリエイティブキャスト : 第二回GeneXusセミナー【GeneXusの?を!に事例から学ぶGeneXus活用のヒント】

GeneXusの販売代理店である株式会社クリエイティブキャストが第二回GeneXusセミナーを開催されるそうです。

以下、同社からのプレスリリースです。

2013年4月吉日
株式会社クリエイティブキャスト
==========================================
■■第二回GeneXusセミナー開催■■
==========================================
来る7月24日(水)、株式会社クリエイティブキャスト主催の
[第二回GeneXusセミナー]を開催いたします。

協賛企業として下記二社にもご協力頂きます。
・アプリケーションアシスト株式会社
・株式会社コアネクスト    (敬称略/順不同)
 また、後援企業として、ジェネクサス・ジャパン株式会社をお招きします。
詳細はこちらから。

2013年4月30日火曜日

変数を条件に指定するローカル式に注意

前回はFor eachコマンド+ローカル式を使うシーンにて二つのベーステーブル間にリレーションが有る無しで生成結果が違ってくる事を書きました。今回はリレーションが無いデータモデルでの別な注意点についてです。

テーブル間にGeneXusが認識するリレーションが無いデータモデルで、ローカル式の条件に変数を利用する場合として以下の様な記述が考えられます。(基本は明示的に条件を指定する事です)

For each
&CountryId = CountryId
&CountryName = CountryName
&CustomerCount = Count( CustomerName,
             CustomerCountryId = &CountryId )
Endfor

一見問題なさそうに見えますが、実際には国別の顧客数はカウントされず、カウントの結果は全て0件になります。(CountryテーブルにCountryId=0のレコードが無い場合)
何故でしょうか?


2013年4月25日木曜日

For eachの中のローカル式


For eachの中にローカル式を記述する時、For eachのベーステーブルとローカル式のベーステーブル間にリレーションが無い場合は注意が必要です。

例) 国別に顧客数をカウント

1.リレーションがある場合

1-1.データモデル
国マスタと顧客マスタで1対nのリレーションがあるモデルです。

Country(国)トランザクションの定義

Customer(顧客)トランザクションの定義
項目属性名の先頭にあるアイコンが上矢印になっています。
これは外部キー項目である事を表しています。

ダイアグラムに二つのテーブルを配置してみました。
GeneXusは項目属性の名称が同じものは同じ意味合い=同一視し正規化処理を行います。
この例ではCountryId(国ID)がCountry(国)テーブルの主キー、Customer(顧客)テーブルの外部キーとして
存在するので、リレーションが自動的に張られます。
Customerテーブル(物理テーブル)にはCountryName(国名)は存在しません。