技術者ブログ – Gitの基礎

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
最近、Gitに触れる機会がありましたので、今回は、その基礎について説明します。

ちなみに、外付けHDDなどで同じファイルの複数バージョンを保存し、以下のようにファイル名によって管理していることがありますか。

あるファイルの複数バージョン。「F」は「ファイナル」を意味して、あればあるほど「ファイナル性」が高くなります。

個人のファイルでしたら、これで十分かもしれませんが、大規模のプロジェクトのソースコードの場合では、より精密な管理が必要になります。そこで、Gitが登場します。

Gitとは

Gitは、バージョン管理システム(version control system、「VCS」)です。その役割は、ファイルの変更履歴を追跡し、管理することになります。そして、追跡によって、管理されているファイルを過去の特定の時点の状態に戻すことと、変更内容を比較・統合することができます。

特に、複数人が関わるプロジェクトでは、Gitを使うと、どのファイルがいつ、誰によって、どのように変更されたかを可視化して、不意な上書きや意図しない変更を防止することができます。

リポジトリとは

Gitによって管理されているファイルは、リポジトリに保存されています。リポジトリの種類を大きく分けると、「ローカル」と「リモート」があります。ファイルを保存する時、変更点がどのリポジトリに対して適応されるか、意識する必要があります。

Gitは「分散型」のVCSのため、開発者が自分のローカルリポジトリで完全な履歴を持つことができます。オフラインの状態でも、ファイルの編集や履歴の確認などが可能です。

リモートリポジトリは、GitHub、GitLabやBitbucketなどのプロバイダーによって提供されています。(もちろん、自分で作成し、運用することも可能です。)ファイルの保存先が「オンライン」のため、チームで作業を共有したり、協力したりすることが簡単になります。

リポジトリの種類

ブランチとは

例えば、新しい機能を実装する時、あるいは既存のソースに影響範囲が分からない変更を加える時、プロジェクトのソースをその場で更新することが危険です。このような場合には、独立している「ブランチ」を作成し、プロジェクト全体に影響を与えない場所で、新しい機能・変更の動作を確認できます。

新機能、修正の開発が完了し、動作確認で問題が生じなければ、ブランチの内容をメインに統合することで、変更を正式に反映させることができます。

ブランチによる分岐と結合

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

Engineer Blog – Trends in Low-Code Tools(Part 2)

As part of our engineer blog, we introduce the topics we are actively learning.
This time, we focus on low-code tools!

Theme: Trends in Low-Code Tools

In our previous blog post, “Trends in Low-Code Tools” – dandelionS Blog, published in July 2021, we discussed the latest developments in low-code tools.

Since then, more of our team members have gained experience with OutSystems, prompting us to conduct another trend analysis to explore the future outlook of low-code tools.

What Are Low-Code and No-Code?

The adoption of low-code and no-code tools is increasing to improve app development efficiency, enabling faster development and cost reduction.

  • Low-Code: Requires minimal coding for app development. Some programming knowledge is necessary, but it allows for flexible customization.
  • No-Code: Enables intuitive app creation without coding. However, customization options are more limited.

[Comparison table with representative tools]

Comparison of Major Low-Code & No-Code PlatformsThe market share of low-code and no-code platforms is primarily based on industry recognition and the number of companies adopting them. Below are the leading platforms ranked by market share:

Microsoft Power Apps

A widely adopted platform due to its strong integration with Microsoft products (especially Office 365 and Azure). As part of the Microsoft ecosystem, it allows businesses to easily create and manage applications.

  • Adoption: Used by organizations of all sizes worldwide, from small businesses to large enterprises.

OutSystems

A low-code platform specializing in enterprise solutions, excelling in large-scale and complex app development. It features strong automation and AI functionalities and is particularly popular among large corporations.

  • Adoption: Commonly used in industries like finance, manufacturing, and public institutions.

Mendix

