インフラジスティックス・ジャパン株式会社Blog

インフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。

Ignite UI for Blazor で棒グラフを作成しよう - ② Ignite UI for Blazor を使った棒グラフの表示

20220902171101

こんにちは。インフラジスティックス・ジャパン テクニカルコンサルティングチームの石橋です。

このブログシリーズでは、「Blazor で棒グラフを作成しよう」というタイトルで

- Blazor の新規アプリケーション作成 (Hello, world!)
- Ignite UI for Blazor を使った棒グラフの表示 (※今回はここ)
- 棒グラフが最適なデータとは
- 棒グラフでやらないほうがよいこと

の 4 つを順に説明していきます。

今回は、2 つめ「Ignite UI for Blazor を使った棒グラフの表示」です。Ignite UI for Blazor は、インフラジスティックスが開発、販売している製品で、Blazor で動作する UI コンポーネントおよびライブラリーをまとめたものです。Ignite UI for Blazor で棒グラフを表示するには、IgbDataChart コンポーネントや IgbCategoryChart コンポーネントを使います。今回は、IgbDataChart コンポーネントを使用してみましょう。

1 つめの記事で作成した Hello, world! のアプリケーションを拡張していきます。まだ作成していない場合は、1 つめの記事を参考にしながら Blazor WebAssembly のテンプレート アプリケーションの作成まで完了してから読み進めてください。

 


Ignite UI for Blazor の棒グラフ作成に必要な NuGet パッケージをインストールする

 

NuGet パッケージ ソースを設定する

 

製品版の NuGet パッケージ ソースを設定します (すでに製品版の NuGet パッケージ ソースを設定している人はこのセクションを読み飛ばして「IgnietUI.Blazor NuGet パッケージをプロジェクトにインストールする」に進んでください)。

1. Visual Studio で [ツール] → [NuGet パッケージ マネージャー] → [パッケージ マネージャー設定] を選択します。

2. [パッケージ ソース] セクションで、ダイアログの右上にある [+] アイコンをクリックして新しいパッケージ ソースを追加します。

3. [更新] ボタンをクリックし、[OK] をクリックしてダイアログを閉じます。

 

※アクティブなサブスクリプションを持っていない場合は 30 日間のサポート付きトライアル版をご利用ください。
Ignite UI for Blazor 無料トライアル版のダウンロード

 

IgnietUI.Blazor NuGet パッケージをプロジェクトにインストールする

 

1. ソリューションまたはプロジェクトを右クリックし、[ソリューションの NuGet パッケージの管理] を選択します。

2. パッケージ マネージャー ダイアログで [参照] タブを開き、Infragistics パッケージ ソースを選択して IgniteUI.Blazor NuGet パッケージをプロジェクトにインストールします。

前段で設定したパッケージ ソースを選択してください。

[インストール] をクリックした際に Infragistics の認証を求められた場合は、インフラジスティックスのカスタマー ポータルにサインインするときに使用しているメールアドレスとパスワードを入力してください。

 

IgniteUI.Blazor NuGet パッケージがプロジェクトにインストールされているか確認する

 

以上で IgniteUI.Blazor NuGet パッケージのインストールが完了です。インストールされているか確認してみましょう。[ソリューション エクスプローラー] の [依存関係] → [パッケージ] と展開していき、IgniteUI.Blazor がそこにあれば OK です。

 

Ignite UI for Blazor の登録

 

次に、Ignite UI for Blazor をアプリケーションに登録する必要があります。

 

1. Program.cs ファイルを開き、builder.Services.AddIgniteUIBlazor() を呼び出して Ignite UI for Blazor サービスを登録します。

// Program.cs

using ColumnChartInBlazor;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

builder.Services.AddIgniteUIBlazor();   // ←追加するのはここです。

await builder.Build().RunAsync();

 

2. IgniteUI.Blazor.Controls 名前空間を _Imports.razor ファイルに追加します。

@*_Imports.razor*@

@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using ColumnChartInBlazor
@using ColumnChartInBlazor.Shared
@using IgniteUI.Blazor.Controls @*←追加するのはここです。*@

 

3. wwwroot/index.html ファイルの要素にスタイル シートを追加します。

<!-- wwwroot/index.html -->

<head>
    ...
    <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
    ...
</head>

 

ここまでで Igniet UI for Blazor を利用するための下準備ができました。

 

データを用意する

 

次に、棒グラフに表示するデータを用意します。今回は、営業部門の売上成績を想定した以下のサンプルデータを使います。

担当者名 成績 (単位: 百万円)
茂木 87.4
滝沢 31.8
東海林 67.3
丸山 65.4
長谷川 83.5
松山 154.8
沢村 105.6
神保 67.7
木田 57.9
勝田 85

アプリケーション ルートに Services フォルダーを作成し、SampleSalesResults.cs クラスを新規追加する

 

1. Visual Studio のソリューション エクスプローラーでアプリケーション ルートの ColumnChartInBlazor を右クリックし、[追加] → [新しいフォルダー] を選択し、Services フォルダーを作成します。

 

2. 1 で作成した Services フォルダーを右クリックし、[追加] → [クラス] を選択します。


3. [新しい項目の追加] ダイアログの [名前] に SampleSalesResults.cs と入力し、[追加] をクリックします。


