Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

はじめてのSlimアプリで「Hello World」を表示させよう~動作原理を理解する

軽量PHPフレームワークSlimを習得しよう 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/01/28 11:00

 本連載では軽量PHPフレームワークであるSlimを紹介していきます。フレームワークといえば、重厚長大な、いわゆるフルスタックフレームワークが多い中で、あえて軽量フレームワークを取り上げます。軽量ゆえのメリットを味わっていただこうと思います。第1回では、「フレームワークとは何か」「Slimとは何か」といった概説と、Slimを動かすための環境構築を行いました。概説と環境構築だけだったので、Slimの具体的なことは何ひとつ行っていません。第2回である今回は、実際にSlimを使っていきます。Slimを動作させるプロジェクトを作成し、ブラウザ上に「Hello World」を表示させるとともに、Slimの動作原理を紹介します。

目次

Slim用プロジェクトの作成

 前回構築した環境上に、いよいよ実際にSlimで動作するアプリを作成していきます。

プロジェクトフォルダの作成

 Slimを利用したWebアプリを作成するには、専用のフォルダをドキュメントルート配下に作成するところから始めます。ここでは、「firstslim」という名前のWebアプリを作成することにします。まず、XAMPPのドキュメントルート直下に[firstslim]フォルダを作成してください。次に、そのfirstslimフォルダ内に[src]フォルダを、そのsrcフォルダ内に[public]フォルダを作成してください。すると、図1のフォルダ構成になります。

図1:作成した空のフォルダ構成
図1:作成した空のフォルダ構成

 Slimではひとつのプロジェクトを作成する場合、このフォルダ構成を取るように勧めています。

 最初に作成したfirstslimフォルダが、プロジェクトのルートフォルダとなります。その中に作成したsrcフォルダが、その名の通りプロジェクトに必要なソースファイル類を格納するフォルダです。例えば設計書など、ソースファイル以外のファイルを一緒に管理したい場合は、このプロジェクトルートフォルダ直下に適当なフォルダを作成して、そこに配置します。

 srcフォルダ内のpublicフォルダが、Webに公開されるフォルダです。ですので、CSSファイルや画像ファイル、JavaScriptファイルなども、このpublicフォルダ以下に配置します。

[Note]ドキュメントルートの変更

 Slimのプロジェクト構造を上記にした場合、上述の通り、本来はpublicフォルダのみがWebに公開されるようにするべきです。しかし、プロジェクトルートフォルダそのものをドキュメントルート配下に作成した場合、本来公開されたくないファイル類も公開されてしまいます。

 そのため、通常のSlimを使ったWebアプリでは、ドキュメントルート配下のフォルダにプロジェクトを作成するのではなく、サーバ内の特定のフォルダにプロジェクトを作成し、そのプロジェクト内のpublicフォルダをドキュメントルートとするようにApacheの設定を変更します。

Slimパッケージの配置

 プロジェクトフォルダが作成できたところで、Slimパッケージを配置します。前回紹介した通りComposerコマンドを使います。Windowsならばコマンドプロンプト、Macならばターミナルを起動し、srcフォルダまで移動してください。その上で、以下のコマンドを実行してください。

composer require slim/slim

 すると、さまざまなライブラリをダウンロードし始めます。途中経過は随時コマンドプロンプト、あるいはターミナル上に表示されます。最終的にエラー表示などがなく、プロンプトが戻ってきたら、srcフォルダ内は図2のようになっています。

図2:composerコマンド実行後のsrcフォルダ内
図2:composerコマンド実行後のsrcフォルダ内

 変更されたのは以下の3点です。

  1. src直下にcomposer.jsonファイルが作成されている。
  2. 同じくsrc直下にcomposer.lockファイルが作成されている。
  3. src直下にvendorフォルダが作成され、内部にさまざまなフォルダやファイルが作成されている。

composer requireコマンドについて

 ここで、少しコマンドの意味を解説しておきましょう。前回概説した通り、Composerはそのプロジェクトに必要なライブラリやパッケージを管理してくれるツールです。対象としているプロジェクトが必要としているライブラリやパッケージを、Composerを使って登録するのが以下のコマンドです。

[構文]Composerによる依存パッケージの登録・ダウンロード
composer require ベンダー/パッケージ

 ここでは、slimベンダーのslimパッケージを登録するので、

composer require slim/slim

 となります。このコマンドを実行すると、以下の処理が自動的に行われます。

  1. composer.jsonファイルに依存関係情報として指定パッケージを追記する。composer.jsonファイルがない場合は自動的に作られる。
  2. 追記された(あるいは作成された)composer.jsonファイルに基づいてvendorフォルダ内に必要なファイル類をダウンロードし、配置する。vendorフォルダがない場合は自動的に作られる。

 これらの処理によって新規作成されるファイルやフォルダは、特にオプションを指定しない限りはコマンドを実行したフォルダ直下に作成されます。したがって、Composerを利用するプロジェクトフォルダでは、Webに公開するフォルダ(ここではpublicフォルダ)のもう1階層上にcomposerが自動作成してもいいフォルダを用意します。ここでは、srcフォルダがそれに該当し、そのsrcフォルダ上でコマンドを実行しています。

 上記処理と、実行結果(変更点)の対応関係は以下の通りです。

 処理1の結果、変更点1のようにsrc直下にcomposer.jsonファイルが作られています。

 処理2の結果、変更点2のようにsrc直下にcomposer.lockファイルが作られます(composer.lockについては後述します)。さらに、変更点3のようにvendorフォルダが作成され、内部にSlimを利用するのに必要なファイル類が自動的に配置されています。

 さて、ここで、自動生成されたcomposer.jsonの中身を見てみましょう。以下のようになっています。

{
    "require": {
        "slim/slim": "^3.11"
    }
}

 「3.11」は原稿執筆時点でのバージョン番号を表します。composer requireコマンドを実行する際に、特にバージョン番号を指定しなければ、その時点での安定版の最新番号を自動的に採用してくれます。

 composer.jsonというのは、自動生成された内容のように、requireをキーとして「ベンダー/パッケージ: バージョン」を手動で記述してもかまいません。その場合は、処理1が不要となるので、処理2のみをcomposerコマンドで実行することになります。そのコマンドが以下のコマンドです。

[構文]Composerによる依存パッケージのダウンロード
composer install

 とはいえ、composer.jsonへの記述ミスを防ぐためにも、手動での記述は避け、composer requireコマンドを利用した方がいいでしょう。

 なお、composer requireコマンドでも、composer installコマンドでも依存パッケージをダウンロードする際に、どういったファイルのどのバージョンに依存関係があるのかを記述したファイルが自動生成されます。これがcomposer.lockファイルです。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きた...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:軽量PHPフレームワークSlimを習得しよう
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5