PHP

laravel(v5.3)のインストール~初期設定

2016-11-16 20:27 - hagiwara

こんにちは。開発担当の萩原です。
先日、「laravel」というフレームワークを使ってAPIのようなものを実装いたしました。
今回はその際のインストール~初期設定についてまとめたいと思います。

なお、困った時のマニュアルはこちら
公式マニュアル
日本語翻訳(laravel)

インストール

サーバ必要要件

laravelを動作させるためには下記の要件を満たしている必要があります。
– PHP 5.6.4以上
– OpenSSL PHP拡張
– PDO PHP拡張
– Mbstring PHP拡張
– Tokenizer PHP拡張
– XML PHP拡張

依存パッケージの管理に「Composer」を使用しているので、
Composerが使えるようになっている必要があります。
上記の条件を満たしておりましたらインストールを開始します。

laravelをインストール

.composer/vendor/binのパスを通してから、
以下のコマンドでComposerでLaravelのインストーラを
ダウンロード・インストールします。

インストーラのインストールができましたら、
以下のコマンドでlaravelをインストールします。
“inter-edu”の部分は任意の名前で結構です。

これでlaravelのインストールは完了です。

設定

ファイル・ディレクトリについて

  • .env:環境設定ファイル
  • app:モデル置き場
  • app/Http/Controllers:コントローラ置き場
  • app/Http/Middleware:ミドルウェア置き場
  • config:設定ファイル置き場
  • public:ドキュメントルート
  • resources/lang:翻訳ファイル置き場
  • resources/views:ビュー置き場
  • resources/views/layouts:レイアウト置き場
  • routes:ルーティング置き場
  • storage:laravelのログ置き場

よく使うのはこのあたりになるかと思います。
storageには、キャッシュドライバやセッションドライバを
fileに設定した際に必要なファイルも作られます。

ディレクトリ権限の設定

以下の2つのディレクトリの権限をwebサーバが書き込める権限に変更します。
– storage
– bootstrap/cache

.envの設定

まず、.env.exampleをコピーしてして.envにリネームします。
その後、
– APP_KEYを設定。公式マニュアルによると32文字が推奨です。
– DBの接続先の設定
– キャッシュドライバの設定 例)CACHE_DRIVER=apc
– セッションドライバの設定 例)SESSION_DRIVER=apc

セッションドライバーについて
array以外のドライバーであれば何でも良いと思われますが、
セッションを有効にしないとフォームのトークンやデータの受け渡し、
フラッシュデータなどが使えないので注意が必要です。

キャッシュとセッションについての詳細はこちら
https://laravel.com/docs/5.3/cache
https://laravel.com/docs/5.3/session

各種設定

configディレクトリに各設定ファイルが入っていて、
database.phpやsession.php、cache.phpなどがあります。

ローカライズの設定

configディレクトリのapp.phpで設定できます。
“timezone”や”locale”を設定します。
翻訳ファイルは resources/lang ディレクトリ配下に設置します。

例)バリデーションメッセージを日本語化する場合
app.phpの”locale”に”ja”と設定し、resources/langに”ja”というディレクトリを作ります。
そのディレクトリにvalidation.phpという翻訳ファイルを設置します。

翻訳ファイルについての詳細はこちら
https://laravel.com/docs/5.3/localization

これで基本的な設定は完了です。

ルーティング

ルーティングの話になると、laravelの設定からは
少し外れてしまうのですが紹介させていただきます。
ルーティングのファイルはroutesディレクトリに入っています。
webインターファイスのルーティング設定はweb.phpに記述します。
記述の方法はたくさんあるのですが、基本の形は

となります。

例)ユーザの新規登録画面の場合

こんな感じなるかと思います。

ルーティングについての詳細はこちら
https://laravel.com/docs/5.3/routing

以上となります。ご参考となりましたら幸いです。

WordPressサイトのAMP対応

2016-09-16 15:52 - hagiwara

こんにちは。開発担当の萩原です。

以前からAMPが話題になっておりますが、
対応方法やAMP_HTMLについての情報はたくさん公開されておりますので、
AMP_HTMLの基本的な文法や仕様などの部分は割愛させていただきまして、
今回はWordPressサイトのAMP対応について書かせていただきたいと思います。

その方法ですが、WordPressを制作したAutomattic社が公開している「AMP」という
プラグインをダウンロードしてきて管理画面から有効化するだけです。
※この記事時点でのプラグインのバージョンは0.3.3です

そうしますと既存のページのURL末尾に「/amp/」か「?amp=1」を追加してアクセスすると
AMP対応したページが表示されます。

これでAMP対応はできるのですが、このプラグインの仕組みとしては、
AMP用のURLへのリクエストがあったら、
このプラグイン内に持っているAMP用のテーマに切り替えて表示するという
感じになっておりまして、
このプラグインでAMP対応したサイトの見た目はどのサイトもほぼ同じになってしまいます。
もしくは、プラグイン内のテーマを自分で変更する方法もありますが、
プラグインをアップデートするたびに、そのテーマを変更し直さなければなりません。
また、この状態ではGoogleAnalyticsのタグも入っていません。

