近刊検索 デルタ

2020年5月25日発売

ソシム

PHPマイクロフレームワーク Slim Webアプリケーション開発

このエントリーをはてなブックマークに追加
内容紹介
Slim(スリム)はPHPのフレームワークのひとつです。
PHPのフレームワークではLaravel(ララベル)が人気ですが、機能豊富で重厚なLaravelと比べると、Slimが提供する機能はとてもシンプルです。
本書では、Webアプリケーション開発に興味を持つ人たちを対象に、「そもそもフレームワークとは何なのか」という基本的な話題から、「本運用環境」で稼働させるまでを、各種開発ツールを活用しながら、ステップ・バイ・ステップでていねいに解説していきます。
本書は、導入編、基本編、実践準備編、実践編という4つの編から構成されています。

導入編では、XAMPPとComposerを導入して学習環境を構築し、Slimアプリケーションの動作原理を学びます。

基本編では、一つのサンプルアプリの作成を通して、MVCアーキテクチャに従ったSlimアプリケーションの開発手順を学びます。ルーティング、テンプレートエンジンTwig、外部コンテナPHP-DI、コントローラクラス、ミドルウェアなど、Slimアプリケーションの開発に欠かせない基本事項を学んでゆきます。

実践準備編では、いったんいったんSlimの解説から離れ、本運用を意識した開発環境の構築を学びます。GitHubを利用したソースコードの管理、VagrantとVirtualBoxを使った仮想環境の構築、本書で本運用環境とするHerokuなどについて学んでゆきます。

実践編では、実戦準備編で用意した開発環境上に実際にSlimを利用したMVCアプリケーションを作成し、Heroku上で稼働させる手順を学びます。データベース処理、MVCアーキテクチャの導入、エラーや例外を適切に処理するためのエラーハンドラの活用方法、本運用環境であるHerokuへのデプロイ手順を学んでゆきます。

読者特典として、PHPUnitを使った単体テストの導入方法を扱ったボーナスコンテンツをPDFで提供します。
目次
はじめに
    本書の使い方

導入編
 第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 エラー表示切り替えコードの変更

    おわりに
    索引
    著者/監修者プロフィール
著者略歴
齊藤新三(サイトウシンゾウ saitoushinzou)
WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。Webシステムの設計からプログラミング、さらには、Android開発までこなす。HAL大阪の非常勤講師を兼務。
山田祥寛(ヤマダヨシヒロ yamadayoshihiro)
千葉県鎌ヶ谷市在住のフリーライター。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。
タイトルヨミ
カナ:ピーエイチピーマイクロフレームワーク スリム ウェブアプリケーションカイハツ
ローマ字:piieichipiimaikurofureemuwaaku surimu webuapurikeeshonkaihatsu

※近刊検索デルタの書誌情報はopenBDのAPIを使用しています。


連載記事

発売してからどうです(仮)

>> もっと見る

※近刊検索デルタの書誌情報はopenBDのAPIを利用しています。