移転しました。

phpunitのUndefined class constant ’PARSE_CUSTOM_TAGS’の対処

はてなダイアリーのタイトル文字数の制限でSymfonyと入れられなかったけれどSymfonyの話。

The PHPUnit Bridge (The Symfony Components) を使う。

もしくは、PHPUnitを6.2.3にアップグレードしたら解決した。

■個人的に発生した環境
PHPUnit 5.7.2(phar)、Symfony v3.3.4

■参考
https://github.com/symfony/symfony/issues/19532

iPhone 7 Plusを買った

iPhone 7 Plusを買った。10/8に注文して11/13に届いた。色はローズゴール。ジェットブラックは店舗で見てみたけど指紋が目立ちすぎで僕には無理だった。

Apple Storeで購入して(SIMフリー)、LINEモバイルを契約した。色々速度比較サイトを見て通信環境が良さそうなのと、フリーカウント大きいなというところ。速度に関しては、通信環境の不満が大きくなった時に会社的に対応が早いだろうという憶測もして(ビジネスに直結だろうから)LINEモバイルに決めた。

届いたらまずは買ってあったガラスフィルムを貼った。

子供が触ることもあるのでブルーライトカット。この商品、なかなかよくて、変色した感じがほとんどしない。触り心地は程よく抵抗感がありつつもちゃんとスベスベしているし、汚れも簡単に拭き取れる。貼る時に入る気泡も簡単に追い出せたしとても気に入った。

iPhone 7 Plus
iPhone 7 Plus posted by (C)cloned

この大きさだと落とさない方が奇跡だと思って、ケースも買った。ケースは11/11に注文して11/18に届いた。とても長く待った気分。きっとAmazon慣れのせい。買った商品はこれ。 http://propeller-design.jp/item/1750.html かわいい。

ポートレートモード、デジイチで撮るのに比べると被写体深度が浅すぎる(近いはずなのにボケる)、輪郭がやや不自然、というのがあるけれど、それでもエフェクトでぼかすのに比べたら格段に良いし、何よりカメラそのものの写りが綺麗だから楽しい。

容量は256GBにしたので、やっとそれなりに好きな音楽を適当に入れられるようになった。1TBくらいあれば全部入るので、そういう時代になりますように。

あとはなんだろう。前がiPhone 6だったので動作が速くなったのは嬉しい。あとバッテリーが長く持つようになったのも嬉しい(iPhone 6の劣化が激しかった)。

PSVRを買った

予約しようとしたら予約開始早々にどこも売り切れになってしまったので、Amazon.co.uk(イギリス)で予約した。

到着は10/20予定となっていたけれど、発売日(10/13)に発送され10/17に届いたので、割とすぐに手元に来た感じ。

価格は42,240円(290.83ユーロ)で買えたので、定価48,578円に比べると結構安く買えた。

PSVR
PSVR posted by (C)cloned

PSVR
PSVR posted by (C)cloned

梱包が大きい。開けてみたらPSVR本体が結構大きかった。

PSVR
PSVR posted by (C)cloned

電源ケーブルの形状が海外仕様だったので、家にある別のケーブルを付け替えた。それ以外は説明書が英語なくらいで、問題なく動作した。

付属のdemoをやってみて、あとは評判の良いRez Infiniteを購入してやってみてる。まだArea Xをちゃんとプレイできていないので、Rez Infiniteの感想はまた今度。

ディスプレイの解像度はドットが視認できるので気になるといえば気になる。シネマティックモードで映画を観ると大画面の迫力は素敵である反面、たまにドットが気になって没入感が薄れることがある。

ジャイロセンサー、加速度センサーやリフレッシュレートなどは今の所気になるところはなく、自分の動きにしっかり追従してくれていると感じる。音もちゃんと自分の位置、向きに対応していて臨場感がある。

接続ケーブルや端末が多くて辛いけれど、PSVRに対応した大御所ゲームの発売が待ち遠しい。

音楽のレコメンド機能を作るには音源の解析が必要に思う

Apple Musicなどのアプリでレコメンドされる音楽はなかなか好きに出会えない。

人によるだろうけれど、音楽は好き/嫌いと感じるポイントが非常に細かくあり、ちょっと違うとあまり好きではないものになる。

例えば、僕はDream Theaterが好きだけど、プログレッシブ・メタルというジャンルだけで好きに出会うことはほとんどない。Dream Theaterが好きな理由を列挙すると

  • 音色/和音/旋律/展開/テンポなどが基本的に好み
  • 歌にメロディーがある方が好き
  • 綺麗に歌うボーカルが好き
  • 和音が感じられる楽曲が好き(必然とキーボードの音がある楽曲の方が好き)
  • 一塊のメロディーがたまたま変拍子であった、と感じられるような変拍子が好き(ランダムに切り取られたような激しすぎる変拍子は嫌い)
  • 速い奏法を生かしたソロフレーズが好きだが、緩急がなくずっと速いだけであったり、メロディー性が薄いソロは嫌い
  • ドラムやベースに繰り返しパターンが少なく聴き飽きないリズムが好き(特にポートノイ時代)
  • 楽曲としても繰り返しが少なく展開するものが好きだが、旋律が頭に残らないほど展開しすぎると嫌い
  • ヘビーなサウンドが好きだが、ドンシャリだったり低音を強調しすぎていると嫌い

キリがないけれども、こういう細かいポイントがいろいろあって好きなのであって、とあるジャンルが好き、というのでは全然ない。

また、上はDream Theaterが好きな理由であって、例えば、たかじんの歌が好きな理由は全く異なる。

