Home

技術日記Laravel4PHP
Laravel 4.0.10からLaravel 4.1.5にアップグレードEdit

PHPフレームワークLaravelの4.1がリリースされた。手元に作りかけのLaravel 4アプリケーションがあったんで、今後のことを考えてとっととLaravel 4.1にアップグレードすることにした。手元のLaravel 4フレームワークのバージョンは4.0.10。

アプリケーションのスペックとしては、

  • 使用DBはsqliteのみ。ちょっとしたデートストア程度にしか使っていない。
  • JeffreyWay / Laravel-4-Generatorsで生成したマスタメンテ用Scaffoldページがいくつか。
  • JavaScriptアプリケーションのコンテナWebページが5ページほど。サーバーロジックはほとんどないのでroutes.phpでView::make()しているだけ。
  • メインのJavaScriptアプリケーションから呼ばれるJSON APIが10個ほど。DBとのやりとりがほとんどなので、routes.php内で直接Eloquent ORMを使って処理をして、JSONで結果を返すだけ。
といった感じ。小規模だしLaravel 4の機能は最低限しか使っていないから、移行のハードルは低い。

まずは、4.0から4.1へのアップグレードガイド日本語訳にざっと目を通す。私はLeanpubで日本語ドキュメントを買ってるんで、PDFで読んでるけど。

変更点としては、いくつかのファイルの差し替え、設定ファイル関連の変更がいくつか、コントローラの変更がちょっと。パスワードリマインダーも変更されたらしいけど、使ってないから内容は未チェック。作業ステップは一桁程度か。

まず、composer.jsonのrequireセクションにあるlaravel/frameworkのバージョンを4.0.から4.1.に変更。アップグレードガイドの手順とは違うけど、まずはそのままcomposer updateしてみる。

大量のremove&installの後で、Fatal Errorで終了。エラーは、

Error Output: PHP Fatal error: Call to undefined method Illuminate\Foundat
 ion\Application::redirectIfTrailingSlash() in /Users/ishinao/NetBeansProjec
 ts/webgldance/laravel/bootstrap/start.php on line 16

なんで、アップグレードガイドにある「Trailing Slashリダイレクトの削除」に引っかかったらしい。bootstrap/start.phpから,

$app->redirectIfTrailingSlash();

を削除。もう一度composer updateしたら、今度はエラーなしで正常終了した。

この段階で、試しにWebアプリケーションルートをブラウザで開いてみたところ、200 OKは返るけどコンテンツは何も返らない状態だった。

ということで、アップグレードガイドに書いてある作業を一つずつつぶしていくことにする。

まずはWebアプリケーション起動ファイルを新バージョンの内容に置き換え。public/index.phpを https://raw.github.com/laravel/laravel/master/public/index.phpからダウンロードして差し替え。

同様に、artisanコマンドの内容もhttps://raw.github.com/laravel/laravel/master/artisanからダウンロードした新バージョンの内容に置き換え。

続いて、設定ファイルを新バージョンの内容に追随させていく。

app/config/app.phpの内容をhttps://raw.github.com/laravel/laravel/master/app/config/app.phpの内容を元に書き換える。変わっているのはprovidersとaliasesのところなので、自分で追加/編集した内容がなければ、丸ごと新しい方で置き換える。自分で追加した内容があればそれを残しつつ。

新しく追加されたhttps://raw.github.com/laravel/laravel/master/app/config/remote.phpをapp/config/remote.phpとして保存。

セッション設定ファイル app/config/session.phpに

'expire_on_close' => false,

を追加。あとで、app/storage/logsを見てみたら、

'Undefined index: expire_on_close' in vendor/laravel/framework/src/Illuminate/Session/Middleware.php:171

が残っていたんで、これが起動時に画面が表示されない原因だったっぽい。

新機能の失敗したジョブキューからの復帰用設定を追加。app/config/queue.phpに

  'failed' => array(
    'database' => 'mysql', 'table' => 'failed_jobs',
  ),

を追加。

これでWebアプリケーションルートにブラウザからアクセスしてみたところ、無事画面が表示された。

他にもコントローラ関連の修正項目が書かれていたけれども、Generatorsで自動生成したコントローラクラスは、特に修正する必要がなかった。

アップグレードしたバージョンは4.1.0かと思っていたら、php artisanしてみたら、

Laravel Framework version 4.1.5

になっていた。

追記@2013/12/14

アップグレードガイドがアップデートされ、アップグレード手順で一つ重要な内容が欠けていたので、その部分を追記。

