版元ドットコム

探せる、使える、本の情報

文芸 新書 社会一般 資格・試験 ビジネス スポーツ・健康 趣味・実用 ゲーム 芸能・タレント テレビ・映画化 芸術 哲学・宗教 歴史・地理 社会科学 教育 自然科学 医学 工業・工学 コンピュータ 語学・辞事典 学参 児童図書 ヤングアダルト 全集 文庫 コミック文庫 コミックス(欠番扱) コミックス(雑誌扱) コミックス(書籍) コミックス(廉価版) ムック 雑誌 増刊 別冊 ラノベ
PHPマイクロフレームワーク Slim Webアプリケーション開発 齊藤新三(著/文) - ソシム
..
詳細画像 0

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

発行:ソシム
B5変型判
縦232mm 横182mm 厚さ24mm
480ページ
定価 3,600円+税
ISBN
9784802612524
Cコード
C2055
実用 単行本 電子通信
出版社在庫情報
不明
書店発売日
登録日
2020年3月24日
最終更新日
2020年5月12日
このエントリーをはてなブックマークに追加

紹介

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

    おわりに
    索引
    著者/監修者プロフィール

著者プロフィール

齊藤新三  (サイトウシンゾウ)  (著/文

WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。Webシステムの設計からプログラミング、さらには、Android開発までこなす。HAL大阪の非常勤講師を兼務。

山田祥寛  (ヤマダヨシヒロ)  (監修

千葉県鎌ヶ谷市在住のフリーライター。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。

上記内容は本書刊行時のものです。