Internal Training Session: Low-Code Development Experience Using Outsystems Part 2

Hello! I’m Ogi, responsible for this edition of our study session blog. I’m excited to share the highlights of our recent internal training session, “Low-Code Development Experience Using Outsystems Part 2”!

Check out the highlights from our previous study session here!

Building on our last session, the goal of this study meeting was to deepen our understanding of low-code development and Outsystems by gaining hands-on experience with Outsystems development. This time, we had many new members join us, making the session even more vibrant and engaging.

Here’s how the study session unfolded:

  1. Recap of the Previous Session
  2. Watching Educational Videos – Focus on UI Development
  3. Hands-On Development with Outsystems
  4. Summary and Q&A

Watching Educational Videos – Focus on UI Development

We kicked off the session by watching official educational videos provided by Outsystems. This time, the videos focused on UI development, where we learned the basics of screen widgets, variables, and client-side logic.

If you’re interested, you can watch the videos here (an Outsystems account is required).

Hands-On Development with Outsystems

After watching the videos, each participant used their own Outsystems environment to start developing. During this hands-on session, we primarily focused on:

  • Adding Widgets and Logic to Screen
  • Utilizing Aggregates ( Learn more about Aggregates here.)
  • Displaying Data on Screen

We experienced firsthand the unique advantages of developing with Outsystems, such as the simplicity of adding widgets through drag-and-drop and the visual manipulation capabilities provided by Aggregates for data retrieval and sorting.

Throughout the development process, we followed the instructor’s explanations and worked on our own projects, enhancing our practical skills.

While listening to the instructor’s explanations, we proceeded with development in our own environments.

Summary

In this study session, we tackled more hands-on content compared to the previous one, successfully conveying the benefits of low-code development and Outsystems. The development experience segment fostered active discussions and Q&A among the participants, further deepening our understanding.

We plan to continue hosting study sessions focused on Outsystems development in the future. Stay tuned for our next article!

社内勉強会:Outsystemsを用いたローコード開発体験 part2

今回の勉強会記事を担当します、第2ユニットのオギです。
今回は社内勉強会「Outsystemsを用いたローコード開発体験 part2」が開催されましたので、その様子をご紹介します!

前回の勉強会の様子はこちら

前回に引き続き、今回の勉強会も「Outsystemsでの開発を体験することで、ローコード開発やOutsystemsへの理解をより深めていくこと」を目的としています。
今回からの参加となるメンバーも多数いて、さらに活気ある勉強会となりました。

勉強会の流れは以下のとおりです。
⓪前回の勉強会のおさらい
①学習動画視聴 -UI開発について-
②Outsystemsでの開発体験
③まとめ、質疑応答

学習動画視聴 -UI開発について-

まずはOutsystemsが公式で提供している学習動画を視聴しました。
今回はUI開発についての動画を通して、画面のウィジェットや変数、クライアントのロジックについての基礎知識を学んでいきます。

こちらのリンクから視聴することができる(Outsystemsのアカウント取得が必要になります)ので、ご興味がある方は見てみてください!

Outsystemsでの開発体験

動画を視聴した後は、各々が構築したOutSystemsの環境を用いて実際に開発を進めました。

今回実施したのは主に以下のとおりです。
・画面へのウィジェット、ロジックの追加
・Aggregateの活用 (Aggregateについてはこちら)
・画面へのデータ表示

画面にウィジェットをドラッグ&ドロップで簡単に追加できたり、Aggregateを用いることでデータの取得やその条件、ソートなどを視覚的に操作できたりといったOutsystemsでの開発ならではの利点を体験しました。

講師の説明を聞きながら自分の環境で開発を進めていきます。

まとめ

今回の勉強会では前回よりもさらに実践的な内容を取り上げ、ローコード開発やOutsystemsの良さを伝えられた会になったかと思います。
開発体験のパートでは、近くのメンバーとの話し合いや質疑応答が盛んにおこなわれ、理解も一層深められたのではないでしょうか。

今後もOutsystemsの開発をテーマとした勉強会を開催予定です!
次回の記事もお楽しみに。

Engineering Blog – Internal Security Training (Training Emails)

Welcome to the engineering blog, where we share what we’re learning and working on daily.

As part of our employee security education efforts, we conducted a training email exercise.

What is a Training Email?

A training email involves sending employees simulated emails that mimic targeted attack emails to strengthen their ability to respond effectively.
Targeted attack emails are a sophisticated technique aimed at stealing sensitive information, often directed at specific organizations or individuals.

In this training, pseudo-attack emails resembling work-related communications were sent to selected employees to evaluate whether they would open the email or its attachments.

What We Did

1. Created Realistic and Persuasive Email Content

We designed email content and subject lines that employees might open without thinking twice. The goal was to create emails that seemed plausible during the training period.

