Chapter 1
INTER-Mediatorの概要と演習の準備

まず最初に、INTER-Mediatorがどのようなフレームワークで、どういった用途に向くのかなどをまとめます。その後、2章以降での演習の環境を整える方法を説明します。

1-1INTER-Mediatorの特徴

Webアプリケーションは、Webブラウザーで参照ができ、各種のデータをデータベースに保持するというのがおおまかな動きになります。そうした動作をさせるべく、基本的なプログラミングから始めるのがWebアプリケーション開発の原則ですが、フレームワークを使うことで効率的に開発ができるようになります。一方、フレームワークにはそのフレームワーク独自の開発モデルがあります。ここでINTER-Mediatorの特徴を、開発者向けに解説します。

MVCフレームワークが主流のWeb開発

 Webアプリケーションは古い時代はCGIと呼ばれ、Perlなどの言語を使い、BBSや製品情報ページのような動的にデータが埋め込まれるサイトがWebの黎明期から作られていました。その後、より高度なシステム開発を目指してオブジェクト指向技術が導入され、MVCフレームワークが主流となりました。MVCフレームワークは、サーバーサイドで稼働するソフトウェアを、モデル(Model)、ビュー(View)、コントローラー(Controller)というコンポーネントに分割して管理・開発する手法です。Web開発以前から存在した代表的なアーキテクチャですが、JavaEEでは、クライアントからのリクエストをコントローラーが受け付けて、データベースおよびそれを抽象化したモデルからデータを取り出し、それをビューに渡して整えるといった流れが確立されました。これを旧来のMVCと対比するために「MVC2」と呼ばれることもあります。

 MVCモデルの導入により、複雑なプロセスが絡むシステム開発が、そうした方針がない時代に比べて系統的にできるようになり、より巨大なシステム開発へと発展しました。また、ソフトウェアを要素に分割するために、複数の開発者による作業も系統的にできるようになりました。そして、MVCアーキテクチャを採用したアプリケーションを作りやすいようなフレームワークへと発展してきています。当初はJavaが中心でしたが、Ruby on Railsが「設定よりも規約」というコンセプトを導入し、CakePHPをはじめとしたPHP言語ベースのものや、DjangoなどのPythonベースのもの、さらにはNode.jsとしてJavaScriptベースのサーバーサイドのフレームワークが登場しました。

 これらのフレームワークの特徴は、データベースと連動するということです。データベースとしては、リレーショナルデータベースが主流ですが、最近ではNoSQLつまりキーバリューストア形式のものも実務に使われ始めています。つまり、Web上でデータベースを運用するためのアプリケーション開発を行うためのMVCフレームワークが、ソフトウェアの主要なジャンルとなってきたわけです。

 MVCフレームワークは実績を重ねており、十分に実用的であることは疑う余地はありません。しかしながら、必ず手続き的なプログラミングが必要になります。プログラムは長さよりも、それを記述するための背景知識がどれくらい必要かということで、開発効率や、あるいはメンテナンスの効率が変わります。言語によるプログラミングの知識に加えて、フレームワークを利用する知識が必要になり、学習コストがかかると同時に、専門的に取り組む環境がないと十分な成果物を開発可能にはなれないということもあります。したがって、そのためにプログラミングの勉強を頑張るということも、もちろんひとつの選択肢です。

 しかしながら、開発を効率良く行う、つまり少ない学習コストと、メンテナンス作業の軽減などを目指す方向もあります。Web以外の世界では、FileMaker ProやMicrosoft Accessといったデータベースアプリケーションソフトは、画面レイアウトとテーブルのフィールドを連動させるような仕組みで効率良くデータベースを利用するアプリケーションを開発できます。また、Microsoft Excelはエンドユーザー開発の中心的なアプリケーションであるとも言えます。こうした「手軽さ」をWeb開発でも実現できないのかと考えたのがINTER-Mediatorのきっかけです。

