SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「GrapeCity ECHO」レポート(AD)

どう進める? Excel業務のシステム化──【GrapeCity ECHO 2022】開催レポート

「GrapeCity ECHO 2022」開催レポート

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

 数々のコンポーネント、ライブラリ製品をはじめとするソフトウェア開発ツールの提供を通じて国内外の開発者を強力に支援するグレープシティ。同社では、2015年以来、アプリケーション開発技術や同社製品にかかわる最新動向を紹介するグローバル規模の技術カンファレンス「GrapeCity ECHO」を毎年開催している。去る2022年12月14日には「GrapeCity ECHO 2022」がオンラインで開催された。今回のテーマは「業務アプリ開発者がExcelと上手にお付き合いするには? ~Excelとシステム、どっちを使う?~」というもので、テレワークの浸透などを背景要因に、企業においてExcel業務のシステム化にかかわるニーズがさらに高まる状況を受け、それに向けた検討、実践の指針を示すセッションが繰り広げられた。

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

課題の顕在化を背景にさらに高まるExcel業務のシステム化ニーズ

 企業の日々の業務に欠かすことのできないツールとなっているExcel。さまざまなビジネス領域における顧客や資産、売上、在庫など各種情報の管理をはじめ、集計レポートの作成、さらにはデータ分析といった用途に広く利用されており、ほとんどの企業がExcelの利用なしに現場業務が回らない状況だといっても過言ではないだろう。

 ただその一方で、特にExcelデータを複数人で共有している際に生じる同時編集にまつわる課題やデータの肥大化など、いくつかの問題が顕在化しているケースも多く、かねてよりそうしたユーザーの間では、「Excelで行っている処理をシステム化したい」というニーズが根強く存在してきたのも事実である。さらに近年では「サーバーサイドでExcelを使いたい」という要望も急速に高まってきている。

 そうした状況を受けて、Excel業務のシステム化を検討する各企業のシステム開発者の多くが、例えば「サーバーサイドでのExcel処理にどういう技術を採用すべきか」「Excelの利用とシステム化のすみ分けをどう図るか」といった難題に頭を悩ませている。今回の「GrapeCity ECHO 2022」は、そうした開発者の抱える課題を踏まえるかたちで、Excel業務のシステム化に向けた指針を示すことをテーマに据えて実施された。

Excelファイルの処理を可能にするAPIライブラリの活用がポイント

 当日執り行われた3つのセッションの端緒を開いたのは、日本マイクロソフトの井上章氏による「Officeオートメーション技術とサーバーサイド コードでのExcel利用の課題」と題する講演である。

