Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

元号変更にも対応! 日本仕様に強いシステム開発のためのコンポーネント

顧客と開発者の生産性を格段に向上させる、業務システムの画面UI 第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/03/23 14:00

 業務アプリケーションの多くが、何らかの情報を入力する機能を有しています。そして本記事に目を通していただいている皆様の多くが、日本語の入力や日本で利用されるアプリケーションの作成に携わっているかと思います。これまで、数々のコンポーネントを紹介してきましたが、その際に何度も日本独自の仕様に対応している点をポイントとして挙げてきました。日本の住所入力に強い点、和暦などの日本の文化に対応している点、そして帳票出力への対応。今回は、これまで紹介してきたコンポーネントが日本独自の仕様に強いポイントを紹介していきます。

今回紹介するコンポーネント

 本記事では以下のコンポーネントを紹介します。

MultiRow for Windows Forms

 MultiRowは、複雑な構造の表が作成できるコンポーネントです。日本の入力フォームに見られがちな、1レコード複数行などの表示形式にも対応しています。日本語入力に強いInputMan相当のセルを備えている点もポイントです。

CalendarGrid for Windows Forms

 CalendarGridは、和暦などの日本の仕様に対応したカレンダーを作成できるコンポーネントです。MultiRow同様にInputMan相当のセルを備えています。

JPAddress for .NET

 JPAddressは、日本の住所入力支援機能を提供するコンポーネントです。郵便番号からの住所入力や、住所からの郵便番号検索など高速な住所情報の入力を可能にします。

ActiveReports for .NET

 ActiveReportsは、帳票出力の機能を提供するコンポーネントです。アプリケーションに複雑な帳票機能を追加することができます。

対象読者

 Visual Studioを利用してアプリケーションを作成した経験がある、またはC#、Visual Basicなどの.NET系言語での開発経験がある方。

必要な環境

 MultiRow、CalendarGrid、JPAddressを利用するには以下の環境が必要となります。

  • Visual Studio 2010/2012/2013/2015 日本語版
  • .NET Framework 3.5 SP1/3.5 Client Profile/4/4 Client Profile/4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2

 ActiveReportsを利用するには以下の環境が必要となります。

  • Visual Studio 2010/2012/2013/2015 日本語版
  • .NET Framework 3.5 SP1/3.5 Client Profile/4.5.2/4.6/4.6.1/4.6.2

 本記事はVisual Studio Enterprise 2015、.NET Framework 4.6環境で画像キャプチャーの取得、動作検証を行っております。

コンポーネントのインストール

 各種コンポーネントのインストール方法については以下の記事を参照ください。

MultiRow for Windows Forms

CalendarGrid for Windows Forms

JPAddress for .NET

ActiveReports for .NET

 ActiveReports for .NETのインストールについては、これまでの記事で紹介していなかったので、ここに掲載します。

 ActiveReports for .NETの導入について、トライアル版を例に紹介します。

 作業途中のライセンス入力で正式版のライセンスを入れるか、トライアル版用として提供されたライセンスキーを入力するかの違いを除けば同じ方法で導入できます。

トライアル版の申し込み

 ActiveReports for .NET 11.0Jのページを開きます。

ActiveReports for .NET 11.0J
ActiveReports for .NET 11.0J

 「トライアル版」のボタンをクリックすると「トライアル版申込フォーム」が表示されるので、フォームに必要な情報を記入し、申し込みを完了します。

トライアル版情報の受信

 申し込みが完了するとまもなく、申込時に申請したメールアドレスにトライアル版のダウンロードURLと、トライアル用のプロダクトキーが記されたメールが届きます。

 メールに記されたURLからトライアル版のファイルをダウンロードしてください。

トライアル版のインストール

 ダウンロードしたトライアル版を解凍し、インストーラーを起動します(本記事執筆時点のインストーラーのファイル名は「ActiveReportsNET11_11.0.9393.1.exe」です)。

ActiveReports for .NET 11.0Jのインストーラーの起動
ActiveReports for .NET 11.0Jのインストーラーの起動

 「使用許諾契約書に同意する」にチェックを入れると、「インストール」ボタンが有効になるので、クリックします。

ActiveReports for .NET 11.0Jの許諾契約に同意する
ActiveReports for .NET 11.0Jの許諾契約に同意する

 インストールが完了すると、下記画像の画面になりますので、初めてのインストール時は「ライセンス認証マネージャーを起動する」にチェックを入れて「閉じる」ボタンをクリックします。

ActiveReports for .NET 11.0Jのライセンス認証マネージャーを起動する
ActiveReports for .NET 11.0Jのライセンス認証マネージャーを起動する

ライセンス認証を行う

 PowerToolsライセンス認証マネージャーが起動するので、ActiveReports for .NET 11.0Jの欄の「認証手続き」をクリックします。

ActiveReports for .NET 11.0Jのライセンス認証を行う
ActiveReports for .NET 11.0Jのライセンス認証を行う

 メールで送られてきたプロダクトキーを入力して「認証」ボタンをクリックします。

 「認証処理が完了しました。」と表示されれば認証作業は終了です。