$app->redirectIfTrailingSlash() 相当の処理を.htaccessで行うようになったため、bootstrap/start.phpからそのコードを削除したにもかかわらず、上記手順では.htaccessをLaravel 4のままで使っている。public/.htaccessをhttps://raw.github.com/laravel/laravel/master/public/.htaccessに差し替える必要がある。

ちなみに修正内容として、以下の内容が追加されている。

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

また、Laravel Framework本体もアップデートされており、composer updateすると、

Laravel Framework version 4.1.8

になっていた。アップデートペース、はやっ。

Published At2013-12-13 15:19Updated At2020-01-01 15:39

技術日記Laravel4PHP
LaravelをWindows環境で使うEdit

最近メインマシンをMacbookに移行したんだけど、Laravel4で作ったアプリケーションをWindows環境で動かさなければならない要件があったんで、Windows環境にセットアップして問題ないかどうか試してみた。手元にあるのがほぼまっさらなWindows8.1(on Parallels)だったので、それをベースに。

まずXAMPP for Windows をインストール。今だとXAMPP 1.8.3(Apache 2.4.7/MySQL 5.6.14/PHP 5.5.6)だった。

インストール後、XAMPPコントロールパネルからApacheを起動して、http://localhost/にアクセスできるかどうか確認。

続いてLaravelをcomposerを使ってインストールするために、まずはPHPにパスを通す。コントロールパネルのシステムの詳細設定-環境変数から、システム環境変数のPathにPHPのパス(C:\xampp\php)を追加する。

試しにコマンドプロンプトを起動して、php -iとか実行してちゃんとPHPにパスが通っているかどうかを確認。すでにコマンドプロンプトが起動済みだった場合、環境変数の変更を反映させるためにコマンドプロンプトを再起動。

続いて、composerをインストール。コマンドプロンプトで、

cd C:\xampp\php
php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

を実行してcomposer.pharをダウンロード。これだけだと使い勝手が悪いので、C:\xampp\php内にcomposer.batファイルを作成。内容は、

@echo off if "%PHPBIN%" == "" set PHPBIN=C:\xampp\php\php.exe "%PHPBIN%" "C:\xampp\php\composer.phar" %*

にしておく。これでコマンドプロンプトから、

composer update

みたいな感じでcomposerを実行できる。

でcomposer create-project laravel/laravelしようと思ったら、途中でgitがなくてこけた。gitも必要だったっけ。

Git for Windows(msysgit)をインストール。コマンドプロンプトから使いたいんで、インストールオプションで実行スタイルを選択するところで、「Run Git from the Windows Command Prompt」とか、gitにPathを通してくれるオプションを選択する。

もう一回コマンドプロンプトを再起動。Laravelアプリケーションプロジェクトを作りたいディレクトリを適当に作成する。

mkdir c:\laraveltest
cd c:\laraveltest

あとは、

composer create-project laravel/laravel .

今度はエラーも出ずにプロジェクトの作成に成功。Apacheからこのプロジェクトディレクトリを参照したい場合は、C:\xampp\apache\conf\httpd.confから、

DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">

となっている部分を、

DocumentRoot "C:/laraveltest/public"
<Directory "C:/laraveltest/public">

なんて変えてから、Apacheを再起動すると、http://localhost/ で今作ったプロジェクトにアクセスできる。まあC:\xampp\apache\conf\extra\httpd-vhosts.confとC:\Windows\System32\drivers\etc\hostsを使って、バーチャルホストにしておいた方が便利だろうけど。

前にWindows環境でLaravelを動かしたときは、mcryptとかのPHPモジュールを有効にしたり、timezone設定を追加したりとかしないといけなかったような気がするんだけど、今はそういう問題はないんだな。

このくらい手軽に動くなら、ピュアPHPで作れるようなアプリならば、Windows環境でも作りやすそうだ。

Published At2013-12-13 18:16Updated At2019-12-30 15:03

日記
充電しながら使えるBluetoothレシーバー+ケーブルが絡まないイヤフォンEdit

Bluetoothレシーバーのバッテリーが切れるのにうんざりしている人、ポケットとかに適当にしまったイヤフォンを取り出すたびに、いちいち絡まったケーブルをほどくのにうんざりしている人にオススメ。最近買って大当たりだった組み合わせ。

まずは、micro USBケーブルで充電しながら使えて、バッテリー持続時間も8時間程度と長めのBluetoothレシーバー『BTTC-200』。値段も3000円ちょっとと、Bluetoothレシーバーとしてはお安め。

IMG_0106 micro USBで充電しながら使えるBluetoothレシーバー『BTCC-200』[/caption]

私は普段移動しながらiPhone/Androidの音声を、仕事をしながらPC/Macの音声をイヤフォンで聞いている。そうやって一日中音声を聞くとなると、どんなにバッテリー持続時間が長いBluetoothレシーバーでも、短くて4時間、長くて8時間程度でバッテリーが切れてしまう。

