DEV

Webアプリのローコード開発ツール:Wagbyの概要【5年間使用しています】

5月 21, 2021

業務でWagbyを5年ほど使用しています。Wagbyとはなんぞやから、Wagbyを使った開発まで説明します。

ローコード開発ツール(超高速開発ツール)とは

ローコード(Low Code)開発ツールとは、「高度な」プログラミング知識や経験を必要とせずに、画面上のドラッグ&ドロップや設定により、誰でも、簡単に、短期間で、アプリケーションを開発できるプラットフォームです。

よく聞くツール名は、GeneXus(ジェネクサス)、Wagby、Web Performerです。

ローコード開発コミュニティ

2017年頃までは、超高速開発ツールと呼ばれていましたが、最近は、海外の呼称と合わせて、ローコード開発ツールと呼ばれています。海外では略して、LCAP(Low Code Application Platform)と表記されているものもよく見かけます。

国内では、SIer、ツールベンダ、ユーザ企業が集う「超高速開発コミュニティ」が運営されていますが、こちらも、2019年10月に、「ローコード開発コミュニティ」に名前を変更しています。

競合ベンダが集うコミュニティですが、とげとげしい感じではなく、「同じ業務を各々のローコード開発ツールで実装、結果をお見せします!」といったイベントを開催していて、外から見ていると仲がよさそうです(笑)

ローコードとノーコードの違い

ローコード開発とノーコード開発という表現をよく見かけますが、違いは以下の通り:

  • ローコード開発
    ドラッグ&ドロップ、設定情報などを基に業務アプリや基幹システムを構築。プログラミングなしでも実装できるけど、細かいところは、プログラミングしたり、外のAPIを呼び出して実現したり、といったこともできる。クラウド以外にも、ローカルPCやオンプレサーバで構築したアプリを稼働できる。
  • ノーコード開発
    ドラッグ&ドロップだけで小規模アプリを構築。基本、プログラミングはなし。パブリッククラウド(AWSとか)で開発とアプリ稼働することが前提。

Wagbyとは

Wagbyは、JavaベースのWebアプリのローコード開発ツールです。開発元は、沖縄のジャスミンソフト

社長さんは、こまめに、ローコード開発関連の話題をブログで取り上げています。

2021年4月にリリースされた最新版では、以下2つの製品に分かれています。

  • Wagby 9:ローコード版(従来から提供されているもの)
  • Wagby 10:ノーコード版(AWS上で動作するもの)。9とは互換性なし。

ローコード版は、これまでのWagbyの最新版。本記事で取り上げるのはこちらです。詳細は次で説明します。

ノーコード版は、AWS上で動作する完全クラウド版で、ローコード版とは別に、ジャスミンソフト社がスクラッチで開発したものです。UIには、FacebookのJavaScriptフレームワークReactとReact用のUIコンポーネントMaterial UIを採用しています。コード不要で動作する点がウリですが、カスタマイズも可能です。

Wagby(ローコード版)のアーキテクチャ

WagbyDesignerで設計・開発→ビルドすると、Webアプリを生成します。「WagbyDesigner」と「生成したWebアプリ」は、どちらもTomcat上で動作します。Wagbyのアーキテクチャ概要(技術スタック)は、以下の通りです:

wagbyアーキテクチャ概要

上記がWagbyで生成されるWebアプリの構造です。Javaコードも出力されるため、必要があれば、Eclipseを使用して、拡張機能を実装できます。

また、Tomcatが稼働する環境であれば、クラウド/オンプレ問わず、どこでも動作します。また、主要なデータベース製品(Oracle, SQL Server, DB2, PostgreSQL, MySQL)をサポートしています。

Wagbyを使った開発

Wagbyは、「業務で使われる「データ」に着目し、その種類、型、関係性を整理」していくことで、開発が進みます。

設計・開発・ビルドは、すべてChrome上のWagbyDesignerで行います。Wagbyが出力したWebアプリは、主に業務系をターゲットにしています。実際に僕が担当している開発も、受発注システムや基幹系システムです。

Wagbyが生成するWebアプリは、Tomcatやライブラリを含めて生成されるため大変便利。しかし、その分、開発用PCにはそれなりにスペックのものが求められます(CPUはCorei7系、メモリは最低8GBとか)。

モデル定義

具体的には、WagbyDesignerで、モデルを定義(DBのテーブル情報の様なもの)→詳細設定→ビルドして画面と挙動確認→再度設定→ビルド・・・という感じです。

原則 1つのモデルが、1画面を表現していて、1テーブルにひもづきます。

WagbyDesigner - モデル項目詳細定義モデル定義画面

シークレットモードで開いています(笑)。WagbyDesignerは、シークレットモードでのアクセスが推奨されているためで、それ以外の深い理由はありません。