コントロールの追加

 利用したいコントロールがツールボックスに表示されていない場合の追加方法を紹介します。

 今回のように別途インストールした製品のコントロールは紹介するような追加作業が必要な場合があります。

 Visual Studioの上部メニューから「ツール」→「ツールボックスアイテムの選択」をクリックします。

ツールボックスアイテムの選択
ツールボックスアイテムの選択

 「.NET Framework コンポーネント」タブを選択し、必要なコントロールにチェックを入れ、右下の「OK」ボタンをクリックすることでツールボックスにコントロールが追加されます。

 今回はViewerコントロールにチェックを入れて追加します。

追加するコントロールを選択する
追加するコントロールを選択する
Viewerが追加された
Viewerが追加された

MultiRow for Windows Forms

柔軟なカスタマイズに対応したセル編集

 MultiRowは日本の表によくある1レコード複数行のデータ表示をエクセルライクな編集操作で実現できます。

エクセルライクで柔軟なセル編集
エクセルライクで柔軟なセル編集

 表示するデータは垂直方向だけでなく、水平方向への表示にも対応しています。

データの垂直方向への展開、水平方向への展開に対応
データの垂直方向への展開、水平方向への展開に対応

 これらはコードを記述せずに、Visual Studioのデザイナー画面から編集可能です。

InputManやPlusPakの機能を利用できるセル

 更にMultiRowの各セルには、標準のコントロールや別製品のInputManやPlusPakの機能を持ったセルを追加料金なしに利用できます。

セルにはさまざまなコントロールを指定可能
セルにはさまざまなコントロールを指定可能

GcDateTimeCellに和暦を表示する

 GcDateTimeCellの表示形式を、和暦に変更する方法を紹介します。

 和暦に変更する方法は公式の以下のURLに記載されているため、ここでは引用と補足を行います。

 GcMultiRowのテンプレートにGcDateTimeCellを利用しているものとします。

テンプレートを編集する

 GcMultiRowのテンプレートを変更した場合、Template1.csという名前のTemplateクラスを拡張したクラスが作成され、ソリューションエクスプローラーに追加されています。

 拡張されたクラスを確認するとGcDateTimeCell型の変数が存在しています。

GcDateTimeCell型の変数がTemplateクラスに存在する
private GrapeCity.Win.MultiRow.TextBoxCell textBoxCell40;
private GrapeCity.Win.MultiRow.RowHeaderCell rowHeaderCell1;
private GrapeCity.Win.MultiRow.TextBoxCell textBoxCell39;
private GrapeCity.Win.MultiRow.InputMan.GcDateTimeCell gcDateTimeCell1;

 Template1クラスのコンストラクタに以下の記述を追加します。

GcDateTimeCell型の変数がTemplateクラスに存在する
public Template1()
{
    InitializeComponent();

    // フィールドをクリアします。
    gcDateTimeCell1.Fields.Clear();
    gcDateTimeCell1.DisplayFields.Clear();

    // キーワードから書式を設定します。
    gcDateTimeCell1.Fields.AddRange("yyyy年 MM月 dd日 HH時 mm分 ss秒");
    gcDateTimeCell1.DisplayFields.AddRange("ggg ee年 MM月 dd日 HH時 mm分 ss秒");
}

 プログラムを実行するとGcDateTimeCellの値を変更した際に和暦が表示されます。

平成が表示される
平成が表示される

新しい元号への対応方法について

 2019年元日から新しい元号への変更が予定されています。グレープシティ製品での新しい元号への対応方法については、下記のナレッジベースをご参照ください(一部報道によるものであり、記事執筆時点での政府の正式発表はありません)。

CalendarGrid for Windows Forms

 CalendarGridはグリッド上に日付を表示する機能を備えたコンポーネントです。

 そのコンポーネント名から、カレンダー機能が欲しい場合に利用するコンポーネントと思われがちですが、柔軟なグリッド編集機能はMultiRowのような複雑な表示が可能です。もちろん、カレンダーとしても利用できます。

六曜、和風月名などの日本独自の表現に対応

六曜の表示

 六曜の表示は、CalendarGridのデザイナーからDataFormatの項目を{Rokuyou}にすることで表示できます。CalendarGridのデフォルトテンプレートにも六曜表示のセルがありますので、そちらを利用しても構いません。

六曜の表示
六曜の表示

和風月名の表示

 和風月名の表示方法はCalendarGridの公式ドキュメントに記載してありますので、導入方法を簡単に解説します。詳しくは以下のURLを参考にしてください。

イベントの設定

 Form1のLoadイベントハンドラーを用意します。ここでは「Form1_Load」という名前にします。

Loadイベントハンドラーの設定
Loadイベントハンドラーの設定

 続いて画面に配置したGcCalendarGridコントロールのFirstDateInViewChangedイベントハンドラーを設定します。FirstDateInViewChangedはFirstDateInViewプロパティが変更された際に呼び出されるイベントハンドラーです。