A low-code platform designed for enterprise applications, known for its integration with SAP and industry-specific approach. It supports both cloud-based and on-premises deployment, providing an advanced development environment.

  • Adoption: Frequently used in manufacturing and logistics industries.

Appian

Specialized in Business Process Management (BPM), this platform excels in process automation and complex workflow management. It is designed for enterprises looking to optimize business operations.

  • Adoption: Popular in industries such as banking, insurance, and pharmaceuticals.

Future of Low-Code and No-Code

The future of low-code and no-code tools looks promising, with market growth and technological advancements driving increased adoption. The integration of AI will further enhance development speed and expand possibilities for both enterprises and individual developers.

Market Growth

  • The global low-code/no-code market was valued at $17 billion in 2022.
  • It is projected to grow to $45 billion by 2027.
  • The market is expected to expand rapidly over the next 5–10 years.

Key Trends in the Low-Code/No-Code Market

Stronger Integration Between AI & Low-Code/No-Code
AI will automate development processes, allowing for natural language-based app development, eliminating the need for manual coding. Additionally, AI will optimize UI/UX design and code generation.

Examples of AI Integration:

  • Power Apps’ “Copilot” and OutSystems’ “AI Mentor”
  • Developers can input commands like “Create a product management app”, and AI will automatically generate the application.
  • AI will analyze user behavior and optimize UI layout automatically.
  • With further AI advancements, even complex logic and data analysis will be handled by AI, accelerating the shift toward true no-code development.
  • Developers’ roles will transition from coding to designing and managing applications.

Conclusion

Based on market share, Microsoft Power Apps dominates the low-code space due to its strong integration with Microsoft’s ecosystem. However, OutSystems also maintains a strong position, particularly in enterprise applications.

While large enterprises have been the primary adopters, the question remains whether low-code tools will expand further into SMEs and general users.

Looking ahead, as low-code tools and AI continue to merge, developers will focus more on designing applications, while AI handles coding. Exploring how OutSystems can integrate with AI will be a key consideration moving forward.

For our next post, we’ll explore the potential of OutSystems and AI integration and what it can achieve. Stay tuned!

技術者ブログ-ローコードツールのトレンドについて②

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

今回のテーマ『ローコードツールのトレンドについて』

前回:技術者ブログ-ローコードツールのトレンドについて – dandelionS Blog
は2021年7月にローコードツールのトレンドについて、ブログを作成しておりました。
弊社でもOutSystemenの経験者が増えてきており、今後のローコードツールの動向がどのようになっていくか?という目線でトレンド調査を再度実施いたしました。

【ローコード・ノーコードとは】

アプリ開発を効率化するためにローコード・ノーコードツールの導入が進んでいます。これにより、開発スピードの向上や開発コスト削減が可能になっています。

・ローコード:最小限のコーディングでアプリ開発を行える。プログラミングの知識が必要だが、柔軟なカスタマイズが可能。
・ノーコード:コーディング不要で直感的にアプリを作成できる。カスタマイズ性は限定的。

【代表的なツールと比較表】

ローコード・ノーコードプラットフォームのシェア率は、主に市場での認知度や導入企業数に基づいています。以下は、シェア率が高い順に並べた主要なプラットフォームです。

【Microsoft Power Apps】
Microsoftの製品群(特にOffice 365やAzure)と統合が強力で、企業内で広く使われているため、シェアが非常に高い。Microsoftエコシステムの一部として、業務アプリケーションを簡単に作成・管理できます。
導入事例: 世界中の企業や組織で採用されており、特に中小企業から大企業まで幅広い規模で使用されています。

OutSystems
エンタープライズ向けに特化したローコードプラットフォームで、大規模なシステムや複雑なアプリケーション開発に強みがあります。自動化やAI機能が強化されており、特に大手企業に導入されています。
導入事例: 多くの大手企業、特に金融、製造業、公共機関で使用されている事例が多いです。