INTER-Mediatorの概要

 Web黎明期には、HTML上に属性などを加えることで、データベース連動のWebアプリケーションを開発する仕組みが各社から発売されていました。現在でも残るものとしてはAdobe ColdFusionがありますが、FileMaker社もCDMLという言語でのWeb開発を、ファイルメーカーPro 6まではできるようにしていました。しかしながら、これらのフレームワークは今では主流どころかほとんど消えています。理由は明白で、簡単なアプリケーションしか作れなかったからです。手軽にフィールドのデータをWebページ上のテキストフィールドに見せることはできます。しかし、繰り返しや条件分岐などをページ上で行うためには、HTMLに定義されていない特別なキーワードを書かなければなりません。また、表示結果を修正できるようにするためには、表示結果がフォームとなってサブミットが可能になるようにするといったパズルのようなページ作成が必要でした。仮にそれらを頑張ってできたとしても、追加的な処理の記述が極めて限られています。ColdFusionは、HTML上でほとんど手続き的なプログラミング言語並みの記述力を有し、さらにサーバーサイドの処理をJavaで記述できるように複雑な仕組みを取り入れたことで現在でもシステム自体は残っているため、製品は販売されているのだと思われます。しかし、結果的には、最初からJavaやPHPで作っていた方が、シンプルに済んでいたかもしれません。

 一方、「バインド」という仕組みもあります。「バインド」とは、Webページ上のテキストフィールドと、データベース内のテーブルのフィールドを論理的に結合する仕組みです。簡単な設定のみで、Webページ上のオブジェクトと、データベースの連携が可能になります。つまり、フィールドの値をページに表示し、ユーザーが編集すれば、その結果を書き戻すという処理です。一般には「バインド」と呼ばれるこうした処理は、FileMakerやAccessのようなデスクトップアプリケーションでは当たり前でした。Web関連のフレームワークではWebObjectsがそうした仕組みを持っていました。しかしながら、バインドの仕組みを持たないフレームワークが使われることも増えて、一時期はあまりなじみのない機能になっていました。最近では、AngularJSやKnockoutJSのようなフロントエンドのツールでバインドという仕組みが見直されています。INTER-Mediatorも、バインドのサポートが非常に重要な仕組みとなっています。

 さらに、INTER-Mediatorでは、繰り返しの処理も、特別なキーワードを記述しなくてもできるようになっています。詳細は次の章以降で説明しますが、例えばテーブルであれば、TRタグで1レコード分の表示領域を定義すれば、それをレコードの数だけ複製して繰り返せば良いのです。繰り返し対象になる要素群と、それを束ねる要素は確定できるので、結果として、データベースとバインドした要素があるTRレコードは、何も記述しなくても、レコードの数だけ複製されるということを実現しました。

図1-1-1 INTER-Mediatorでのバインドと繰り返しの処理

 また、この繰り返し可能な記述を階層化させること、例えば、テーブルの中のひとつのセルにまた別のテーブルがあるような構造を記述することで、リレーションシップに基づく関連レコードを内側のテーブルに表示させることができます。FileMakerで言えばポータルですが、2段階だけではなく、多重に実施することができます。こうした繰り返しや、さらにはリレーションシップに基づく関連レコードの繰り返しは、AngularJSやKnockoutJSにはない機能です。

 INTER-Mediatorの大きな特徴は、HTMLの中に特有の記述を加えることで、データベースと連動するWebページが作成できることです。このWebページのテンプレートとなるHTMLファイルを「ページファイル」と呼びます。純粋なHTMLで記述できるので、ページファイルは宣言的に記述できます。

開発プロセスとコード作成

 INTER-Mediatorでは、HTMLページ以外に、PHPでの設定ファイル「定義ファイル」を作成します。直接記述する場合には、PHPの連想配列を記述することになり、文字列の記述や正しく区切るなどの文法知識の基本は知っておく必要はありますが、Webアプリケーション形式のエディターもあるので、必ずしもPHP言語での記述しかできないわけではありません。また、記述するのは単にキーと値のセットなので、繰り返しや条件を記述する必要はなく、宣言的な記述であると言えます。

 このような別ファイルを用意する理由は、データベースからの取り出し設定の使い回しをするためです。ひとつの設定には単にテーブル名があるだけだけでなく、検索条件やソートの基準フィールドの指定もあります。これら、単なるテーブルそのものではなく、条件等によって意味付けられたリレーションであるとして「コンテキスト」と呼びます。ひとつのコンテキストをページの複数の場所で利用したり、異なるページ間で共有できるように、HTMLページとは別に定義ファイルを作成します。

 また、定義ファイルは、サーバーサイドに設置され、INTER-Mediatorにより中身を書き換えてクライアントに送り込まれます。したがって、データベース利用のためのパスワードなどを記述しても、その情報はクライアントには伝達されません。定義ファイルには、Webアプリケーションに設定する認証や認可のための記述も行います。しかしながら、設定ファイルはサーバー上に配置し、クライアントサイドで意図しない変更ができないようになっています。つまり、セキュリティを担保する設定ができるのも定義ファイルの存在理由です。

 INTER-Mediatorのひとつのページは、ページファイルと定義ファイルから成ります。しかしながら、これらを作成する以前に、データベースそのものの準備が必要です。つまり、実際のアプリケーションに応じたスキーマを定義し、それをデータベースに適用して、データの入出力が可能にしておく必要があります。したがって、要求定義を元にスキーマを定義するまでの上流工程については、一般的な開発と何ら変わりません。また、おおまかなスキーマ定義をするのではなく、きちんと詳細まで考慮したスキーマ定義をしておく方が、アプリケーション開発の効率は高くなります。INTER-Mediatorでは手続き的な言語での開発にありがちな、「後からなんとかする」という枠組みはあまり持ち合わせていません。きちんとした上流工程を踏むためには、業務分析やスキーマ定義は専門家に依頼するか、協力を要請することも必要でしょう。

 実際の開発は、HTMLによるページファイルの構築からスタートし、必要なコンテキストを定義ファイルに記述しながら進めることになります。この2つのファイルの宣言的な記述以外に、クライアントおよびサーバーの処理に手続き的なプログラムを追加することもできます。ただし、多くの一般的な処理は簡単な宣言記述をするだけで実現されるように設計してあります。まずは宣言的な記述で組み立てて、その範囲を超える場合には手続き的なプログラミングを行うことになるでしょう。

 作成したWebページのメンテナンスも、ページファイルや定義ファイルの変更の範囲内であれば、宣言的な記述で可能です。特に、この部分を、業務システムであればエンドユーザーが比較的広範囲に行うことができると考えられます。宣言的な記述の部分は簡単に習得できますので、エンドユーザーによる取り組みが現実的になります。もちろん、手続き的なプログラミングの部分を変更したり、スキーマ変更が発生すると、メンテナンス作業は難しくなります。しかしながら、MVCタイプのフレームワークであれば、多くのメンテナンス作業は手続き的なプログラミングの修正で行います。一方、INTER-Mediatorでは、ページ構成の修正などはHTMLのページファイル内の宣言記述を修正するだけで済みます。INTER-Mediatorでは宣言的な記述での修正作業範囲内である場合が多くあります。ある程度の開発ができた段階から、メンテナンス作業を業務システムのエンドユーザーが行うことで、システムの価値を保持して継続的な利用を低コストで実現できます。

