Excel方眼紙という言葉になじみのない方向けに、それがどういったものかを少しだけ説明すると、「Excelの列方向の幅を行の高さと同じに変更して、Excelのセルをすべて正方形にした状態のシート」をグリッドの見た目からExcel方眼紙と呼びます。Excel方眼紙は主に上流工程のドキュメントや画面イメージの作成に使われ、根強い人気があります。また、実際にアプリを作成できなくても、Excel方眼紙で現場の要求に即したシートを作成して事務作業の省力化に寄与している方も数多くいます。
Forguncyは、Excel方眼紙で作成した画面イメージから、Webサーバやデータベースも含めて簡単にWebアプリ化できるので、次のような用途に最適な製品です。
- Excelファイルでやりとりしていた社内手続きを社内向け小規模Webアプリに
- 現場で活用していたExcelファイルを部門内サブシステムに
- Excelで作成された画面仕様書から大規模Webアプリのプロトタイプに
今回は、手元に簡単なExcelで作った一覧表から、Forguncyを使って「最小手順でWebアプリ化する方法」をみていきたいと思います。
Forguncyの構成
システム構成
Forguncyは、開発環境とサーバー環境の2つから構成されています。Excel方眼紙ライクな開発環境でデザインした画面はその場で実行してデバッグした後に、Forguncyサーバーに発行してWebアプリとして公開します。ForguncyサーバーはWebアプリやデータベースがあらかじめ含まれており、Webインフラの高度な専門的知識がなくてもサーバー環境が構築できます。
ForguncyサーバーのWeb機能はどのように実現しているかは憶測になってしまいますが、オープンソースとしてMicrosoft Katanaプロジェクトを利用していると書かれているので、Katanaプロジェクトにより実現しているのかもしれません。また、データベースとしてはSQL Server Compact 4.0が採用されているようです。
画面構成
Forguncyを起動すると、見慣れたExcelのようなリボンインターフェースに最初から方眼紙状にセル幅を調整したシートが表示されます。
しかし似ているのは[ホーム]タブのリボンだけであり、[作成][挿入][データ][ユーザー認証][発行]の各タブにはForguncyの特徴的なリボンが並んでいます。
Forguncyでアプリを作っていくときに重要な概念に「テーブル」と「ページ」があります。「テーブル」はデザインなしの一覧表、「ページ」はテーブルの内容を表示するためのExcel方眼紙上のデザインに相当します。
Forguncyのリボンインターフェースからも分かるように、テーブルやページはForguncyで新規に作成することもできますが、既存のAccess、Excel、テキストファイルからインポートして作成することもできます。
ExcelシートからForguncyテーブルを作成
都道府県の一覧が記載されたシートからForguncyテーブルを作成してみましょう。
(1)ファイル指定
[データ]-[Excelからテーブル]メニューを選択して[外部データの取り込み]ダイアログを開いたら、先ほどのExcelファイルを指定します。
(2)シート指定
テーブルへの取り込みはシート単位になるので、取り込みたいシートを指定します。このときにシート全体ではなくシートの選択範囲のみを取り込むこともできます。
もちろん、1つのForguncyアプリで複数のテーブルを扱うこともできますので、テーブルへの取り込みをシート数分だけ繰り返せば、Excelファイルの複数シートを複数のテーブルにしてForguncyアプリ化することもできます。
(3)先頭行の取り扱い指定
シートを指定したら先頭行がデータか列名かを指定します。もし、列名が複数行に渡っていたりするようなときは、シート指定時に取り込む範囲を指定すると良いでしょう。
(4)列指定
ExcelでCSVファイルを取り込んだことのある方であればおなじみの取り込む列指定の機能はForguncyにも存在します。フィールド名の指定やデータ型の指定もできます。
(5)テーブル名の指定
最後にテーブル名の指定が可能です。Forguncyではテーブルとページに同じ名前は付けられないので、どちらかといえば裏に隠れるテーブルの方をページとかぶらない名前にしておくと良いでしょう。
(6)テーブルの確認
Excelシートからテーブルに取り込みが完了すれば、ナビゲーションウィンドウのテーブルグループに取り込んだテーブル名が表示されます。また、Excelシート風な表示でテーブルの内容も確認できます。
ForguncyテーブルからForguncyページを作成
テーブルが生成できたならば、同じExcelシートからページを作成すれば……と思いましたが、テーブルからページを生成というそのものずばりなものがありましたので、まずはそちらを使ってみましょう。
(1)テーブル指定
[作成]-[テーブルからページを生成]メニューを選択して、変換したいテーブルを指定します。
ここでは[一覧ページ]のみをチェックして[OK]ボタンをクリックします。
(2)ページの確認
自動生成された一覧ページを確認してみましょう。
(3)列の変更
自動生成された一覧ページでは、行削除フィールドがあるのでそこを計算フィールドに変更します。
計算方法の指定をしていくときの「=」を入力後、列をクリックしつつ数式を完成する感覚はまさにExcelそのものの操作感であり、完成度の高さがうかがえます。
Forguncyアプリの実行
テーブルとページが揃ったら実行して、Webブラウザでの表示を確認してみましょう。
元のExcelシートからテーブル化して微調整などを経てここに至るまで、ほぼExcelと同等の操作感で操作してきましたし、そもそもWebアプリ的な設定も知識も使うことなく無事にWebアプリが完成しました。あとは、これをForguncyサーバーが動いているところに発行してあげれば当初の目的は完成してしまいます。
詳細ページ作成時の注意点
テーブルの値を1行1ページとして詳細ページ表示するときには、テーブルから一覧ページを作成した時にはなかった注意点があります。
このようなデザインをした場合、テーブルのデータが複数あったときに、どのデータを表示するかをどのように指定したらよいでしょうか。
標準的な手法としては、一覧を表示して各データにリンクを設定し、そこから各レコードの単票を表示する方法がありますが、今回はForguncy特有のセル型である「レコードナビゲーション」型を使ってページを作成します。
しかし、これだけでは実行してもテーブルに結びつけているのにレコード数は0になってしまいます。
その対策には、同じページ内に一覧を追加しておくことです。
しかしこれでは見た目が悪すぎるので、一覧を表示している範囲を非表示にします。
これで実行すれば想定した感じのページとして表示できます。
ExcelシートからForguncyページを作成
次に、Excelシートからテーブルではなくページを作成する手順をみてみましょう。
(1)ファイル指定
[データ]-[Excelからページ]メニューを選択して[外部データの取り込み]ダイアログを開いたら、先ほどのExcelファイルを指定します。
(2)シート指定
テーブルへの取り込みはシート単位になるので、取り込みたいシートを指定します。このときにシート全体ではなくシートの選択範囲のみを取り込むこともできます。
今回、「都道府県単位」シートのみを取り込んでみたら、そのシートでは「市町村区単位」シートを参照していたので、追加で「市町村区単位」シートも取り込みました。「市町村区」シートのように実際に値が入っているシートの場合、データやテーブルではなくシート自体に設定されます。
一方、値ではなく他のページへの場合は少々動作が違っていました。他ページへの参照があるページでは、編集画面上でもページ間の参照が定義されているので安心して実行してみましたが正しい表示にはなりませんでした。
どうやら、Forguncyでセルに設定できる数式では、シートをまたがったセル参照などが無効になるようです。編集画面では定義上のエラーとなっていないので、もしかしたら今後実行時にも正しく表示できるようになるかもしれませんが、シート間を数式で結びつけているような場合は、テーブル経由に変更するなどの工夫が必要なようです。
まとめ
Forguncyが内蔵しているWeb機能やDB機能などの構成要素を見るとForguncyが想定しているターゲットが元々大規模を想定せずに気軽に使えるツールを目指しているというのが理解できます。このような流れは何もForguncyだけの話ではなく、例えばLightSwitchやProject Sienaのように同様なアプローチをしている開発環境も登場しています。
Forguncyがそれらのツールよりも1歩抜き出ていると思えるのが、2015年には外部データベースとの接続など大規模な開発にも使えるForguncy Proが登場する予定だということです。Forguncyで作成したプロトタイプを元に受託業者にForguncy Proでの作成を外部委託するという新しい商流も生まれてくる事が予想できます。
このようにForguncyは単なるExcel方眼紙ライクな開発環境という面以上にさまざまな可能性を秘めた製品であるといえるでしょう。