SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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ファイルです。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Slimによる「HelloWorld!」表示

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
軽量PHPフレームワークSlimを習得しよう連載記事一覧

もっと読む

この記事の著者

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11330 2019/01/28 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング