BEAR.Sunday meet up #2 に参加しました

BEAR.Sunday

BEAR.Sunday meet up #2に参加しました。
会場はHUB Tokyo ラウンジスペース。
すごく秘密基地な雰囲気漂うおしゃれな会場での開催です。

togetterでまとめを作成しました。
http://togetter.com/li/540698
2013.07.30追記 : まとめを作成後1日で1000view越え!!!

今回のmeetupでは、全員3分間LTをということで、自己紹介LTをさせていただきました。
興味深いおもしろいLTが続く中で、かなりはずかしい…..ただの自己紹介LTをしてきました

http://www.slideshare.net/NEKOGET/bearsunday-meetup-2

自己紹介あり、技術の話あり、ダイエットの話ありと、とてもとても濃いLTをたくさん聞く事ができました。
TOMさんの発表されていたTDDフレームワーク Waltz
github : https://github.com/stellaqua/Waltz.Band
Maple4 Docテストを使いたいが使えない状況。なので自分で作ってみたとのこと。
Maple4と当時を思い出し、感慨深い発表でした。

@rskyさんのiOS上で動く、PHP環境 iPHPのお話
github : https://github.com/rsky/iphp
ネイティブアプリをPHPで書けそうな予感がするコレは、すごくすごく気になりました。

@hidenorigotoさんの武術における型修行の話
武術の型とプログラミングの型。心と身体を鍛える。コードを書く力を鍛える。
http://phpmentors.jp/post/56608584357/bear-sunday-meetup
すごく興味深い話でした。
twitterで教えていただきましたが、子供向けのプログラミング教室で、KATAを共有する試みがされているそうです。http://blog.yasulab.jp/2012/05/coderdojo.html

メインセッション @jinguさんの実践BEAR.Sundayの発表では、実際に実装しているコードを見せていただきました。
見たくてなかなか見れない UnitTestコードを見れたのはとても大きな収穫でした。
テストコードが(本体コードそのものもですが)それが本当にドキュメントになりえるのが見てわかるコードでした。テストコードの美しさに憧れる…. そんなのBEAR.Sundayがはじめてです。

@koriymさんによるメインセッションでは、
ずっと、つまづいていた部分ですっきりとした部分がありました。
まだ資料が上がっていないようですが、そこで書かれていた図がとても参考になりました。
概念を説明するコトバよりも図のほうがしっくりと腑に落ちるあたりが、私自身のコードやコトバに対する力のなさだなと、絵図や色から得る情報量が多い性質なのだなということを自覚しました。
(短所でもあり長所でもあり…. コトバは苦手です)

相変わらず、BEAR.Sundayは面白いです。
それに触れるだけでワクワクします。未来の可能性にドキドキします。

今回は、予定があり途中離脱でした。
見れなかったセッションが本当に悔しいです。
@mackstarさんのセッションが聞けなかった事、NateさんのLithium&AngularJSのお話が聞けなかった事は残念無念です….. orz

BEAR.Sunday はじめてのテストをやってみる。

BEAR.Sunday meet up #1に参加し、自習TIME中、おそらく私にとって8回目ぐらいのインストールをしました。
(^-^;) .o( 仮想Fedoraの作業フォルダにbear1からbear8までフォルダが並んでいたのを目撃…… たぶん8回目 )

少しずつ少しずつ理解を深めたいと思うので、今日は、はじめてのテストに取り組んでみたいと思います。

リソースファイル
apps/Sandbox/Resource/App/First/Greeting.php

テストクラスファイル
apps/Sandbox/tests/Resource/App/First/GreetingTest.php

まずはテストファイルの作成
リソースファイルと、テストファイルがあることを確認。

〆(。。)テストを実行

OKでました!

PHP Warning:  Module 'apc' already loaded in Unknown on line 0

がでていたので、/etc/php.d/apc.iniのほうに設定を寄せて/etc/php.iniのapcの記述をコメントアウトしました。

〆(。。)カバレッジレポートの確認

〆(。。)テストコードを見てみる
vi apps/Sandbox/tests/Resource/App/First/GreetingTest.php

namespace Sandbox\tests\Resource\App\Blog;

use Sandbox\Module\TestModule;
use Ray\Di\Injector;

class GreetingTest extends \PHPUnit_Framework_TestCase
{
    /**
     * Resource client
     *
     * @var \BEAR\Resource\Resource
     */
    private $resource;

