OTOBANK Engineering Blog

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

2017年1月のどや会ごはん - バインミー☆サンドイッチ -

こんにちは!

分厚い本を読むのが苦手な@perokoです。

突然ですが、オーロラって見たことありますか?
私は、お正月休みを利用して人生初のオーロラを見るために、イエローナイフ(このへん)まで行ってきました!
バンクーバーまで8時間40分、そこからカルガリーを経由してイエローナイフまで6時間と、結構時間がかかるんですね〜〜〜。

飛行機の中ではなるべく休息をとりたかったのですが、眠ろうにも眠れない。
集中して映画を見る気分でもない。

うーんどうしたものか。

その時、私は気づいてしまったのです。
「こんな時こそオーディオブックなんじゃない!?」(いまさら)

というわけで、今回の旅行ではオーディオブック版「星を継ぐもの」にお世話になりました。(ステマ www.febe.jp

ドラマ「半沢直樹」にも出演されていた、森田順平さんが朗読しているのですが、
想像を邪魔しないのに、圧倒的な演技力で気持ちいい。
SF小説好きな方はぜひ聴いてみてください〜O[ -ω - ]O♬”

f:id:peroko_tokyo:20170201202215j:plain

さて、前置き長くなりましたが、
毎月恒例の「どや会」レポートです٩(^‿^)۶

オトバンク開発部では毎月末に月次の締め会として「どや会」を実施しています。
その月に開発したすごい機能、すごいデザイン、すごい改善を共有(どやぁ)して1ヶ月に区切りをつけ、「来月もすごい機能を開発するぞ!」と思える(といいな〜)というねらいで運営しております。

今月のどや会ごはん

今月のどや会ごはんは、ベトナム庶民の味「バインミー」!!
軽いフランスパンに、なます・パクチー・肉を挟んだめちゃくちゃおいしいサンドイッチ。

高田馬場の人気店でテイクアウトしてきました〜! entabe.jp

f:id:peroko_tokyo:20170201202532j:plain 券売機のある店内にはお客さん一人分のスペースしかない小さなお店。(テイクアウトオンリー)
初めて食べるなら、ベトナムレバーペーストがおすすめです。

f:id:peroko_tokyo:20170201202616j:plain バインミーの他にもベトナムっぽい食べ物を用意しました〜!

  • KALDIのパクチーポテトチップス
  • パクチーチップス
  • パクチー天
  • パクチーポップコーン
  • パクチースープ
  • ベトナムビールの「333」
  • 生春巻(うまい

いいね〜こういうの!いい!!!

f:id:peroko_tokyo:20170201202429p:plain ちなみに、メニューのリクエストはsimple poll@slackで集めました〜

TechTalk

先々月からTechTalkという”自由発表コーナー”を追加しました!

f:id:peroko_tokyo:20170201222428j:plain

TechTalkの様子。
今回は入社1年目の@symmt9302が音声認識について発表してました(雑)
(せっかくだから軽くブログに書くといいよ!)

TechTalkのねらい

ねらいとしては超ベタで「チーム全体の技術力向上」がねらいなのですが、
実はそれだけではなくて、メンバー個人の市場価値向上のためにも活用してほしいという想いもあります。

もちろん転職はしてほしくないけれど、
人生で一度も転職しないことの方が珍しい時代なので、もし、やりたい仕事がオトバンクで実現できないなら転職を応援したいし、転職するなら良いキャリアを築いてほしいな〜〜〜〜。(って、弊社CTOが言ってた気がする)

余談

f:id:peroko_tokyo:20170201213214j:plain 弊社のデザイナーさんが作ったアイシングクッキーがすごかった

それでは、来月も頑張りましょ〜〜!

Symfony2で利用されているDoctrineに入門する(前編)

こんにちわ!@mrtryです。

年末年始は北海道へ帰省して、寿司を毎日食べてました。
まつりやという回転寿司が最高なので、北海道へ行く機会があれば、ぜひ!

さて、「Symfony2入門」の6回目の記事です。

今回からは、Symfonyで利用されているORMである Doctrine についてまとめていきたいと思います。
内容としては、Doctrineの紹介から、CRUDをするまでの流れについて書いていきたいと思っています。

以下、今回の記事の目次になります

  • Doctrineとは
  • Doctrineがデータ取得するまでの流れ

Doctrineとは

Doctrineとは、Symfonyで利用されているORMです。
ORM(Object-relational mapping)とは、RDBから取得した情報を、特定のクラスと関連付けてオブジェクト化する仕組みです。
この仕組みにより、RDBのテーブルやSQLをほとんど意識せずに、直接オブジェクトとして保存や取得することができます。

簡単な例

文章だけで説明するのも想像しにくい気がしたので、
Doctrineを利用して、CRUD操作する例を簡略化して紹介します。

RDBにproductというテーブルがあって、カラムにprodut_id name price があったとします。
Doctrineを利用すると、productテーブル の作りを元に、以下のようなProductクラスが作成されます。

class Product
{
    private $productId;
    private $name;
    private $price;
    
    ...
}

このクラスのプロパティを変更し、Doctrineに渡すと、RDBを操作することができます。
これにより、SQLをその都度書く必要がなく、RDBの情報操作をオブジェクト指向的に扱うことができます。

例として、以下のような感じのコードを書くことでCRUDすることができます。
(正しさよりも、まずは雰囲気を掴んでほしいという意図で、実際に必要となるコードの一部を端折っています。)

// create
$product = new Product();
$product->setName('apple');
$product->setPrice(100);

// read
$product = $this->getDoctrine()
        ->getRepository('AppBundle:Product')
        ->find($productId);

// update
$product = $this->getDoctrine()
        ->getRepository('AppBundle:Product')
        ->find($productId);
$product->setPrice(100);

// delete
$product = $this->getDoctrine()
        ->getRepository('AppBundle:Product')
        ->find($productId);
$em->remove($product);

また、今回は紹介しませんが、
Doctrine Query Language(DQL)と呼ばれるQuery Languageも用意されており、
SQLのように、クエリを書いて操作することもできます。

Doctrineがデータを取得するまでの流れ

Doctrineを介して情報取得するまでの流れは、以下のようになっています

  1. アプリからDoctrineを呼び出し、情報取得の依頼をする
  2. RDBの情報が記述されている マッピング定義 を読み込む
  3. DoctrineがRDBにアクセスし、リクエストに対応する情報を取得する
  4. マッピング定義 から、リクエストに対応する エンティティクラス を特定し、読み込む
  5. RDBから取得した情報をプロパティに設定し、インスタンス化する
  6. インスタンス化したエンティティを呼び出し元に返す

この流れの中で重要な要素として、 マッピング定義エンティティクラス のふたつがあります。
それぞれについて、説明します。

マッピング定義

アプリケーション内のクラス、プロパティと、RDBのテーブル、カラムの対応関係を定義しているものです。
ざっくりなイメージとしては、 ER図の内容を設定ファイルとしたもの といった感じです。
この定義を元に、DoctrineはRDBから情報を取得し、エンティティにプロパティを設定します。

エンティティ

Doctrineがマッピング定義を元に取得した情報を格納する入れ物です。
識別子(ID)を持っていて、テーブル内の1レコードに対応しています。
最初の方に書いた例で行くと、Productクラスがエンティティにあたります。

おわりに

Doctrineの紹介と情報を取得するまでの手続きについて紹介しました。
次回は、実際にDoctrineを利用し、CRUDをしてみたいと思います。

また、この記事は、@mrtryの勉強の一環で書いていますので、
お気づきの点などがありましたら、コメント等でご指摘いただければ幸いです!

参考

LOCAL Community Summit で 道産子 CTO Evening というセッションをやります

あけましておめでとうございます! 実は CTO の @riaf です。

年始一発目のエントリですが、ちょっとイベントの告知をさせてください。

1/28 に行われる LOCAL Community Summit 2017 というイベント (会場は東京駅のすぐそばです!) の中で、 道産子 CTO Evening と題して、北海道出身の CTO を集めたパネルディスカッションをやることになりました。 僭越ながら、私がモデレーターを務めさせていただくことになっています。

登壇予定の道産子 CTO は

  • VOYAGE GROUP CTO の小賀さん
  • トレタ CTO の増井さん
  • ニジボックス VPoE の澤田さん

張り切ってすごい人たち集めてしまったので、仕切るのは僕でよかったのだろうか...と今から恐怖でいっぱいです!(が、みんな喋るの上手だろうし、雑なフリでもどうにかなるかな!!w)

今のところは、イベントの趣旨にそって、コミュニティの話とか地域の話は触れたいなあと思っておりますが他にどんな話をしようかまだ悩んでいるところなので、もし聞きたい話などあれば @riaf までおしらせくださいませ。ぜひご協力をお願いします。

さらに、同日同会場で#みんなの札幌移住計画も開催されておりますので、いずれ北海道に住みたいなあなんて思っている方がいればこちらもあわせてご参加くださいませ!

この 1 日イベントに参加するだけで、北海道のお友達ができて、北海道の職が探せて、北海道の住むところも探せるという、大変オトクなイベントですね〜! (後半は主に札幌ですが)