住友電工情報システム
閉じる
ホーム > ローコード開発基盤 楽々Framework3 > ブログ:かつおの「もっと教えてくれや!」 > ブログ:設定でダメならプラグイン!?

かつおの「もっと教えてくれや!」

設定で駄目ならプラグイン!?

おっす! かつおです。

春になりましたね。
花粉症持ちの人には厳しい季節ではありますが、いろんな場所にお出かけして、新しい発見をしたいですね。
ってなわけで、今回も始まります。

中島

ふぐ本さん。おはようございます~ 
先週は盛り上がりましたね。ご馳走様でした
今日も軽く行きましょうか!

かつお

おう、おはようさん。悪いが今日はやめとくわ

中島

えーなんでですか……ってふぐ本さん顔が真っ黒になってますよ!
この前パーティーしすぎたせいで、ついに肝臓が!?

かつお

ちゃうちゃう、旅行に行ってきてん
結婚10周年でハワイやー。ほら見てみぃ

中島

Tシャツが透けて背中にALOHAの文字が!!
カッコいいっ。けどさすがにこれは派手すぎじゃないですか

かつお

がはは、冗談や冗談。自慢したかったんや。トイレで着替えてくるわ

かつお

さてさて中島くん。おれはな、この旅行で色々考えとってん

中島

何をですか

かつお

今回の飛行機のチケット、ネットから予約したんやけどな。こんなシステムおれにも作れるんやろかってな。
でも、考えれば考えるほど問題がでてくるんや

中島

うーん。予約システムって複雑ですからねぇ。例えばどんな問題でしょうか

かつお

飛行機のチケットって単純に席数だけ売り切るわけやないやん? 実際には統計をとって、実際の席数よりも多めにチケット売らなあかんやろ

中島

へぇーあれって意図的だったんですね
さすがふぐ本さん、出張いっぱい行ってるだけあって詳しいですね

かつお

でもな、今のロジックの設定だけで作ろうとするとガバガバになってまうねん。何人もボコボコにして引きずり下ろすことになってしまうわ

中島

フグモッド航空恐ろしいですね……
確かにそういう業務独自の複雑な処理はロジックでは実現できないことがありますね。そういう場合は、プラグインで処理を実装です

かつお

プラグイン……ちゃんと覚えとるぞ。講習でやったやつやろ。Eclipse使ってJavaで作るやつな。Javaなら得意やったから全部覚えとるわ

中島

そうです。今回のようなオプションやロジック等の設定では解決できない業務独自の処理はプラグインを実装して対応します
プラグインにも何種類かありますが、よく使うのは、プログラムに対して設定するパターンプラグインですね

いろんなプラグイン
かつお

ちなみに、業務独自って言っとるけど、どこまでが設定でできて、どこからがプラグインの実装が必要かどうやって判断したらええんや。そのあたりよく分からんわ

中島

うーん。そこは難しいところですね。明確な基準はなくて、適した設定があるか無いかですね
ちなみにぼくはこんな感じで探して判断しています

プラグイン実装までの流れ
かつお

テーブルオプションの設定欄とか、アクションの選択候補は分かるけど、
JavadocのOPT_から始まるとか、CONF_から始まるってなんやねんこれ

中島

楽々Framework3でのオプションSeiConfigパラメータって、Javadocで定数として定義されているんですよ。オプションはOPT_オプション名で、SeiConfigパラメータはCONF_パラメータ名で定義されています。なので、Javadocの索引からOで始まるものや、Cで始まるもので絞って見ると確認できます

Javadocの索引で検索
中島

この例ですと、top.document.titleというオプションでブラウザのタイトルを変更できることが分かります。最初のOPT_やCONF_を省いて、_(アンダーバー)を.(ドット)に変更したものがオプション名、パラメータ名になります
ちなみに、テーブルオプションやアクションもJavadocに説明があります。『RakStudioを使おう! ~ロジックでユーザビリティをあげろ!~』でやった通り、こちらは設定欄の『?』マークをクリックすると開けましたね

かつお

全部逆引き辞書でヒットしたら便利やのにな
Javadoc多すぎて見るの辛いわぁ

中島

確かにヒットしないことも多いですね。そんな時は、楽々FrameworkIIの方の逆引き辞書も使ってみていいかもです。順次移行中ではあるんですが、やっぱり歴史が長い楽々FrameworkIIの方が件数多いですからね

かつお

今回の場合は、飛行機のチケットがキャンセルされる可能性を統計を使って計算して、購入処理をチェックしたり画面上に表示するデータの条件を加工したりするわけやけど……さすがにこれはロジックもオプションもないな