【Mendix】
特に大企業やエンタープライズ向けのアプリケーション開発に強みを持つローコードプラットフォーム。SAPとの統合や産業特化型のアプローチが特徴です。クラウドおよびオンプレミスで使用可能で、高度な開発環境を提供します。
導入事例: 多くの大企業で導入されており、特に製造業や物流業界での採用が目立ちます。

【Appian】
ビジネスプロセス管理(BPM)に特化しており、業務プロセスの自動化や複雑なワークフローの管理に強みがあります。エンタープライズ向けで、特に業務オペレーションの効率化を図る企業で利用されています。
導入事例: 銀行や保険、製薬業界などで採用事例が多くあります。

Power Appsは、Microsoftと密接に統合されているため、特に企業内での採用が多いです。
OutSystemsやMendixも大手企業での導入が進んでおり、特にエンタープライズ向けアプリケーション開発に強みを持っています。

【ローコード・ノーコードの今後について】

ローコード・ノーコードツールの将来性は非常に有望で、市場規模の拡大技術革新が進むことで、今後さらに影響力を増すと考えられています。特に、AIとの統合開発スピードの向上が企業や個人開発者にとって大きなメリットになってくる。

【市場規模】
2022年のローコード・ノーコード市場は約170億ドルとなっているが、
2027年には約450億ドルに成長すると予測されている。
→市場規模は今後5〜10年で急速に成長すると予想されています。

【今後のローコード・ノーコード市場で注目されるトレンド】
・AIとローコード・ノーコードの融合強化
AIが開発プロセスを自動化され、自然言語でのアプリ開発からコーディング不要になる。また、AIがUI/UXの最適化やコード生成を支援することになる。
例.Power Appsの「Copilot」やOutSystemsの「AI Mentor」の利用
①開発者が「商品管理アプリを作って」と入力 → AIが自動でアプリを構築することが可能
②ユーザーの行動パターンからUI配置をAIが自動最適化される
③AIの進化により「ノーコード化」がさらに進み、複雑なロジックやデータ分析もAIが担当
④開発者の役割が「コーディング」から「設計・運用」にシフト
⑤AIがコードを書く → 開発者がロジックを微調整という流れとなる

【まとめ】

ローコードツールのシェア率で考えると、MicrosoftPowerAppsが非常に高いが、OutSystemsも高い順位をキープしていることが分かった。
大企業に導入されていることが多いが、今後シェアも増えて中小企業や一般ユーザーにも普及するのかがツール変更のポイントになってくるかと感じた。
将来的にはローコードとAIが融合して、開発者は設計を行い、AIがコードを作成するといったノーコード化が進んでくることもあり、OutSystemsでもAIと融合して何ができるのか?をさらに検討していくことが重要だと思います。

今回はトレンド紹介と今後のツールの予測について説明しましたので、
次回はOutsystemsとAIが融合してどのようなことができるのか等を紹介したいと思います。

Engineer Blog: Local-First

In this engirring blog, we introduce the learning topics we work on daily.

What is Local-First?

Recently, the concept of Local-First has been gaining attention. Many applications are designed with an online-first approach, where data is stored in the cloud. This allows users to access their data from any device and easily share it with others. However, applications that rely on online connectivity have several disadvantages, such as:

  • Data is inaccessible without an internet connection.
  • The application becomes unusable if the server goes down.
  • Communication with the server can introduce delays, reducing responsiveness.
  • Storing personal data in the cloud poses security risks from external access.

The Local-First approach addresses these issues. In Local-First applications, data is primarily stored on the user’s device and synchronized only when needed. This approach offers several benefits:

  • Data remains accessible even without an internet connection.
  • The application functions independently, unaffected by service outages.
  • Immediate data read/write operations without relying on a server.
  • Personal data is managed locally, reducing dependency on the cloud.

Examples of Local-First Applications

Several applications utilize the Local-First approach, including:

  • Evernote: Allows users to create and view notes even while offline. Synchronization with the cloud ensures data availability across devices.
  • Notion: An all-in-one productivity tool featuring document management, task tracking, and database functionality. Users can edit content offline, and changes are synced to the cloud to maintain data consistency.