手続き的なプログラミングが必要になる場合

 INTER-Mediatorでは、手続き的なプログラミングによる機能拡張が可能です。サーバーサイドはPHP、クライアントサイドはJavaScriptで記述します。プログラミングによる機能の実装をサポートするためには、十分なレベルのAPIが必要であることは疑いのない事実です。しかしながら、INTER-Mediator Ver.5までの過程では、むしろ、宣言的な記述による機能の実現に注力してきたので、プログラミングのAPIについては、必要な機能の実装しかしておらず、十分な機能の組み込みは今後のバージョンを予定しています。

 まず、サーバーサイドはMVCタイプではなく、アスペクト指向プログラミング(Aspect Oriented Programming)による拡張が可能です。データベースに対する処理を行う前後に、任意のプログラムを追加することができます。データベース処理前は、クライアントから送られる条件や、更新するデータを受け取り、それを加工することができます。クエリー結果や新規レコード、レコード更新した場合には、その処理後に、データベースのデータを受け取って、異なる形式にしてクライアントに送ることができます。例えば、集計処理を行うような仕組みをサーバーサイドに付け加えることができるということです。したがって、さまざまな設定にアクセスが可能なようにAPIを用意していますが、Ver.5現在で利用できるAPIはINTER-Mediatorでの設定を取得するようなものに限られています。データベースの出力は、連想配列の配列で得られ、その結果を同様に連想配列の配列で返せば良いので、扱うデータは配列です。連想配列では、フィールド名がキーでありそれに対する値がフィールドの値になったものです。

 一方、クライアントサイドのプログラミングは、バインド以上の処理が必要なときに組み込みます。例えば、ボタンを押すことで、いくつかのレコードを作成したりあるいは特定の値に更新するといった処理がそれに相当します。クライアントプログラミング向けにはさまざまなAPIが用意されています。また、クリックに対応するDIV要素を確保したいときも、手続き的なプログラミングが必要です。検索機能の組み込みを手続き的なプログラミングを行わなくてもできる手法も用意されていますが、条件設定になんらかのロジックが含まれる場合にはプログラミングが必要になることもあるでしょう。

INTER-Mediatorに向く開発と向かない開発

 INTER-Mediatorでは、データベース内のテーブルのフィールドと、ページ上の要素を直接結合するバインドを、手続き的なプログラミングをしなくても実現していることが特徴です。データベースの内容をそのままページに表示して、変更結果を書き直すような、複雑なロジックが絡まないようなアプリケーションであれば、容易に開発ができると言えます。そうしたシンプルなアプリケーションの例としては、Microsoft Excelのドキュメントファイルをファイルサーバーにおいて共有したり、メール添付で情報更新する業務が考えられます。こうした業務はWebアプリケーションとして簡単に実現できます。ドキュメントファイルをメールで回すような場合には、即時に情報が更新されないことや、たくさんのバージョンのファイルが作られることになり、データの管理のための仕事が増えるだけです。共有データベースで情報の一元化をすることで、ファイル単位での共有での問題点が解決します。

 一方、同時に複数のテーブルを更新するようなロジックが複雑なアプリケーションの場合だと、INTER-Mediatorでも開発はできなくはありませんが、手続き的なプログラミングの機会が増えることになり、他のフレームワークと労力の上ではあまり変わらないことになります。また、他のフレームワークと手法がかなり違うため、プログラミングのインターフェースの部分の学習は、いくらかコストが高めになる可能性があります。なんでもプログラミングで解決するのではなく、宣言的な記述の範囲内で稼働する状態に、うまくプログラミングによる処理を連動させれば、開発に割く労力はいくらか少なくなることが考えられます。その意味では、他のフレームワークとは違う独特な方法での機能拡張を理解する必要があります。

