0-1 まえがき
本書の読み方
内容についての注記
監修者紹介
著者紹介
免責事項について
Copyright
Chapter 1 INTER-Mediatorの概要と演習の準備
1-1 INTER-Mediatorの特徴
MVCフレームワークが主流のWeb開発
INTER-Mediatorの概要
開発プロセスとコード作成
手続き的なプログラミングが必要になる場合
INTER-Mediatorに向く開発と向かない開発
INTER-Mediatorのサイトとコミュニティ
1-2 演習を行うための準備
PC/Macを用意してVMを入手する
FileMaker Serverを使用する場合の準備
VMを起動して動作確認を行う(Mac)
VMを起動して動作確認を行う(Windows)
「ホストオンリーネットワーク」について
ダウンロードしたVMの読み込み
VMの起動と基本的な利用方法
VM内のINTER-Mediatorのアップデート
Chapter 2 データベースへのクエリーと一覧表示
2-1 データベースからの取り出し設定
INTER-Mediatorとデータベース
PDOでの接続に必要な情報
FileMaker Serverへの接続
このセクションのまとめ
2-2 ページ構築のための基本設定
Webページの基本構成
定義ファイルに定義するコンテキスト
定義ファイルの記述方法
ページファイルの記述方法
演習
データベースの内容をリスト表示する
コンテキストの定義内容について
データベース上での同一エンティティであることを示すsourceキー
このセクションのまとめ
2-3 JavaScriptプログラムの記述
JavaScriptについての知識の確認
INTER-Mediatorが定義する変数
JavaScriptを記述する3つの代表的な場所
このセクションのまとめ
2-4 レコードを移動するナビゲーション
ページネーションの生成
演習
ページネーションのナビゲーションを表示する
ページネーションのカスタマイズ
このセクションのまとめ
2-5 検索と並べ替えに関する設定
定義ファイルへの条件設定
JavaScriptで検索条件を付加する方法
演習
データベース検索に条件を追加する
ユーザーインターフェースの定義だけで検索条件を付与する
演習
検索のユーザーインターフェースを作成する
SQLの集計処理
このセクションのまとめ
Chapter 3 データベースの更新を行うページ
3-1 更新可能なテキストフィールド
更新が可能なタグ要素
楽観的ロックの実装
演習
Webページのテキストフィールドで更新する
まとめて更新処理を行う
更新を行わないようにする
このセクションのまとめ
3-2 チェックボックス、ラジオボタン、ポップアップメニュー
チェックボックス
ラジオボタン
ポップアップメニューおよびリスト
演習
テキスト以外のコントロールを設定する
このセクションのまとめ
3-3 レコードの追加・削除・複製
挿入と削除が可能なコンテキスト
挿入と削除のコントロール
演習
挿入と削除のコントロールを追加する
新規レコードのフィールドの初期値
論理削除に対応する
PostgreSQLでのシーケンスオブジェクト
このセクションのまとめ
3-4 入力専用のPost Onlyモード
ページファイルでの違い
登録ボタンを押した後の動作の設定
演習
Post Onlyモードのページを作成する
Post Onlyモードと「確認画面」が不要な理由
確認付きの入力フォームの作成方法
処理結果を伴う場合の対処
このセクションのまとめ
3-5 バリデーション
コンテキスト定義に設定するバリデーション
演習
バリデーションを組み込む
バリデーション機能の利用と注意点
このセクションのまとめ
Chapter 4 コンテキストに対する理解を深める
4-1 ターゲット指定
リンクノードにおけるターゲット指定
FileMakerの場合のターゲット指定のフィールド名
ターゲット指定についての注意点
演習
ターゲット指定のバリエーション
innerHTMLを使う場合のセキュリティ
長いターゲット指定を短いキーワードで記述
このセクションのまとめ
4-2 ページを合成するときのルール
エンクロージャーとリピーターの識別
実際のページ合成
検索結果がない場合の表示
間に割り込む特殊なリピーター
このセクションのまとめ
4-3 複数のコンテキストとリレーションシップ
階層的に定義可能なエンクロージャー/リピーター
リレーションを伴うページの合成
演習
リレーションを伴うページの作成
FileMakerでのポータルを利用した効率化
エンクロージャーやリピーターであることを無視する
このセクションのまとめ
4-4 計算プロパティの設定
計算プロパティの定義
計算式の作成
演習
計算プロパティを追加する
このセクションのまとめ
4-5 データコンバータークラスを使ったフィールド単位の変換
データコンバータークラス
データコンバータークラスの使い道と他の機能
演習
日付フィールドにデータコンバーターを適用する
このセクションのまとめ
4-6 データベースの機能の利用
処理実行前後のスクリプトの処理
グローバルフィールドへ値を設定する
このセクションのまとめ
4-7 表示形式をページファイルで指定する
ページファイルでの書式指定
数値の書式設定
日付や時刻の書式設定
ロケールへの対応
カンマが出ないなどのトラブル
このセクションのまとめ
Chapter 5 さまざまなユーザーインターフェース構築
5-1 マスター/ディテール形式のナビゲーション
マスター/ディテールあるいは一覧/詳細
コンテキストに記述するnavi-controlキー
一覧と詳細の切り替え時に呼び出されるメソッド
演習
一覧と詳細を利用したユーザーインターフェース
一覧と詳細の切り替え時に呼び出されるメソッド
マスター/ディテール形式のページでのそれぞれのコンテキストの取得
詳細へのナビゲーション
このセクションのまとめ
5-2 メールの送信
メールを送るタイミング
メールの内容に関する設定
演習
Post Onlyモードのページでメールを送信する
SMTPサーバーを利用してメールを送信する
メール送信を伴う機能組み込みのパターン
メール送信のトラブルシューティング
このセクションのまとめ
5-3 マルチクライアントでの同期
クライアント間連動の仕組み
INTER-Mediatorでの対応
定義ファイルでの設定
管理用テーブルの作成
演習
Pusherをアプリケーションに統合する
このセクションのまとめ
5-4 JavaScriptコンポーネントの利用
JavaScriptのコンポーネントを利用する
演習
日付選択を行うコンポーネントを利用する
演習
ファイルアップロードのコンポーネントを利用する
ファイルアップロードのその他の機能
その他の付属のコンポーネント
メディアファイルの内容の取得
FileMakerのオブジェクトフィールドへのアップロードと画像表示
このセクションのまとめ
5-5 クロステーブルの作成
クロステーブルに必要な記述
クロステーブル生成の仕組み
このセクションのまとめ
5-6 スタイルの設定を自動化するテーマ
テーマの機能とdefaultテーマについて
テーマの適用と選択
テーマのカスタマイズ
テーマの構造とカスタマイズ
このセクションのまとめ
5-7 ステップ動作を行うシングルページアプリケーション
ステップ動作のサンプルアプリケーション
ステップ動作のためのコンテキスト定義
ページファイルの記述内容
画面遷移時に呼び出されるメソッド
サンプルでのデータベースアクセス
画面に固定されたヘッダーとフッター
そのほかのスタイル設定
演習
入力のあるステップ動作のページ
このセクションのまとめ
Chapter 6 JavaScriptでのプログラミング
6-1 ブラウザーを判断するページ
ブラウザー制限のための戦略
ブラウザーがサポートするバージョンについて
ブラウザーを限定するための指定
演習
ブラウザーの判定を含むページを作成する
ページ合成およびブラウザー判定に使用したAPI
このセクションのまとめ
6-2 再合成を利用した検索ページ
コンテキストの検索条件およびソート条件
パラメーターを受け取るページ
ページの再合成
演習
プログラムで条件を指定する検索機能を持つページ(MySQL)
演習
プログラムで条件を指定する検索機能を持つページ(FileMaker)
ページ合成およびブラウザー判定に使用したAPI
このセクションのまとめ
6-3 データベースへの書き込みを直接行う
データベース処理メソッドの利用
演習
フィールドを更新するボタンを設置する
データベースへの直接的な処理に利用できるAPI
日付時刻の文字列生成のメソッド
まとめて更新する処理
サーバーとの通信を直列化する
このセクションのまとめ
6-4 ページ合成に割り込む処理の追加
ページ合成に割り込む処理
演習
合計や小計を表示する
ページ合成処理に割り込むメソッド
ノード検索のためのメソッド
書式設定のためのメソッド
このセクションのまとめ
6-5 コンテキストオブジェクト
コンテキストオブジェクト
コンテキストオブジェクトとそのプロパティ
コンテキストオブジェクトへのデータの設定と取り出し
コンテキストの情報取得
コンテキストを利用したサンプルプログラム
ローカルコンテキスト
ローカルコンテキストの初期値
このセクションのまとめ
6-6 Post Onlyモードと連動した処理
Post Onlyモードの動作とカスタマイズ
演習
Post Onlyモードを利用して関連レコードを追加する
演習
Post Onlyモードのページに引き続いてページを表示する
入力と確認をより確実に行わせるために
Post Onlyモードで利用できるAPI
このセクションのまとめ
6-7 JavaScriptコンポーネント用のアダプターの開発方法
コンポーネントの定義と一例
ドライバーオブジェクトの構成
ドライバーオブジェクト内で行うこと
ドライバーのサンプルで利用したAPI
このセクションのまとめ
Chapter 7 セキュリティと認証・アクセス権
7-1 Webアプリケーションセキュリティの前提
INTER-Mediatorを稼働するサーバーの前提条件
INTER-Mediatorを利用するネットワークの前提条件
ブラウザーのセキュリティ
クロスサイトスクリプティング攻撃(XSS)とinnerHTML
クロスサイトリクエストフォージェリ(CSRF)を排除する
データベースアカウントへのアクセス権設定
セクションのまとめ
7-2 ユーザー認証とアクセス権適用を行う仕組み
認証とアクセス権
アカウントとグループ
ユーザーのテーブル
グループのテーブル
ユーザーレコード生成のためのスクリプト
ハッシュ値用テーブルの内容
その他の手法
演習
ユーザー管理の簡易アプリケーションを使ってみる
セクションのまとめ
7-3 認証とアクセス権の設定
認証に関する設定を行う場所
設定例による認証の設定
ログインの継続方法と設定
認証の動作の設定
ネイティブ認証について
ログインパネルとカスタマイズ
パスワードのリセット
演習
認証の実現とパスワード変更
このセクションのまとめ
7-4 コンテキストにおけるアクセス制御
設定例によるアクセス権の設定
演習
コンテキストにアクセス権を設定する
このセクションのまとめ
7-5 レコード単位のアクセス権とメディアデータのアクセス権
レコード単位のアクセス権
データベース外のファイルに対して認証アクセスする
演習
レコード単位のアクセス権を設定する
このセクションのまとめ
Chapter 8 サーバーサイドでのプログラミング
8-1 定義ファイルの設定内容と外部での設定
設定ファイルparams.php
データベース接続情報の管理
設定ファイルparams.phpに記述できるその他の変数
ブラウザーの限定とJavaScript非対応時のエラーメッセージについての設定
セキュリティ設定に関連するヘッダー
アップロードしたファイルのパスの扱い
Pusher利用に関する設定
メールサーバーに関する設定
ローカルコンテキストの初期値
INTER-Mediator自身や定義ファイルの呼び出しパスをカスタマイズする
このセクションのまとめ
8-2 PHPでの記述が必要な認証処理
params.phpに記述できる認証やアクセス権に関する変数
電子メールアドレスをユーザー名としても利用可能にする設定
params.phpファイルにも設定可能な認証の設定
ログインパネルのカスタマイズ
パスワードポリシーの定義
ネイティブ認証のための暗号鍵
LDAPを認証に利用する
OAuth2を認証に利用する
メールを利用したユーザー登録
このセクションのまとめ
8-3 サーバーサイドでの処理の追加
サーバーサイドのプログラム記述で実現できる機能
PHPファイルの置き場所
データコンバータークラスの作成
アドバイス定義クラスの作成
データベースクラスの作成
単独のスクリプトの作成
サーバーサイドで利用できるAPI
サーバーサイドの処理の中心となるクラス
アドバイス定義クラスとサーバーサイドのオブジェクト
アドバイス定義クラスでの処理後に呼び出すメソッド
DB_Proxyクラスを利用したデータベース処理
ログ作成の機能
コンテキストの指定と基本情報取得のAPI
IM_Entry関数の呼び出し引数の設定と取り出し
検索条件や設定値などフィールドと値に関するAPI
データベース設定に関連するAPI
認証やアクセス権に関わるAPI
その他の動作に関連するカスタマイズ
このセクションのまとめ
8-4 プログラムの実例
アドバイス定義クラスで集計処理を行う
メディアアクセスクラスを利用してPDFを生成する
Web APIを作成する
サーバー側でのデータベース利用
FileMaker Serverで動的にグローバルフィールドを指定する
このセクションのまとめ
8-5 メールを利用したユーザー登録とパスワードのリセット
メールを利用したユーザー登録
名前とメールアドレスを入力するページ
ユーザーレコードの作成前後に行う処理
レコード作成の確認とパスワードの設定
メールを利用したパスワードリセット
パスワードの変更要求処理
パスワードのリセット処理
このセクションのまとめ
Chapter 9 INTER-Mediatorの実環境での展開
9-1 データベースのインストール
MySQLのインストール
MySQLの設定のポイント
PostgreSQLのインストール
SQLiteのインストール
SQL Serverのインストール
FileMaker Serverのインストールと設定
このセクションのまとめ
9-2 Webサーバーのインストールと準備
Webサーバーのインストールと管理
PHPのインストール
PHPのモジュールとphp.iniの設定
FileMaker ServerでのWebサーバーとPHP
プロバイダを利用した場合のデータベースとWebサーバー
対応するPHPのバージョン
PHPのサーバーモード
システムロケールについて
このセクションのまとめ
9-3 INTER-Mediatorを利用する開発プロセス
開発プロセスについて
システムへの要求をまとめる
ページ単位の設計
コンテキストの抽出とスキーマ定義
設計内容のレビューとイテレーション
必要な実装を進める
データベーススキーマを用意する
このセクションのまとめ
9-4 Webアプリケーションの構築作業
Webアプリケーションのディレクトリの用意
小規模なサイトのファイル配置例
多数のファイルがあるようなサイトのディレクトリ構成
params.phpファイルの修正
INTER-Mediatorフレームワークのビルド
INTER-Mediatorディレクトリを非公開にする
このセクションのまとめ