しかもたいていのBluetoothレシーバーは、充電しながら使用することはできないので、せっかくBluetoothレシーバー経由で音声を聞いていても、バッテリーが切れるとBluetoothレシーバーを充電器にセットして、iPhoneやPCにイヤフォンを指し直す必要が出てくる。

でもBluetoothレシーバーで音声を聞くのに慣れてしまうと、iPhoneに直接イヤフォンをつないだ状態でのケーブルの取り回しがうざいし、PCなんかだとちょっと席から離れるときなんかに、いちいちイヤフォンを外すのも面倒くさい。Bluetoothレシーバーならばトイレに行くくらいの距離ならば、そのまま音楽を聴き続けることもできるのに。

というわけで、このBluetoothレシーバー『BTTC-200』。これならば普通に使っていても比較的バッテリーの持ちがいい上に、使っている最中にもmicro USBケーブルをつないで充電することができるので、PCで使っているときに時々micro USBケーブルをつないで充電しておけば、バッテリー切れの心配がなくなる。

小さくて軽いのでどんなに小さいポケットに入れても大丈夫。イメージとしてはちょー軽い懐中時計サイズ。

充電しながらの利用は、バッテリーの寿命にあまり良くない影響を与えるという定説があるわけだけど、まあ値段も大して高くはないんで、バッテリーが劣化したら買い直せばいい。

おまけとして、この『BTTC-200』はレシーバーとしての機能だけでなく、トランスミッター(送信機)としての機能も持っている。Bluetooth機能を持たないミニコンポとかのイヤフォン端子にこれをつなぐと、他のBluetoothレシーバーでその音声を受信することができる。バッテリーが劣化してきたら、micro USBケーブルつなぎっぱなしにして、そういう用途で使うのもいいかもしれない。

ずいぶんBluetoothレシーバー『BTTC-200』の紹介が長くなってしまったが、もう一つのオススメ商品は靴ひも風のケーブルを使ったイヤフォン『アルペックス クツヒモコードイヤフォン SLYP』。

ポケットにぐしゃぐしゃに突っ込んでから取り出した状態[/caption]

普段から外出中も仕事中もイヤフォンを使っているんで、常時イヤフォンを持ち歩いていて、普段使っているイヤフォンは使わないときはポケットに突っ込んでしまうことが多い。そうすると、使おうとしてポケットから取り出すと、イヤフォンが絡んでしまっていて、それをほどいてから使わなければならなくなる。

じゃあ、ケーブルが絡まないような、巻き取り式のイヤフォンとかを使えばいいんじゃないか、と思っていくつか買ってみたのだが、どうも巻き取り式イヤフォンは、巻き取り部分の機構がなめらかに動かなかったり、最初のうちはちゃんと動いていても、そのうちだんだん動きがしぶくなっていったり、巻き取りの仕組みのためか普通のイヤフォンよりも断線などの故障率が高い(3、4個使ってみての経験談)など、今ひとつ満足いくものがなかった。

ポケットから取り出した状態からでも、すぐに使える状態に[/caption]

そこで、この『アルペックス クツヒモコードイヤフォン SLYP』。「絡まないようにすることが難しいならば、絡んでもほどきやすくすればいいじゃない(マリー・アントワネット風に)」。

実際、ポケットにぐしゃぐしゃに突っ込んでおいても、ケーブルが太いためか絡んでいることが少ないし、多少絡んでいたとしても、すぐにほどける。これならば使わないときにポケットに突っ込んだり、カバンに突っ込んだりと、気を遣わずにしまっておいても大丈夫。

これをBluetoothレシーバー『BTTC-200』と組み合わせて使うと、いつでもポケットに突っ込んで持ち運び、使いたいときに取り出して接続したいデバイスとリンク、micro USBケーブルが確保できる場所では使いながら充電、といった感じの使い方で、ほぼ充電切れの心配なしに一日中使い続けられる。

というわけで、ここ数年間日常的に微妙なフラストレーションを感じていたBluetooth+イヤフォン関連の問題がすっきり解消されて幸せになれたので、久しぶりに物欲日記を書いてみた。

まだ耐久試験が終わっていないから、それによってある程度評価の上下はあるけれども、Bluetoothレシーバー『BTTC-200』の方は1年程度もってくれれば上等、『アルペックス クツヒモコードイヤフォン SLYP』の方は半年程度もってくれれば十分だ。もちろんそれ以上使えるならそれにこしたことはないけど。

Published At2013-12-18 19:25Updated At2020-01-01 04:31