Let’s Build an Application! (TypeScript Edition)

To experience the Local-First approach, let’s build a simple To-Do App that runs entirely within a browser! This application will store data locally, ensuring that tasks remain saved even after a page reload.

Below, we introduce the key implementation details.

ToDo の追加(データをローカルに保存)
async function addTodo(text: string) {
    const todo = {
        _id: new Date().toISOString(),  // 一意のID
        text,
        completed: false
    };
    // データをローカルに保存
    await db.put(todo);
}

ToDo の表示(保存されたデータを取得)
async function renderTodos() {
    const result = await db.allDocs({ include_docs: true });
    result.rows.forEach(row => {
        // タスクを取得して表示
        console.log(row.doc.text);
    });
}

ToDo の削除
async function deleteTodo(id: string) {
    const doc = await db.get(id);
    // タスクを削除
    await db.remove(doc);
}

Running the To-Do App

  1. Open the application in a web browser.
  2. Enter a task and click the Add button—the task will be added to the list below.
  3. Close the browser. (Normally, this would cause the entered tasks to be lost.)
  4. Reopen the application in the browser. (The previously entered tasks remain displayed.)
  5. Click on a task to delete it.

Thoughts on Running the App

One of the standout features of this To-Do App is its ability to function independently of the internet, managing data entirely within the browser. By storing data locally, users can continue using the application even while offline.

Key Takeaways:

  • Data persists even after a page reload!
  • The app works without a server!
  • Fast performance with instant data retrieval!

Applications that don’t rely on servers or the cloud might seem somewhat uncommon, but the Local-First approach proves to be highly valuable for offline functionality and data privacy. While this project was a simple implementation, it could be extended with cloud synchronization or mobile support for a more versatile experience.

Exploring the possibilities of Local-First applications has been insightful, and I look forward to leveraging this concept further.

See you in the next blog post!

技術者ブログ:ローカルファースト

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

ローカルファーストとは

最近、ローカルファースト という考え方が注目されています。多くのアプリはオンラインを前提 に作られています。データをクラウドに保存することで、どのデバイスからでもアクセスできる、複数人での共有が容易 などのメリットがあります。しかし、オンライン依存のアプリには以下のようなデメリットもあります。

  • インターネットがないとデータにアクセスできない
  • サービス停止でサーバーがダウンすると使えなくなる
  • サーバーへの通信が発生するため、レスポンスが遅くなることも
  • 個人データがクラウド上にあるため、外部からのアクセスリスクがある

こうした問題を解決するのが、ローカルファースト という考え方です。ローカルファーストのアプリでは、まずデータをデバイス内に保存し、必要に応じて同期する ため、以下のようなメリットがあります。

  • インターネットがなくてもデータにアクセス可能
  • サービス障害の影響を受けず、ローカル保存なので、アプリが独立して動作
  • サーバーを介さず、データの読み書きが即座に行われる
  • 個人データをローカルで管理し、クラウドに依存しない

ローカルファーストの考え方を活かしたアプリには、以下のようなものがあります。

Evernote(エバーノート):オフラインでもメモの作成・閲覧が可能で、クラウドと同期することでデバイス間でデータを共有できます。
Notion(ノーション):ドキュメント管理、タスク管理、データベース機能を備えたオールインワンの生産性向上ツール。オフラインでも編集が可能で、クラウドと同期することでデータの一貫性を保ちます。

アプリを作ってみよう!(TypeScript編)

ローカルファーストの仕組みを体験するために、ブラウザだけで動作する ToDo アプリ を作ってみましょう!このアプリでは、データをローカルに保存し、リロードしても消えない仕組み を実装します。

下記に主要な部分の紹介します。

ToDo の追加(データをローカルに保存)
async function addTodo(text: string) {
    const todo = {
        _id: new Date().toISOString(),  // 一意のID
        text,
        completed: false
    };
    // データをローカルに保存
    await db.put(todo);
}