コードの修正

 続いてForm1.csを以下のように修正します。これは上記URLに掲載されているコードです。

和風月名を表示する
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        int month = gcCalendarGrid1.FirstDateInView.Month - 1;
        UpdateJapaneseMonthName(month);
        gcCalendarGrid1.FirstDateInViewChanged += gcCalendarGrid1_FirstDateInViewChanged;
    }

    private void gcCalendarGrid1_FirstDateInViewChanged(object sender, EventArgs e)
    {
        var gcCalendarGrid = sender as GcCalendarGrid;

        int month = gcCalendarGrid.FirstDateInView.Month - 1;
        UpdateJapaneseMonthName(month);
    }

    private void UpdateJapaneseMonthName(int month)
    {
        var japaneseMonthNames = "睦月,如月,弥生,卯月,皐月,水無月,文月,葉月,長月,神無月,霜月,師走".Split(',');
        var japaneseMonthNamesReading = "むつき,きさらぎ,やよい,うづき,さつき,みなづき/みなつき,ふみづき/ふづき,はづき/はつき,ながつき/ながづき,かんなづき,しもつき,しわす".Split(',');

        CalendarTitleCaption titleCaption = gcCalendarGrid1.TitleHeader.Children["calendarTitleCaption1"] as CalendarTitleCaption;
        titleCaption.Text = string.Format("{0} ({1})", japaneseMonthNames[month], japaneseMonthNamesReading[month]);
    }
}

 プログラムを実行すると下画像のように月の項目が弥生などの和風月名に変更されます。

和風月名が表示された
和風月名が表示された

JPAddress for .NET

 JPAddressはコンポーネント名の通り、日本の住所入力に特化したコンポーネントです。

 JPAddressは郵便番号や住所検索の機能を提供するライブラリであり、入力フォームで利用するためにはInputManやMultiRowと組み合わせて利用します。MultiRowに組み合わせるというのは、MultiRowのGcPostalCellなどのInputMan互換のセルで利用できることを意味します。

 JPAddressとInputManの連携については以下の記事を参考いただくとして、ここではJPAddressで実現できる機能の一覧を紹介します。

検索機能

  • 郵便番号から住所情報を検索
  • 大口事業所個別番号から住所情報を検索
  • 住所から郵便番号を取得
  • 大口事業所名から郵便番号を検索
  • 大口事業所名の仮名情報から郵便番号を検索
  • 全国地方公共団体コードから都道府県名や市区町村名を検索
  • 市外局番から住所検索を検索
  • 住所からカスタマバーコードへの変換

辞書ファイル

  • 郵便番号検索用辞書(KEN_ALL.dat)
  • 大口事業所個別番号用辞書(JIGYOUSHO.dat)
  • 市外局番辞書(shigai_list.dat)

 製品に含まれる辞書ファイルは製品の発売時点のものです。辞書更新サービスを契約すると最新の辞書データを利用できます。

ActiveReports for .NET

 ActiveReportsは帳票の出力をサポートするコンポーネントです。

 帳票といっても業務の手続きに関する書面から、注文書や経理の書類など、アプリケーションによって出力するものはさまざまです。そのため、開発する側もそれにあわせて帳票を作成する必要があり、どうしても流用が難しい部分でもあります。ActiveReportsを利用すれば、積み重ねてきたノウハウや機能を利用して帳票作成の工数を削減することが可能になります。

3種類のレイアウト方法

 ActiveReportsは複数の方式で帳票の見た目を定義することができます。この仕様はさまざまな帳票の要望に応えるために生まれたものです。

セクションレポート

 リスト系のデータソースを元に、大量のデータを一覧表示するような帳票に適したレイアウト方式です。データ量により表示するページなどが異なるため、ページ数などは可変になります。

ページレポート

 1ページに表示するデータを明確に定義する方法です。そのため紙の帳票を見た目通り移植するような場合に、レイアウト通りの表示ができるため適している方法です。日本の紙ベースの帳票をデジタル化する場合に一番適した方式です。

RDLレポート

 複数のデータソースを用いて、自由にレイアウトできる方式です。レポート系で複数のデータソースを組み合わせて帳票を作成したい場合などに適しているでしょう。

ActiveReportsの3つのレイアウトパターン
ActiveReportsの3つのレイアウトパターン

日本仕様への対応

 ActiveReportsを用いた帳票は、縦書きや禁則処理などの柔軟な日本語表示に対応しています。

 また、Excelからのインポートをサポートしているため、これまで業務で利用していたExcelベースの帳票を容易にインポートすることができます。

 作成したデータの出力形式もPDF、Excel、TIFFなどさまざまな形式に対応しています。

まとめ

 いくつかの拡張の実例を交えながら、グレープシティ社のコンポーネントの日本独自の仕様に強い点を紹介してきました。

 拡張の例からもわかるように、これらコンポーネントは標準の機能に加え、柔軟な拡張性を備えている点もポイントの1つです。

 日本で、日本語を使用し、日本の文化を踏まえた使いやすいアプリケーションを作成する一助になれば幸いです。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5