OTOBANK Engineering Blog

オトバンクはコンテンツが大好きなエンジニアを募集しています!

オーディオブック (のサンプル) を垂れ流して聞けるサービスをつくってみました

みなさまおひさしぶりです @riaf です。

タイトルの通りなんですが、オーディオブックを垂れ流しで聞けるサービスがあったらどうだろう?と思ったので、サンプル音源だけですが (ある程度) ランダムで聞けるページを試しに作ってみました。

FeBeシャッフル (ページを開くといきなり音声が再生されるので、ご注意を...!)

(お試しなので、いつまで公開しておくかわかりませんが、試してみてください ;p)

続きを読む

PHP BLT #5 に参加してきました!

どうも、はじめまして!新卒エンジニアの@mrtry です!
株式会社7/20(水)にGMOペパボさんで開催されたPHP BLT #5に参加してきました!

私事ですが、北海道から引っ越してきて、初の都会での勉強会だったのですが、
勉強会は人もいっぱいだし、オフィスも大きくてキレイで、
「都会はすごいなあ...。」と終始田舎丸出しでした...。笑

今回は、まとめブログ書く枠で参加してきたので、イベントレポをしたいと思います!

会場のようす

今回は、GMOペパボさんで開催されました。
会場の提供、ありがとうございました!
とても広く、きれいでした!

f:id:symmt9302:20160724203501j:plain

その後ろでは、軽食と飲み物が提供されていました。
BLTサンドもありましたよ!

f:id:symmt9302:20160724203457j:plain

LTのようす

続きを読む

Doctrine2 四方山話 ( Fetch mode, Index by, Criteria について)

はじめまして。4月からオトバンクで働き始めました @kalibora と申します。よろしくお願いします。

さて、オトバンクでは Symfony2 を使っており、ORマッパーにはデフォルトの Doctrine2 を使用しているのですが、 そんな中で私が得た知見をいくつか紹介したいと思います。

Fetch mode の話

Doctrine2 には fetch mode という概念があります。

Annotations Reference - Doctrine Object Relational Mapper (ORM) を見ますと Doctrine2には下記の fetch mode があるようです。

fetch mode 定義できる場所
EAGER @ManyToOne @ManyToMany @OneToOne @OneToMany
LAZY @ManyToOne @ManyToMany @OneToOne @OneToMany
EXTRA_LAZY @ManyToMany @OneToMany

この fetch mode は、あるエンティティをリポジトリから取得した際に、 関連するエンティティも同時に取得するかどうか?という挙動に関わってくるものです。

ちなみに何も明示的に定義しないと、デフォルトは LAZY な挙動になります。 すなわち、関連エンティティは取得しません。関連エンティティが必要になった時に自動でデータベースにクエリが走り、取得されます。

使わない(参照されない)関連エンティティも毎回取得してしまうと無駄なので、これは理にかなった挙動だと思います。

ところが、LAZY だけを使っていると、いわゆる n+1 問題と呼ばれる問題に直面します。

続きを読む