ExcelライクなUIを実現するなら?データグリッドとスプレッドシート徹底比較

企業のDX(デジタルトランスフォーメーション)が加速する中で、Excelで構築された業務フローをWebシステムへ移行するケースが急増しています。しかしその過程で多くの開発者が直面するのが、「Excelの使い勝手を保ちつつ、Webシステムとしての拡張性・保守性も実現するには、どのUIコンポーネントを採用すべきか?」という問題です。

行と列で構成されたExcelライクなUIを実現できるコンポーネントには「データグリッド」と「スプレッドシート」がありますが、両者の違いを正しく理解しないまま選定してしまうと、「後から必要な機能が追加できず、設計が破綻した」「当初の想定以上に開発工数が膨れあがってしまった」といったトラブルにつながりかねません。

本記事では、メシウスが提供する「Wijmo(ウィジモ)」と「SpreadJS(スプレッドJS)」を例に、データグリッドとスプレッドシートの本質的な違いを整理し、どのような要件のときにどちらを選ぶべきかをわかりやすく解説します。
特に、ExcelからWebへの移行案件に携わる開発者・PM・IT部門のご担当者にとって、UI技術選定の判断材料となる内容をまとめています。

データグリッドとスプレッドシート

Excelの課題とWebシステム化の動向

多くの企業で日常的に利用されているExcelは、その手軽さと柔軟性から、今もなお多くの業務を支えています。しかしその一方で、以下のような課題も抱えています。

  • 属人化
    • マクロやVBA(Visual Basic for Applications)、複雑に設定された関数などは、作成者以外にはブラックボックスとなりがちで、業務の引き継ぎやメンテナンスが困難になる。
  • データの分断(サイロ化)と不整合
    • 部署や個人ごとにファイルが乱立するため、リアルタイムでの情報共有が難しく、データの集計や分析に多大な労力がかかる。
  • セキュリティリスク
    • ファイルのコピーが容易なため、情報漏洩のリスクが高く、データの変更履歴も追跡しにくい。

このような課題を解決するため、Excelで個別管理されていた業務を、Webブラウザで動作するシステムに移行する企業が増えています。

Webシステム化を行うことで、データの統合やセキュリティの強化を実現し、業務効率の向上も期待できます。

ExcelライクなUIが求められる理由

しかしながら、ExcelからWebシステムへの移行にあたっては、システムに慣れないユーザーへの配慮が重要となります。長年Excelを使いこなしてきたユーザーにとって、全く新しいUIのシステムは、操作習熟の負担が大きくなる可能性があります。そのため、新しいWebシステムでは、ExcelライクなUI、つまり、表計算ソフトの見た目や操作性を再現したインターフェースが求められるケースが珍しくありません。

これにより、ユーザーは使い慣れた感覚で新しいシステムをスムーズに利用でき、業務移行の抵抗感を減らし、DXを円滑に進めることができます。

データグリッドとスプレッドシート、その根本的な違いとは?

使い慣れたExcelの操作感を再現するために良く使用されるのは「データグリッド」や「スプレッドシート」のコンポーネントです。いずれも行列形式のUIを持つコンポーネントで、一見似たように見えますが、これら2種類のコンポーネントには大きな違いがあります。その違いを理解せずに誤った選択をすると、冒頭で言及したようにプロジェクトを大変な状況に陥れる可能性があります。

データグリッドとスプレッドシートの定義

「データグリッド」と「スプレッドシート」はどちらも行と列でデータを扱うUIですが、これらはそれぞれ以下のように定義することができます。

  • データグリッド
    • データの行列表示を行う視覚的コントロール要素であり、データ表示用のUIを提供します。メシウスのJavaScriptライブラリでは「Wijmo」に含まれる「FlexGrid(フレックスグリッド)」が該当します。
  • スプレッドシート
    • 行列形式でデータの整理・分析・保持を行うための、対話式電算アプリケーションであり、データ分析用のUIを提供します。メシウスのJavaScriptライブラリでは「SpreadJS」が該当します。そして、Excelもこのスプレッドシートに分類されるソフトウェアになります。
FlexGridとSpreadJS

「データグリッド」は「データ表示」、「スプレッドシート」は「データ分析」と、それぞれ異なる目的で設計されたコンポーネントで、そのためユーザーに提供する機能の深さにも違いがあります。

ExcelライクなUIを実現するにはスプレッドシートを選べば良い?
そうとも言い切れない理由

ExcelライクなUIを実現したい場合、Excelと同じスプレッドシートのコンポーネントを選べば良いのかというと、そうとは言い切れません。エンドユーザーの要件をしっかりヒアリングし、最適なコンポーネントを選択する必要があります。ここからは実際の業務アプリケーションにありがちな要件を例に、データグリッドコントロールであるWijmoのFlexGridと、スプレッドシートコントロールのSpreadJSのどちらが適しているかを解説します。