かつお

やからプラグインで組むんやろうけど、購入時に計算してチェックや、条件の加工、うーん……
あかん! 分からんぞ!
講習だけじゃ分からんやろこれ!!!

中島

あわわ、ふぐ本さん、落ち着いてください。一気に難しいのは無理かもしれませんが、徐々に考えていけばいけますよ

かつお

ふーふー、すまんのつい興奮してしもたわ。こういう場合はどうしたらいいんや、教えてくれや

中島

じゃぁまず、復習からいきましょう
作ったプラグインはプログラムやDDにセットすると、各タイミング毎に対応するメソッドが呼び出されるようになります。このメソッド内で行いたい処理を実装しておけば、任意のタイミングで独自の処理を実行できるようになるわけですね

一連の処理の流れ
かつお

この各タイミング毎に対応するメソッドってどれ見たら分かるねん

中島

呼び出しているメソッドは、パターンによって自動でセットされている「プラグイン ~ 呼出」
のロジックから確認することもできますが、以下のJavadocを見る方が網羅されていていいと思います

楽々Framework3 Javadoc
 jp.co.sei.is.lib21.pms.ptn
  インタフェース iPtnPlugin

かつお

サンプルもあってこのJavadocは分かりやすいな。
練習がてら一回作ってみるか
……この右下のチェックボックスは何選んだらいいんや

Javadocの流れ
中島

ここはプラグインのソースファイルにテンプレートとして出力したいメソッドの種類を選択します。例えば、新規登録時に呼び出されるメソッドのテンプレートを出しておきたい場合は、新規登録関連の欄に
チェックを入れるとメソッドが定義された状態でソースが生成されます

かつお

ほーん。なんやよう分らんから全部にチェック入れとこ

中島

ええ……

かつお

なんやこれ、えらい大量にメソッド出てきたけど、ちゃんとコメント入っててこれも分かりやすいやないか。気に入ったで

コメント付きでメソッドの書き出し
中島

これで分かりやすいならどっちでもいいけですけど。
使わないメソッドは今後のソースの見やすさや、無駄な呼び出し処理を削減するため消しておいてくださいね

かつお

これ見るとなんかイメージがつかめてきたぞ。購入前(登録前)のチェックはcheckInsertメソッドに実装して、データ取ってくる条件の加工はsetSqlメソッドに実装したらええんやな

中島

その通りです! あとはその中でどんな処理をするかですよね。まずは checkInsert の方を考えると、DBの統計値データを参照して、入力値をチェックしてエラーメッセージを出すとかでしょうか
実際にはもっと複雑でしょうが、とりあえず、これらやりたいことを細分化すると、逆引き辞書でも見つかります

楽々Framework3 逆引き辞書

逆引-00107
プラグインでSELECT文の取得結果を先頭行から順に処理する方法
逆引-00213
プラグインにて入力値のエラーチェックをする方法
逆引-00264
パターンプラグインでエラーメッセージを設定する方法
中島

また、setSqlメソッドでは、検索条件を追加したりすると考えると、こんな逆引き辞書がありました

楽々Framework3 逆引き辞書

逆引-00028
プラグインにて検索条件を追加する方法
かつお

意外といけそうな気がしてきたぞ。でも、どう探しても逆引き辞書が見つからん時があるんやけど、そん時はどうしたらええねん

中島

うーん、そんな時は、逆引き辞書で検索するなら、「回答」欄に対しプラグインのメソッド名や引数のクラス名で検索をかけるのもいい方法かと思います。それでもなければ、メソッドの引数のクラスをJavadocで確認して、操作の仕方を調べていくしかないですね
今回のsetSqlメソッドの例だと、PmsSqlクラスとかですね

楽々Framework3 Javadoc
 jp.co.sei.is.lib21.pms
  クラス PmsSql

かつお

まぁ、なんとなくイメージは掴めたわ。プログラミングっちゅうのはそんなもんやし、しゃあないの。小さなことからこつこつとやな!!

中島

そうですね。千里の道も一歩からと言いますから

かつお

そうやな。でもおれやったら千里の道も一歩でゴールしたるわ!

っということで、また一歩立派なエンジニアに近づいたふぐ本さん。
そんなふぐ本さんを独自実装の恐怖が襲う!

次回、「かつお、デバッグってどうやんねん」をお送りします。

※タイトル及び内容は予告なく変更される場合があります。あらかじめご了承ください。

お問い合わせ
ページの先頭へ