オンラインIDE（CodeSandbox, StackBlitz, JsFiddle）を利用して手軽に Ignite UI の機能検証をする方法

インフラジスティックスの WEB 開発向け UI 製品、Ignite UI には様々な UI コントロールが含まれています。
さらに各コントロールには多くの機能を実現するためのプロパティやメソッドなどが組み込まれています。
開発者様はこれらのコントロールとプロパティなどを確認しながら必要な要件を実装していただくこととなりますが、製品評価段階においてはなるべく手間をかけずに必要な要件を満たすことが出来るか確認したいところです。

Ignite UI には StackBlitz, CodeSandbox, JsFiddle などのオンラインで実行可能な IDE で実装された多くのサンプルがあります。本記事ではオンラインのIDEを利用して、効率よく Ignite UI の機能検証を行う方法について、解説いたします。

## オンラインIDEとは

オンラインIDEはインテリセンスやソースコードの色付け、デバッグ実行といったIDEの機能をブラウザ上で実現可能にしたWEBアプリケーションです。
オンラインIDEを利用することでコードと実行結果を手軽に公開・共有することが出来ます。

インフラジスティックスでは各コントロールのサンプルを、オンラインIDE上で確認できるよう公開しています。オンラインIDEの種類と対応している製品は以下の様になります。
<a href="https://codesandbox.io/" target="_blank">CodeSandbox</a> ... Ignite UI for Angular, React, Web Components
<a href="https://stackblitz.com/" target="_blank">StackBlitz</a> ... Ignite UI for Angular
<a href="https://codesandbox.io/" target="_blank">JsFiddle</a> ... Ignite UI for jQuery

## オンラインIDEを利用した Ignite UI の機能検証の流れ

Ignite UI for Angular を例にして、オンラインIDEを利用した Ignite UI の機能検証の流れを見ていきます。Ignite UI for React や Ignite UI for jQuery などでも同じ流れで機能検証をすることが出来ます。

例として、以下の様なシナリオでの機能検証が必要とします。

<b>カレンダーの機能を導入したい。カレンダーコントロールは表示形式において日本のユーザー対応がされていない場合があるので、日本のユーザーにとって違和感のない表示が出来るか確認したい。</b>

本記事では、オンラインIDEは CodeSandbox を利用しますが、各オンラインIDEの使用感に大きな違いはありません。

### 対応するコントロールのドキュメントを探す

