ノンプログラミング開発
システム開発について
これまでシステム開発は、設計された内容に従ってJavaや.net、PHPなどのプログラム言語を使いプログラミングでスクラッチ開発をしてきました。
プログラミングでのシステム開発は、スクラッチのため多様な要望に応えることができますが 1から開発となるため生産性の低下や開発にかかるコスト増といった問題をよく耳にします。
昨今、ITの重要度は高まっているものの予算は縮小傾向にあり、システム開発の効率化が求められていますが、その反面スマートデバイス対応やIoT対応などトレンドを取り入れたシステムがユーザから要求されることも多くなりました。
さらには、事業戦略に合わせてシステム開発をスピーディに行うことも求められています。
プログラミング開発する上での課題
プログラミングでのシステム開発は、開発の生産性やコストの問題以外にも
- 品質
- システムの属人化
といった点も問題として挙げられます。
プログラミングでの開発は、ノンプログラミングでの開発と比べるとバグの混入率も高くなり品質の低下が懸念されます。
また、作成したプログラムは属人化の傾向にあり、異動や退職によって担当者が変更となった場合に引き継ぎや情報共有がうまくできず、結果としてプログラム改修といった保守・メンテナンスが難しくなるケースがよくあります。
そのため、システム開発は、開発の生産性を上げて高品質なシステムを開発するだけでなく、保守性が高く誰でも容易にメンテナンスできるようなシステムにすることが要求されます。
こういった状況の中、プログラミングでのスクラッチ開発は限界があり、現在はノンプログラミングで開発できるツールのニーズが高まりつつあります。
ノンプログラミングツール「楽々Framework」を
利用するメリット楽々Frameworkは、ノンプログラミング開発ツールの1つでWebシステム開発基盤です。
楽々Frameworkでは、業務システムを構築するための汎用的な部品をあらかじめ準備しており、用意された部品を設定することで業務要件を満たすことに主眼をおいています。
高品質で高機能な部品を大小さまざま取り揃えており、様々なページを簡単に作成するための部品だけでなく、ロジックの部品も用意しており、ほとんどの要件を部品で賄うことができます。
部品で賄えないような個別・特有の業務処理については、コーディングで対応できます。アドオンタイプですので、設定している部品に影響は受けずメンテナンス対象を局所化できます。
部品の設定は、ブラウザベースのGUI画面より直感的な操作で行うことができますので、開発者はノンプログラミングで開発を進めることができ、開発初心者でも容易に実施することができます。
楽々Frameworkはソースジェネレート型のツールとは異なり、ソースの再生成やコンパイルは不必要で設定を保存することで即時反映できます。
また、将来製品のバージョンアップの際も同様で最新のモジュールを配置後すぐに新機能を利用することができます。
楽々Frameworkでの開発対象システムも、グループ内でのExcelやAccessで管理しているような情報共有ツールのWebシステム化だけでなく、部門で利用しているNotes置き換えやグループウェア機能の実現、さらには全社規模でのJavaスクラッチシステムの再構築やホストダウンサイジングなど多岐に渡り適用できます。
プログラムの部品化と自動生成
一見複雑な業務処理を行うように見える基幹システムも、実はシンプルな業務機能の組合せで実現できることが紐解けます。例えば、次の2つの業務処理をご覧ください。
従業員情報検索
画面の流れ
- 従業員No、氏名、フリガナ、電話番号などの検索条件を入力する画面を表示。
- 「検索」ボタンがクリックされたら、必要な検索条件が正しく入力されているかチェックし、正しければ従業員情報のデータベースを検索して、条件に一致するデータを一覧表形式で画面表示。(正しくなければエラーメッセージを付けて検索条件入力画面を再表示。)
- 一覧表示画面からいずれかの従業員Noがクリックされたら、該当する従業員Noの詳細情報を画面表示。
製品情報検索
画面の流れ
- 製品名、製品分類、メーカー、型番などの検索条件を入力する画面を表示。
- 「検索」ボタンがクリックされたら、必要な検索条件が正しく入力されているかチェックし、正しければ製品情報のデータベースを検索して、条件に一致するデータを一覧表形式で画面表示。(正しくなければエラーメッセージを付けて検索条件入力画面を再表示。)
- 一覧表示画面からいずれかの製品番号がクリックされたら、該当する製品番号の詳細情報を画面表示。
プログラムの部品化
楽々Framework3では前述の「従業員情報検索」と「製品情報検索」に対して「検索処理部品」を使用してプログラムを作成します。これらのプログラム部品のことを「プログラムパターン」と呼びます。
検索処理部品が実装する画面の流れ
- 検索条件を入力する画面を表示。
- 「検索」ボタンがクリックされたら、必要な検索条件が正しく入力されているかチェックし、正しければ検索対象ののデータベースを検索して、条件に一致するデータを一覧表形式で画面表示。(正しくなければエラーメッセージを付けて検索条件入力画面を再表示。)
- 一覧表示画面からいずれかのキー項目がクリックされたら、該当するキー項目の詳細情報を画面表示。
上記のとおり、部品は汎用化されており、処理の流れには「従業員No.」や「製品番号」などの固有名詞は登場しません。
業務機能に固有の情報はプログラム開発ツール「RakStudio(ラックスタジオ)」から登録します。
例えば「従業員検索」プログラムを作成する場合、RakStudioから以下の情報を登録します。
- プログラムパターン⇒「検索処理部品」を使用
- 第1画面のデータ項目⇒「従業員No.」「氏名」「フリガナ」「電話番号」…を使用
- 第2画面のデータ項目⇒「従業員No.」「氏名」「所属」…を使用
- 第3画面のデータ項目⇒「従業員No.」「氏名」「所属」「電話番号」…を使用
楽々Framework3でのプログラム開発の基本は「プログラムパターン」の選択と、固有名詞となるパラメータの登録です。現在数百種類のプログラムパターンが準備されています。標準で準備されたプログラムパターンの画面遷移を、GUI画面から任意で変更し組み替えることも可能です。
なお、上記のRakStudioで登録する「従業員No.」「氏名」「所属」などそれぞれのデータ項目も楽々Framework3では「項目オブジェクト」と呼ばれるデータ項目に部品化して使用します。項目オブジェクトはデータ定義情報から自動生成できます。
プログラム自動生成ツール
楽々Framework3では、上記のプログラムパターンをどのように組み合わせて業務システムを構築するかといった「部品組み立て型開発」を行います。この考え方をさらに進めて、プログラムのプロトタイプを自動生成することで、開発の生産性を飛躍的に高めます。
自動生成のもととなるのが対象業務のデータ構造を表す定義情報です。
(ソフトウェア開発の工業化)
楽々Framework3はデータ定義情報を解析して
- データベースの実装(テーブルの作成)
- テストデータの作成
に加えて
- データ項目部品(項目オブジェクト)の生成
- プロトタイプの生成
も自動的に行います。
例えば100を超えるテーブルであっても、その物理定義が完了すれば、ワンクリックで次の瞬間にその全てのテーブルに対して入出力処理を行うプロトタイプができているのです。しかも、テーブルごとの単純な入出力プログラムを定義するのではなく、テーブルの種類やテーブル間の関係を考慮しながら最適な業務処理を行うプログラムパターンを選択します。更に参照ウィンドウも自動的に組み込みます。
あとは、必要に応じて開発者が開発ツール「RakStudio」を使用して編集作業を行えば画面処理は完成します。
さらに固有のビジネスロジックをアクション・コンポーネントで定義してプログラムは完成です。アクション・コンポーネントで定義できないような複雑なビジネスロジックは、Javaによるプラグインを開発することで実現できます。
自動生成されるプロトタイプはそのまま実行可能です。開発者は利用部門にプロトタイプを提示しつつ、その場で編集→再提示を繰り返すことができ、開発プロセスの効率化に役立てます。
データ項目の部品化
一般的にWebベースのプログラム開発の場合、Viewの部分はHTML、JavaScriptを使い、各画面のレイアウトをHTML形式でひとつずつ記述しなければなりませんでした。このことが生産性と保守性を阻害する大きな要因のひとつとなっています。楽々Framework3ではこのViewの部分にHTML、JavaScriptを記述する必要はありません。いちいち各画面をHTMLで記述することはせず、画面出力部品に表示したい項目を指定するだけで、部品が自動的に表示します。これを可能にしているのが、各データ項目のデータ属性・表示属性、およびエラーチェック等の処理内容が定義された項目オブジェクト*1です。
画面出力部品は項目オブジェクトの定義に従ってそれぞれのデータ項目を画面に出力していきます。画面出力部品自身はデータ項 目に関する属性を持たないため再利用性が非常に高いです。例えばデータ1件の内容を表示する画面を出力する部品1つあれば、数百種類のテーブルデータを表示する画面を作成することが可能です。項目オブジェクトは楽々Framework3が自動生成します。*2
プログラムを実行する際に必要なパラメータを定義する楽々Framework3専用のXMLファイル。 *2項目オブジェクトの利用により楽々Framework3では、項目とプログラムの分離(プログラムの再利用)が可能になっています。自動生成された項目オブジェクトを変更したり、類似登録をすることも可能です。
ビジネスロジックの部品化
例えば、登録ボタンを押下した場合にデータベースへの登録処理を実現したい場合、登録ボタンにロジックを設定します。ロジックは部品化されており、いくつかのロジック部品を組み合わせて設定することで処理を実現します。
この処理の組み合わせをロジックリストといいます。
ロジックリストには、楽々Framework3で標準機能として準備しているロジックと独自ロジックを設定することが可能です。
標準で準備されているロジックとしては、必須チェックや型のチェック、重複チェックなどがあります。
独自ロジックの作成
標準外のエラーチェック処理やデータ更新処理などを独自ロジックとして設定することが可能です。独自ロジックでは固有の条件により実行される業務ロジックを作成しますが、「ビジネスロジック・アクション・コンポーネント」と呼ぶ部品を使用してGUI画面から定義可能です。
「ビジネスロジック・アクション・コンポーネント」では下記の3つを定義します。
- アクションを実行するタイミング
- アクションを実行する条件
- アクションの種類
「アクションを実行するタイミング」でプログラムの処理の流れの中のどのタイミングでアクションを実行させるか指定できます。
アクションを実行するタイミングについては、アクションを設定する対象を選択した時点である程度決定されます。
例えば、表示部品であれば、表示部品を作成する前と後、登録ボタンであれば、ボタンを押した後のエラーチェック、登録処理の前、登録処理の後などが実行タイミングになります。
「アクションを実行する条件」では業務固有の条件を指定できます。入力値同士の比較が設定可能です。
「アクションの種類」も多数用意してあります。
- 複数の入力項目間のエラーチェック
- メッセージの表示
- エラーログ出力
- メール送信
- 関連データの更新
- データ加工
これらの他にJavaScriptやRubyの任意のロジックを呼び出すことも可能です。
さらに複数のデータベースを同時に更新してコミット/ロールバックを同期する2フェーズコミットにも対応しており、異なるシステム間の在庫移動等、データベースをまたがる更新処理に適用可能です。
以下は実際にビジネスロジック・アクション・コンポーネントを使用してエラーチェックを追加した例です。
ここでは製品の出荷情報を登録するプログラムに『出荷するためには必ず受注していることが必要』というビジネスロジックを組み込みます。具体的には『「受注日」よりも「出荷日」の日付が古い場合はエラーにする』という処理を追加します。
こちらがエラーチェック実装対象となる登録画面です。
RakStudioからロジックリストの画面を呼び出します。「登録」ボタンを選ぶと「登録」ボタンクリック時に実行されるロジックのリストを表示する画面を呼び出します。
ロジックリストから独自ロジックの組み込み箇所を選択します。
エラーチェックの設定画面です。
以上でビジネスロジックの組み込みは完了です。以下は、組み込み後のプログラムを実行したときの画面です。対象日Fromより対象日Toが後の日付で登録しようとすると
以下のようにエラーメッセージが表示され、ビジネスロジックが確かに組み込まれていることがわかります。