2017年6月14日
Windows Forms
技術情報

10.0Jの新機能紹介(その6)

こんにちは!SPREADチームでWindows Formsを担当している大林です。
今日は、グラフについてお話ししたいと思います。

Excel 2016では、新しいグラフとして、ツリーマップ、サンバースト、ヒストグラム、パレート図、箱ひげ図、ウォーターフォール、じょうごが追加されました。SPREADも、10.0Jでこれらのグラフ(SPREADでは「チャート」と呼称)に対応しました。今日は、その中から「パレート図」をご紹介したいと思います。

さて、この「パレート図」、QC(Quality Control:品質管理)の7つ道具の一つといわれるそうです。製造業に関わる皆さまにはお馴染みのグラフかもしれませんね。

例えば、ある製品に対する苦情件数をあつかう場合、横軸に苦情を件数順に並べ、縦軸に件数と件数の累積百分率をプロットします(以下、画像はSPREAD)。

ozu20170613_1

こうしてプロットすると、どの項目が、全体に対してどのくらいの影響をもつか把握するのに役立ちます。
パレートの法則(全体の数値の80%は、全体を構成するうちの20%の要素が生み出している – 80:20の法則でピンとくる方も多いかもしれません)に基づいたプロット方法です。

パレート図を用いた分析手法では、累積比率が80%までの項目を、影響度が高いと判断することが一般的な基準の一つのようです。この考え方に基づき、上で挙げた製品の「性能」と「機能」を改善した結果、それぞれの苦情が1/3、および半分に減少したとします(現実はなかなかこの様にはいかないと思いますが)。再度、パレート図を描きます。

ozu20170613_2

改善前後の2つのパレート図を比較して改善の効果を評価します。
そうして、改善後のパレート図をもとに再び改善…を繰り返して、全体を改善の方向に進めることを試みます。

様々な問題を抱えて、どこから手をつければ良いか分からない…こんなときに効果がありそうな手法ですね。

なお、SPREADの強みであるExcelとの互換性は、チャートも例外ではありません。
上のパレート図をExcelにエクスポートすると、次のような結果となります。

ozu20170613_3※パレート図を表示するには、エクスポートされたファイルをExcel 2016で開いてください。

