3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OutSystems初心者向け:デバッグの基本と注意点まとめ

Posted at

はじめに

OutSystemsでアプリ開発を始めたばかりの方へ。
「動かない…」「どこで止まってるの?」そんなときに頼れるのがデバッガです。
この記事では、OutSystemsのデバッグの基本操作と、ハマりがちな注意点をまとめて紹介します。

動作環境

  • OutSystems Version: O11
  • Service Studio Version: 11.55.22
    ※モジュールは基本的にReactiveWebAppです。

デバッグの基本操作

ブレークポイントの設定

  • Service Studioで止めたい箇所にブレークポイントを追加します。デバッグを開始した後もブレークポイントを設定することができます。
    {CE4322D2-299D-4D12-A40B-F8C8393FAE6A}.png

デバッグの開始

  1. 「Debugger」タブ → EntryModuleと好きなブラウザを選択→「Start Debugging」で開始
      ※EntryModule = デバッグセッションの起点となるモジュール。基本的にエンドユーザーモジュールを設定します。
    {DDB8F131-9411-4955-87BD-A896525EF28E}.png

    moduleTypeがReactiveWebAppの場合「Start Debugging」すると自動でブラウザが開かれますが、
    TraditionalWebの場合OpenInbrowserにチェックをつけないと開きません。
    {59CF2DBB-F894-44E7-AAEA-6BC4BA6686A3}.png

  2. ブラウザからアプリを操作し、テストしたいアクションを呼び出す
    {E2052CA3-76A2-4DE5-914E-4E1939AA9E29}.png
    このテストアプリの場合、EmployeeのNameを更新するボタン でOnClickアクションが呼び出されます。

{66376B2F-0748-4FC3-8FF7-062798E24DA4}.png
EmployeeのNameを更新するボタン を押下するとOnClickアクションでデバッガが停止しました。
{3F2D0810-0A24-4580-8EC2-59C201AA138B}.png
デバッガのタブの詳細については下記を参照してください。
Debuggerタブについて

デバッグ時の注意点まとめ

  • プロデューサモジュールのデバッグはEntryModuleにコンシューマモジュールを指定したうえで、ブラウザを手動で開くと開始できる

    プロデューサモジュール単体でデバッグしたい場合、EntryModuleにコンシューマモジュールを指定したうえで、ブラウザを手動で開く必要があります。

    詳細な前提条件については下記を参照してください。
    プロデューサモジュールをデバッグする

    私は上記の記事を雑に読んでいたのか、割と最近までコンシューマモジュールでもデバッガを起動させないとプロデューサモジュールのデバッグはできないと思い込んでいました。

    この記事の「プロデューサモジュールをデバッグする方法」には、
    要約するとコンシューマモジュールとプロデューサモジュール両方のブレークポイントで停止させたい場合は、デバッガを両方起動しなさいと書いています。

    別にコンシューマモジュールのブレークポイントで止めたくなければ、プロデューサモジュール単体でもデバッグできるのです。

    せっかくなのでコンシューマモジュールとプロデューサモジュール、それぞれ単体で起動したらどうなるのか見ていきたいと思います。

    エンドユーザーモジュール単体で別モジュールのサーバーアクションをデバッグしようとした場合

    スクリーンアクションで別モジュールのサーバーアクション(UpdateEmployees)を呼んでいるところにブレークポイントを置きます。
    {DAC41470-D582-49F1-AA55-1C044EE93B93}.png
    UpdateEmployeesでデバッガを止めてStep Intoすると下記のエラーが発生しました。
    {0DF5B01A-EDA0-4A9A-A71E-9FD264EABE86}.png
    調子が悪いとデバッガが固まって戻ってこなくなるので、コンシューマモジュールのみデバッグしてるときにうっかりStep Intoしないようにしましょう。

    プロデューサモジュール単体でサーバーアクション(UpdateEmployees)をデバッグする場合

    こちらはプロデューサモジュール(moduleType:Service)のDebbugerタブです。
    {862FB21E-CBBF-4545-A13A-A29BAF871559}.png

    Open in browser というチェックボックスがあるのでチェックを付けたらいかにもブラウザが開きそうですが、
    EntryModuleにコンシューマモジュールを指定し、Open in browser にチェックをつけて「Start Debugging」を押下してもブラウザは開きません。
    {7159633E-AF50-490A-B8A1-3428ED37C178}.png

    この状態で、エンドユーザーモジュールから手動でブラウザを開いてみます。
    {6227BA03-4C07-4F67-BBBA-4E2BAA60A53C}.png

    {E2052CA3-76A2-4DE5-914E-4E1939AA9E29}.png
    EmployeeのNameを更新するボタン を押下すると、UpdateEmployeesが呼び出されてデバッガを停止させることができました。
    {57CF987B-7581-418F-BB01-C6FA85A0F3C8}.png

    moduleTypeがServiceの場合、Open in browser にチェックをつけても今のところブラウザは開かないので、手動でブラウザを開くようにしましょう。今回はエンドユーザーモジュールから開きましたが、URLを指定して開いても同じ挙動になります。


  • 環境次第では自分のデバッグがチームメンバーが操作しているアプリの動作に影響を与えることがある

    まず、TraditionalWebアプリにはPesonal AreaPublic Areaがあり、自分の変更をPublishすることなくデバッグすることができますが、ReactiveWebAppやMobileの場合はPublic Areaしかないので変更をPublishせずにデバッグすることができません

    Publishされていない変更がデバッグ時にどう扱われるかについては下記の「パブリッシュされていない変更」を参照してください。

    Debuggerタブについて(パブリッシュされていない変更)

    Public Areaというのは、1-Click Publishを使用した場合にモジュールがパブリッシュされる、環境の共有領域だそうです。
    Public AreaとPersonal Area

    このPublic Areaでデバッグしているので、開発環境によってはチームの誰か一人がデバッグをしていると、同じ環境にいるメンバーにも影響が出ることがあります。

    実際に、私がサーバーアクションをデバッグしているとき、チームメンバーがそのサーバーアクションを呼んでいる画面を開くとローディング状態になっていたり、

    私がサーバーアクションのデバッグを始めた後に、チームメンバーが同じサーバーアクションのデバッグを開始すると、私のデバッグフローが巻き戻ったりしたことがあります。

    詳細については下記の「プロキシシナリオとファーム環境でのデバッグ」のところを参照してみてください。

    アプリのデバッグ(プロキシシナリオとファーム環境でのデバッグ)

おわりに

OutSystemsのデバッガは、慣れるまでは戸惑うことも多いですが、煮詰まったときにはとても強力なツールです。

この記事が、OutSystems初心者の方の助けになれば嬉しいです!

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?