画面の各入出力項目は、レイアウト含め、細かく設定できます。また、1モデル内で、検索画面、登録画面、更新画面、削除画面のすべてを設定します。例えば、検索画面を追加したい場合、以下の検索・一覧画面の項目で、「画面を作成する」にチェックを入れるだけで画面が作成されます。

WagbyDesigner - 検索画面の作成

小回りが利かなさそうですが、例えば、DB上、複数テーブルをJOINしてデータを引っ張ってきたいときは、WagbyDesigner上でモデルを定義、DB上でモデルと同じ名前でビューを作って、その中で複数テーブルをJOINすれば実現できる、など、工夫次第で解決できることが多いです。このあたりは、サポートに入れば、教えてもらえます。

社内の進捗報告の際も、Wagbyサポートに問い合わせ中で、ここだけ進捗無しです、で済ますことができるので、心の負担が軽くなります(笑)

帳票

業務アプリに欠かせないのが、帳票です。PDF帳票はJaspersoft StudioというEclipseベースのツールでレイアウトを作成して、WagbyDesignerに組み込みます。Community版が無償で使えます。Jaspersoft Studioに関しては、日本語の情報が少ないので、初めて帳票を作る場合は苦戦します。

TIBCO Jaspersoft® Studio

カスタマイズ

ログイン処理やセッション管理以外の部分は、すべてカスタマイズが可能です。例えば、ログイン画面の画像も変更可能です。

Wagbyログイン画面

サーバサイドJavaScriptやJavaを利用して、気軽にデータ登録などのコードが書けますが、気を付けないといけないのは、DB接続用のコネクションを確保する様なカスタマイズをした場合、リソース解放を忘れると、コネクションが枯渇する・・・という普通の開発でありがちなことも起きてしまいます(笑)。

Wagbyを使う価値が半減してしまうので、カスタマイズでDB接続する場合は、本当にその方法でないと実装できないのか、一度サポートに問い合わせるとよいです。

生成したWebアプリのパフォーマンス

Wagbyは、開発を高速化してくれますが、データベースやTomcatなどのミドルウェアのチューニングはしてくれません。

Tomcatが確保するメモリであったり、データベースのサイジング、各テーブルに作成するインデックスなどは、開発者が最適化する必要があります。

データベースのサイジングって何?Tomcatのメモリ設定?という方は、販売代理店に相談して、別途有償で対応してもらう必要があります。

DBの高速化に欠かせないインデックスに関しては、Wagbyはあまり丁寧に対応はしてくれません。Wagbyが発行するSQLを見て、地道にインデックスを作るしか方法がないと思います。ちなみに、SELECT文を入れると、インデックスを作ってくれる個人サイトを作っているので、試しに使ってみてください(構文解析も含めて、すべてJavaScriptで処理をしていますので、サーバ側にはSQLを送りません):

https://www.createindex.app/

実際の処理性能は、JMeterなどで確認するとよいです。このあたりも、販売代理店に相談すると、別途有償で対応してもらえます。(僕は、データベース、ミドルウェア、処理性能などは、全て一人で確認・対応しました)

Wagbyの長所

Web PerformerとWagbyの両方でWebアプリを開発し、本番稼働も経験しました。Web Performerは、2016年頃にお試しで使った時の情報なので、少し古いかもです。そちらの情報も交えながら、以下にWagbyの長所を示します:

業務アプリに必要な機能が揃っている

ログイン管理、セッション管理、ユーザ管理、権限管理、アクセス管理、マスタ管理、セキュリティ対応など、業務アプリを構築する際、実装されていて当然の機能があらかじめ提供されています。レガシーのログイン画面や権限構造をどうしても使いたい、という特殊な要件がある場合はカスタマイズが必要ですが、そのまま使えるほど完成度は高いです。Web Performerでは、このあたりが弱く、ログイン画面から自分でカスタマイズしていく必要がありました。

ブラウザがあれば、開発ができる

Wagbyは、Chromeがあれば開発もできます。Eclipseなどの開発環境は、Javaのカスタマイズをしない限りは必要ありません。Web Performerは、ライセンス登録された端末上でしか動作させることはできません。また、Eclipseベースのツールのため、Web Performerに合ったバージョンのEclipseが必要になります。

クロスブラウザに対応している

WagbyDesignerは、Chrome上でしか動作しませんが、実際に生成したWebアプリは、以下のブラウザで動作します。

  • Google Chrome
  • Microsoft Edge (Chromium ベース)
  • Mozilla Firefox
  • Apple Safari

実際の開発では、動作確認をChromeのみで行っています。他のブラウザでは、動作確認したことがほぼありませんが、大きなクレームを受けたことはありません。

ログ管理がしっかりしている

