Tech Blog

グローバルな家族アプリFammを運営するTimers inc (タイマーズ) の公式Tech Blogです。弊社のエンジニアリングを支える記事を随時公開。エンジニア絶賛採用中!→ https://timers-inc.com/engineering

BigQueryで読みやすいSQLを書くコツ - たったの3つであなたの意図はもっと伝わる。

こんばんわサーバサイドエンジニアのjonnyです。

弊社では分析のためにBigQueryを使っています。 エンジニアだけでなく、企画職の人間もクエリを叩いて日々分析をする環境が整っています。

データを見る場所の分散を避けるため、分析対象のデータは全てBigQueryに集約しています。 RDS(Aurora)上のデータはdigdag+embulkによって日時バッチで連携しており、WebサーバのアクセスログやFirebaseのイベントデータはストリーミングインサートされています。

データの可視化については、昔ながらのGoogleSpreadSheet+GoogleAppScriptから、最近ではre:dashや一部Tableauを使用しています。

分析を促進するための工夫として、SQLをレビューするSlackチャンネルが合ったり、社内勉強会を行ったりしています。

しかしながら、非エンジニアが書くクエリはしばしば非効率であったり、読みにくく再利用しづらいことがあります。

なので、SQLレビュー時に気をつけている観点や、よく指摘する事項、使い回しやすいスニペット(クエリの断片)を幾つか紹介したいと思います。

中にはTimersならではの事情にフォーカスした物もありますが、広く色んな人が使える情報もあると思いますので、参考にしてみてください。

続きを読む

1つのメソッドの中で同じ例外クラスがスローされている場合にテストする方法

サーバーサイドエンジニアの鈴木です。

PHPUnit では期待する例外が発生することをテストするために、@expectedException アノテーションが用意されています。このアノテーションに例外クラス名を指定することで、そのテストが実行されたときに指定した例外クラスのインスタンスがスローされるかどうかテストをすることができます。

しかしながら、 同じ例外クラス (例えば、Exception クラス等)のインスタンスがそのままスローされているメソッドが複数含まれている場合、@expectedException アノテーションだけではどの例外が発生するのか識別することができません。

具体例を用いてご説明します。

続きを読む

プロダクトマネージャー、組織というプロダクトとも向き合う

Timersでプロダクトマネージャーしてます わた と申します。メガネとウイスキーとコーヒーを愛するメガネです。年末年始を見越して親族から「何か良いウイスキーを見繕ってくれ」と、まるでワインでいうソムリエのような依頼が来るまでになりました。

今回は「より良いものづくりのために、プロダクトマネージャーとして組織改善に立ち向かってます!」という仕事をしていたら、「もはや組織もプロダクトだよね」と思うようになったという話です。このブログの主な読者はエンジニアの方々かもしれませんが、開発するプロダクトの話でもあり、開発現場の組織の話でもあるので、実は身近な話だと思います。

なお、この記事は「Product Manager #pdmAC Advent Calendar 2017 - Qiita」の12/11担当分にもなってます。

続きを読む

「何故テストが書けないのか」というタイトルで #ios_test_night で発表してきました

前に書いていた「これまでのFammとは一線を画した機能を作るチーム配属」から一時的に別のチームになり頭の切り替えが大変なかっくん(@fromkk)です。
2017/12/05(火)DeNA社で開催されたiOS Test Night #6 - 1周年 -にて登壇してきました。

続きを読む

Timersでは各職種を積極採用中!

急成長スタートアップで、最高のものづくりをしよう。

募集の詳細をみる