こうしたことを考えると、好きな(好きそうな)音楽を提案するプログラムを作るのであれば、音源を解析し一つ一つの音楽がどういう情報を持っているのかを把握できないと難しいだろうなと思った。

Symfonyから手早くYAMLのFixtureを読み込めるAliceFixturesBundle

この記事は Symfony Advent Calendar 2015 の4日目の記事です。

開発環境向けのテストデータ(Fixture)作成は hautelook/AliceBundle を使えば便利だけど、テストコードからFixtureを読み込もうとすると一手間かかるので、何かないものかと探したところ h4cc/AliceFixturesBundle に出会った話。

データベースを利用したテストコードを書く場合、テストデータの準備が必要になることが多い。 「テストコードを書く労力を減らす」「テストコードの見通しを良くする」という観点から、テストコードのためのデータ準備は極力簡単にしたいところ。

Symfony + Doctrineを利用している場合に真っ先に選択肢に上がるものとして DoctrineFixturesBundle があるけれど、見ての通りFixture自体がPHPコードであり、テストデータの準備に苦労が絶えない。

そこで登場するのが nelmio/alice を利用できる hautelook/AliceBundle で、これについては去年の Symfony Advent Calendar 2014 の記事である [Symfony] AliceBundleで自動テストのfixtureをyml化しよう が詳しい。すごくわかりやすいのでご一読を。

どういうYAMLになるかというとこういう感じ。

AppBundle\Entity\User:
    user{1..10}:
        username: <username()>
        fullname: <firstName()> <lastName()>
        birthDate: <date()>
        email: <email()>
        favoriteNumber: 50%? <numberBetween(1, 200)>

これで10件のuserが作成され、それぞれにFakerを利用したランダムな名前や誕生日、メールアドレスなどが設定される。

PHPコードでテストデータを用意する苦労からは解放されたものの、まだ面倒な点があり、先に紹介した [Symfony] AliceBundleで自動テストのfixtureをyml化しよう から引用させていただくと、

<?php
$this->loadFixtures(
    array(
        new UserFixtureLoader(),
    )
);

このように一つのFixtureごとにPHPのクラス(ここではUserFixtureLoaderのこと)を作らなければならない。これは結構面倒だ。

それで色々と探していたところ h4cc/AliceFixturesBundle を発見した。DoctrineFixturesBundle に依存しないため、より簡潔なFixtureの読み込みを実現している。

具体的な実装はデモのテストコード、AliceDemo/src/h4cc/AliceDemoBundle/Tests/Controller/UserControllerTest.php を見るとわかりやすい。

抜粋すると、

<?php
public static function setUpBeforeClass()
{
    $client = static::createClient();
    $manager = $client->getContainer()->get('h4cc_alice_fixtures.manager');
    static::$fixtures = $manager->loadFiles(array(__DIR__ . '/DataFixtures/Alice/alice.yml'));
    $manager->persist(static::$fixtures);
}

こういう感じで直接AliceのYAMLを指定するだけとなっており、Loaderクラスを作成する必要がなく大変便利。

ということで、 h4cc/AliceFixturesBundle の紹介でした。なんと Symfony Advent Calendar 2015 の次の日、12/5はまだ空いているので、どなたかよろしくお願いします!

「フラットデザインで考える 新しいUIデザインのセオリー」を読んだ

フラットデザインで考える 新しいUIデザインのセオリー

フラットデザインで考える 新しいUIデザインのセオリー

Modern UI 、Material DesigniOSなど、フラットデザインを冠するUIの違いを比較しながら、みんながざっくり呼んでいる「フラットデザイン」の正体を概観しつつ、それを踏まえてこれからのUIデザインを考えるための基本的な考察を提供するような感じになっている。

概観している部分の一例としては

つまり人が触るパーツを丸く、それ以外の要素をすべて 角のある矩形で構成するのです。これはGoogleが非常にうまく実現している手法です。

フラットデザインで考える 新しいUIデザインのセオリー P84

例えばiOS 7以降のiOSでは、基本のキーカラーを水色と定めて、水色になっている部分はすべて押せるパーツというルールを作り、その他の色を基本的に排除しました。

フラットデザインで考える 新しいUIデザインのセオリー P109

こういう感じで、それぞれどのようなアプローチでフラットデザインを実現しているのかを具に解説している。世の中的にはどうしてもiOSAndroidにフォーカスしがちなところを、Windowsフラットデザイン的なウェブサイトなど、幅広く扱っているところが良い。

フラットデザインの特徴を踏まえつつ、これからのUIデザインを考えるための考察として、配色、余白、フォント、各種UIパーツ(ボタンやチェックボックスなど)の表現手法など、フラットデザインに触れつつ解説されている。

最近、我々がよく見るソフトウェア上のUIデザインを改めて解説されてみる、というテーマとして良書だと思う。案外気付けていなかった部分や、普段自分が使っていないOSのデザイン手法など、なるほどなーと思うところが多かった。

iPhone 6を買った

iPhone 6
iPhone 6 posted by (C)cloned

手元のiPhone 4sが下取りされる運命にあると知ったので、購入日からずっと貼っていたフィルムを剥がして新品同様の美しいiPhone 4sを使っていたら、iPhone 6の在庫があっさり見つかった。

iPhone 6は吹き付け仕上げな感じで、今までの金属感がなく安っぽい。Touch IDは便利だし、画面が広いのも左上が届かない以外は見やすいし良いのだけれど、良いものを手にした感は薄れたかなぁ。