INTER-Mediatorのサイトとコミュニティ

 INTER-Mediatorは新居雅行が個人のプロジェクトとして2009年の年末に開始し、2010年初頭にオープンソースソフトウェアとして公開しました。それ以来、さまざまな変遷を経ていますが、2015年5月現在、「INTER-Mediator Directive Committee」(以下、「Committee」)によってコミュニティが運営され、そのコミュニティがリリースするソフトウェアという位置付けになっています。もちろん、開発を始めた新居雅行も、Committeeの一員であり、現在も主要なコミッター(開発者)でもあります。

 現在、機能しているサイト等は、表1-1-1の通りです。メインサイトとマニュアルのサイトは同一のデザインになっています。ページ最上部のナビゲーション部分で、「INTER-Mediator」をクリックするとinter-mediator.orgへ、「Information」の部分をクリックするとinter-mediator.comへ、「Manual」をクリックするとinter-mediator.infoへ移動するようになっています。

ドメイン/URL役割解説
inter-mediator.comメインサイトINTER-Mediatorの特徴などを記載したサイト
inter-mediator.infoマニュアルINTER-Mediatorのドキュメントを登録したサイト
github.com/INTER-MediatorレポジトリINTER-Mediatorのソースコードを公開するレポジトリ。Issue List等、GitHubのさまざまな機能を活用している
inter-mediator.orgCommitteeINTER-Mediator Directive Committeeの紹介
lab.inter-mediator.org研究室コミュニティ内などで発生したプロジェクトに関するサイト
www.facebook.com/groups/intermediator.japaneseFacebookグループ日本語での情報交換を行うためのグループ。主としてイベント告知等に利用
www.facebook.com/groups/intermediator.englishFacebookグループ英語での情報交換を行うためのグループ。ただし、ほとんどメッセージはなし
https://intermed-community.slack.com/SlackコミュニティSlackのコミュニティで、開発内容などのディスカッションはこちらで実施中
表1-1-1 INTER-Mediatorのサイトとコミュニティ

 GitHubでは表1-1-2に示す4つのレポジトリを公開しています。レポジトリという言葉はなじみがない言葉かもしれませんが、「データの貯蔵庫」と思ってください。データベースの中に格納されたデータそのものはもちろん、それがどのような構造で何のためにあるのか、あるいはまた開発のための情報、さらにプログラムコードそのものまで、すべてを格納する場所のことです。

 GitHubのINTER-Mediatorという名称の組織アカウントを利用しています。レポジトリへの移動は、Webサイトのページの最初にあるナビゲーションにある「GitHub Repository」から選択して移動することもできます。それぞれのレポジトリへの書き込み権限はCommitteeのメンバーが持っていますが、Committeeでない方々も、是非ともソースコードのコミットを「Pull Request」でお願いします。リクエストの出し方は、こちらのページにまとめてあります。

レポジトリ内容
INTER-Mediatorフレームワークソフトウェアの本体、サンプルコードなどのソースコード
INTER-Mediator_WebSiteinter-mediator.comに公開するWebサイトおよび、labディレクトリでlab.inter-mediator.orgに公開するサイトのソース
INTER-Mediator_Documentsinter-mediator.infoに公開するWebサイトのソース
inter-mediator.github.ioGitHub Pagesの機能を使ったinter-mediator.orgサイトのソース
表1-1-2 GitHubのレポジトリの内容

1-2演習を行うための準備

本コースでは、手軽にINTER-Mediatorの演習に集中できるように、あらかじめINTER-Mediatorが稼働する環境一式をセットアップしたLinuxのバーチャルマシン(VM)を用意しました。Webサーバーやデータベースシステムは既にこの中に実行可能な状態で準備してあります。最小限のインストール作業で、システム開発に取り組んでいただくことを意図したものです。VMはあくまでも学習用、開発用のもので、これを実際のWebアプリケーションとして公開するのは不適切です。本番稼働用のサーバーインストール方法や、セキュリティに関する考慮などについては、別の章で説明します。Chapter 2以降の演習を進めるための環境をここで整えておきましょう。

