Timee Product Team Blog

タイミー開発者ブログ

モバイルアプリ開発におけるメトリクスを改善することで、SLO違反の予兆や改善の傾向を認知しやすくした話

はじめに

はじめまして、Androidエンジニアのmurata(@orerus)です。

アイラ系ウイスキーを愛していますが、肝臓が弱まってきた為最近は専ら0.5%ハイボールを愛飲しています。

本記事では、タイミーのモバイルアプリ開発におけるSLO(サービスレベル目標)を設けているメトリクスのちょっとした改善事例について紹介します。

SLOとは何かといった話やタイミーで運用しているSLOについてはこちらの記事にて詳しく紹介していますので是非ご覧ください!

本記事の概略

タイミーのワーカーチームでは、モバイルアプリ開発における指標の一つであるクラッシュフリーレートをSLI(サービスレベル指標)としてSLOの運用を行っています。

しかし、長く運用する中で、SLO運用に期待されている「当たり前品質と攻めたリリースのバランスを取る」「当たり前品質の低下をいち早く検知する」「適切なタイミングでプロダクト品質への改善圧をかける」といった役割が果たされていないと感じられるケースが度々発生していました。

そこで、モバイルアプリ開発メンバーが普段観測しているクラッシュフリーレートのメトリクスを改善することにより問題を解消した事例について紹介します。

目次

  • はじめに
  • 本記事の概略
  • 目次
  • 現状と課題
  • 行った改善策
  • 結果変わったこと
  • 最後に
  • APPENDIX
続きを読む

タイミーのAndroidアプリ開発で採用しているモジュール分割の取り組みについて

はじめに

はじめまして、Androidエンジニアのsyam(@arus4869)です。

普段は愛知県からフルリモートで勤務していますが、最近は褪せ人として荒野を駆けています。

本記事の概略

本記事では、タイミーのAndroidプロジェクトで挑戦しているモジュール分割の取り組みについて紹介します。

また内容の理解を促すため、マルチモジュールについても軽くおさらいします。

本記事では、以下の方を読者として想定しています。

  • 他社のモジュール分割の手法に興味がある方
  • マルチモジュールなプロジェクトに挑戦してみたい方
  • はじめに
  • 本記事の概略
  • 現状のタイミーとアプリについて
  • 課題
  • モジュール分割とは
    • 「マルチモジュール」なプロジェクトの例
    • 分割のステップ
  • モジュール分割のメリット
  • モジュール分割のデメリット
  • 現在のアーキテクチャ
    • analytics
    • pubsub
    • component
    • style
    • core
    • repository
    • repository-impl
  • Feature Moduleによる機能分割について
  • FeatureModuleにおける画面遷移について考えていること
  • おわりに
続きを読む

マイクロサービスからモノリシックへ。チャットサーバ移行の道のり

はじめに

はじめまして、バックエンドエンジニアのぽこひで (@pokohide) です。

最近の日課はゲーム実況者「兄者弟者」の「DYING LIGHT 2 STAY HUMAN」と「エルデンリング」を見る事です。

本記事ではタイミーで長年使われていた、マイクロサービスとして切り出されたチャットサーバ(以降、旧チャットサーバと呼びます)をタイミーの中核を担うモノリシックなRuby on Railsサービス(以降、タイミー本体と呼びます)に移行した話です。

今回は移行した経緯、気にした点などを紹介します。

対象にしている読者は以下の方々です。

  • レガシーなシステムと向き合っている人
  • 無人化システム ※1 に疲弊している人

※1 : 無人化システムとは この記事 に出てくる造語で「誰も詳細は知らないが、なぜか動いているシステム」を意味する

  • はじめに
    • チャット機能とは
    • 旧チャットサーバとは
  • なぜやるのか
  • やること・やらないこと
    • やること
    • やらないこと
  • 移行計画の検討
    • 移行計画まとめ
  • 結果
  • 最後に
続きを読む

タイミーのデータ基盤品質。これまでとこれから。

  • はじめに
  • 以前のデータ基盤
  • 3つの問題解決と振り返り
    • 問題1: データパイプラインの更新遅延
      • 解決策
      • 実装
      • 振り返り
    • 問題2: 分析チームへのクエリ修正依頼の増加
      • 解決策
      • 実装
      • 振り返り
    • 問題3: ETLパイプラインにおける加工処理の負債
      • 解決策
      • 実装
      • 振り返り
  • これからの品質に関する改善