ToDo の表示(保存されたデータを取得)
async function renderTodos() {
    const result = await db.allDocs({ include_docs: true });
    result.rows.forEach(row => {
        // タスクを取得して表示
        console.log(row.doc.text);
    });
}

ToDo の削除
async function deleteTodo(id: string) {
    const doc = await db.get(id);
    // タスクを削除
    await db.remove(doc);
}

作ったアプリを実行してみました。

  1. ブラウザでアプリを開きます。
  2. タスクを入力し、追加ボタンをクリックすると、下のリストに追加されます。
  3. ブラウザと閉じます。(通常はここで入力したタスクは消えてしまいます)
  4. ブラウザで再度アプリを開きます。(上で入力したタスクは残ったまま表示されます)
  5. タスクをクリックすると、タスクが削除されます。

実際に動かしてみて感じたこと

今回作成した ToDo アプリは、インターネットに依存せず、ブラウザだけでデータを管理できる という点が大きな特徴です。ローカルにデータを保存することで、オフラインでも利用できる というメリットを実感できたのではないでしょうか?

  • リロードしてもデータが消えない!
  • サーバーがなくても動作する!
  • 動作が軽く、即座にデータを取得できる!

サーバやクラウドを使わないアプリは少し珍しく感じるかもしれませんが、ローカルファーストの考え方は、オフライン対応やデータのプライバシーを考える上で非常に有用 です。今回のアプリはシンプルな実装でしたが、クラウドとの同期を追加したり、モバイル対応に拡張したりすることも可能 です。ローカルファーストなアプリの可能性を感じつつ、活用していきたいです。
では、次回のブログでお会いしましょう。

Engineer Blog – About QR Code Generation

Welcome to our engineer blog, where we share our ongoing learning experiences. This post is part of Unit 0, which focuses on web design. Today, I’d like to introduce an opportunity I had to work with something less commonly encountered: QR code generation.

Preparation

For this implementation, I used Java. Since my development environment is Gradle-based, adding the necessary libraries was as simple as including the following in the build.gradle file. (Isn’t it convenient how accessible things have become these days?)

Reference Site:
Getting Started Developing · zxing/zxing Wiki · GitHub

The library used here is ZXing, an open-source Java library that enables the creation and reading of one-dimensional codes (such as barcodes) and two-dimensional codes (like QR codes).

Implementation

The key element for generating QR codes is the encode method of the QRCodeWriter class. As summarized in the comments, the following parameters can be specified:

  1. First parameter: The content to be displayed.
  2. Second parameter: The output format ( BarcodeFormat from the ZXing 3.5.3 API).
  3. Third parameter: The dimensions.

The generated data is stored in a variable of type BitMatrix (bm). By specifying the output format in the writeToStream method, you can save the generated QR code in your desired format. In this case, we output the QR code in PNG format.

While the actual implementation involves handling API requests and returning the output result to the screen, I’ll omit those details here.

Summary

Nowadays, if you just want to generate a QR code once for testing purposes, there’s no need to write a program from scratch. You can find many online QR code generators with just a quick search. Some even let you customize the design or offer formats tailored to specific use cases, making them surprisingly fun to explore.

This post covered only the basics, but I hope it gave you an idea of how QR code generation works. If you found this interesting, I’d be delighted.

Stay tuned for the next engineer blog post!

P.S. The content of the QR code includes a closing message!

技術者ブログ –QRコード生成について

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回はWEBデザインをテーマにしている第0ユニットです。
普段触ることないQRコード生成について触れる
機会があったので、そちらをご紹介したいと思います。

準備

今回はjavaで作っていきたいと思います。
私の開発環境はgradleを使っているので、
build.gradleファイルに以下追記してあげるだけで、必要なライブラリーが読み込まれます。
(便利な世の中になりましたね…)

参考サイト:Getting Started Developing · zxing/zxing Wiki · GitHub

使用しているライブラリーは、「ZXing」です。
Javaで実装されているオープンソースで、一次元コード(バーコードなど)、二次元コード(QRコードなど)の作成/読取を行うことができる画像処理ライブラリです。

