※社内専用

Qusuel要件定義

Excelチェックアプリの概要説明。


※サムネイルをクリックしてください

何故アプリなのか

要件

  1. Excelを完全に コントロールできること
    Node.jsやPythonのExcel操作用ライブラリもあるが、これらは基本的にオートシェイプを操作できない。
    制作指示書のほとんどはオートシェイプで出来ているので要件を満たせない。
    Excelの操作といえばVBAだが、Excelを手動で開くことなく操作したかったのでPowerShellでなんとか出来ないかと考えた。
  2. アップデート可能
    全てのプロダクトに言えることだが、自動アップデートが出来ることは最重要事項。

これら二つの要件を考えたときに

  1. Excel操作→VBA→PowerShwell→コマンドライン→Node.jsの子プロセスからコマンド実行
  2. アップデート可能→Electron→Node.jsそのものを実行できサーバー化出来るExpress

ということで、最終的にNode.jsということで要件が合致した。
Node.js実行可能環境を配布する必要があるので、Electronで制作する。

スキルセット

Express

Node.jsでのWebフレームワーク。
PHPにおけるLaravelのようなもの。
JavaScriptフレームワークというと一般的にはフロントエンドのものを指すため紛らわしいが、これはサーバーサイドまでフォローしたフルスタックなものになる。

フロント側は特に縛りが無いため、今回はAngularJSを採用した。
テンプレートエンジンはデフォルトでPug(旧名:Jade)だが、慣れ親しんだejsにて設定。

AngularJS

お馴染み。開発速度重視で1.x系を選択 。
UIはもちろんAngular Material。
そろそろ卒業したい。

Electron

HTML5、CSS、JavaScriptでデスクトップアプリが作成できる、GitHub製プロダクト。
旧名atom-shell。

メインプロセスとレンダラープロセスに分かれており、メインプロセスはNode.jsの機能がほとんどフルで使える。
これを利用し、Node経由で子プロセスとして直接PowerShellを起動させている。
ちなみに、node-powershellなんてモジュールもあるがこれはExcelを操作するために必要な文字コード、Shift_JISに対応してない。というかNode.jsがそもそもShift_JISなんかに対応していない。
node-powershellは処理文字コードにShift_JISを選択することができないので、今回の要件外となり未採用となった。
ちなみに、今回は自動アップデートにも対応させた。

PowerShell

Excelをパーフェクトにコントロールするために、PowerShellの力を借りることにする。
ここからCOM object経由でVBAオブジェクトを利用する。

VBA

未だにExcelのコントロールはこいつの独占市場なので、頼らざるを得ない。
PowerShell経由で利用。VBAベタより遥かにラクというかマシ。