Example of training email

2. Created a Fake Virus File (Word Document)

For this exercise, we embedded a mechanism into a Word file that accessed our company-managed server when opened.

If an employee opened the attachment, the file accessed the server and logged a unique ID hidden in the document.
By checking the output log, we were able to identify which employees had opened the file.

Unfortunately, a few employees did open the attachment during this exercise.

How training emails work

3. Conducted Internal Re-education

We followed up with additional internal training to reinforce measures against targeted emails and raise awareness further.

Refresher materials

Summary

This exercise helped raise employees’ security awareness.
We plan to continue these efforts in the future to further improve security measures.

Thank you for reading, and stay tuned for the next edition of the engineering blog!

技術者ブログ – 社内セキュリティ訓練 (訓練メール)

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。

社員のセキュリティ教育の一環として訓練メールを実施しました。

訓練メールとは

標的型攻撃メールを模した疑似的なメールを従業員に送信して、攻撃メールへの対応能力を養うためのものです。
標的型攻撃メールは、重大な情報を盗むことを目的として特定の組織や個人に送信される巧妙な攻撃手法です。

そこで、訓練メールでは、業務用メールなどに似た疑似攻撃メールを対象従業員に送信し、メールを開封したかどうか、添付ファイルを開いたかどうか評価しました。

実際に行ったこと

1.引っ掛かりやすいメール文章を作成

何気なく開いてしまうかもしれないメールの文章や、名前を考えてメールを作成しました。

訓練メールを行った時期にありえそうなメールを作ることを考えました。

訓練メール文章

2.偽ウイルスファイル(Word)作成

今回は、Wordファイル内に、ファイルを開くと自社で管理しているサーバへアクセスする仕組みを組み込みました。

訓練メールで、添付ファイルを開いてしまったら、

サーバへアクセスし、Word内に仕組まれていたIDをログに出力します。

出力されたIDによって、どの従業員が添付ファイルを開いたか特定できます。

ちなみに、今回の訓練で数人添付ファイルを開いてしまいました。

訓練メールの仕組み

3.社内再教育

再度社内教育を行い標的型メールへの対策を再認識しました。

再教育資料

まとめ

今回の訓練により従業員のセキュリティ意識の向上になったかと思います。
今後も、続けていきたいと思いました。

以上となります。

次回の技術者ブログをお楽しみに。

Employee Introduction

Thank you for reading! Today’s introduction is brought to you by Junpei, and it’s been a while since my last post.

A Recent Hobby

Lately, I’ve gotten back into Pokémon, thanks to my wife’s influence. It’s been about 20 years since I first fell in love with it back in elementary school, when Pokémon Red/Green debuted on the Game Boy. Now, the nostalgia has kicked in again after all these years.

Not long ago, Mie Prefecture’s Shima Spain Village teamed up with Pokémon for a limited-time collaboration. Naturally, I had to check it out. The park was filled with Pokémon displays everywhere, drawing crowds of all ages.

Throughout the area, Pokémon appeared at every turn!
There were lines of people waiting to take photos at popular spots.

Pokémon Everywhere!

Every corner of the area featured Pokémon—and for the more popular photo spots, people were even lining up. I rediscovered old favorites I used as a kid and met new Pokémon introduced over the past two decades. Witnessing a franchise that continues to be cherished by so many people for so long made a strong impression on me.

In the IT industry, we work every day to develop systems that make a positive impact. Lately, I’ve been thinking how wonderful it would be if we could create something as universally beloved as Pokémon—something that resonates with both children and adults alike.

Stay tuned for the next blog post!

社員紹介

閲覧いただきありがとうございます。
今回の社員紹介を担当する「じゅんぺー」です。
久しぶりの投稿になります。

最近の趣味

最近、妻の影響でふたたびポケモンにはまっています。
私が小学生の頃にゲームボーイのポケットモンスター「赤」/「緑」が発売され、夢中になったあの時代から20年ぶりに再燃しました。

先日は三重県の志摩スペイン村が期間限定でポケモンとコラボしていましたので思わず足を運びました。
スペイン村のあちらこちらに数多くのポケモンが登場し、老若男女問わず多くの人で賑わっていました。

エリア内のいたるところにポケモンが…!!
人気スポットでは写真待ちの列ができてました

子供の頃に使っていたポケモンと再会し懐かしさを感じたり、
この20年間で新たに登場したポケモンとの出会いがあったりと、多くの人に長い間愛され続けるコンテンツの素晴らしさに感動しました。

私たちもIT業界で日々、多くの人の役に立つシステム開発を目指していますが、
ポケモンのように子供から大人までに愛されるようなモノが作れたらいいなあと思っている今日この頃です。

次回のブログもどうぞお楽しみに。

Recreation: “We Went to Higashiyama Zoo and Botanical Gardens!”

At Dandelions, we regularly hold “Recreation” events to deepen the camaraderie among employees!

This is “George” from Unit 3. As previously introduced in this blog, Dandelions has become a sponsor of the young lion “Regulus” at the Higashiyama Zoo and Botanical Gardens. To go see “Regulus” (and other animals) together, Unit 3 organized a recreation event—a visit to the Higashiyama Zoo and Botanical Gardens.

After the date was set for Saturday, October 19, we kept an eye on the weather forecast. Unfortunately, the weather didn’t favor us on the day—it rained, and it was unusually hot and humid for October. However, even while walking around with umbrellas, we were able to thoroughly enjoy the zoo and botanical gardens.

To make touring the zoo and botanical gardens even more interesting, we also held an animal scavenger hunt game. Participants earned points by finding specific animals, taking photos, and submitting them, with points awarded based on their rarity (difficulty of finding them). The recreation participants were divided into four teams and set out to find the animals.

Komodo Dragon (Apparently, in Japan, it can only be seen at the Higashiyama Zoo and Botanical Gardens.)
Finding the Emerald Tree Boa
In Front of “Regulus”

(By the way, before going to the zoo and botanical gardens, we all had lunch together at a nearby restaurant.)

Stay tuned for the introduction of our next recreation event!

レクリエーション「東山動植物園に行きました!」

ダンデライオンズでは社員同士の親睦を深めるための「レクリエーション」を定期的に開催しています!

第3ユニットの「じょーじ」です。本ブログですでに紹介されたように、ダンデライオンズは、東山動植物園の若きライオン「レグルス」のスポンサーになりました。「レグルス」(のみならずの動物たち)をみんなで見にいくために、第3ユニットが今回開催したレクリエーションは、東山動植物園への訪問になりました。

開催日が10月19日の土曜日に決まってから、天気予報を見ていました。残念なことに、当日は天気に恵まれず、雨が降って、10月とは思えないほど暑くて湿気の多い日でした。ただし、傘をさして歩いていても、動植物園を十分に楽しめました。

そして、動植物園を見て回ることをもっと面白くするために、動物探しゲームも開催しました。特定の動物を発見して、写真を撮って提出すると、そのレア度(発見の難易度)に応じてポイントをもらうシステムでした。レクリエーションの参加者が4つのチームに分かれて、動物を探していました。

コモドオオトカゲ(日本では、東山動植物園でしか見られないようです。)
エメラルドツリーボアの発見
「レグルス」の前

(ちなみに、動植物園に行く前に、近くのレストランで、みんなで昼ご飯を食べました。)

次のレクリエーションの紹介をお楽しみに!

Engineering Blog: Migrating Outsystems Database to an External DB

Welcome to our engineering blog, where we share the learning experiences we’re engaged in daily. This time, we’re focusing on low-code development in Unit 2.

Today’s Theme: Migrating Outsystems Database to an External DB

In Outsystems, you can request a free cloud version called the Personal Environment (PE) by creating an account. (What is an OutSystems Personal Environment – OutSystems Support)
Using this environment, you can develop personal applications for small-scale users and are provided with 2GB of database storage.

However, there are some inconveniences, such as limited storage capacity and the inability to access the database directly from external sources. To address these issues, we decided to migrate the internal database created in Outsystems to an external database while keeping the table definitions unchanged. Below are the results of this migration.

Environment Information

Personal Environment: Version 11.31.0 (Build 43948)
Service Studio: Version 11.54.80 / Build 63652
Data Extractor: 1.4.0

About Data Extractor

By using Data Extractor, freely available on the Forge, you can obtain the actual table DDL corresponding to the Entities created in Outsystems. Here’s how to use it:

  1. Install “Data Extractor” from the Forge.
  2. Launch the application via “Open In Browser.”
  3. Log in by entering your ID and password.
  4. Create a new snapshot by clicking “New Snapshot” on the top page.
  5. Configure the new snapshot with the following settings:
    ・Snapshot Name: Give your snapshot a name. Any name is fine.
    ・Extract Configurations: Check the “Table DDL” option. Other items are optional.
    ・Extract Entities: Add the Entities for which you want to output the DDL to the list.
     Use the “Search Entity to Add” feature to find Entities by prefix matching. Select the desired Entity and click “Add” to include it in the list.
    Other Items: Optional. Configure as needed.
  6. Click the “Run” button. Your snapshot will appear in the list on the top page with the status “Created.” Once the status changes to “Done,” you can download it by clicking the “↓” icon on the far right.
  7. Contents of the downloaded Zip file:
    ・[TableName].csv.gz: Export of data registered in the Entity.
    ※Note: In our testing environment, Japanese characters were displayed as “?” and could not be read correctly.
    ・TableDDL.Create.sql.gz: DDL of the actual table corresponding to the Entity.
    ※Includes the following:
     ・Create Table statements
     ・Alter Table statements to add foreign key constraints to columns of the Entity Identifier type
     ・Create Index statements to add indexes to columns of the Entity Identifier type