以下、SPREADでパレート図を作成するサンプルコードをご紹介します。
機会があれば、ぜひご活用ください!

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 ' シートにデータを設定
 FpSpread1.ActiveSheet.SetClip(0, 0, 1, 2, "機能" & vbTab & "90")
 FpSpread1.ActiveSheet.SetClip(1, 0, 1, 2, "デザイン" & vbTab & "68")
 FpSpread1.ActiveSheet.SetClip(2, 0, 1, 2, "性能" & vbTab & "93")
 FpSpread1.ActiveSheet.SetClip(3, 0, 1, 2, "マニュアル" & vbTab & "23")
 FpSpread1.ActiveSheet.SetClip(4, 0, 1, 2, "サポート" & vbTab & "17")
 FpSpread1.ActiveSheet.SetClip(5, 0, 1, 2, "不具合" & vbTab & "4")
 FpSpread1.ActiveSheet.SetClip(6, 0, 1, 2, "その他" & vbTab & "2")
 FpSpread1.ActiveSheet.SetClip(7, 0, 1, 2, "相互運用性" & vbTab & "1")
 ' セル範囲を設定してパレート図を作成します
 FpSpread1.ActiveSheet.AddChart(New FarPoint.Win.Spread.Model.CellRange(0, 0, 8, 2), GetType(FarPoint.Win.Chart.ParetoSeries), 500, 250, 150, 30)
 Dim model As FarPoint.Win.Chart.ChartModel = FpSpread1.ActiveSheet.Charts(0).Model
 ' タイトルを設定
 Dim fontTitle As New Font("メイリオ", 14)
 model.LabelAreas.Add(New FarPoint.Win.Chart.LabelArea() With {.Text = "問合せ件数", .TextFont = fontTitle, .Location = New PointF(0.4F, 0.01F)})
 ' 凡例を表示しない
 model.LegendAreas.Clear()
 Dim s As FarPoint.Win.Chart.ParetoSeries = DirectCast(model.PlotAreas(0).Series(0), FarPoint.Win.Chart.ParetoSeries)
 ' 要素の間隔を指定
 s.GapWidth = 0.1F
 ' パレート線の外観を設定
 s.ParetoLine.LineBorder = New FarPoint.Win.Chart.SolidLine(System.Drawing.Color.OrangeRed, 3)
 ' 軸のフォントを設定 
 Dim plotArea As FarPoint.Win.Chart.YPlotArea = DirectCast(model.PlotAreas(0), FarPoint.Win.Chart.YPlotArea)
 Dim fontRegular As New Font("メイリオ", 9)
 plotArea.XAxis.LabelTextFont = fontRegular
 plotArea.XAxis.LabelRotationAngle = -45
 plotArea.YAxes(0).LabelTextFont = fontRegular
 plotArea.YAxes(1).LabelTextFont = fontRegular
 ' 数値縦軸の最大値を設定
 plotArea.YAxes(0).AutoMaximum = False
 plotArea.YAxes(0).Maximum = 100

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 ' Excelにエクスポート
 FpSpread1.SaveExcel("c:\temp\TestPareto.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)

End Sub

C#

private void Form1_Load(object sender, EventArgs e)
{
 // シートにデータを設定
 fpSpread1.ActiveSheet.SetClip(0, 0, 1, 2, "機能\t90");
 fpSpread1.ActiveSheet.SetClip(1, 0, 1, 2, "デザイン\t68");
 fpSpread1.ActiveSheet.SetClip(2, 0, 1, 2, "性能\t93");
 fpSpread1.ActiveSheet.SetClip(3, 0, 1, 2, "マニュアル\t23");
 fpSpread1.ActiveSheet.SetClip(4, 0, 1, 2, "サポート\t17");
 fpSpread1.ActiveSheet.SetClip(5, 0, 1, 2, "不具合\t4");
 fpSpread1.ActiveSheet.SetClip(6, 0, 1, 2, "その他\t2");
 fpSpread1.ActiveSheet.SetClip(7, 0, 1, 2, "相互運用性\t1");
 // セル範囲を設定してパレート図を作成します
 fpSpread1.ActiveSheet.AddChart(new FarPoint.Win.Spread.Model.CellRange(0, 0, 8, 2), typeof(FarPoint.Win.Chart.ParetoSeries), 500, 250, 150, 30);
 FarPoint.Win.Chart.ChartModel model = fpSpread1.ActiveSheet.Charts[0].Model;
 // タイトルを設定
 Font fontTitle = new Font("メイリオ", 14);
 model.LabelAreas.Add(new FarPoint.Win.Chart.LabelArea() { Text = "問合せ件数", TextFont = fontTitle, Location = new PointF(0.4F, 0.01F) });
 // 凡例を表示しない
 model.LegendAreas.Clear();
 FarPoint.Win.Chart.ParetoSeries s = (FarPoint.Win.Chart.ParetoSeries)model.PlotAreas[0].Series[0];
 // 要素の間隔を指定
 s.GapWidth = 0.1f;
 // パレート線の外観を設定
 s.ParetoLine.LineBorder = new FarPoint.Win.Chart.SolidLine(System.Drawing.Color.OrangeRed, 3);
 // 軸のフォントを設定 
 FarPoint.Win.Chart.YPlotArea plotArea = (FarPoint.Win.Chart.YPlotArea)model.PlotAreas[0];
 Font fontRegular = new Font("メイリオ", 9);
 plotArea.XAxis.LabelTextFont = fontRegular;
 plotArea.XAxis.LabelRotationAngle = -45;
 plotArea.YAxes[0].LabelTextFont = fontRegular;
 plotArea.YAxes[1].LabelTextFont = fontRegular; 
 // 数値縦軸の最大値を設定
 plotArea.YAxes[0].AutoMaximum = false;
 plotArea.YAxes[0].Maximum = 100; 
}

private void button1_Click(object sender, EventArgs e)
{
 // Excelにエクスポート
 fpSpread1.SaveExcel(@"c:\temp\TestPareto.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
}
2017年6月6日
ASP.NET
技術情報

CodeZineで技術記事が公開されました

こんにちは!SPREADチームでASP.NETを担当している林です。
開発者のための実装系WebマガジンCodeZineに、SPREAD for ASP.NET 10.0Jの新機能を紹介する記事を掲載していただきました。

新機能をサンプルコードと一緒にご案内していますので、弊社サイトの製品情報ページで紹介している新機能がどのように実装できるか知りたい場合などに是非ご活用ください。ページの関係もあり全ての新機能は紹介しきれませんでしたので、デモアプリーションもあわせてご参照ください。

SPREAD for ASP.NET 10.0Jでは、Excel 2016で追加された新しいチャートに加えてチャートコントロールが追加されました。これまで可視化が難しかったデータであっても、新しいチャートを使用することでしっかり可視化できるかもしれません。もちろんシート上のチャートはExcelエクスポートすることも可能です。

画像をできるだけ盛り込んでいますので、サンプルを動かさなくても雰囲気だけはつかめるような構成となっています。是非ご一読ください。

「SPREAD for ASP.NET 10.0J」の新機能~新しいチャートの提供と画像機能の強化 を見る

2017年6月5日
Windows Forms
技術情報

10.0Jの新機能紹介(その5)

こんにちは!SPREADチームでWindows Formsを担当している大林です。
10.0Jの新機能シリーズも5回目となりましたが、ご紹介したい機能がまだまだあります!
今日は、ユーザー様自身がセル範囲を選択し、計算結果を手軽に得られる、ステータスバーのご紹介です。

皆さまのなかにも、Excelのステータスバーを日常的に活用されている方がおられることと思います。
かくゆう私も、便利に使わせてもらっています。10.Jでは、SPREADにもステータスバーが追加されました。

次のように選択した範囲(画像はSPREAD)の、平均、データの個数、合計などがステータスバーに表示されます。

ozu20170530_1

画像:商品A、商品B、商品Cの計算結果を取得

集計用のセルを追加して、数式を設定する…より手軽ですよね。

SPREADのステータスバーもExcel同様、ユーザー様自身が右クリックして、コンテキストメニューから計算の種類を設定できます。

ozu20170530_2

SPREADでは、既定で複数のセル範囲の選択が無効ですが、シートのSelectionPolicyプロパティで有効にできます。
この設定により、次のように、連続しない複数のセルを選択し、計算結果を得ることもできます。

ozu20170530_3

画像:商品B、商品D、商品Fの計算結果を取得

また、フィルタリングと併用することで、指定した条件で抽出した行に対して、計算を行うこともできます。

まず、平均より上の項目をフィルタリングにより抽出します。

ozu20170530_4

そして、フィルタリングで抽出した項目を選択すると、ステータスバーには平均より上の商品の平均、個数、および合計が表示されます。

ozu20170530_5

画像:平均より上の商品の計算結果を取得

一見すると手軽な計算機能ですが、使い方に応じて、様々な計算要件を満たすことができます。
機会があれば、皆さまのアプリケーションでもぜひご活用ください。

ステータスバーの表示方法は次のとおりです。

Visual Basic

' ステータスバーを表示します
FpSpread1.StatusBarVisible = True

C#

// ステータスバーを表示します
fpSpread1.StatusBarVisible = true;
2017年5月31日
WPF
技術情報

CodeZineで技術記事が公開されました

こんにちは!WPF製品担当の高橋です。
開発者のための実装系WebマガジンCodeZineに、SPREAD for WPF 1.0Jに関する記事を掲載していただきました。

WPFといえばMVVM(Model-View-ViewModel)といっても過言ではない、というほど昨今ではMVVMパターンを使用してWPFアプリケーションを開発されている方が増えているようです。

SPREAD for WPFももちろんMVVMパターン設計に対応しています。一口で「MVVMパターンでの開発」と言ってもさまざまですが、基本的な方法をご紹介したく執筆しました。

「どうやったらSPREADでMVVMパターンを使用できる?」という方も、「MVVMってどんなの?」という方も、ご一読いただけると嬉しいです。

C#やVisual Basicといったコードビハインドでの実装方法、XAMLだけの実装方法のどちらも掲載しています。サンプルプロジェクトもダウンロードできるので、是非ご参考にしてください。

「SPREAD for WPFでMVVMパターンのアプリケーションを作成する」を見る

2017年5月29日
イベント

de:code 2017に行ってきました

こんにちは!マーケティング担当の小林です。前回の投稿でもお知らせしたように、グレープシティでは5月23日、24日に開催されたde:code 2017に出展しました。今回は、SPREADシリーズをはじめ、ComponentOne StudioやActiveReports、InputMan、MultiRowといったグレープシティの.NET向け製品を中心に紹介いたしました。この2日間、私もグレープシティブースに立たせていただきました。

decode_booth

そして、今回はノベルティとしてGrapeCityオリジナルのハイチュウを用意いたしました。まったくの偶然なのですが、このハイチュウ、グレープ味なのです。「”グレープシティ”だけに狙ったんですか?」とも聞かれたのですが、偶然です(笑)

初日の夜は、参加者パーティにも参加させていただきました。このときもGrapeCityポロシャツで参加していたので、多くの方に「グレープシティさんの製品使ってます」とお声がけいただきました。

decode_party

2日間にわたり、ブースには多くの方々に足をお運びいただき、「SPREADを使用して、開発中です」「昔から使用しています」「開発にとても役に立っています」といううれしい声をたくさんいただきました!
私も皆さまと直接お話することができ、非常に楽しく過ごさせていただきました。本当にありがとうございました!

なお、グレープシティの.NET向け製品の最新情報はこちらからチェックしてくださいね。

.NET製品の最新情報を見る

そして、今回のブースでは「XXの使い方がわからないのですが」「Excelエクスポートがうまくいかなくて」といった技術質問もお受けいたしました。グレープシティでは、Emailによるテクニカルサポートサービスを実施していますので、問題点が浮上したときには、是非こちらのサービスをご利用ください。

テクニカルサポートサービスはこちらから

前のページ 次のページ