かつおの「もっと教えてくれや!」
設定で駄目ならプラグイン!?
おっす! かつおです。
春になりましたね。
花粉症持ちの人には厳しい季節ではありますが、いろんな場所にお出かけして、新しい発見をしたいですね。
ってなわけで、今回も始まります。
ふぐ本さん。おはようございます~
先週は盛り上がりましたね。ご馳走様でした
今日も軽く行きましょうか!
おう、おはようさん。悪いが今日はやめとくわ
えーなんでですか……ってふぐ本さん顔が真っ黒になってますよ!
この前パーティーしすぎたせいで、ついに肝臓が!?
ちゃうちゃう、旅行に行ってきてん
結婚10周年でハワイやー。ほら見てみぃ
Tシャツが透けて背中にALOHAの文字が!!
カッコいいっ。けどさすがにこれは派手すぎじゃないですか
がはは、冗談や冗談。自慢したかったんや。トイレで着替えてくるわ
さてさて中島くん。おれはな、この旅行で色々考えとってん
何をですか
今回の飛行機のチケット、ネットから予約したんやけどな。こんなシステムおれにも作れるんやろかってな。
でも、考えれば考えるほど問題がでてくるんや
うーん。予約システムって複雑ですからねぇ。例えばどんな問題でしょうか
飛行機のチケットって単純に席数だけ売り切るわけやないやん? 実際には統計をとって、実際の席数よりも多めにチケット売らなあかんやろ
へぇーあれって意図的だったんですね
さすがふぐ本さん、出張いっぱい行ってるだけあって詳しいですね
でもな、今のロジックの設定だけで作ろうとするとガバガバになってまうねん。何人もボコボコにして引きずり下ろすことになってしまうわ
フグモッド航空恐ろしいですね……
確かにそういう業務独自の複雑な処理はロジックでは実現できないことがありますね。そういう場合は、プラグインで処理を実装です
プラグイン……ちゃんと覚えとるぞ。講習でやったやつやろ。Eclipse使ってJavaで作るやつな。Javaなら得意やったから全部覚えとるわ
そうです。今回のようなオプションやロジック等の設定では解決できない業務独自の処理はプラグインを実装して対応します
プラグインにも何種類かありますが、よく使うのは、プログラムに対して設定するパターンプラグインですね

ちなみに、業務独自って言っとるけど、どこまでが設定でできて、どこからがプラグインの実装が必要かどうやって判断したらええんや。そのあたりよく分からんわ
うーん。そこは難しいところですね。明確な基準はなくて、適した設定があるか無いかですね
ちなみにぼくはこんな感じで探して判断しています

テーブルオプションの設定欄とか、アクションの選択候補は分かるけど、
JavadocのOPT_から始まるとか、CONF_から始まるってなんやねんこれ
楽々Framework3でのオプションやSeiConfigパラメータって、Javadocで定数として定義されているんですよ。オプションはOPT_オプション名で、SeiConfigパラメータはCONF_パラメータ名で定義されています。なので、Javadocの索引からOで始まるものや、Cで始まるもので絞って見ると確認できます

この例ですと、top.document.titleというオプションでブラウザのタイトルを変更できることが分かります。最初のOPT_やCONF_を省いて、_(アンダーバー)を.(ドット)に変更したものがオプション名、パラメータ名になります
ちなみに、テーブルオプションやアクションもJavadocに説明があります。『RakStudioを使おう! ~ロジックでユーザビリティをあげろ!~』でやった通り、こちらは設定欄の『?』マークをクリックすると開けましたね
全部逆引き辞書でヒットしたら便利やのにな
Javadoc多すぎて見るの辛いわぁ
確かにヒットしないことも多いですね。そんな時は、楽々FrameworkIIの方の逆引き辞書も使ってみていいかもです。順次移行中ではあるんですが、やっぱり歴史が長い楽々FrameworkIIの方が件数多いですからね
今回の場合は、飛行機のチケットがキャンセルされる可能性を統計を使って計算して、購入処理をチェックしたり画面上に表示するデータの条件を加工したりするわけやけど……さすがにこれはロジックもオプションもないな
やからプラグインで組むんやろうけど、購入時に計算してチェックや、条件の加工、うーん……
あかん! 分からんぞ!
講習だけじゃ分からんやろこれ!!!
あわわ、ふぐ本さん、落ち着いてください。一気に難しいのは無理かもしれませんが、徐々に考えていけばいけますよ
ふーふー、すまんのつい興奮してしもたわ。こういう場合はどうしたらいいんや、教えてくれや
じゃぁまず、復習からいきましょう
作ったプラグインはプログラムやDDにセットすると、各タイミング毎に対応するメソッドが呼び出されるようになります。このメソッド内で行いたい処理を実装しておけば、任意のタイミングで独自の処理を実行できるようになるわけですね