    protected function setUp()
    {
        static $app;
        parent::setUp();
        if (! $app) {
            $app = Injector::create([new TestModule])->getInstance('BEAR\Sunday\Extension\Application\AppInterface');
        }
        $this->resource = $app->resource;
    }
.....

setUp()で、テストが実行される前にやっとかないといけないことが記述されています。

wikiから抜粋
http://code.google.com/p/bearsunday/wiki/my_first_test#setup()

テスト用のモジュール(設定)でインジェクターを作成し、そのインジェクターでアプリケーションオブジェクトを取得しています。テストではアプリケーションオブジェクトはプロパティにあるリソースクライアントを利用します。

resource()

public function resource()
    {
        // resource request
        $resource = $this->resource->get->uri('app://self/first/greeting')->withQuery(['name' => 'BEAR'])->eager->request();
        $this->assertSame(200, $resource->code);

        return $resource;
    }

$this->resource->get->uri(‘app://self/first/greeting’)->withQuery([‘name’ => ‘BEAR’])->eager->request();

は、apps/Sandbox/publicの中で、

php api.php get 'app://self/first/greeting?name=BEAR'

を実行したのと同じ事で、

$this->assertSame(200, $resource->code);
で、200 OKだってことを確認しているテスト。

〆(。。)その他のテストメソッドを見る

その他の@testとアノテートされたメソッドではresource()で得られた結果をチェックしています。

/**
     * Type ?
     *
     * @depends resource
     * @test
     */
    public function type($resource)
    {
        $this->assertInternalType('string', $resource->body);
    }

@depends resourceと書かれていて、
resource()が実行した結果、
$resource->bodyには”Hello, BEAR”が格納されていて、
‘string’だってことを確認するテスト。

今日は、最新ではなく、前回参加した BEAR.Sunday meet up #1でインストールした状態で見たり試したりしました。
最新のものとはずれている部分もあるかと思います。
2013年2月22日からほったらかしとか、自分自身のダメさを自覚する日でもありました(><)

BEAR.Sunday meet up #1に参加しました

BEAR.Sunday meet up #1に参加しました
twitterでのつぶやきはtogetterでまとめました

会場は、#0に引き続き、VOYAGE GROUP さんの会場をお借りしての開催でした。

☆@mackstarさんのセッションは、あとで何度も聞き直したいと思うすばらしいセッションでした。
録音しておけば良かった….(涙)

“ソフトを書いている人はみんなAPIのデザイナーです”から始まった、”Clean API”のお話。
classの中のメソッドを、上から下から何度も見ないと見つからないメソッドで大丈夫か?という問題提起
美しさを求めることは大事な事。
12以上は多すぎるということ。
書いてないとわからない。 試さないとわからないのは BAD Design。
大事な4つのC:
Commonality
Clarity
Consistency
Contextual

“ソフトを書いている人はみんなAPIのデザイナーです”という言葉は、
コードを書いている人は、全員が設計をしているということというTDDでの言葉を思い出しました。
「設計をしている」よりもさらに踏み込んだ感じがします。

資料は後日に公開されるそうです。
期待待ちしてます。

☆@koriym さんのセッション

依存関係逆転の法則
生成使用分離の法則
デメテルの法則
Tell, Don’t ask.

Api Driven Developmentな考え方
長期運用に耐えられる考え方で作られていて、BEARのリソースを他のフレームワークでも利用できるという部分はすごく良いなと感じました。
徐々にBEARで実装をして、既存のプログラムでそれを利用することができるということは、少しずつ機能を作りながら差し替えていき、最終的にはBEARに乗り換える計画が立てられるという事。
少しずつ、少しずつ、small stepを実現できちゃう。
スライドの24ページ目あたりに、リソースを取り込むコードがあります。

資料の22ページめのオブジェクトグラフの絵図は
print_oで、BEARでなくとも表示する事が可能だとのこと。

https://github.com/koriym/print_o

phpメンターズでも過去取り上げられていました。
http://phpmentors.jp/post/29106341823/print-o

BEARが夢見る未来のBEARの話。

1日に3セッションという怒濤のプログラムでした。
また、自習時間に参加した皆でインストールをしたりしつつ、そこで感じた事の質問から、「なぜそうなっているのか?」や実際のコードをプロジェクタで見るなど、小人数だからこその、距離の近い時間を体験しました。

☆BEAR.Sundayを試したあとは…..
bugはissueで http://goo.gl/oZRdn
質問意見感想など新規トピックで http://goo.gl/ZUdt1

BEARが覗いている世界はおもしろい、BEARを通して覗く世界もおもしろい #BEARSunday

“BEARが覗いている世界はおもしろい、BEARを通して覗く世界もおもしろい”
@tdakakさんがつぶやいていたこの言葉が、一番BEAR.Sundayを表している言葉だと感じます。
間違いなく私のPHPの世界観を変えたフレームワークです。
meet upに参加できて本当に良かった!
もっと面白さを感じられる様勉強をしたいと思います。

参考URL
http://d.hatena.ne.jp/kumamidori/20130220/p1

PHPMATSURI2012に参加しました。

phpmatsuri 2012

東京、大阪に続いて、福岡で開催された、phpmasturi2012に参加しました。
毎年思う事ですが、凄まじい2日間でした。
スタッフの皆様、そして参加をされた皆様、本当に本当にありがとうございました!
そしておつかれさまでした!!!!!

今年のphpmatsuriへの参加で事前に決めていた事。
(1) ちゃんと寝る(体調管理大事)
(2) BEAR.Sundayのワークショップがんばる
(3) FuelPHPドキュメント翻訳をすすめる。

今年は発表もしなかったし、大きな成果は無いのだけれども、
たくさんの刺激をいっぱい受けて、楽しい2日間となりました。

BEAR.Sundayのワークショップ後ホテルへ移動(25:00ぐらい?)朝までしっかり休めました。会場すぐ近くのホテルにして良かったです。
年々衰えている体力故、まわりに迷惑かけたらやだなーと思ってたので…。

BEAR.Sundayのワークショップはワークショップが始まるまでの時間でインストール等の準備をしました。参加前日までにやっとくべきでした。時間が本当にもったいなかった(>< ) 猛反省です。 そして結局ワークショップで使うbranchを間違えてるとか、本当に私ひどい….. すぐに動かす事ができなかった機能について、ブラウザ越しに触れる環境を使わせていただきました。日々の勉強の足りてなさと、自分自身の理解力の低さに凹みましたが、なんとかついていくことができました。このまま、また勉強しないままに時間だけがすぎて行く事が無いように、少しずつ少しずつ勉強をすすめていきたいと思います。 まずは、BEAR.Sundayのワークショップでの内容について、復習してブログにまとめます! FuelPHPのドキュメント翻訳については、2ページほど翻訳をすすめることができました。 1.3の翻訳状況について、ファイル一覧を $ find . | grep html で作成し、エクセルでまとめました。まとめた結果をhtmlにし、公開するところまでできました。 http://fuelphp.jp/1.3.html
fuelphp.jpのサイト自体もgithub管理にして、masterにコミットしたものを自動的に更新できるようにしました。

PHPMATSURI2012を終えてのMY課題
(1)BEAR.Sundayのワークショップでの内容について、復習してブログにまとめる
(2)BEAR.Sundayでのはじめてシリーズをコンプリートする
(3)FuelPHP翻訳がんばる(1.3翻訳してる訳ですが1.4がリリースされブランチ最新は1.5…地道にやっていきます….)

ここ1年自習をする時間がなかなかとれなくて、四苦八苦してます。
でも、やらないままだとダメだと思うし、なによりも楽しくない。
自分なりのペースでがんばっていこうと思います。

BEAR.Sunday meetup #0を開催しました。


http://www.zusaar.com/event/331061
BEAR.Sunday meetup #0を開催しました。
今回も会場はFuelPHP勉強会でもお世話になりました、
VOYAGE GROUP さんの会場です。

まとめ
http://togetter.com/li/341768

伝説とまで言われた、Symfony勉強会 #6での@korym 師匠の懇親会セッションから、
LTでの勉強会開催の依頼。
そしてRESPEKTでの秘密会議を経て、
昨日とうとう開催となりました!
予想通り、熱く濃い内容となりました!

★アンケートの結果を公開★
参加者性別
男性 : 86.7%
女性 : 13.3%

参加者年齢分布
(1) 10代 :  0%
(2) 20代 : 33.3%
(3) 30代 : 46.7%
(4) 40代 : 20.0%
(5) 50代 :  0%
(6) その他 : 0%

PHP歴
(1) 1年未満 : 0%
(2) 1年〜2年 : 0%
(3)2年〜3年 : 0%
(4)3年〜5年 : 30.8%
(5) 5年以上 : 69.2%

Q3. BEAR.Sunday meet up#0はいかがでしたか?
(1) 良い :92.3%
(2) まぁまぁ: 0%
(3) ふつう : 0%
(4) やや悪い : 0%
(5) 悪い : 0%
(6)濃い(設問にはありませんでしたが増えてました):6.7%

Q4.印象に残ったセッションは?(複数回答)
(1). Ray.Di / Ray.Aop ことはじめ :25.9%
(2) Welcome to BEAR.Sunday 45 min:48.1%
(3) LT:僕と熊と3年間 :14.8%
(4)リソース指向データ転送プロトコル :11.1%

Q5.次回聞いてみたい話、テーマはありますか?
・@koriymさんのオンステージを!
・復習してみます。勉強不足ですみません。
・Ray.DiとAura.Diの思想の違い
・アラン・ケイ
・リソース指向について詳しく。
・知りたかった思想についてよく理解できました。次回は実装のところを学びたいです。
・実践的なアプリケーション制作について
・アーティテクチャと実装で困っことの深堀り

Q6.次回開催希望時期は?
(1)平日夜 :35.7%
(2)金曜夜 :21.4%
(3)土曜午後:28.6%
(4)日曜午後:7.1%
(5)その他 :7.1%

Q7.その他ご意見ご要望
・なかなか設計思想を聞く機会がないので、すごくおもしろかったです。 忘れないうちに実装がどうなっているのか、どうやって使うのか確認したいと思います!
・ぜひmeet up #01を!
・今度は勉強してから参加したいです。聞くだけではもったいないですね。
・これからが楽しみです。
・次回があれば参加します。
・楽しかったです。
・ありがとうございました!

LTで、勉強会開催希望を
吐露するところからスタートしたmeetupでした。
自分で考えていたよりもずっと良い集まりになったのではないかと思います。
また、私自身に足りなかった知識や意識を知る事ができた貴重な体験でもありました。

ただ、書いていただけではなくて、
フレームワークを使っていた、使えていただけではなくて、もう一歩前に進めるような気がしています。

少しずつ積み重ねられるように、
次回meetupも企画しようと思います!

BEAR.Sundayインストール!

先日開催された、Symfony勉強会#6の熱い熱い懇親会セッション。
BEAR.Sundayをこれは絶対絶対触らねば!!!ということでインストールです!

http://code.google.com/p/bearsunday/wiki/Install
を参考にインストールしてみました。

インストール直後の画面。
php5.4のビルドインサーバで表示をしています。
使える事は知ってたけども、起動してみたのは初めて♥

では、ここからNEKOGETがインストールをした環境でのインストールの詳細です。
インストールした環境 / OSX VMWare Fusion
Fedora17
PHP 5.4.3
mysql 5.5.24
php-pecl-apc-3.1.10-2.fc17.x86_64

別段特別な環境を作った訳でもなく、
Fedora17環境でyumを利用して
簡単に環境を作成し、挑戦してみました。

ハジメテは、基本に忠実にということで、公式のインストールのページを参考にインストールをします。
http://code.google.com/p/bearsunday/wiki/Install

githubからデータを取得

git clone git://github.com/koriym/BEAR.Sunday.git

githubは本当に便利。らくちん。

$ cd BEAR.Sunday/
$ curl -s http://getcomposer.org/installer | php
$ php composer.phar install

テスト環境と書かれた項目はPHPUnitのインストールのようです。すでにインストール済みだったので、スキップしました。

ビルドインサーバの起動

$ cd apps/sandbox/htdocs/
$ php -S localhost:8088 web.php

参考にしたサイトと違うのはphpのパスぐらいです。

テスト用のDBの準備
rootにパスワードを設定していたので、最後に-pをつけてます。
実行すると、パスワードを聞かれるので入力。

$ mysql -e "CREATE DATABASE IF NOT EXISTS blogbeartest;USE blogbeartest;CREATE TABLE IF NOT EXISTS posts (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,title VARCHAR(50),body TEXT,created DATETIME DEFAULT NULL,modified DATETIME DEFAULT NULL);" -u root -p

テストの実行
まずはテストを実行するというのが、
インストールの手順にあるのが素敵です。

[neko@localhost BEAR.Sunday]$ phpunit
PHP Warning:  require(PHPUnit/Extensions/Database/TestCase.php): failed to open stream: No such file or directory in /var/www/html/bear/BEAR.Sunday/tests/bootstrap.php on line 4
PHP Fatal error:  require(): Failed opening required 'PHPUnit/Extensions/Database/TestCase.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/bear/BEAR.Sunday/tests/bootstrap.php on line 4

失敗……
あ!!!….DB!!! (>_< ) ってことでphpunit追加です。 rootになって、pear installします。 ちゃんとドキュメントには書いてありました。自分で勝手に入れてたはずと勘違い...(> _ < ) 油断大敵です。

[neko@localhost BEAR.Sunday]$ su
[root@localhost BEAR.Sunday]# pear install phpunit/DbUnit
Adownloading DbUnit-1.1.2.tgz …
Starting to download DbUnit-1.1.2.tgz (41,895 bytes)
…………done: 41,895 bytes
install ok: channel://pear.phpunit.de/DbUnit-1.1.2

phpunit/DbUnitインストール完了!

医療情報事務所 一貫堂Blog で、インストールとunit testにまつわる諸々の情報がUPされています。かなり詳細に書かれています。参考にどうぞ♪
http://ikkandou.blogspot.jp/2012/07/bearsunday1.html
http://ikkandou.blogspot.jp/2012/07/bearsundayphpunit.html

ということで続きです。

phpunitを実行してみます。

rootのパスワードが設定されていると、エラーが出るという内容のエラーがたくさんでていたので、とりあえずrootパスワードを解除してテストを実行しました。

build/coverage/の中に、code coverage のレポートができていました。

インストールのドキュメントの中に、phpunitを実行しろっていうフローが入ってるphpフレームワークって初めてのような気がします。

すべてgreenな事が確認できたので、
やっぱりmysqlにパスワードの設定をします。

rootにパスワード設定がないとunit testうまくいかないんだよねって話をぽろっとしていたら、一貫堂のいのうえさんが調べてくれました。感謝感謝!
http://ikkandou.blogspot.jp/2012/07/bearsundayphpunit.html

rootにパスワードを設置します。

[neko@localhost BEAR.Sunday]$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 94
Server version: 5.5.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET PASSWORD FOR root@localhost=PASSWORD('root');
Query OK, 0 rows affected (0.03 sec)

phpunitの結果は最初実行した通りエラーが出ました。

パスワードの設定をします。
tests/PagingQueryTest.php
21行目
$this->pdo = new \PDO(“mysql:host=localhost; dbname=blogbeartest”, “root”, “root“);

tests/PagerTest.php
24行目
$this->pdo = new \PDO(“mysql:host=localhost; dbname=blogbeartest”, “root”, “root“);

tests/DoctrineDbalAdapterTest.php
21行目
$this->pdo = new \PDO(“mysql:host=localhost; dbname=blogbeartest”, “root”, “root”);

apps/sandbox/tests/PageBlogPostsTest.php
11行目
$pdo = new \PDO(“mysql:host=localhost; dbname=blogbeartest”, “root”, “root”);

apps/sandbox/tests/AppPostsTest.php
13行目
$pdo = new \PDO(“mysql:host=localhost; dbname=blogbeartest”, “root”, “root”);

sandbox/scripts/test.config.php
2箇所
return [
‘master_db’ => [
‘driver’ => ‘pdo_mysql’,
‘host’ => ‘localhost’,
‘dbname’ => ‘blogbeartest’,
‘user’ => ‘root’,
‘password’ => “root”,
‘charset’ => ‘UTF8’
],
‘slave_db’ => [
‘driver’ => ‘pdo_mysql’,
‘host’ => ‘localhost’,
‘dbname’ => ‘blogbeartest’,
‘user’ => ‘root’,
‘password’ =>“root”,
‘charset’ => ‘UTF8’
]
];

phpunitを実行
rootのパスワード無しと同様に、all greenになりました☆

ビルドインサーバを起動し、BEAR.Sundayが動く事を確認しました。

次は、チュートリアルに挑戦の予定です!
http://code.google.com/p/bearsunday/wiki/HelloWorld
http://code.google.com/p/bearsunday/wiki/blog