By executing the Create Table statements obtained through these steps, you can create tables with the same layout as the internal database on your own SQL Server.

To reference the tables created in the external database from Outsystems, you’ll need to create a Database Connection via the Service Center and then set up the connection to the tables through “Connect to External Table or View” in Integration Studio.

Summary

  • Outsystems provides an internal database by default.
  • To migrate to an external database, you can obtain the Entity’s DDL using the Data Extractor from the Forge.
    • For data migration, alternative methods may be necessary since columns containing Japanese characters might become garbled.
  • Referencing tables in the external database requires creating a Database Connection and setting up connections through it.

How did you find this guide?
We hope these steps will be helpful when you consider externalizing your own database in the future.
Our Unit 2 team will continue to share engineering blogs using low-code tools like OutSystems, so stay tuned!

技術者ブログ:Outsystemsデータベースの外部DB化

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回は、ローコード開発をテーマにしている第2ユニットです。

今回のテーマ:Outsystemsデータベースの外部DB化

Outsystemsでは、アカウントを作成することで、無料のクラウド版である”Personal Environment(PE)”をリクエストすることができます。(参考
これを用いて、小規模ユーザー向けの個人用アプリケーションを開発することができ、その際には2GBのデータベースストレージが与えられます。
ただし、容量に限りがあることに加えて、外部より直接アクセスすることができないなど、いくつか不便な点もあります。

そこで今回は、Outsystemsで作成した内部DBを、テーブル定義はそのままに外部DBへと移行することにしました。
以下はその結果となります。

環境情報

Personal Environment: Version 11.31.0 (Build 43948)
Service Studio: Version 11.54.80 / Build 63652
Data Extractor: 1.4.0

Data Extractorについて

Forgeにて無料で公開されているData Extractorを用いることで、Outsystemsで作成したEntityに対応した実テーブルのDDLを取得することができます。
使い方は以下の通りです:

  1. Forgeより”Data Extractor”をインストール
  2. Open In Browserより画面を起動
  3. ID・パスワードを入力し、ログイン
  4. トップページの”New Snapshot”より、新しいスナップショットを作成する
  5. 新規スナップショット画面で、以下を設定する:
    ・Snapshot Name: スナップショットの名称。任意の名称でOK
    ・Extract Configurations: “Table DDL”にチェック。それ以外の項目は任意
    ・Extract Entities: DDLを出力したいEntityをリストに追加する。
     ”Search Entity to Add”リストより前方一致でEntity名を検索できるので、
     選択→Addすることでリストに追加される。
    ・上記以外の項目: 任意。必要に応じて設定。
  6. “Run”ボタンを押下すると、トップページの一覧に、
    先ほど入力した作成したSnapshot Nameを持つスナップショットが表示されます。
    作成直後は”Status: Created”ですが、これが”Status: Done”になると右端の”↓”よりダウンロード可能となります。
  7. ダウンロードしたZipファイルの中身は以下の通りです:
    ・[テーブル名].csv.gz: Entityに登録されているデータのエクスポート
     ※手元環境で試した際、日本語は”?”で表示されており正しく読み取れませんでした…
    ・TableDDL.Create.sql.gz: Entityに対応する実テーブルのDDL
     ※以下の内容を含む:
      ・Create Table文
      ・Entity Identifier型の列に対する外部キー制約を付与する、Alter Table文
      ・Entity Identifer型の列に対するインデックスを付与する、Create Index文

上記手順で入手したCreate Table文を実行することで、
自前で用意したSQLServer上に内部DBと同じレイアウトのテーブルを作成できます。

外部DBに作成したテーブルをOutsystemsより参照するには、Service CenterよりDatabase Connectionを作成し、その後、Integration Studioより”Connect to External Table or View”にて設定を行う必要があります。



まとめ

  • Outsystemsでは、内部DBが標準で提供されている
  • 外部DBに移行しようとする場合、ForgeのData Extractorを使用するとEntityのDDLを取得できる
    • データの移行そのものは、日本語を含む列が文字化けする場合があるので、別の手段を検討する必要あり
  • 外部DBに作成したテーブルを参照するには、Database Connectionの作成と、それを通じたテーブルへの接続設定が必要となる

いかがでしたでしょうか?
今後、自前で用意した外部DBへの移行を検討する際、手順の一助になれば幸いです。
第2ユニットでは、これからもOutSystemsなどのローコードツールを使った技術者ブログを展開していきますのでお楽しみに!