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