PC/Macを用意してVMを入手する

 INTER-Mediatorが稼働するVMは、Oracleがフリーソフトウェアとして配布しているVirtualBox上で利用できるものです。Download VirtualBoxのページで、WindowsないしはMac版をダウンロードしてインストールをしてください。インストールの方法は特に難しいものではありません。お使いのパソコンに適合したファイルをダウンロードし、ファイルを開けばインストール用のパッケージがパソコンのデスクトップに表示されます。これをダブルクリックするだけでインストールは完了です。なお、LinuxやSolaris版もありますが、本コースでは、MacあるいはWindowsでの利用方法を中心に説明を行います。

 VirtualBoxのインストールができれば、INTER-Mediatorのサイトの中にある「INTER-Mediatorがインストールされた動くサーバーのVirtual Machine」を開きます。このページの最初の方にある「INTER-Mediator-Serverのダウンロード」という箇所で、INTER-MediatorがインストールされたVM(以下、INTER-Mediator-Serverと記述します)をダウンロードするためのリンクがあります。ここをクリックしてダウンロードしてください。ダウンロードしたファイル「INTER-Mediator-X.X-Server.ova」(X.Xはバージョンナンバーで随時変わります)はどこに保存してもかまいません。後ほど、VirtualBox内部で、ダウンロードしたファイルをインポートしますので、ダウンロードされた場所を把握しておけば良いでしょう。

FileMaker Serverを使用する場合の準備

 本コースでの演習作業は、MySQLあるいはFileMaker Serverを利用して行うことを想定しています。INTER-MediatorはPostgreSQLやSQLiteでも利用できますが、一部を除いてMySQLと基本的には同一ですので、PostgreSQLやSQLiteをターゲットにしている方も、まずはMySQLでの運用を学習してください。あるいは、MySQLで稼働させてみた上で、他のデータベースでも同様に動くというところを確認するのも良いでしょう。これらのSQLサーバーは、INTER-Mediator-Serverにインストールされており、利用するデータベースの設定を変えるだけで切り替えて使えます。

 FileMaker Serverについては、INTER-Mediator-Serverには含まれていません。FileMaker Serverのデベロッパー版をMacあるいはWindows PCにインストールをして、その上でVirtualBoxで稼働するINTER-Mediator-Serverを利用すれば、Mac/PC側のFileMaker Serverを利用する設定で作業を行えるようにします。FileMakerのデベロッパー版は、FileMaker Developer Subscription(年間9,000円)に加入すれば入手できます。評価版での利用も可能ですが、利用できる評価期限が短いので、デベロッパー版を入手して作業することをお勧めします。

 FileMaker Serverで利用される方は、さらに、サンプル用のデータベース「TestDB.fmp12」をこちらのリンク先よりダウンロードして、FileMaker Serverで公開をしておいてください。管理者のユーザー名は「admin」、パスワードは「1234」です。設定は全て終わっているので、ダウンロードして公開するだけで大丈夫です。なお、FileMaker Server 11以降に対応していますが、fmp12ファイルを利用するFileMaker Server 12以降を利用する方が良いでしょう。

 本コースでは、FileMaker Serverの操作方法や、FileMakerの利用方法は細かくは説明しません。しかしながら、FileMaker ServerはVer.13以降、さらに稼働させるのが大変なソフトウェアになってしまっています。本コースの読者の方に対しては、FileMaker Serverの稼働方法等についてもINTER-Mediatorが使えるように筆者がサポートしますので、トラブルでうまくいかない場合には、状況を教えていただければ、作業のアドバイスを行います。

VMを起動して動作確認を行う(Mac)

 VirtualBoxをインストールした後に起動し、必須の設定を行います。VirtualBoxメニューから「環境設定」を選択して、ダイアログボックスのツールバーで「ネットワーク」を選択します。そして、「ホストオンリーネットワーク」のタブを選択します。最初は何も設定されていませんので、右側に3つ並んでいる一番上の「+」記号が見えるアイコンをクリックします。すると、自動的にひとつの項目が登場します。操作としてはこれだけでかまいません。

図1-2-1 環境設定で「ホストオンリーネットワーク」に項目を作成する

VMを起動して動作確認を行う(Windows)

 VirtualBoxをインストールした後に起動し、必須の設定を確認します。「ファイル」メニューから「環境設定」を選択して、ダイアログボックスの左側で「ネットワーク」を選択し、「ホストオンリーネットワーク」のタブを選択します。そこに最初から「VirtualBox Host-Only Ethernet Adapter」が存在することを確認してください。ここに何か項目がひとつでもあれば、それでかまいません。

図1-2-2 環境設定で「ホストオンリーネットワーク」に項目があることを確認する

 WindowsでVirtualBoxを起動したとき、「仮想化支援機能(VT-x/AMD-V)を有効にできません。」と書かれたダイアログボックスが表示され、VirtualBoxが起動できない場合があります。Windowsパソコンは、通常は仮想化環境を利用できるようにするかどうかという設定がコンピューター側にあって、メーカー製品等ではオフになっているのが一般的です。その設定を変更する方法に統一的な方法はありません。メーカー品などサポート窓口があるような機種を利用されていて、その窓口が利用できるなら、そこにたずねて方法を聞いて行うのが確実です。一般にはこの設定は「BIOS設定」と呼ばれるところにあり、起動時にEscキーやいずれかのファンクションキーを押していると、BIOS設定画面に切り替わり、そこで設定を変更できます。「Virtualization 」「Virtualization Technology」「Intel(R) VT-d Feature」といった名称の設定をDisabledではなくEnabledにして、設定の保存を必ず行い、再起動します。設定の名称もBIOSの種類によって違います。

