すみません。なんか偉そうなタイトルを付けてしまいました。
GeneXusで開発をしている時に、知っていると作業効率が上がるショートカットとかってあるじゃないですか?
そういうのってみんなどこで知るんですかね?
私もいざ教えようとした時、何があったっけなぁっていつも思い出すところから始めるので、備忘録として書いておきます。
GeneXusエンジニアなら全部知ってるよって方が多いと思いますけど、備忘録なので。
Logの出し方
これは知っておいたほうがいいです。
GeneXusはデバッグ機能もありますが、どうも使い勝手が悪くあまり使える印象がないんですよね。
なのでLogをテキストに出してデバッグすることが多いので記載します。
プロパティを変更
まずデバッグLogを出すには、設定のDefaultにあるUser Log levelをDebugにします。
User Logレベルは、Fatal→Error→Warning→Info→Debugの5つです。
初期値はErrorになっているので、ErrorとFatalのLogが出力できます。
DebugにするとDebugからFatalまですべて出力されます。
実装方法
設定を変更したら、あとはプロシージャでもWebパネルでもLogを出力したいところに下記のように記載しましょう。
(Rulesには書けません)
Log.Debugでログが1行出力できます。
カッコ内は2つ引数が渡せます。
(&Pgmdescはプロシージャ名が入ってます)
左がLogの内容で、右がLogのタイトルになります。
詳細は出力結果にて。
変数も使えますが、必ず文字型に変換して出力しましょう。
数値型はToString、SDT型はToJsonで文字型に変換できます。
出力結果
上記のログの出力結果が下記となります。
青枠部分は固定で、赤枠部分が出力した結果になります。
Log.Debug()のカッコ内の引数が「タイトル – 内容」で出力されています。
出力場所は、JavaならTomcatの配下
(C:\Program Files\Apache Software Foundation\Tomcat X.X\webapps\XXXXX\logs)
C#ならターゲット環境の配下にclient.logの名前で出力されます。
プログラムが思い通りに動かない時は、とりあえずLog出して動きを確認してみましょう。
フォルダにディスクリプションの表示
GeneXusのKBエクスプローラーに表示されているオブジェクトリストにディスクリプションを出す方法です。
まぁ、なくても良いですけど表示されていると意外に便利。
表示方法は、まずGeneXus上部にあるツール>オプションを開きましょう。
その後、KBエクスプローラーにあるノードスタイルを「名前とデスクリプション」に変更します。
その結果、下記のようにオブジェクト名の右にディスクリプションが表示されるようになります。
オブジェクトの検索
前方一致の検索でしたらKBエクスプローラの検索でもOKです。
ただ部分一致で検索したいなら「Ctrlキー+J」を押してオブジェクトリストを開いて検索しましょう。
(「Ctrlキー+O」でも良いです)
部分一致検索は名前の欄で検索したい文字列に「,」(カンマ)を付けるとできます。
下記のような感じで。
部分一致でオブジェクトを検索したかったら「Ctrlキー+J」
覚えておきましょう。
特定のオブジェクトだけビルドしたい場合
プログラムを修正してビルドをかけたのに、動きが変わっていない。
しかもJavaソース(C#ソース)の変更日時も変わっていない。
みたいなことがたまにあります。
そんな場合は対象のオブジェクトを右クリックして「これだけをビルド」をしてみましょう。
ただGeneXusは前回ビルド時と変更がない場合はJavaソース(C#ソース)を再生成してくれません。
そこでオプションを変更することによって、前回ビルド時から変更がない場合でも強制的にJavaソース(C#ソース)を再生成することができます。
変更の仕方は、まずGeneXus上部にあるツール>オプションを開きましょう。
ビルドのところにある「これだけをビルド」を「Force Generation」に変更すればOK
この設定を行った後、「これだけをビルド」を行えば、プログラムの変更がない場合でも再生成されます。
これでも再生成されない場合はオブジェクトのプロパティにある「Generate Object」がFalseになっている可能性があります。
(このプロパティがFalseの場合は、どんなことがあってもGenerate(生成)されません)
基本「これだけをビルド」をする時は強制的に再生成をしたい場合なので、設定は常にForce Generationで問題ないかと。
オブジェクトのソースを2分割
Rules、Events、Sourceで書いたプログラムを2分割したい時ってありますよね。
(いや、あまり無いか)
サクラエディタとかにもある機能ですけど、GeneXusも2分割できます。
やり方はプログラムの右上(赤枠部分)をマウスで下に引っ張るだけ。
これで2分割できます。
1つのプログラムで、上と下の部分を見比べたい時に便利ですね。
オブジェクト内で文字列検索
基本は「Ctrlキー+F」で検索ウィンドウを表示して検索すると思います。
ただ画面に検索したい文字列があって、他にどこで使われているかを検索したい場合は、検索したい文字列をダブルクリックで選択→「Ctrl+F3」であとはF3キーを押すたびに次の文字列へ飛んでいきます。
こちらもサクラエディタ等にある機能ですが、結構便利な機能だと思います。
オブジェクト内でブックマーク
オブジェクトのソース内で「Ctrlキー+B」を押すとカーソルが当たっている行にブックマークを付けることができます(複数可)
右クリック「ブックマークを設定・解除」も同様となります。
このマークが付いていると「F2」を押すと、カーソルがどこにいてもこの行に飛びます。
ただオブジェクトを閉じてしまうと、ブックマークも消えてしまうのでご注意を。
オブジェクトや関数のサジェスト表示
オブジェクト名や関数をすべて手入力しているとスペルミスが起きる可能性がありますので、頭数文字入力して「Ctrlキー+スペースキー」を押しましょう。
サジェスト機能が出てきて入力が楽になります。
例:YMDHMStoT() → YMDと入力したあとに「Ctrlキー+スペースキー」
一致するものが複数ある場合は、リストが出て選択可能です。
(多い場合は時間がかかるのでご注意を)
プログラムのコメントアウトと解除
GeneXusのコメントアウトは「//」(スラッシュ×2)、もしくは「/**/」となります。
どちらでもコメントアウトできますが、「//」の方はショートカットがあり、コメントアウトしたい行を選択して「Ctrlキー+Q」でコメントアウトできます。(複数行可)
また解除したい場合は「Ctrlキー+Shiftキー+Q」で解除できます。
(右クリックのメニューからコメントアウト・解除も同様です)
メチャクチャよく使う機能なので覚えておきましょう。
自動インデント
自分だけかもしれないですけど、インデントがズレているソースを見るとちょっとイラっとしません?
そんな時にインデントを自動で合わせる方法です。
やり方は簡単。
ForEachだったらEndForの後でエンターキーで改行しましょう。
(End、EndSub、EndDo、EndIfでも同様)
さすがに上記のようにインデントがバラバラなことはないですが、最後のEndSubでエンターキーを押すとSub内にあるソースのインデントを整えてくれます。
おまけ1、直前に閉じたオブジェクトを開き直す
間違えてオブジェクトを閉じてしまった、変更するつもり無いのに変更してしまったので閉じた等で、閉じたあとすぐ開きたい場合には「Ctrlキー+Shiftキー+F4」を押しましょう。
直前に閉じたオブジェクトを開くことができます。
覚えておくと何かと便利なショートカットです。
おまけ2、チーム開発で複数オブジェクト選択
GeneXusServerにコミットするオブジェクトが多数ある場合、1つずつチェックを付けるのって意外と手間ですよね。
そんな時はShiftキーやCtrlキーを押しながらオブジェクトを選択して、スペースキーを押しましょう。
選択している行に一括でチェックを付けることが可能です。
変更日の降順で並べて、直近のオブジェクトを選択して一括チェックとかやる時に便利ですね。
おまけ3、トランザクションの項目でSDTを簡単作成
トランザクションの項目でSDTを作成したいって結構あると思いますが、実はトランザクションの項目を選択してドラッグ&ドロップでSDTに項目をコピーできます。
(もちろんコピー&ペーストでもOK)
やり方はトランザクションの項目をShiftキーやCtrlキーで複数選択して、SDTの一番上にドラッグ&ドロップするだけ。
1つ注意点として、レベルがあるトランザクションの項目もコピーできますが、SDT側では明細化されないので自分で明細化する必要があります。
まとめ
みなさんはいくつ知っていましたか?
最初はLogの出し方だけを書こうかと思っていたのですが、それだけだとちょっと寂しいなと思い「作業効率が上がる10選」として記事にしました。
書いている途中で思いついたものを、おまけとして追加したのですが、今後も何かあれば追記していこうと思います。