Wagbyのログは、初めて見る人でもわかりやすくなっています。誰が、いつログインして、どの画面を触ったのかがすぐわかります。Web Performerのログはわかりにくかったです(ただ、2020年にリリースされた最新版では、ログ管理を強化しているので、改善されているかも)。

生成したコードをカスタマイズできる

Wagbyが生成したJavaコードをベースに、Eclipseを使って機能拡張ができます。WebPerformerは、生成したコードを確認することはできるものの、カスタマイズは不可。ちょっとした機能追加であれば、次で説明するサーバサイドJavaScriptによるカスタマイズがおすすめです。

ちょっとした機能追加をサーバサイドJavaScriptで実現できる

WagbyDesigner上からサーバーサイドJavaScriptを使用したカスタマイズも可能です。登録時に、非表示のテーブルフィールドの値を更新したい等、ちょっとした機能追加であれば、こちらの方が簡単に実装できます。また、ビルド不要ですぐに機能を確認できます。

リポジトリがあれば、最新版にバージョンアップできる

ローコード開発ツール全般のメリットかもですが、Wagbyで開発したデータは、リポジトリという形で保管されます。このリポジトリがあれば、最新版のWagby(サポート対象のTomcatやJavaバージョン)にすぐにアップグレードができるので、アップグレード関連の調査・対応コストを大幅に削減できます。

スクラッチと比較して開発期間・コストが短縮できる

経験上、老朽化した既存の基幹システムのリプレースにWagbyを使うと、期間とコストを削減できる印象です。業務仕様やデータI/Fの詳細を分かっている人間がいれば、後は、Wagbyで既存の画面を置き換えていくだけ、というノリで進めることができます。外部ベンダさんへの発注や仕様のすり合わせをする必要もなく、社内の人間と協力会社さんで進めることができるので、サクサク開発が進みます。

外部ベンダさんへ発注すると、年単位かかるものが、社内で開発すると半年くらいの期間で実装できたこともありました。ただ、これは社内向けのシステムの話であり、お客様へ納品するシステムだったり、これまでにない新規システムの開発になると、話は別になると思います。

すぐに試せる

Wagbyは、公式HPから試用版をダウンロードして使うことができます(使用できるDBは付属しているもののみですが)。マニュアルもWeb上に公開されているので、そこから使い方をある程度理解できます。他の製品であれば、メールで問い合わせて、プロダクトキーをもらって、と時間がかかるのですが、さくっと試せるのは、Wagbyのいいところです。

Wagbyの短所

長所もあれば、短所もあります(笑)。以下、僕が考えるWagbyの短所です:

操作性

ブラウザベースのため、EclipseベースのWeb Performerと比較すると、操作性が劣ります。Eclipseベースに負けない操作性を実現できれば、もっといい感じになると思います。最近では、Visual Studioもブラウザ版がでているので、ブラウザベースだから操作性が・・・、という言い訳はいつまでも通用しません(笑)。

設定項目数

設定項目数、多いです。新規に開発いただく協力会社の方も、WagbyDesignerをみた最初のコメントが、「どこに何を設定していいかわからない」です。1モデル内の1項目だけでも、これだけ設定項目があるため、最初はビビります。ただ経験上、Wagbyの開発を数か月こなせば、大体どこを見ればよいかわかる様になります。

WagbyDesigner - モデル項目詳細定義

パフォーマンス

パフォーマンス面は、ハードや「Tomcatやデータベースなどのミドルウェアの設定」に大きく左右されます。Web Performerにも言えることですが、ミドルウェアの設定に関しては、改善の余地ありだと思います。例えば、Tomcatであれば、サーバの最大メモリ容量を入力すれば、自動的にある程度の設定値を算出して、設定してくれる、という機能があってもいいかも。また、データベースであれば、もう少し、SELECTされるクエリを意識したインデックスを作ってもらえるとありがたいです。ただ、このあたりは、昔から難しいところではあるのですが・・・。

不具合

あれ?マニュアルの通りに動かないぞ?と思ったら、Wagbyの不具合でした、ということが結構あります。マニュアル読んで、設定して動かなければ、即サポートに問い合わせれば、時間をあまりロスしません。ある程度試して、期待通りの動きをしなければ、サポートへの問い合わせでよいと思います。

まとめ

Wagbyは、ダウンロードして、ビルドするだけでも、ある程度のWebアプリを生成できます。操作に慣れれば、スクラッチ開発とは比較にならないほど早く開発できますが、リプレース案件以外は、テーブル設計やIFデータ設計などの設計行為が発生します。

僕の経験上、Wagbyを使ってWebアプリを構築するのであれば、ある程度経験を積んだ設計者や開発者と一緒に進めるとよいです。

>>プログラミングの始め方に関する記事もあります。こちらもどうぞ。

以上、Wagbyの概要でした。

-DEV