この各タイミング毎に対応するメソッドってどれ見たら分かるねん
呼び出しているメソッドは、パターンによって自動でセットされている「プラグイン ~ 呼出」
のロジックから確認することもできますが、以下のJavadocを見る方が網羅されていていいと思います
楽々Framework3 Javadoc
jp.co.sei.is.lib21.pms.ptn
インタフェース iPtnPlugin
サンプルもあってこのJavadocは分かりやすいな。
練習がてら一回作ってみるか
……この右下のチェックボックスは何選んだらいいんや

ここはプラグインのソースファイルにテンプレートとして出力したいメソッドの種類を選択します。例えば、新規登録時に呼び出されるメソッドのテンプレートを出しておきたい場合は、新規登録関連の欄に
チェックを入れるとメソッドが定義された状態でソースが生成されます
ほーん。なんやよう分らんから全部にチェック入れとこ
ええ……
なんやこれ、えらい大量にメソッド出てきたけど、ちゃんとコメント入っててこれも分かりやすいやないか。気に入ったで

これで分かりやすいならどっちでもいいけですけど。
使わないメソッドは今後のソースの見やすさや、無駄な呼び出し処理を削減するため消しておいてくださいね
これ見るとなんかイメージがつかめてきたぞ。購入前(登録前)のチェックはcheckInsertメソッドに実装して、データ取ってくる条件の加工はsetSqlメソッドに実装したらええんやな
その通りです! あとはその中でどんな処理をするかですよね。まずは checkInsert の方を考えると、DBの統計値データを参照して、入力値をチェックしてエラーメッセージを出すとかでしょうか
実際にはもっと複雑でしょうが、とりあえず、これらやりたいことを細分化すると、逆引き辞書でも見つかります
- 逆引-00107
- 逆引-00213
- 逆引-00264
楽々Framework3 逆引き辞書
- プラグインでSELECT文の取得結果を先頭行から順に処理する方法
- プラグインにて入力値のエラーチェックをする方法
- パターンプラグインでエラーメッセージを設定する方法
また、setSqlメソッドでは、検索条件を追加したりすると考えると、こんな逆引き辞書がありました
- 逆引-00028
楽々Framework3 逆引き辞書
- プラグインにて検索条件を追加する方法
意外といけそうな気がしてきたぞ。でも、どう探しても逆引き辞書が見つからん時があるんやけど、そん時はどうしたらええねん
うーん、そんな時は、逆引き辞書で検索するなら、「回答」欄に対しプラグインのメソッド名や引数のクラス名で検索をかけるのもいい方法かと思います。それでもなければ、メソッドの引数のクラスをJavadocで確認して、操作の仕方を調べていくしかないですね
今回のsetSqlメソッドの例だと、PmsSqlクラスとかですね
楽々Framework3 Javadoc
jp.co.sei.is.lib21.pms
クラス PmsSql
まぁ、なんとなくイメージは掴めたわ。プログラミングっちゅうのはそんなもんやし、しゃあないの。小さなことからこつこつとやな!!
そうですね。千里の道も一歩からと言いますから
そうやな。でもおれやったら千里の道も一歩でゴールしたるわ!
っということで、また一歩立派なエンジニアに近づいたふぐ本さん。
そんなふぐ本さんを独自実装の恐怖が襲う!
次回、「かつお、デバッグってどうやんねん」をお送りします。
※タイトル及び内容は予告なく変更される場合があります。あらかじめご了承ください。