そのような状態ではAMP対応できても意味がないと思う方もいらっしゃると思いますので、
・WordPressサイトをAMP対応して、AMP用のテーマをプラグインの外で管理する方法
・WordPressサイトをAMP対応して、GoogleAnalyticsのタグを入れる方法
を紹介させていただきます。

WordPressサイトをAMP対応して、AMP用のテーマをプラグインの外で管理する方法

AMPプラグインの「templates」ディレクトリを、
使用しているテーマのディレクトリに「amp_templates」という名前でコピーしてください。
そしてそのテーマのfunctions.phpに以下の記述を追加してください。

「amp_post_template_dir」のフィルタを使ってテンプレートディレクトリを変更することで、
amp_templates内のテンプレートファイルを読み込むようになりますので、
プラグイン内のテンプレートファイルを書き換えなくて良くなります。
※「amp_templates」は任意の名前で結構です

WordPressサイトをAMP対応して、GoogleAnalyticsのタグを入れる方法

使用しているテーマのfunctions.phpに以下の記述を追加してください。

「amp_post_template_analytics」のフィルタを使って、GoogleAnalyticsの情報をセットします。
「account」には任意のトラッキングIDを入れてください。

最後に

このプラグインでは「投稿ページ」しかAMP対応しないのですが、
「固定ページ」もAMP対応する方法です。
この方法はプラグインファイルを変更するのであまりお勧めはできませんが、
どうしても対応させたい場合は、

AMPプラグイン内のamp.phpの40行目あたりの

に変更すると固定ページもAMP対応の対象となります。

以上となります。ご参考になりましたら幸いです。

Eloquentのちょっと進んだ使い方

2016-09-12 16:28 - NozawaTakeshi

先日はLaravelのORマッパーであるEloquentを単独でライブラリとして利用する方法について説明させていただきました。

今回は実際にEloquentを使ってモデルを作っていきながら、簡単な保存メソッドや取得メソッド、カスタムコレクションや、スコープ機能、リレーションの構築、Eager Loadingなど、Eloquentの基本的な使い方について説明をしていきたいと思います。

なお、Eloquentの公式マニュアルはこちら
日本語のマニュアルもありますが、英語のほうがマニュアルとしては使いやすかったです。
また、マニュアルには書かれていない便利なメソッドなどがあったりするので、
EloquentのAPIレファレンスも見ながら開発していくといいと思います。

前回に引き続き”MyLib”というライブラリを開発するという前提で話を進めます。

>>続きを読む

Eloquentをライブラリとして使ってみた(Laravel ORM)

2016-08-31 18:48 - NozawaTakeshi

先日のエントリーではPHPのORマッパーの簡単な比較と、LaravelのORMである”Eloquent”の特徴をまとめてみました。

今日はEloquentのライブラリとしての使用方法についてまとめてみたいと思います。

githubにはLaravelのEloquentを含むデータベース関連のライブラリが公開されています。

The Illuminate Database component is a full database toolkit for PHP, providing an expressive query builder, ActiveRecord style ORM, and schema builder. It currently supports MySQL, Postgres, SQL Server, and SQLite. It also serves as the database layer of the Laravel PHP framework.

翻訳すると、「イルミネートデータベースコンポーネントはクエリビルダー、アクティブレコードのスタイルのORM、スキーマビルダーを提供するデータベースのPHPツールキットです。現在はMySQL、Postgres、SQL Server、SQLiteをサポートしています。このコンポーネントはLaravel PHP フレームワークのデータベースレイヤーとしても機能を提供しています。」とのことです。

“Illuminate”というのはLaravel本体やLaravel関連のコンポーネントを開発しているgithub上の集団と理解してくれれば良いと思います。Eloquentは狭義では”Illuminate/database”コンポーネントの”Active Record Style ORM”にあたります。ただし、Eloquentがクエリビルダーのクラスをカプセル化しているので、プログラマーはEloquentを通して意識することなく、”Illuminate/database”コンポーネントの機能を活用することができます。

またMongoDBにも対応し始めているそうなので、NoSQLな方もお使いいただけるかもしれません。

それではEloquentライブラリのインストール方法と使い方について見ていきたいと思います。

>>続きを読む

PHPのORM比較: LaravelのORマッパー(Eloquent)の特徴

2016-08-24 15:09 - NozawaTakeshi

最近とあるアプリケーションのライブラリを作成するプロジェクトがありまして、スクラッチで書いていたのですが、DB接続やSQLまわりが煩雑になり、やっぱりORMが欲しいなぁと探していたところ、今アツイと言われているPHPフレームワークの”Laravel”のORマッパーである”Eloquent”を見つけました。(こちらの記事で紹介されています)

フレームワークなのに、ORマッパーだけを独立して使うことができるようです。

今回はDoctrine、Idiorm&Paris、EloquentなどのPHP製のORMを比較し、Eloquentの特徴や使用感をご紹介したいと思います。

>>続きを読む

1 / 212