作成

作成するにあたってポイントになるのが、「QRCodeWriter」の「encode」メソッドです。
コメントにざっくり書いてありますが、以下パラメータを指定することができます。
第一引数:表示する内容
第二引数:出力フォーマット指定(BarcodeFormat (ZXing 3.5.3 API))
第三引数:縦横のサイズ

生成したものをBitMatrix型の変数(bm)に格納し、writeToStreamメソッドで出力形式を指定すれば出力することができます。今回はQRコードをpng形式で出力してみました。
本実装はAPIリクエストを受け付けてそれに対応する出力結果を画面に返却していますが、
そこの部分は割愛します。

まとめ

今の時代は、一回だけお試しに作りたい時などの場合、わざわざプログラムを組まなくても
ネットで検索すれば多数の生成サイトが見つかります。
中にはデザインをいじれたり、用途に応じてフォーマットが用意されていたりと探してみると意外と面白いです。
というわけで、本投稿ではシンプルな部分だけではありますが、
QRコードを作成する仕組みをご紹介致しました。
少しでも興味を持っていただければ幸いです。

それでは、次回の技術者ブログをお楽しみに。

※QRコード内容は締めの挨拶です!

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

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

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

訓練メールとは

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

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

実際に行ったこと

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

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

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

訓練メール文章

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

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

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

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

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

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

訓練メールの仕組み

3.社内再教育

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

再教育資料

まとめ

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

以上となります。

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

技術者ブログ: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などのローコードツールを使った技術者ブログを展開していきますのでお楽しみに!

Technology Blog: Leveraging AI in System Development (System Testing)

As a tech blog, we’d like to introduce the learning content we’ve been working on daily. We are unit 1, focusing on AI and Big Data. In our previous article, we discussed the possibilities of content creation, education and learning, and business solutions using the chatbot “ChatGPT-4o”. 

This time, we’ll focus on how we can streamline our main business of system development by incorporating AI into system testing to ensure quality.

1. Selenium 4

Overview:

Selenium is a widely used open-source test automation tool, particularly suitable for cross-browser testing. The latest version, Selenium 4, has improved APIs for manipulating UI elements, allowing for more intuitive test script creation. When combined with AI plugins, it also enhances the detection of dynamic UI elements.

  • Usage rate: High
  • Price: Free (open-source)
  • Difficulty level: Intermediate
  • Official website: Selenium Official Website

2. Cypress

Overview:

Cypress is a JavaScript-based test automation tool for web applications, particularly popular among frontend developers. It allows for real-time verification of test results and has a simple setup, making it easy for beginners to get started. It’s ideal for end-to-end testing and makes it easy to test complex user flows.

  • Usage rate: High
  • Price: Free plan available, premium plans (paid)
  • Difficulty level: Beginner to intermediate
  • Official website: Cypress Official Website

3. Katalon Studio

Overview:

 Katalon Studio is a tool that allows for test automation without writing code, supporting a wide range of test scenarios including web applications, mobile apps, and APIs. With its GUI-based operation, even those unfamiliar with programming can intuitively create tests. It provides enterprise-level features while offering a free plan, making it widely used by beginners to advanced users.

  • Usage rate: High
  • Price: Free plan available, enterprise plan (paid)
  • Difficulty level: Beginner to intermediate
  • Official website: Katalon Studio Official Website

4. Applitools

Overview:

Applitools is a tool specialized in visual testing, where AI automatically detects changes in design and UI. It’s particularly strong in visual regression testing and is ideal for testing UI and UX consistency. Its ability to detect subtle differences in design helps in quality assurance for frontend and design.

  • Usage rate: High
  • Price: Paid (free trial available)
  • Difficulty level: Beginner-friendly
  • Official website: Applitools Official Website

In this article, we introduced AI-powered test automation tools for system development. In our next article, we’d like to share our experiences and impressions from actually using these tools. We hope this helps you consider which tool might be best for your project.