ホストオンリーネットワーク」について

 VirtualBoxは、macOSやWindows(ホストOS)の上で、さらに別のOS(ゲストOS)を稼働させる仮想マシンアプリケーションです。INTER-Mediator-Serverは、ゲストOSとしてUbuntu 14.04 Serverを利用しています。VirtualBoxで稼働させるゲストOSのネットワーク環境にはいくつかありますが、「ホストオンリーネットワーク」を利用することにします。それぞれのOSで、このネットワークをVirtualBoxに用意する方法はこれまでに説明した通りです。この手法は、ホストOSとゲストOS同士の通信が可能です。しかしながら、ゲストOSにはホストOSが稼働するコンピューター以外からのネットワークアクセスはできなくなります。つまり、ホストとゲストのOS間で閉じたネットワークが構築されることになり、ゲストOSではサーバーが稼働しているものの、ホストOSからしかサーバーは利用できない安全な状態で運用することができます。

 なお、初めてVirtualBoxを使う場合には、初期設定のまま利用すれば問題はありません。もし、別の用途でVirtualBoxを使っていて、この「ホストオンリーネットワーク」の設定を変更していたのなら、変更した結果に合わせて作業を行うか、あるいは設定を元に戻します。設定を戻したい場合は、一覧の項目を選択して、右側に3つあるアイコンのうち、一番下のものをクリックします。すると設定変更のパネルが出てくるので、図1-2-3と図1-2-4のように設定します。つまり、これは、ホストコンピューターが192.168.56.1で、ゲストOSがDHCPを通じて通常は最初のIPである192.168.56.101で稼働稼働することを意味します。

図1-2-3 ホストオンリーネットワークの「アダプター」の既定値
図1-2-4 ホストオンリーネットワークの「DHCPサーバー」の既定値

ダウンロードしたVMの読み込み

 VirtualBoxにダウンロードしたVMをインポートします。macOS/Windowsともに、基本的な手順は同一ですので、以下は、macOSでの図を示します。

 VirtualBoxの環境設定を確認したら、「ファイル」メニューの「仮想アプライアンスのインポート」を選択します。すると読み込み方法を指定するパネルが表示されます(図1-2-5)。最初は、読み込むファイルを指定する必要がありますが、空白になっている枠の右側のフォルダーのアイコンをクリックします。すると、ファイルを指定するパネルが表示されるので、INTER-Mediatorのサイトからダウンロードした「INTER-Mediator-X.X-Server.ova」ファイルを指定します(図1-2-6)。すると、最初は空白だった枠のところに、読み込むファイルのパスが見えるようになります。それを確認して、「続ける」ボタンをクリックします(図1-2-7)。

図1-2-5 インポートの最初のパネル
図1-2-6 ダウンロードした「INTER-Mediator-X.X-Server.ova」ファイルを指定する
図1-2-7 読み込むファイルのパスが指定された

 その後、製品名などの確認のパネルになりますが、ここはそのまま「インポート」ボタンをクリックします(図1-2-8)。すると、ファイルの読み込みが開始されます。VirtualBoxをアクティブな状態にして、コンピューターの操作をしない方が早く終わる傾向にあるようで、1、2分で読み込みは終わります。読み込み途中は進行状況を示す表示になります(図1-2-9)。

図1-2-8 確認のパネルが表示されるので「インポート」をクリックする
図1-2-9 読み込み中は途中結果を表示する

 読み込みが終わると、「Oracle VM VirtulaBoxマネージャー」のウインドウの左側に、読み込んだVMが項目として表示されます。項目を選択すると、右側にそのVMについての情報が表示されます。VMの操作はツールバーで行いますが、「新規」を除く3つのアイコンは、左側で選択したVMに対して行われる操作です。

図1-2-10 ファイルを読み込みVMがセットアップされた

 ここで、「INTER-Mediator-Server」の項目を選択して、ツールバーにある「設定」ボタンをクリックして、設定の確認をします。ここで設定されるパネルは、VirtualBox全体の環境設定ではなく、INTER-Mediatorが動作するVM環境の設定になります。macOSの場合は、ツールバーにある「ネットワーク」のアイコンをクリックします。Windowsの場合は、左側のリストにある「ネットワーク」をクリックします。そして、「アダプター1」〜「アダプター4」までの4つのタブを調べます。この中で「ネットワークアダプターを有効化」にチェックが入り、「割り当て」に「ホストオンリーアダプター」が選択されているものがひとつあるようにします。ない場合には、「ネットワークアダプターを有効化」にチェックが入っていない設定を探して、「割り当て」から「ホストオンリーアダプター」を選択します。「名前」は自動的に環境設定で見えていた項目名が選択されているはずです。「高度」の設定はそのままにして、OKボタンをクリックします。すでに、有効な「ホストオンリーアダプター」があれば、そのままOKあるいは「キャンセル」ボタンで閉じます。