日本マイクロソフト株式会社 カスタマーサクセス事業本部 App Innovation アーキテクト統括本部 Senior Cloud Solution Architect 井上 章氏
日本マイクロソフト株式会社 カスタマーサクセス事業本部 App Innovation アーキテクト統括本部 Senior Cloud Solution Architect 井上 章氏

 マイクロソフトでは1997年ごろに、対話可能なバイナリソフトウェアコンポーネントを作成するための分散オブジェクト指向技術として「COM(Component Object Model)」を確立した。「COM自体は、アプリケーション側のCOMクライアントが、リモートコンピュータを含む他のプロセス内に存在する、さまざまな機能を実装したCOMコンポーネントとの間で公開されたインターフェイス経由でプロセス間通信を行って、その機能を利用して必要な処理を行うという仕組みを実現するもので、ActiveXやCOM+、DCOM、さらにいえばWindows OSそのものの基盤ともなっている技術です」と井上氏は紹介する。

 そうしたCOMの1つの機能として提供されているのが「オートメーション」である。これは従来OLEオートメーションと呼ばれてきたものだが、さまざまなアプリケーションが持つオブジェクトや機能を、他のアプリケーションやマクロ言語、開発ツールなどに公開して利用可能にする技術だ。このとき、サーバーサイドのASP(Active Server Pages)やASP.NETなどのWebアプリケーション、DCOM、COM+、Windows NTなどのサービスを介してその機能を利用するというかたちをとれば、すなわちそれが「サーバーサイドオートメーション」になる。

 Excelを含むMicrosoft Officeには、このオートメーションの仕組みが実装されている。アプリケーションやマクロ言語、SDK、開発ツールなどからOfficeが備える各種機能を使うことができるようになっており、これは「Officeオートメーション」と呼ばれる。「例えば、皆様が開発するアプリケーションで、ExcelやWordなどのOfficeドキュメントを処理したいといったケースでは、このオートメーションの仕組みを通してOfficeの提供する機能をアプリケーションで利用することができます」と井上氏は説明する。

 具体的には、アプリケーション側で"Excel.Application"といった指定で"CreateObject"によってOfficeオブジェクトを生成することで、対象のOfficeアプリケーション、すなわちExcelが起動され、アプリケーションとExcelのOfficeオブジェクトの間で関数命令やその結果にかかわるやり取りを行えるようになる。

 「仮にこのプロセスをサーバーサイドオートメーションで実装するなら、サーバー側にWindowsの仮想マシンを用意して、そこにインストールされたExcelを起動してWeb APIなどを介してサーバー/クライアント間の通信を行い、同様のやり取りを進めていくかたちが一般的でしょう」と井上氏は言う。

 もっとも、こうした仕組みの構築については、いくつかの留意すべき点があげられる。1つには、Office自体が、基本的にはクライアントPC上で動作するUIを持つアプリケーションとして設計されているということだ。つまり、ウィンドウ描画などのUIスレッドなどを持ち、かつその実行においては対話型のデスクトップとユーザープロファイルの利用が前提となる。

 「ところが、サーバーサイドオートメーションでは、ログオンセッションが張られていない状態での無人での非対話型による実行も想定され、そうなると仮に予期せぬ内部エラーが生じた場合などにOfficeが実行する、モーダルダイアログを表示してユーザーに操作を促すといった動作に対応できない事態となり、デッドロック状態に陥ってしまうといったことも起こりえます」と井上氏は強調する。

 またユーザープロファイルについてOfficeでは、レジストリ内の"HKEY_CURRENT_USER"配下のキー情報の取得などを行うが、サーバーサイドオートメーションではユーザープロファイルを持たないアカウントによる実行もあり得るため、初期化処理に失敗することも考えられる。

 「さらに言えば、そもそもマイクロソフトでは、パフォーマンスの劣化なども含めて、さまざまな複雑な問題が発生する可能性があるため、すでに述べたASPやASP.NETなどのサーバーサイドコードからのOfficeオートメーションの実行を推奨しておらず、サポート外としています」と井上氏は語る。

 このようにOfficeオートメーションをサーバーサイドで使うにあたっては何かと考慮すべき点が多いわけだ。これについては、サーバーサイドでOfficeオートメーションと同等の機能を実装するためのいくつかの代替手段が存在する。

 「その1つが『Open XML SDK』の利用です。このSDKを活用すれば、C#などの.NETの言語群により、docxやxlsx、pptxといったOpen XML形式のOfficeファイルの処理を行うことが可能です」と井上氏は語る。そのほかにもExcelファイルをアプリケーションで処理するための、.NETベースのAPIライブラリといったものも商用製品ないしはオープンソースで提供されている(図1)。例えばグレープシティの「DioDocs for Excel」などはその代表例だ。

 「そうした意味では、Excel業務のシステム化に関するサーバーサイドの仕組みの実装には、Officeオートメーションの利用ではなく、これらライブラリを活用いただくことが、極めて重要なポイントになるものといえます」と井上氏は語った。

図1:Excelファイル処理のための.NET APIライブラリ。商用製品、オープンソースで提供されているこれらAPIライブラリを活用したアプリケーション実装が、サーバーサイドでのOfficeオートメーションに代替し得る手段となる。
図1:Excelファイル処理のための.NET APIライブラリ。商用製品、オープンソースで提供されているこれらAPIライブラリを活用したアプリケーション実装が、サーバーサイドでのOfficeオートメーションに代替し得る手段となる。

次のページ
コンポーネントの積極的活用で"Excelライク"なシステム化を実現

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
「GrapeCity ECHO」レポート連載記事一覧

もっと読む

この記事の著者

丸谷 潔(マルタニ キヨシ)

 フリーランスライター。1963年生まれ。慶應義塾大学文学部卒。システム開発(メインフレーム、OS/2等)、IT関連雑誌・書籍の編集を経て現職。執筆領域はIT系全般、FA系など。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17224 2023/02/03 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング