Laravel Meetup vol.4 に行ってきた

Laravel, PHP, 日記 No Comments »

久々の勉強会ネタ。
Laravel Meetup vol.4に行ってきました。

場所は渋谷の21cafeというところ。ギークス株式会社が提供している無料で使える会場なのですが渋谷という立地にふさわしいおしゃれな空間で。ここ1、2年でこういったカジュアルな勉強会スペース増えましたね。とても良いことだと思います。

昨年の春頃にLaravelを知ったのですが、いちおう「フレームワーク」ではあるもののそれほどルールが厳密な訳ではないのと記法が非常にわかりやすいのとが気に入って、プライベート案件のCMSをLaravelで作成しました。で、今回の Laravel Meetup ではhref=”https://twitter.com/ex_takezawa” target=”_blank”>竹澤さんによるハンズオンもあり初めて Laravel に触れる人も多いのではということで(実際は出席者の半数くらいだったかな)、CMSを作る過程で得られたTipsをまとめてLTさせてもらいました。

内容としては「ペジネーション」「ガラケー対応(文字コード変換)」「Twitterプラグイン」の紹介です。どんなフレームワークでもある程度の学習コストは必要で、やはりそこは1つ1つ調べながら進むことになると思うのですが、少しでも助けになればと思います。LT久々すぎて変な汗が出たよ…

今回の主催の古川さんやfacebook Laravel.jp主宰の向井さんのおかげもあり参加者40人超!すばらしい。

ハンズオンの内容は竹澤さんのGitHubに公開されているので多くの人がLaravelを使うきっかけになると良いですねー。スタッフのみなさんお疲れさまでした。おだんみつ様ありがとうございました。

Geechs Magazine にレポートもあるみたいです(私の写真がリーウィーさんになってますがそのうちなおるはず)

Laravel Eloquent ORMの複合キー対応

Laravel, PHP No Comments »

Laravel の Eloquent ORM を使ってデータの更新を行う場合、単一の主キーを持つテーブルであれば何の問題もないのですが、複合主キーを持つ場合はちょっと工夫が必要です。

といってもクエリービルダが用意されているので、これを使って Eloquent クラスの update メソッドや delete メソッドをオーバーライドしてあげれば良いです。
下記は、a_id と b_id という2つの複合キーを持つテーブルを扱う例です。

<?php
class Hoge extends Eloquent {
    ...
    public function update(array $params = array())
    {
        return DB::table($this->getTable())
            ->where('a_id', $this->attributes['a_id'])
            ->where('b_id', $this->attributes['b_id'])
            ->update($params);
    }
    public function delete()
    {
        return DB::table($this->getTable())
            ->where('a_id', $this->attributes['a_id'])
            ->where('b_id', $this->attributes['b_id'])
            ->delete();
    }
}

データの取得については下記のように。

$hoges = Hoge::whereRaw('a_id = ? and b_id = ?', array($a, $b))->get();

Laravelでガラケー対応する場合のTips

Laravel, PHP No Comments »

Laravelを使ってフィーチャーフォン対応する場合の文字コード変換関連のTips。

PC、スマホだけでなくフィーチャーフォンにも対応しなければならない場合でも、コンテンツ生成などのロジックは一本で済ませたいもの。その場合、フィーチャーフォンからのリクエスト(ShiftJIS)を処理の最初でUTF8に変換し、レスポンスをUTF8からShiftJISに変換してあげれば中の処理(DB含め)はUTF8に統一できる。
こういった処理は、Laravelではフィルタを使って実装すればOK。

ヘルパあたりにUAの判定や文字コード変換などの処理を定義しておいて…
app/extensions/helper.php

<?php
if ( ! function_exists('isMobile'))
{
    // フィーチャーフォンかどうかの判定。基準はお好みで。
    function isMobile()
    {
        $agent = Request::server('HTTP_USER_AGENT');
        if (preg_match("/^DoCoMo/i", $agent) || 
            preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent) || 
            preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent))
        {
            return true;
        }
        return false;
    }
}

