ISBN: 978-4-8026-1252-4
PHPマイクロフレームワークSlim Webアプリケーション開発
| 著者 | WINGSプロジェクト 齊藤 新三 |
|---|---|
| 監修 | 山田祥寛 |
| 出版社 | ソシム |
| 価格 | 3,600円(税別) |
| 判型 | B5変判・2色 |
| ページ数 | 480ページ |
| 発売日 | 2020年5月25日 |
| 対象レベル | 初中級 |
マイクロフレームワークSlimの解説書
「フレームワークとは」という基本的な話題から、「本運用環境」で稼働させるまでを丁寧に解説。VagrantとVirtualBoxを使った仮想環境の構築やHerokuについても扱います。本書掲載のサンプルはダウンロード可能。合わせて読者特典として、PHPUnitを使った単体テストのコンテンツをPDFで提供しています。全サンプル最新バージョン4.5で動作確認済です。
更新履歴
- 正誤訂正:2020年8月13日 更新
目次
- 導入編
- 第1章 PHPフレームワークSlimとは
- 1-1 フレームワークとは
- 1-1-1 フレームワークとは何か
- 1-1-2 フレームワークとライブラリの違い
- 1-1-3 フレームワークを使うメリットとデメリット
- 1-2 サーバサイドWeb開発フレームワークの歴史
- 1-2-1 最初はJava用のフレームワークから
- 1-2-2 パラダイムシフトはRubyから
- 1-2-3 PHP用フレームワークの歴史
- 1-3 軽量フレームワークSlimの特徴
- 1-3-1 フルスタックフレームワークの特性
- 1-3-2 軽量フレームワークである
- 1-3-3 Slimの特徴
- 1-4 MVCアーキテクチャにおけるSlimのメリット
- 1-4-1 MVCアーキテクチャとは
- 1-4-2 MVCアーキテクチャを実現する4種の神器
- 1-4-3 SlimとMVCとの関係
- 1-5 本書の役割
- 1-5-1 本書が目指すところ
- 1-5-2 本書を学習する上での前提知識
- 1-5-3 本書の構成
- 第2章 Slim動作環境の構築
- 2-1 XAMPPのインストール
- 2-1-1 XAMPPとは
- 2-1-2 XAMPPのインストール
- 2-1-3 Apacheの起動と確認
- 2-1-4 XAMPPでのドキュメントルート
- 2-2 Composerのインストール
- 2-2-1 Composerとは
- 2-2-2 WindowsへのComposerのインストール
- 2-2-3 macOSへのComposerのインストール
- 2-3 ダウンロードサンプルの扱い
- 2-3-1 Samples.zipについて
- 2-3-2 スケルトンプロジェクトについて
- 2-3-3 完成形ソースコード(3章から8章)について
- 2-3-4 その他の完成形ソースコード(9章以降)について
- 2-3-5 特典PDF(テスティング)について
- 第3章 はじめてのSlimアプリと動作原理
- 3-1 はじめてのSlimプロジェクトを作成する
- 3-1-1 Slimプロジェクトの作成手順
- 3-1-2 はじめてのSlimアプリケーションの動作確認
- 3-2 Slimプロジェクトの作成方法
- 3-2-1 Slimのフォルダ構成
- 3-2-2 ComposerコマンドとSlimパッケージの配置
- 3-2-3 .htaccessの記述と役割
- 3-2-4 Slimのindex.php
- 3-2-5 クラスファイルを自動で読み込むautoload.php
- 3-3 Slimの動作原理
- 3-3-1 Slimの動作に必要なルーティング登録
- 3-3-2 ルーティングコールバック関数
- 3-3-3 Slimの動作とルーティング登録の関係
- 3-4 Composerの動作と使い方
- 3-4-1 composer.jsonの記述とセマンティックバージョンニング
- 3-4-2 既存のcomposer.jsonを利用する
- 3-4-3 Composerのその他のコマンド
- 基本編
- 第4章 Slimのルーティング登録
- 4-1 リクエストの種類に合わせたルーティング登録
- 4-1-1 リクエストメソッドごとのルーティング登録
- 4-1-2 サンプルプロジェクトの作成
- 4-1-3 POST処理のルーティング登録
- 4-1-4 各種HTTPメソッドでアクセス可能なPostman
- 4-2 ServerRequestInterfaceとResponseInterface
- 4-2-1 リクエストパラメータの取得
- 4-2-2 引数$requestの正体
- 4-2-3 引数$responseの正体
- 4-2-4 PSR-7の実装
- 4-2-5 コールバック関数中のprint()の正体
- 4-3 複数のHTTPメソッドに対応できるルーティング登録
- 4-3-1 すべてのメソッドに対応したany()
- 4-3-2 アクセスするHTTPメソッドを選べるmap()
- 4-4 ルーティング登録を便利にする仕組み三種盛り
- 4-4-1 ルーティングパターンにベースパスを設定する
- 4-4-2 ルーティングパターンに階層構造を持たせる
- 4-4-3 ルーティングに名前をつける
- 4-5 ルーティングの外部ファイル化
- 4-5-1 index.phpの肥大化を避けるために
- 4-5-2 ルーティングファイルの分割
- 4-6 ルーティングプレースホルダ
- 4-6-1 ルーティングプレースホルダの設定
- 4-6-2 プレースホルダは複数記述できる
- 4-6-3 オプションプレースホルダ
- 4-7 リダイレクト
- 4-7-1 ルーティング登録としてのリダイレクト
- 4-7-2 コールバック関数内でリダイレクト
- 第5章 Slimにおけるビュー
- 5-1 Slimにおけるビューの扱いとJSONデータ送信
- 5-1-1 Slimにおけるビューはレスポンスオブジェクト
- 5-1-2 サンプルプロジェクトの作成
- 5-1-3 SlimでJSONデータを送信する方法
- 5-2 テンプレートエンジンTwigとの連携
- 5-2-1 HTMLコードを分離できるテンプレートエンジン
- 5-2-2 PHPでのテンプレートエンジン
- 5-2-3 Slimで利用するテンプレートエンジン
- 5-2-4 SlimでのTwigを利用して画面を表示させる
- 5-2-5 SlimでのTwig利用の基本手順
- 5-2-6 Twigの環境設定
- 5-3 テンプレート変数
- 5-3-1 テンプレート変数の基本は波括弧2個
- 5-3-2 テンプレート変数のドットアクセス
- 5-3-3 テンプレート変数アクセスのルール
- 5-3-4 コメント
- 5-4 フィルタ
- 5-4-1 フィルタはパイプを記述
- 5-4-2 Twigのフィルタ一覧
- 5-4-3 複数のフィルタを併用する
- 5-5 条件分岐
- 5-5-1 条件分岐を使う
- 5-5-2 条件中のissetやemptyは不要
- 5-5-3 論理演算子は英単語
- 5-6 ループ
- 5-6-1 配列のループ
- 5-6-2 連想配列のループ
- 5-6-3 カウンタ変数を使ったループ
- 5-6-4 ループのelseブロック
- 5-6-5 ループ変数
- 5-7 その他の便利なTwig構文三種盛り
- 5-7-1 テンプレート内変数を作成するset
- 5-7-2 テンプレートの共通部分を別ファイルにできるinclude
- 5-7-3 変数の内容を表示するdump
- 第6章 コンテナとDI
- 6-1 コンテナとその使い方の基本
- 6-1-1 コンテナとは
- 6-1-2 サンプルプロジェクトの作成
- 6-1-3 コンテナの利用に必要なパッケージ
- 6-1-4 Slimでコンテナを利用する方法
- 6-1-5 コンテナへの登録方法
- 6-1-6 コンテナからインスタンスを取得する方法
- 6-2 Slimとコンテナの関係
- 6-2-1 get()メソッドの正体
- 6-2-2 Slimが連携するコンテナはPSR-11
- 6-3 コンテナを経由した引数
- 6-3-1 インスタンス生成処理関数に引数を設定する
- 6-3-2 コンテナ経由で引数を渡すメソッドcall()
- 6-3-3 call()の第2引数は必ず配列
- 6-4 Slimでログを扱う方法
- 6-4-1 SlimではMonologを利用する
- 6-4-2 Monologの準備3ステップ
- 6-4-3 ログに書き出す際はログレベルを意識する
- 6-4-4 Monologの標準ログフォーマット
- 6-5 コンテナの本当の役割
- 6-5-1 クラスを直接newすることの問題点
- 6-5-2 コンテナと依存性注入
- 第7章 コントローラクラス
- 7-1 コールバック関数の問題点とコントローラクラス
- 7-1-1 コールバック関数は肥大化する
- 7-1-2 サンプルプロジェクトの作成
- 7-1-3 コントローラクラスの作り方
- 7-1-4 コントローラクラスのルーティング登録
- 7-1-5 オートロードの設定
- 7-1-6 コントローラクラスには複数のメソッドを記述できる
- 7-2 コントローラクラスとコンテナの連携
- 7-2-1 コントローラクラス内の$thisはコンテナではない
- 7-2-2 コンストラクタの引数としてコンテナを受け取る
- 7-2-3 コントローラクラスでのコンテナの扱い
- 第8章 ミドルウェア
- 8-1 ミドルウェアとその作り方
- 8-1-1 ミドルウェアとは
- 8-1-2 サンプルプロジェクトの作成
- 8-1-3 ミドルウェアの作り方
- 8-1-4 ミドルウェアの利用方法
- 8-2 ミドルウェア処理の位置
- 8-2-1 リクエスト処理の前に挿入する場合
- 8-2-2 処理の挿入位置はhandle()メソッドの記述位置
- 8-2-3 handle()メソッドの正体
- 8-2-4 リクエスト処理前後の両方に処理を挿入
- 8-2-5 ミドルウェアのチェイン
- 8-3 ミドルウェアにデータを渡す方法
- 8-3-1 ミドルウェアでコンテナを利用するには
- 8-3-2 ミドルウェアにコンテナを渡すには
- 8-3-3 コンテナ以外のデータも渡せるコンストラクタ
- 8-4 ミドルウェア設定のバリエーション
- 8-4-1 ルーティンググループにミドルウェアを設定
- 8-4-2 アプリケーション全体にミドルウェアを設定
- 実践準備編
- 第9章 GitHubの利用
- 9-1 バージョン管理とGit
- 9-1-1 バージョン管理システムとは
- 9-1-2 集中型バージョン管理システム
- 9-1-3 分散型バージョン管理システム
- 9-1-4 Gitとは
- 9-2 GitHub
- 9-2-1 GitホスティングサービスとGitHub
- 9-2-2 GitHubのアカウント作成
- 9-2-3 GitHubのリポジトリ作成
- 9-2-4 GitHubデスクトップの導入
- 9-2-5 GitHubデスクトップでリポジトリをクローンする
- 9-3 GitHubを使った基本の開発手順
- 9-3-1 リポジトリにSlimプロジェクトを作成する
- 9-3-2 管理対象から除外するファイルを設定する.gitignore
- 9-3-3 GitHubデスクトップでコミットとプッシュ
- 9-3-4 GitHubを利用した基本の作業ルーティン
- 9-4 ブランチとプルリクエスト
- 9-4-1 ブランチとは
- 9-4-2 ブランチを作ってみる
- 9-4-3 ブランチにファイルを追加する
- 9-4-4 ブランチのファイルを編集する
- 9-4-5 マージを簡単に行うプルリクエスト
- 9-4-6 3種のマージ方法
- 9-4-7 ブランチを削除する
- 9-4-8 GitHub利用のワークフロー
- 第10章 仮想環境の利用
- 10-1 仮想環境
- 10-1-1 XAMPPの問題点
- 10-1-2 仮想環境とは
- 10-1-3 2種の仮想環境
- 10-1-4 仮想環境のメリット
- 10-1-5 Webシステム開発で威力を発揮するホスト型仮想環境
- 10-1-6 ホスト型仮想化アプリケーション
- 10-1-7 本章で構築する環境
- 10-2 VirtualBox
- 10-2-1 VirtualBoxのインストール
- 10-2-2 VirtualBoxでのVM作成
- 10-3 Vagrant
- 10-3-1 Vagrantとは
- 10-3-2 Vagrantのインストール
- 10-3-3 Vagrantfileを作成する
- 10-3-4 Vagrantfileを記述する
- 10-3-5 VagrantでVMを起動する
- 10-3-6 VagrantでのVMの停止と破棄
- 10-4 仮想環境内の構築と設定
- 10-4-1 仮想環境にログインする
- 10-4-2 管理者権限ユーザに切り替える
- 10-4-3 CentOSのパッケージを管理するyumコマンド
- 10-4-4 Apacheのインストール
- 10-4-5 Apacheの起動
- 10-4-6 Apacheのサービス登録
- 10-4-7 PHPのインストール
- 10-5 Apacheの設定変更
- 10-5-1 SocymFirstGitSlimをSocymSlimVBoxに配置
- 10-5-2 Apacheの設定ファイルの変更
- 10-5-3 SSH接続先のテキストファイルを編集するvi
- 10-5-4 ドキュメントルートを変更する
- 10-5-5 .htaccessを有効にする
- 10-5-6 Apache設定ファイルの確認と再起動
- 10-6 SocymFirstGitSlimをSocymSlimVBoxで実行する
- 10-6-1 GitHubで現在の状態を記録するリリース機能
- 10-6-2 SocymFirstGitSlimのソースコードを変更する
- 10-6-3 仮想環境で実行されたSlimアプリの確認
- 第11章 Herokuの利用
- 11-1 Webアプリケーションの実行環境とHeroku
- 11-1-1 共有レンタルサーバ
- 11-1-2 サーバを1台用意する
- 11-1-3 クラウド
- 11-1-4 本運用環境を自動構築してくれるHeroku
- 11-2 Heroku環境の用意
- 11-2-1 Herokuアカウントの作成
- 11-2-2 Herokuアプリの作成
- 11-2-3 Dynoの種類
- 11-2-4 Herokuの実行環境は自動判定
- 11-3 GitHub連携とデプロイ
- 11-3-1 HerokuとGitHubアカウントを連携させる
- 11-3-2 HerokuアプリとGitHubリポジトリを連携させる
- 11-3-3 GitHubからデプロイ
- 11-3-4 Herokuアプリの動作確認とURL
- 11-3-5 Dynoの内容の確認
- 11-4 Herokuでのドキュメントルートの変更
- 11-4-1 Herokuでのエラー確認
- 11-4-2 socymfirstslimアプリが動作しない原因
- 11-4-3 Dynoのドキュメントルート変更
- 実践編
- 第12章 データベース連携
- 12-1 仮想環境へのPostgreSQLのインストール
- 12-1-1 Herokuの標準データベースはPostgreSQL
- 12-1-2 PostgreSQLのインストール
- 12-1-3 データベースの初期化と設定
- 12-1-4 ユーザとデータベースの作成
- 12-1-5 PostgreSQLへの接続
- 12-1-6 テーブルの作成
- 12-1-7 PHPライブラリのインストール
- 12-2 データベースへの接続と切断と例外処理
- 12-2-1 実践編用プロジェクトリポジトリの作成とクローン
- 12-2-2 SocymSlimMVCプロジェクトの作成
- 12-2-3 会員情報入力画面の作成
- 12-2-4 Slimアプリでデータベースにアクセスするコード
- 12-2-5 Slimでのデータベースアクセスの特徴
- 12-2-6 PDOによるデータベースへの接続
- 12-2-7 PDO接続のオプション
- 12-2-8 データベース接続の切断
- 12-3 データベース処理の基本
- 12-3-1 PDOによるデータベース処理手順
- 12-3-2 連番主キーの取得
- 12-3-3 PDOインスタンスをコンテナから取得
- 12-4 データ取得処理
- 12-4-1 データ取得処理コードの記述
- 12-4-2 PDOによるデータ取得処理手順
- 12-4-3 結果表が1行の場合
- 12-4-4 全データ取得メソッド
- 12-4-5 結果の連想配列から無駄を排除するフェッチモード
- 第13章 MVCアーキテクチャの導入
- 13-1 エンティティモデル
- 13-1-1 エンティティとは
- 13-1-2 エンティティクラスの作り方
- 13-1-3 コントローラクラスでのエンティティの使い方
- 13-1-4 テンプレートでのエンティティの使い方
- 13-1-5 テンプレートでの非正常系への対応
- 13-1-6 エンティティを使った詳細表示の動作確認
- 13-1-7 エンティティモデルのメリット
- 13-1-8 エンティティと連想配列の組み合わせ
- 13-1-9 エンティティ+連想配列を使ったリスト画面の作り方
- 13-1-10 表示リストがない場合への対応
- 13-2 DAOモデルとMVCアーキテクチャ
- 13-2-1 コントローラクラスに散在していくSQLとDAOモデル
- 13-2-2 DAOクラスの作り方
- 13-2-3 DAOクラスをコントローラから利用する
- 13-2-4 MVCアーキテクチャの完成とMVCモデルとは
- 13-2-5 トランザクションと例外処理の扱い
- 13-2-6 残りのメソッドをDAOと連携させる
- 13-3 リダイレクト遷移
- 13-3-1 登録完了時のURL
- 13-3-2 データベース更新処理後はリダイレクト
- 第14章 エラーハンドラ
- 14-1 エラー画面
- 14-1-1 showMemberDetailの遷移の種類
- 14-1-2 エラー画面表示ロジックの実装
- 14-2 Slimでのエラーの扱いとエラーミドルウェア
- 14-2-1 Slimでのエラーの扱い
- 14-2-2 Slimのエラーハンドラはミドルウェア
- 14-2-3 Slimではルーティングもミドルウェア
- 14-2-4 addErrorMiddleware()の3個の引数
- 14-3 エラー画面のカスタマイズ
- 14-3-1 エラー画面をカスタマイズできるエラーレンダラクラス
- 14-3-2 デフォルトレンダラクラスとのコンボ
- 14-3-3 例外の種類に応じて表示画面を分岐
- 14-3-4 手動で例外を発生させる
- 14-3-5 例外の投げ直しと$logErrorDetails
- 14-3-6 $isRedirectフラグの真の働き
- 14-3-7 エラーレンダラに独自例外を組み込む
- 14-3-8 その他のメソッドのエラー画面表示を集約する
- 第15章 Herokuでの実稼働
- 15-1 Herokuでデータベースの利用
- 15-1-1 HerokuのDyno作成とGitHub連携
- 15-1-2 Heroku Postgresの導入
- 15-2 Config VarsとHeroku Postgresへの接続コード
- 15-2-1 HerokuのConfig Vars
- 15-2-2 仮想環境へのConfig Varsの追加
- 15-2-3 $displayErrorDetailsの値もConfig Varsとする
- 15-2-4 SocymSlimMVCプロジェクトのDB接続情報の変更
- 15-2-5 エラー表示切り替えコードの変更
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.61 | 本文 下から2行目 | - |
| 2の-d はディレクトリかどうかをチェックした結果を表し、3の-fはファイルかどうかをチェックした結果を表します。 | 2の-fはファイルかどうかをチェックした結果を表し、3の-dはディレクトリかどうかをチェックした結果を表します。 | 2020/08/13 |
| p.193 | 本文 3行目 | - |
| これについては 7-3-2 項の復習となります。 | これについては 7-2-3 項の復習となります。 | 2020/06/28 |
FAQ
現在、FAQはありません。
ダウンロード
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。