図1-2-11 VMの設定(macOS)
図1-2-12 VMの設定(Windows)

VMの起動と基本的な利用方法

 INTER-Mediator-ServerのVMを起動します。「Oracle VM VirtulaBoxマネージャー」のウインドウの左側で項目を選択し、ツールバーにある「起動」アイコンをクリックします。新たに「VirtualBoxVM」というアプリケーション(プロセス)が別途起動します。このアプリケーションがひとつのゲストOSになります。サーバー版のUbuntuなので画面は真っ暗です。しばらく待って、login: と表示されるのを待ちます。「Oracle VM VirtulaBoxマネージャー」のウインドウでは、「実行中」であることが示す記述がみられます。

図1-2-13 起動中のVM

 そして、ホストOSつまり、「母艦」であるmacOSないしはWindows側でWebブラウザーを起動します。ブラウザーは、INTER-Mediatorに対応した、HTML5対応のものであればなんでもかまいません。そして、http://192.168.56.101/に接続をします。図1-2-14のように、「INTER-Mediator X.X - VM for Trial」と書かれたページが見えれば、セットアップは完了です。ホストOSから、ゲストOSのWebサーバーに接続をしているということです。

図1-2-14 VMの説明ページが見えるかどうかを確認する

 このまますぐに使い始めてもいいのですが、先に作業を終了させる手順だけを説明しておきます。VM自体をシャットダウンしたい場合には、VMにログインしてコマンドを叩いても良いのですが、せっかくグラフィカルユーザーインターフェースを持つ管理プログラムを使っているのですから、分かりやすいグラフィカルユーザーインターフェース操作を覚えておきましょう。

 それでは、「Oracle VM VirtulaBoxマネージャー」からINTER-Mediator-Serverの項目を、右ボタン(副ボタン)でクリックして、ポップアップメニューを表示させます。そして「閉じる」から「ACPIシャットダウン」を選択します(図1-2-15)。あるいはINTER-Mediator-Serverが稼働している「VirtualBox」アプリケーションで、「Machine」メニューの「ACPIシャットダウン」を選択します。すると、シャットダウンをしていいかどうかをパネルで問い合わせてきます。「ACPIシャットダウン」ボタンをクリックすることで、実際に、OS自体のシャットダウンに入ります(図1-2-16)。これで、起動したVirtualBoxVMアプリケーションは終了します。

図1-2-15 ホストOS側からゲストOSをシャットダウン
図1-2-16 シャットダウンの確認

 これから、本コースの演習を進めるにあたって、1日ですべてが終わるとは限りません。何日もかけて作業をされることになると思われます。このとき、VMは起動したままホストマシンがスリープに入っても、特には問題は起きないようです。また、macOSやWindows自体をシャットダウンするときには、当然のことながら、VirtualBoxVMも終了することになります。このとき、ゲストOSが起動中であれば、図1-2-17のようなパネルが表示されます。ここで「Save the machine state」を選択してOKをクリックすると、起動状態を保持したままアプリケーションが終了し、次にVirtualBox自体を起動したときに自動的にゲストOSを稼働するVirtualBoxVMアプリケーションも起動します。つまり、起動状態を保って、次回は保存された状態からVMが動くということです。

図1-2-17 稼働中のゲストOSのVMを終了しようとしたとき

 macOS版のVirtualBoxは、ユーザーのホームフォルダーに「VirtualBox VMs」フォルダーを作成し、その中にVMの動作に必要な関連ファイルを保存します。そのフォルダーの直下には、ウインドウのVMリストに見えるのと同じ名前のフォルダーがあります。

 もし、VMそのものが不要になった場合を含めて、「VirtualBox VMs」フォルダーの中身を別のフォルダーに移動すると、いろいろと問題がおきます。内部のフォルダーの移動はしないようにしましょう。もし、削除するときには、「Oracle VM VirtulaBoxマネージャー」でVMを選択して、ツールバーにある「破棄」ボタンをクリックして、削除やあるいはフォルダーを残してのリストからの削除を行うようにします。Finderでゴミ箱にフォルダーを捨てると、エラーメッセージを見続けることになります。