if ( ! function_exists('convenc'))
{
    // 配列の文字コード変換処理。
    function convenc($array, $to = 'UTF-8', $from = 'SJIS')
    {
        $result = array();

        foreach ($array as $key => $value)
        {
            // リクエストが配列になってる場合はさらに潜って変換
            if (is_array($value))
            {
                $result[$key] = convenc($value, $to, $from);
            }
            else
            {
                $result[$key] = mb_convert_encoding($value, $to, $from);
            }
        }

        return $result;
    }
}

Appのbeforeフィルタとafterフィルタで変換処理を行う。
app/start/global.php

App::before(function($request)
{
    if (isMobile())
    {
        // ShiftJIS -> UTF8
        $converted = convenc(Input::get());
        Input::merge($converted);
    }
});

App::after(function($request, $response)
{
    if (isMobile())
    {
        // UTF8 -> ShiftJIS
        $content = $response->getContent();
        $content = mb_convert_encoding($content, 'SJIS', 'UTF-8');
        $response->header('Content-Type', 'text/html; charset=Shift_JIS');
        $response->setContent($content);
    }
});

こうしておけば routs.php に来た時点で文字コードがUTF8になっているので、コントローラやビューなどで文字コードを気にする必要はないです。

Laravel4アプリをCapistranoでデプロイする

Laravel, PHP No Comments »

Laravel4を、Capistranoを使ってステージングや本番環境に簡単にデプロイする例です。
この記事では下記のようなケースで作成してます。

・デプロイ先を複数設定する(develop、production)
・ソースコードはBitbucketに入ってる
・デプロイ先はAmazonEC2
・デプロイ時はローカル端末に一旦ファイルをチェックアウトして、まるごとアップロードする
Read the rest of this entry »

[] スクラムを活用したアジャイルなプロダクト管理

レビュー 1 Comment »

プロダクトオーナー目線からのスクラムについての解説本。
内容が簡潔であっという間に読めてしまいます。

「アジャイルとかスクラムについて一通りわかったつもりだけど、じゃあ実際にどうすれば?」というようなプロダクトオーナーが読むとドンピシャの内容では、と思う。POとしての「考え方」に焦点を当てた内容になっているので、いろいろなプロジェクトに幅広く応用できるヒントが詰まっている。
反面、これをやればどんなプロジェクトでもOKというような手法は紹介されていない。「え、載ってないの?」と言うかもしれないけど、そもそもすべてのプロジェクトが必ずうまく行く手法なんてものは無く、それはWFでもアジャイルでも同じこと。ただ、書籍の中で著者のローマン・ピヒラーさんは「チームと共働せよ」と繰り返し言っている。少なくともPOはプロジェクトの最初に要件を出したら後は進捗の管理と成果の確認だけすればいい、というような存在ではないということ。常に、開発チームと向き合い、プロジェクトが進む中で発生する問題点と向き合い、顧客のフィードバックと向き合う。そして、それをそのまま聞き入れたり盛り込んだりするのではなく、自らも含め、ともに考えながら、プロジェクトを進めていくことが大事。

この書籍の特徴としてもう一つ、各章に出てくる「よくある間違い」という項がよくできている。
「ビジョンが無い」「POが働き過ぎ」「POが遠隔地にいる」「大きいことは美しい(という勘違い)」「チームに要件を押し付ける」「受け身である」「ビックバンリリース(をしたがる)」「持続不可能なペース(を要求する)」など、(アジャイルに関係なく)よく見かける話が著者本人の実体験やアドバイスも交えて書かれていて、わかりやすく、参考になる。

スクラムを活用したアジャイルなプロダクト管理―顧客に愛される製品開発

著者/訳者:ローマン ピヒラー

出版社:ピアソン桐原( 2012-11 )

定価:¥ 2,160

単行本 ( 141 ページ )

ISBN-10 : 4864010978

ISBN-13 : 9784864010979


WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン