4
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?

Codeer.LowCode.Balzorでローコードとフルスクラッチと組み合わせてみました

Last updated at Posted at 2025-12-23

Blazorって便利なフレームワークですよね。バックエンドだけじゃなくてフロント側もC#で書けます。私はまだプログラム初心者なので、正直覚えることが多いとしんどい…ってなりがちなんですが、Blazorはその点かなり助かってます。

そんなBlazorにローコード機能を組み込むと、さらに効率的にアプリを作れるようになります。それをかなえられる世界唯一(たぶん)のライブラリ Codeer.LowCode.Balzor をご紹介します。

1. Codeer.LowCode.Balzorとは

Codeer.LowCode.BalzorとはBlazorアプリにローコード機能を埋め込むためのライブラリです。ざっくりいうとこんなことができます。

  • WPFのデザイナアプリとBlazorのWebアプリを作成
  • デザイナアプリで作ったローコード設定をWebアプリで読み込んで動的に画面/機能を作成
    ダッシュボードサンプル.png

詳しくはこちらをご参照ください。サンプルサイトを見てもらえば、どんな画面が作れるかイメージできると思います。

2. Blazorのコードを組み合わせて書いてみた

Codeer.LowCode.Balzorを使って開発する際は、基本はローコード中心で作れます。その上で、ローコードとフルスクラッチを組み合わせられるのもCodeer.LowCode.Balzorの強みの一つです。ただ、すべてをフルスクラッチで作るのではなくて、使えるところはローコード機能を使うことで実装がだいぶ楽になります。
今回はフルスクラッチで作ったBlazor画面から、ローコード機能を呼び出すサンプルを作ってみます。

今回使うローコード機能

データベースへのアクセス

Blazor単体ではDBから値を取れないので、DapperやEF CoreなどのDBアクセス手段を選んで、SQL/モデル作成、接続設定して、呼び出し用サービス層などを用意して...というように表示するだけでも周辺準備が多くて結構大変ですよね。サーバーサイドの実装も必要です。
Codeer.LowCode.Balzorでは、ローコードで設定したものを活用することで、簡単にデータベースにアクセスできます。
それでは、C#からモジュールを呼び出してデータを取ってくるところをやってみます。

ポイント

1. データとして使いたいモジュールを作成

今回はクエリフィールドを使ったモジュールを作成します。
q_売上集計モジュール.png

詳細は省きますが、Codeer.LowCode.Balzorではクエリで書いた内容をローコードのモジュールにマッピングできます。ちなみにクエリの発行はサーバーで実行されます。DBに関する情報はフロントには持ってきていません。
詳しくはこちらをご参照ください
クエリフィールド
クエリフィールドサンプル

2. モジュールからFieldDataクラスを作成

モジュールを右クリックしてCreate FieldData Classを選択します。
C#で使用できるクラスが生成されます。
CreateFieldDataClass.png

3. 生成したクラスをC#で呼び出す

  1. Client.Sharedに先ほど生成したクラスを追加します

    q_売上集計.cs
    using Codeer.LowCode.Blazor.Repository.Data;
    namespace LowCodeSamples.Client.Shared.Mapping.Data
    {
        public class q_売上集計
        {
            public TextFieldData? 商品コ { get; set; }
            public TextFieldData? 商品名 { get; set; }
            public NumberFieldData? 合計金額 { get; set; }
            public DateFieldData? 期間開始日 { get; set; }
            public DateFieldData? 期間終了日 { get; set; }
        }
    }
    

2. データを取得

ここがポイントです。先ほどのクエリに条件を設定して一覧を取得します。

BubbleListLogic.cs
using Codeer.LowCode.Blazor.DataIO;
using LowCodeSamples.Client.Shared.Mapping.Data;

namespace LowCodeSamples.Client.Shared.Samples.BubbleList
{
    public static class BubbleListLogic
    {
        public static async Task<List<q_売上集計>> GetSalesSummaryData(
            this Codeer.LowCode.Blazor.RequestInterfaces.Services services,
            DateOnly start,
            DateOnly end)
        {
            var list = (await services.ModuleDataService.GetListAsync<q_売上集計>
                (e => e.期間開始日!.Value == start && e.期間終了日!.Value == end)).ToList();
            return list ?? new();
        }
    }
}

3. コンポーネントの実装

ProCodeModuleBaseを付けるのがポイントです。

BubbleListComponent.razor(一部抜粋)
@using Codeer.LowCode.Blazor.ProCode;
@using LowCodeSamples.Client.Shared.Mapping.Data
@using Codeer.LowCode.Blazor.RequestInterfaces
@inherits ProCodeModuleBase
@inject Services Services;
@code
{
    // 生成したFieldDataクラスを使って、データを受け取るプロパティを用意します
    private List<q_売上集計> SalesSummaryData { get; set; } = new();
    
    private DateOnly Start { get; set; } = new DateOnly(2025, 12, 1);
    private DateOnly End { get; set; } = new DateOnly(2025, 12, 31);

    protected override async Task OnInitializedAsync()
    {
        // メソッドを呼び出して、データを取得します
        SalesSummaryData = await Services.GetSalesSummaryData(Start, End);
        StateHasChanged();
    }
}

// 取得したデータはライブラリ独自の型で入ってくるので
// UIで扱いやすい形に整えていきます
private sealed record SalesBubble(string Code, string Name, decimal Amount, DateOnly PeriodStart, DateOnly PeriodEnd);

private IEnumerable<SalesBubble> SalesBubbles
 => SalesSummaryData
     .Select(r => new SalesBubble(
         Code: r.商品コ?.Value ?? string.Empty,
         Name: r.商品名?.Value ?? string.Empty,
         Amount: r.合計金額?.Value ?? 0,
         PeriodStart: Start,
         PeriodEnd: End
     ))
     .Where(x => !string.IsNullOrWhiteSpace(x.Name));

あとは見た目や動作をいい感じに整えていきます。

4. ページフレームで作成したコンポーネントを選択

コンポーネントにProCodeModuleBaseを付けたことで、デザイナアプリでモジュールとして設定できるようになります。
ページフレームの設定.png

5. 完成!

実際に作ってみた画面をサンプルサイトに載せているので、よければ見てみてください。
こちらにコードも公開しています。

売上集計完成イメージ.png

3. まとめ

今回やったこと

  • こだわりの画面はフルスクラッチで作成
    画面の表現を自分好みに作り込める

  • データ取得はローコード側の仕組みで実装
    サーバーサイドのコードを書かずに実装可能

今回は一点もののコンポーネントとして作成する方法でしたが、もう少し頑張れば汎用的なFieldにすることもできます。そちらについては、また別記事でまとめようと思います。

4
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
4
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?