データの一覧表示

まずは業務アプリケーションに必要な機能の代表格、データを一覧表示する機能についてです。例として、1000人以上の社員情報を一覧表示する画面を開発するケースを考えてみます。

1000件のデータを一覧表示する機能はFlexGrid、SpreadJSのいずれでも実現できます。

FlexGridとSpreadJSで1000件のデータ表示
FlexGridとSpreadJS、それぞれで1000件のデータ表示

ではここに以下のような要件を追加するとどうでしょうか。

  • 一度に全員分表示すると閲覧が大変なので、1ページ50人などページ分けして表示したい

大量のデータをページ分けして所定の件数ごとに表示するページングの機能は、FlexGirdのようなデータグリッドであれば標準の機能として備わっているケースが多いです。

FlexGridのページング機能
FlexGridのページング機能

一方SpreadJSをはじめとしたスプレッドシートの場合、このようなページング機能は基本的には使用できません。スクラッチで機能追加を行えば実現できる可能性もありますが、その代わりにスプレッドシートとしての機能性を損なう恐れがあります。わかりやすい例が数式です。

スプレッドシートでページングを行うと元々設定していた数式が機能しなくなる可能性がある
スプレッドシートでページングを行うと元々設定していた数式が機能しなくなる可能性がある

上記のようにシートのデータを分割すると、元の数式中のセル番号がずれてしまうので、数式を再設定する必要があります。

分割後のセル番号にあわせて数式を再設定
分割後のセル番号にあわせて数式を再設定

このようにスプレッドシートは元々ページングして使用することを考慮した設計ではないので、このような機能を実装する場合は、実装の工数に加えて前述のようなリスク(既存機能への影響)への対応も検討しなければなりません。

よって、このような要件がマストの場合は、データグリッドのコンポーネントを選定するのがより適しているといえるでしょう。

データの編集

次に表示したデータを編集するケースです。データの編集自体はもちろんFlexGrid、SpreadJSのいずれでも実現できます。

そこに以下のような要件を追加するとどうでしょうか。

  • 足りない列があれば、挿入したい

FlexGridの場合、データベースから取得したデータとデータ結合(バインド)することでデータの表示ができます。また、FlexGridではCollectionViewという強力なデータ管理機能が提供されているので、グリッド上のデータを編集してデータベースと同期を取ることも容易に実現できます。

FlexGridのデータバインディング
FlexGridのデータバインディング

しかしながら、このようにデータベースと連携して使うことを前提に設計されたFlexGridでは、あらかじめ列として設定された項目以外に新しく列を追加して編集する、というような操作は実現できません。

データベースとの連携が前提のデータグリッドでの列挿入は困難
データベースとの連携が前提のデータグリッドでの列挿入は困難

一方SpreadJSの場合、FlexGrid同様にデータベースから取得したデータを設定できますが、こちらはデータを個々のセルで独自で管理しています。そのため、SpreadJS上で列を追加してデータを挿入する、といった要件にも対応が可能です。但し、データをデータベースと同期するにはFlexGridと比較して作り込みが必要になるので、その点は注意が必要です。

Excelの機能の再現性

FlexGridとSpreadJS、どちらを選定すべきか考えるときに、忘れてはならないのがExcelの機能の再現性です。FlexGridでもExcelのような行列形式でのデータの表示、ソートやフィルタといった機能は使用可能です。エンドユーザーが求めるExcelライクな機能がこういった基本的な機能であれば、FlexGridでの対応が十分可能です。

一方、数式や関数、マルチシート、書式設定、自由なセル結合、リボンメニューなど、Excelと同等のUIを実現したい場合は、Excelの機能をほぼ網羅して実現可能なSpreadJSが適しています。

SpreadJSが対応する主要なExcel互換機能の一部
SpreadJSが対応する主要なExcel互換機能の一部

特にExcel業務をWeb化するようなシナリオの場合、見た目だけでなく機能や操作性も含めてExcelを再現可能なSpreadJSが有力な選択肢となります。

リボンメニューまで含めてExcelのUIを高いレベルで再現
リボンメニューまで含めてExcelのUIを高いレベルで再現

さいごに

ExcelライクなUIを実現したい場合、データグリッドとスプレッドシートのどちらをを使うべきかは非常に難しい課題です。どちらのコンポーネントを使用すべきかは、本記事でご説明したように、Excelの機能をどこまで再現したいのか、Excel互換の機能以外の要件にどのようなものがあるのか、そういった部分を見極めながら慎重に選定をする必要があります。

FlexGridとSpreadJSの機能の比較については、詳細な比較表を公開していますので、是非ご活用ください。

また、課題解決に向けた製品選定のポイントを弊社の経験豊富なスタッフに直接相談することも可能です。お客様の課題や実現したい操作、機能などを是非Web会議にてお聞かせください。

\  この記事をシェアする  /