VM内のINTER-Mediatorのアップデート

 INTER-Mediatorの本体は頻繁にアップデートしています。一定のタイミングで更新されたVMを作成しアップロードしていますが、常に最新のものではありません。INTER-Mediator自身を最新のものに更新するには、VMにコマンドラインでログインして操作します。

 ひとつの方法は、稼働中のゲストOSで作業をします。ゲストOSが起動していて、真っ黒な画面になっているならば、ウインドウを一番手前にした状態で、returnキーを押してみてください。そうすると、「login:」という文字が表示されるはずです。ここで、ユーザー名として「developer」とキータイプしてreturnを押します。その後、「Password:」とパスワードを聞いてくるので「im4135dev」とキータイプしてreturnを押します。なお、この作業は、macOSの「ターミナル」や、Windowsの「TeraTerm」等で作業してもかまいません。その場合は、sshプロトコルで、192.168.56.101へ接続します。例えば、リスト1-2-1のようにコマンドを入力します。オプションのマイナスの後は、小文字のLです。

リスト1-2-1 VMのOSにsshでログインをする
ssh 192.168.56.101 -l developer

 続いてパスワードを聞いてきますので、「im4135dev」とタイプします。

 ログインができれば、次のようにコマンドを打ち込んでください。1行ずつキータイプしては、returnキーを押します

リスト1-2-2 VM内のINTER-Mediatorをアップデートするコマンド
cd /var/www/html/INTER-Mediator
git checkout .
git pull origin stable

 なお、ダウンロードしたばかりの方は、通常の場合アップデートは必要ありません。しかし、この後、少しずつ本コースを進められたとき、演習を実施するためのINTER-MediatorやあるいはVMのバージョンの指定がある場合があります。ご利用中のVMが古い場合、アップデートをしていただくことで、演習が可能になる場合があります。また、INTER-Mediator側で小規模な部分的改善を行うこともあり得ます。そのようなときに、ここでの記述を参考にして最新版にアップデートしてください。INTER-Mediatorのバージョンは、http://192.168.56.101/に接続したときのページ(VMのトップ説明ページ)の最初の部分に「INTER-Mediator」に続いて記述されています。「git checkout .」の最後は、スペースとドットです。もし、INTER-Mediatorの中身を変更している場合、これによって書き換える前の状態に戻ります。特に変更していない場合には上記コマンドですんなりと更新されるはずです。

 リスト1-2-2での最後のコマンドの最後のキーワードが「stable」の場合は、Ver.5.1、Ver.5.2など、マイナーバージョンを付与した時点のソースコードのうち、最新のものが得られます。一方、最後のキーワードを「master」にすれば、現在の開発途中のソースコードが得られます。例えば、次のようにコマンドを入力しますが、もし、INTER-Mediatorの中身を修正したものの修正結果は不要な場合には、最初のgitコマンドの前に「git checkout .」を入力してください。

リスト1-2-3 VM内のINTER-Mediatorを開発中のバージョンにするコマンド
cd /var/www/html/INTER-Mediator
git checkout master
git pull origin master

 コマンドの最後にstableと指定しても望むバージョンにならない場合には、masterに置き換えてコマンドを入力してください。INTER-Mediatorでは、リリースバージョンは2つの数字、つまり、「メジャーバージョン.マイナーバージョン」で記載します。加えて、リリース候補版の「RCx」(xは数値)、開発途中版の「dev」を追加します。2015年9月時点までにリリースしたバージョンを古いものから順に並べると、… 5.1 5.2-dev 5.2-RC1 5.2-RC2 5.2 5.3-dev 5.3-RC1 … となります。「stable」で得られるのはdevやRCxが付与されていないバージョンのうちの最新版です。

 また、INTER-Mediatorのアップデートに伴い、サンプルデータベースも更新される場合があります。サンプルデータベースの更新日もVMのトップ説明ページに記述していますので、確認してください。

 MySQL、PostgreSQL、SQLiteについては、コマンドラインからスクリプトを呼び出すことで、更新および初期化ができます。リスト1-2-3に示したINTER-Mediatorのアップデート後であれば、リスト1-2-4のようにコマンドを打ち込み、しばらく待ってください。

リスト1-2-4 VM内のデータベースを更新するコマンド
source dist-docs/vm-for-trial/dbupdate.sh

 これにより、データベースの構造を、最新のものにします。なお、演習などで編集したデータは残さずすべてきれいに消してしまいますので、その点は注意してください。

 FileMakerのデータベースの場合は、本セクションの『FileMaker Serverを使用する場合の準備』に記載した方法にしたがって、新しいデータベースをダウンロードし、FileMaker ServerのAdmin Consoleで既存データベースの停止、削除の後に、新しいデータベースをアップロードして開いて利用できるようにしてください。

 整合性のあるデータベースサンプルを使わないと、本コースで説明している通りに動作しないこともあります。INTER-Mediatorの機能向上を図るためデータベースを更新する場合があります。更新の必要がある場合は、読者の皆さんにアップデート情報をメールでお知らせしますので、サンプルデータベースも更新してください。