はじめに

初めまして、タイミーのDRE (Data Reliability Engineering) チームの土川(@tvtg_24)です。

本記事ではデータ品質の保守に着目してここ1年くらいで試行錯誤したことを振り返っていきたいと思います。

対象にしている読者は以下の方々です。

  • データ品質について考えている方
  • データ分析の品質担保に困っている方
  • ETLからELTへの基盤移行を考えている方

この記事は Data Engineering Study #11「6社のデータエンジニアが振り返る2021」 - connpassで発表させていただいた内容を詳細に説明したものになります。

登壇スライド: データ基盤品質向上のための一年 - Speaker Deck

動画: https://youtu.be/q9HA1S3vmcE?t=7578

続きを読む

ABテストとは?タイミーでのABテスト事例紹介

はじめに

プロダクトチームの克海です。PdMの補佐をしながらプロダクトのデータアナリストをしています。 本記事ではアプリでのABを始めようといしている方に向けてのABテストの実施の流れと事例についてまとめた記事になります。

ABテストとは?

ABテストとはランダム化比較試験ともいれる実験手法です。検証対象をランダムにグループ化して別々の介入をすることで「介入の効果」を図る手法の一つです。

f:id:timee_dev:20211208173232p:plain

メールマーケティングや広告、ウェブページの改善などのデジタルマーケティングや医学現場でも使われている手法で、多くの実験では変更を加えない「コントロールグループ」と、変更を加える「テストグループ」を作り、実験を行います。実験を開始して2つのグループの違いを検証します。2つのグループに対して介入以外同一条件な状態を作ることで、バイアスがない状態で比較することができます。 実験を繰り返すことで、ユーザーが求めている価値の知見をため、サービスやアプリの最適化していくことができます。今回の記事では、ABテストした流れと結果について記載します。

続きを読む

小さなチームでマルチモジュール開発をしてみた話

こんにちは、iOSチームの阿久津(@sky_83325)です。

今回も前回の記事に引き続き、マルチモジュール開発についての記事です。

タイミーでは2019年7月より、機能単位でFrameworkを分割するマルチモジュール開発に取り組んできました。 現在では全体の約8割がモジュール分割され、27個のモジュールよりアプリが構成されています。

ここ数年でiOSにおけるマルチモジュール開発に対する関心が高まり、多くのプロジェクトで導入され始めているのではないでしょうか。

マルチモジュール化することで次のような恩恵を受けることが出来ます。

  • ビルド時間の軽減
  • 影響範囲の限定
  • ミニアプリを用いた機能単体での動作確認

このような大きな恩恵がある一方で、なんとなく難しそうなイメージがあったり、大規模な開発チームでのみ採用されてる印象があり、導入を見送られているチームも多いのではないでしょうか。

タイミーでは、1~3名という小規模なチームでマルチモジュール開発を続けてきました。 この記事では、実際にそのような小さなチームで運用してみて感じたこと、学んだことを共有したいと思います。

マルチモジュール開発に興味のある方や、実際に導入を検討されている方の参考になれば幸いです。

  • マルチモジュール開発とは
  • 取り組んだ背景・経緯
    • 目的① ビルド時間の短縮
    • 目的② ミニアプリの導入による開発時のデバッグ効率の向上
  • どのように移行していったのか
    • 構成はFeature x Layer形式を採用
    • 課題① 既存の密結合な実装
    • 課題② 各機能間の画面遷移をどうするか
  • 実際に運用してみてどうだったのか
    • ビルド時間が短縮された
    • 開発時の動作確認が容易になった
    • 実装が矯正された
    • 仕組みとして疎結合な実装が保証された
      • 1. 動作確認(QA)のコストが減った
      • 2. 実装のキャッチアップが容易になった
      • 3. 負債が限定された
  • 終わりに
続きを読む

TypeScript の型を用いたコンポーネントの責務の明確化

はじめまして!フロントエンドエンジニアの樫福 @cashfooooou です。

タイミーでは Next.js × TypeScript で toB 向け管理画面を作成しています。 この記事は、toB向けの管理画面の開発時に筆者が気づいたコンポーネント間の責務の明確化の必要性と、 TypeScript の型を用いて責務の分割をサポートする方法の紹介しています。

続きを読む