LoginSignup
22
17

More than 3 years have passed since last update.

OutSystemsは魔法じゃないと気付いたとある会社員の学び

Last updated at Posted at 2019-07-20
1 / 18

image.png


はじめに


OutSystemsとは?

OutSystemsの超概要をご覧下さい。


言いたいこと

  • OutSystemsは優れたツールです
  • しかしながら、OutSystemsにもよくないところはあります
  • それらを理解した上でOutSystemsを使わないと「思ってたんとちがう」となります

これまでの経緯

  • 2014年にOutSystemsをあるプロジェクトに導入
  • 導入当初は自分でOutSystemsを使うよりも企画、マネジメント中心
  • 2017年からシステム開発について真面目に勉強するように(DDD、クリーンアーキテクチャー、JavaScript、Python、C#、テストコード、Git、アジャイル・・・)
  • この半年ほどは自分でもOutSystemsを利用するように

するとどうなったか?

  • PythonならできるxxxがOutSystemsではできんやん!
  • Jasmineなら簡単に書けるテストコードがOutSystemsだと面倒臭い!

などと今更気付く(2014年に気付いていれば・・・)。みなさんに同じ思いをしてもらいたくないので、OutSystemsのイマイチと思うところを共有します。


OutSystemsのイマイチなところ

  • DBと密結合
  • Actionの引数にActionを設定できない
  • ビルド(Publish)が遅い
  • 周辺ツールが充実していない
  • IDEが弱い
  • コードがテキストじゃない

DBと密結合

  • テストにDBが必須
  • テストデータの分離ができない
    • 自動テストのデータとマニュアルテストのデータの分離
    • チーム間で利用するデータの分離

Actionの引数にActionを設定できない

例えばActionを渡せると以下のように書ける(わかりやすくするためJavaScriptで書いています)。

テスト実行ユーティリティ.js
function testExecution(testScenario, fn) {
  var testResult = fn(testScenario);
  saveTestResult(testScenario, testResult);
}
呼び出し処理.js
var testScenarios = getTestScenarios(getActionName(testAction));
for(var i = 0; i < testScenarios.length; i++) {
 testExecution(testScenarios[i], testAction);
}

Actionを渡せないと以下のように書くことになる。

呼び出し処理.js
var testScenarios = getTestScenarios(getActionName(testAction));
for(var i = 0; i < testScenarios.length; i++) {
 // 自分でテストを実行し、結果を保存する必要がある
 var testResult = testAction(testScenarios[i]);
 saveTestResult(testScenarios[i], testResult);
}

ビルド(Publish)が遅い

  • 昔と比べて速くなった
  • OutSystems11になってできたService eSpaceは特に速い
  • それでもTDDする(レッド、グリーン、リファクタリングのループを回す)には遅い

周辺ツールが充実していない

  • OutSystemsにはForgeというマーケットプレイスのようなものがあり、BSDライセンスモデルにもとづきソフトウェアが公開されている
  • しかし、テストツールはあまり充実していない。カバレッジを取得するツールもない

IDEが弱い

  • JavaScriptのエディタには以下の機能がない
    • フォーマッター
    • リンティング
    • コード補完
  • IDEはオープンソースでもなく、APIも公開されていないため、自分たちでは機能拡張できず、世の中のエディタとの格差は開いていく一方では?

コードがテキストじゃない

  • OutSystemsのコード(設計情報)はメタデータとしてDBMSに格納されている。これをXMLとして取り出すことはできる
  • アイコンの座標なども格納しているためサイズが大きい。過去バージョンも全て保持するため、定期的に削除しないとパンクする(1つのeSpaceが1GBを超えることはよくある)
  • 「StaffってEntityどこにあったっけ?」となっても簡単には探せない(ツールを作れば簡単に探せます)
  • コードの共有が難しい
    • 「このActionでエラー出てるんですけど原因わかりますか?」といった問合せをStack OverflowにしようとしたときにeSpaceを添付するしかない(普通のプログラミング言語ならばテキストのコピー&ペーストで済む)
    • その上、Intellectual Property Protection (IPP) という機構があるため、他人の(ライセンスの異なる)eSpaceは自分の環境にはPublishできない
    • GitHubのような「設計図共有サイト」もなくノウハウが貯まりづらいのでは?

最後に

  • 色々とネガティブなことを書きましたが、ローコード開発の市場規模は急速に拡大しており、2022年には2兆円を超えると言われています
  • その中でリーダーのポジションであるOutSystemsはシステム開発の有力な選択肢のひとつです
  • OutSystemsはメリット、デメリットを理解した上で正しくお使い下さい

image.png


ボツロゴ

image.png image.png


22
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
17