Officeのマクロ言語VBAは、10年以上もたいしたアップデートがされていない将来の展望が不明瞭な技術だ。Visual Studio Tools for Officeもあるが、プロでない開発者は利用できないし、COMと.NETの相性がよくないので使い難い。また、SharePointもプロでない開発者には利用し難い。ホストされたOfficeやSharePointでマクロを使えば、最終的にかなり汚くなってしまう。
このような状況を受けてProject Napaが登場した。Somasegarの紹介によれば、
“Napa”は軽量のブラウザべースの開発ツールで、OfficeとSharePointの開発をアプリケーションをインスールせずになく始めることができます。http://dev.office.com/で利用でき、OfficeとSharePoint向けアプリケーション、つまり、Office 2013アプリケーション(例えばExcel)上で動作するアプリケーションや、Office Web App (例えばExcel Web App)、またはSharePoint上で動作するアプリケーションの構築を支援します。これらのアプリケーションは新しいCloud App Modelをベースにしており、UIやその他のクライアント側のロジックはウェブ標準の技術(HTML、JavaScript、CSS)で書くことができ、サーバサイドのロジックは開発者が自由に開発環境、開発言語、ホスティング環境を選択することができます。
JavaScriptをそのまま使うのは問題になるかもしれない。JavaScriptは理想的な環境下でも経験のない開発者にとってはVisual Basicより馴染みやすい言語ではない。一貫性のない構文や大文字と小文字の区別、キーワードの代わりに文字列を使う点などは経験のない開発者を混乱させるだろう。これらは克服できないかもしれないが、どのようにJavaScriptを使えばいいのかは明確になるだろう。
ボタンを作成するにはクリックイベントを受け取る関数が必要だ。これはどんな言語で同じで、違いはボタンとイベント処理関数の結びつけ方だ。VB(COMまたは.NET)の場合は、関数はボタンに宣言的に設定する。C#はイベントハンドラ構文を使い、一行のコードで設定する。
Somasegarの例では、Office.initializeに匿名の関数を設定している。この匿名の関数が(document).readyを呼び、第2の匿名関数が呼ばれる。その関数の中にボタンクリックのイベントを処理する3番目の匿名関数があり、jQueryが使われている。このような関数の入れ子は熟練のウェブプログラマには問題ないかもしれないが、Excelで単純なマクロを作ろうとしている人には適していない。
幸いなことにこのようなコードを書く必要はない。この紹介では、従来通りにJavaScriptが使われている。HTMLやOfficeの非同期モデルを理解していれば、シンプルなアプリケーションであれば経験のない開発者でも構築することができるだろう。
Napaを使うにはOffice 365開発者サイトにサインアップする必要がある。