SampleSalesResults.csが追加されました。

※Visual Studioの構成によっては、ファイルスコープ名前空間でクラスが作成され場合があります(下記図参照)。今回は、このまま従来の書き方でサンプルを作成していきますが、ファイルスコープ名前空間での書き方でも同義で、全く問題なく書き進められます。


4. 3で作成したSampleSalesResults.csを開き、次のコードをコピー&ペーストします。

namespace ColumnChartInBlazor.Services
{
    public class SampleSalesResults
    {
        public static List<SalesResult> Create()
        {
            List<SalesResult> _results = new()
            {
                new() { Name = "茂木", Result = 87.4 },
                new() { Name = "滝沢", Result = 31.8 },
                new() { Name = "東海林", Result = 67.3 },
                new() { Name = "丸山", Result = 65.4 },
                new() { Name = "長谷川", Result = 83.5 },
                new() { Name = "松山", Result = 154.8 },
                new() { Name = "沢村", Result = 105.6 },
                new() { Name = "神保", Result = 67.7 },
                new() { Name = "木田", Result = 57.9 },
                new() { Name = "勝田", Result = 85 }
            };
            return _results;
        }
    }

    public class SalesResult
    {
        public double Result { get; set; }
        public string? Name { get; set; }
    }
}




これで表示するデータが用意できました。

 

IgbDataChart コンポーネントを画面に追加する

 

いよいよ IgbDataChart コンポーネントを画面に追加していきます。

 

MyColumnChart Razor コンポーネントを追加する

 

1. Visual Studio のソリューション エクスプローラーで [Pages] を右クリックし、[追加] → [Razor コンポーネント] を選択します。


2. [新しい項目の追加] ダイアログの [名前] に MyColumnChart.razor と入力し、[追加] をクリックします。

 

これで、MyColumnChart Razor コンポーネントがファイル名 MyColumnChart.razor で Pages の下に追加されました。

 

IgbDataChart コンポーネントを画面に置く

 

1. MyColumnChart Razor コンポーネントを開き、以下のコードをコピー&ペーストします。

@*Pages\MyColumnChart.razor*@

@page "/mycolumnchart"

@using ColumnChartInBlazor.Services

<h3>MyColumnChart</h3>

<div>
    @*IgbDataChartを置く*@
    <IgbDataChart Height="400px" Width="800px"
                ChartTitle="売上成績"
                Subtitle="2022 年 6 月度"
                Legend="Legend">
            @*X 軸の設定*@
            <IgbCategoryXAxis Name="xAxis" Label="Name" DataSource="Data"
                            Title="担当者" Gap="0.2" />
            @*Y 軸の設定*@
            <IgbNumericYAxis Name="yAxis" Title="成績 (単位: 百万円)" TitleLeftMargin="10" MinimumValue="0" />
            @*表示するデータの設定*@
            <IgbColumnSeries Name="series1"
                            Title="2022 年 6 月度"
                            ValueMemberPath="Result"
                            XAxisName="xAxis"
                            YAxisName="yAxis"
                            DataSource="Data">
            </IgbColumnSeries>
    </IgbDataChart>
</div>
<div class="legend">
    @*凡例を置く*@
    <IgbLegend @ref="Legend" Orientation="LegendOrientation.Horizontal" />
</div>

@code {
    private List<SalesResult>? Data;

    private IgbLegend? legend;
    private IgbLegend? Legend
    {
        get { return legend; }
        set
        {
            legend = value;
            StateHasChanged();
        }
    }

    protected override void OnInitialized()
    {
        // データを生成する。
        Data = SampleSalesResults.Create();
    }
}



 

 

NavMenu に棒グラフの画面を表示するリンクを追加しましょう。

 

1. NavMenu Razor コンポーネントを開き、MyColumnChart Razor コンポーネントに遷移するリンクを追加します。

@*Shared\NavMenu.razor*@
@* ... (省略) ... *@
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <nav class="flex-column">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                <span class="oi oi-home" aria-hidden="true"></span> Home
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="counter">
                <span class="oi oi-plus" aria-hidden="true"></span> Counter
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="fetchdata">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
            </NavLink>
        </div>
        @*追加するのはこの↓ div タグです。*@
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="mycolumnchart">
                <span class="oi oi-bar-chart" aria-hidden="true"></span> My Column Chart
            </NavLink>
        </div>
    </nav>
</div>
@* ... (省略) ... *@

 

実行してみる

 

これですべて実装できました。Visual Studio でアプリケーションを実行してみましょう。ブラウザーが立ち上がり、Hello, world! の画面が表示されたら、左側のメニューにある [My Column Chart] をクリックします。

 

棒グラフが表示されました!

20220902150132


最後に

以上、Blazor WebAssembly のひな形 Hello, world! に Ignite UI for Blazor の棒グラフが表示されるまでを見てきました。次回は、一般的な話として、棒グラフが最適なデータについてと、棒グラフでやらないほうがいいことについて、紹介します。

今回ご覧いただいたサンプルはGitHubでコードを配布しております。 
GitHub - igjp-sample/igbDataChart-columnChart-2

この記事に関して何かご質問・ご不明な点がありましたら、お気兼ねなくインフラジスティックスまでお問い合わせください。