まずは Ignite UI for Angular の製品ページに遷移します。インフラジスティックスのウェブサイトのグローバルメニューから「開発」にマウスオーバーすると、各開発製品が表示されますので、「Ignite UI for Angular」をクリックします。
[![Image from Gyazo](https://i.gyazo.com/eeb66acd87430918fa3347885b7ba6f1.png)](https://gyazo.com/eeb66acd87430918fa3347885b7ba6f1)

<a href="https://jp.infragistics.com/products/ignite-ui-angular" target="_blank">Ignite UI for Angular の製品ページ</a> の中腹あたりにコンポーネント一覧のセクションがありますので、ここから該当するコントロールを探します。「スケジュール」というカテゴリの「Calendar」が該当しますのでこちらをクリックすると以下のページに遷移します。
[![Image from Gyazo](https://i.gyazo.com/85afc9abe2da7c9e1fcf5a13845f0a53.png)](https://gyazo.com/85afc9abe2da7c9e1fcf5a13845f0a53)

<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/calendar" target="_blank">https://jp.infragistics.com/products/ignite-ui-angular/angular/components/calendar</a>

ページの最上部に表示されているサンプルを確認してみましょう。このサンプルは英語表記のカレンダーであることが確認できます。

CodeSandbox で確認してみましょう。サンプルの下部に配置されているボタンをクリックします。
[![Image from Gyazo](https://i.gyazo.com/736bf64d1aa17c148eee044e83a9b35e.png)](https://gyazo.com/736bf64d1aa17c148eee044e83a9b35e)

`src/app/calendar-sample-5/calendar-sample-5.component.html` のソースコードを確認すると、プロパティなどを何も指定しない場合のデフォルトの表示であることが分かるかと思います。
[![Image from Gyazo](https://i.gyazo.com/583290a9e9377266147dd0a254569eac.png)](https://gyazo.com/583290a9e9377266147dd0a254569eac)

このサンプルをベースに機能検証を行いたいと思います。「Fork」ボタンをクリックすることで自由にソースコードを編集できるようになります。
（別途各オンラインIDEのユーザー登録が必要となります。）

### カレンダーを日本語化する方法について言及しているドキュメントを探す

まずはドキュメントの中に要件について言及している部分があるか確認してみましょう。今回の例であれば「<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/calendar#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BA%E3%81%8A%E3%82%88%E3%81%B3%E6%9B%B8%E5%BC%8F%E8%A8%AD%E5%AE%9A" target="_blank">ローカライズおよび書式設定</a>」というセクションがあることが分かります。
ローカライズに関連するいくつかのプロパティが用意されていることが確認できます。

[![Image from Gyazo](https://i.gyazo.com/ad9d15dfd5ebea8f752d7c072d232c88.png)](https://gyazo.com/ad9d15dfd5ebea8f752d7c072d232c88)

今回は以下のように locale プロパティで日本語化し、weekStart プロパティでカレンダーを月曜始まりとなるように変更しています。

```html
<igx-calendar [locale]="ja-JP" [weekStart]="1">
```
[![Image from Gyazo](https://i.gyazo.com/59942b3f8be42e3577fcf4de883ffde4.png)](https://gyazo.com/59942b3f8be42e3577fcf4de883ffde4)

### API ドキュメントを参照する

カレンダーの週末に該当する日付のフォントカラーがグレーとなっており、不活性な要素に見えてしまうため、色を変更してみましょう。
ドキュメントを探すと「<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/calendar#%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E8%A8%AD%E5%AE%9A" target="_blank">スタイル設定</a>」というセクションがありますのでこちらを確認してみます。igx-calendar-theme を拡張したカスタムテーマを定義することでスタイルの変更が出来るようですが週末の日付についてはこのドキュメントレベルでは分かりませんので、より詳細な仕様を確認するために igx-calendar-theme で参照されているリンク先のドキュメントを確認してみましょう。すると $weekend-text-color という週末テキストの色に対するパラメーターが用意されていることが分かりましたのでこちらを利用します。

[![Image from Gyazo](https://i.gyazo.com/c2b724fb0699f7fec582b32feee0debd.png)](https://gyazo.com/c2b724fb0699f7fec582b32feee0debd)
[![Image from Gyazo](https://i.gyazo.com/92f6715e74444f5e62fc376b395c3df9.png)](https://gyazo.com/92f6715e74444f5e62fc376b395c3df9)

```css
$custom-calendar-theme: igx-calendar-theme(
    $weekend-text-color: #E371A5
);
:host ::ng-deep {
    @include igx-calendar($custom-calendar-theme);
}
```

以下のように週末テキスト色を変更することができました。
[![Image from Gyazo](https://i.gyazo.com/2d4cd529fcdf05a6164faed72badaa69.png)](https://gyazo.com/2d4cd529fcdf05a6164faed72badaa69)

上記で参照したドキュメントはスタイルに関するものですが、「<a href="https://jp.infragistics.com/products/ignite-ui-angular/angular/components/calendar#api-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9" target="_blank">API リファレンス</a>」セクションには Ignite UI for Angular のカレンダーコントロールを定義する IgxCalendarComponent クラス
のAPIドキュメントへのリンクも記載されており、各メンバの確認が可能です。

### 最終的なサンプル

APIドキュメントに記載のある igxCalendarHeader および igxCalendarSubheader ディレクティブを使用してカレンダーヘッダーの表示形式を変更し、最終的に以下のようなカレンダーの表示としました。このまま関係者に CodeSandbox のシェアリンクを共有すれば動くサンプルとして展開することが可能です。
[![Image from Gyazo](https://i.gyazo.com/f48b403123d4a7a7f44dd92224f4c976.png)](https://gyazo.com/f48b403123d4a7a7f44dd92224f4c976)
<a href="https://codesandbox.io/s/nostalgic-meadow-c6p49?file=/src/app/calendar-sample-5/calendar-sample-5.component.html" target="_blank">今回作成したサンプルを CodeSandbox で開く</a>

## 詳細な検証はローカル環境で

オンラインIDEは今回のような軽微な機能検証の際におすすめです。ローカル環境のIDE（Visual Studio Code など）と比べると実行速度などパフォーマンス面で劣りますので本格的な検証を行う場合はローカル環境を利用しましょう。

## 技術サポート・オンラインQA会をご利用ください

インフラジスティックスのUI製品は多くの機能を備えているためドキュメントの情報量も多く、なかなかお探しの情報に辿り着けない場合もあります。そういった際はお気軽に技術サポートや、製品導入支援担当とのオンラインQA会をご予約いただくことで検証時間を節約可能ですので、ぜひご活用ください。
<a href="https://jp.infragistics.com/support/dev-support" target="_blank">技術サポートへの問い合わせ方法を確認する</a>
<a href="https://jp.infragistics.com/free-consultation" target="_blank">オンラインQA会を予約する</a>