Timee Product Team Blog

タイミー開発者ブログ

Androidエンジニアが越境して知った「人の温かさ」

こんにちは。日々プロダクト開発を楽しんでいるsyamです。

「AIがあれば、専門外の領域も一人でなんとかなるのでは」

そんな期待を持って、Androidエンジニアの私はWebフロントとバックエンド開発への越境に挑戦しました。結論から言うと、その期待は半分正解で、半分間違いでした。

この記事では、実際に越境してみて感じた「AIの限界」と、それを乗り越えるために必要だった「人の存在」について書いていきます。

AndroidからWebフロントへの越境は、比較的スムーズでした。

学生時代にWebフロントを触っていた経験があったことに加え、UIを組み立てる感覚や状態管理の考え方など、Androidと共通する部分が多かったためです。リポジトリの構成も比較的理解しやすく、「Androidとは書き方が違うけれど、やりたいことは同じだな」と感じる場面が多くありました。

また、画面で結果をすぐに確認できるのも大きかったです。書いたコードの結果が目に見えるので、試行錯誤がしやすく、AIに書いてもらったコードの検証もすぐにできました。

バックエンドは「異文化」だった

一方で、バックエンドはより苦戦しました。

DB設計、トランザクション管理、API設計……。コードを書くこと自体はAIの力を借りればなんとかなります。ただ、「なぜこの設計にするのか」「このトランザクションの境界はここで正しいのか」といった判断になると、AIに聞いても教科書的な答えが返ってくるだけで、サービスに合った明確な答えが返ってこないことが多いです。(AIの使い方について、自分が不勉強なだけかもしれませんが)

さらに厄介だったのが、リポジトリに関する知識の壁でした。リポジトリに合った実装をどうするか。これはコードの書き方以前の問題で、AIに「このリポジトリのルールに従ってコードを書いて」と頼んでも、そもそも自分がリポジトリのルール自体を理解できていなければ、正しい指示すら出せません。

そして何より大きかったのが、既存の稼働コードを壊すことへの恐怖です。ローカルで動いても本番で何が起きるかわからない。テストが通っても、見落としているエッジケースがあるかもしれない。この不安は、専門外だからこそ大きく感じました。

前に進むためにやった3つのこと

1. 悩み続けるより、まずAIに動くコードを書かせる

最初から完璧を目指すと手が止まります。そこで取った方法は「まずAIに動くコードを書かせて、それをたたき台にする」というものでした。

これは予想通り効果的で、動くコードがあると「ここはなぜこう書いているのか」と具体的な疑問が生まれます。白紙の状態で悩むより、何かしらのアウトプットがある方が次のアクションが見えやすくなりました。

2. 複雑な既存コードはAIに「解説」させる

既存のバックエンドコードを読み解くのは時間がかかる作業でした。ここでもAIが役立ちました。

「このコードが何をしているか、ポンコツエンジニアの私にもわかるように説明して」と頼むと、処理の流れや各部分の役割を整理して教えてくれました。 特に、シーケンス図にしたり、流れを図示するとよりわかりやすくなりました。これにより、既存コードの理解が早まりました。

3. AIでカバーできない部分は、素直に人に聞く

ここが重要なポイントでした。

特にリポジトリにまつわる設計判断に関わる部分は、AIに聞いても本当に合っているかの評価が難しかったです。

そういった部分は、ペアレビューの際に本職のWebフロントエンジニアやバックエンドエンジニアの方が、素直に質問すれば詳細に教えてくださいました。パフォーマンス計測の際などには、同期でレクチャーしてくださり、非常にありがたかったです。

自分では気づけない観点からのフィードバックは、AIでは得られない価値がありました。

越境できた本当の理由

振り返ると、越境がうまくいった要因は、AIだけではありませんでした。

大きかったのは、チームに「専門外からの質問を歓迎する雰囲気」ができていたことです。これは単に「メンバーが優しかった」という話ではなく、組織として専門外の人が質問することを良しとするスタンスがあったからだと思います。受け入れる側のWebフロントエンジニアやバックエンドエンジニアが、丁寧に向き合ってくれたことに本当に助けられました。

一方で、越境する側として意識したこともあります。レビューの負担を少しでも減らすために、事前にヒアリングして疑問点を整理してからレビューに出すようにしていました。「聞ける雰囲気があるから何でも聞く」のではなく、受け入れ側への配慮を持つことも、越境をうまく進めるうえで大事だったと感じています。

得られた成果

この越境チャレンジの結果、手が空いたときに新規画面の開発やAPIの実装などWebフロントやバックエンドのタスクを消化できるようになりました。チームのスプリントゴール達成に、Android以外の形でも貢献できるようになったのは大きな変化でした。

まとめ

「AIがあれば全部できる」わけではありません。

ただ、「AIと、専門外からの質問を歓迎する雰囲気、頼れる仲間」がいれば、越境のハードルはかなり下がります。

AIはコードを書く手助けや既存コードの解説をしてくれます。しかし、「なぜそう書くか」の設計判断やドメイン知識の補完には、仲間のサポートが不可欠でした。

そして、そのサポートがうまく機能するには、受け入れ側の丁寧な姿勢と、越境する側の配慮、その両方が必要だと感じています。

仲間のWebフロントエンジニアやバックエンドエンジニアの方には、非常にお世話になりました。感謝しかありません。

タイミーで、そんな仲間たちとプロダクト開発をしてみたいと思った方は、ぜひ一度お話ししましょう!

プロダクト採用サイトTOP

カジュアル面談申込はこちら

Androidチームが3倍規模に急拡大しても独自LADR(意思決定記録)は機能し続けたのか?

この記事はTimee Product Advent Calendar 2025の12日目の記事です。

1. はじめに

こんにちは、タイミーでAndroidエンジニアをしている村田(@orerus)です。

私は2年前の2023年のアドベントカレンダーで、「Lightweight Architecture Decision Recordsの導入」という記事を書きました。

当時はAndroidエンジニアの人数も少なく、少人数だからこそ導入しやすかった実験的な施策でしたが、あれから2年が経ち、メンバー数は約3倍にまで急拡大しました。

一般的に、少人数チームで機能していた「全員合意」や「ドキュメント運用」は、人が増えると形骸化したり、ボトルネックになったりしがちです。 果たして、我々の独自LADR(Lightweight Architecture Decision Records)はスケールする組織に耐えられたのか?それとも破綻してしまったのか?

約2年間の運用の「通信簿」を、チームメンバーへのアンケート結果と共にお伝えします。

2. 独自LADRのおさらい(前提共有)

本題に入る前に、我々が2年間運用してきた「独自LADR」について簡単におさらいします。 (導入の経緯や詳細なフォーマットについては、前回の記事をご参照ください)

一般的なADR(Architecture Decision Records)はアーキテクチャ選定の記録を主としますが、我々は対象を拡大し、以下の目的で運用しています。

LADRの目的

  1. 案件のコンテキスト共有: 「なぜやるのか」「背景は何か」を実装前に同期する
  2. 設計レビュー: 実装着手前に設計方針の合意形成を行う(手戻り防止)
  3. 意思決定ログ: 「なぜその実装になったか」を未来に残す

また、運用ルールとして以下の特徴を持たせています。

  • 「仕様書(Specification)」ではない
    • あくまで「その時点での意思決定のログ」です
    • リリース後に仕様変更があっても、過去のLADRは更新しません。改修時は 「新たなLADR」 を作成してリンクさせる運用です
  • 書くハードルは極限まで下げる
    • 必須項目は 「Context - 文脈」のみ
    • 記述量は執筆者に委ねており、「悩むくらいなら1行でも書いて出す」を是としています

この「仕様書としてメンテしない(=数が増え続ける)」という性質が、後述する組織拡大期の課題にも関わってきます。

3. 【定量評価】数字で見るLADRの現在地

実際のところ、LADRはまだまだ元気に運用を続けております! LADR総数も2年前の18個から約175個へと大幅に増加しました。

では、チームが拡大した現在、メンバーはこの運用をどう感じているのでしょうか? 全メンバーにアンケートを実施し、2年前と同じ項目で数値化してもらいました。

▼ LADR運用に関するアンケート結果 (※各項目10点満点 / 古参メンバー:2年前の導入初期を知るメンバー、新メンバー:その後に加入したメンバー)

評価項目 全体平均 上限 / 下限 古参メンバー平均 新メンバー平均
1. 満足度 7.9 10 / 4 8.7 7.4
2. 効率化 7.1 10 / 3 8.3 6.4
3. コミュニケーション 8.2 10 / 5 9.7 7.4
4. 課題解決効果 7.8 10 / 4 8.7 7.2
5. 学習・成長 6.5 10 / 3 8.3 5.4
6. 他チーム推奨度 7.2 10 / 3 8.3 6.6

数字から見えること

まず注目したのは 満足度の高さ(平均7.9点) です。 「人数が増えたら面倒になるだけでは?」という懸念に反し、組織が大きくなっても高い水準で支持されています。また、途中からJoinした新メンバーも一部が「満足度10点」をつけてくれていました。これは率直に嬉しいですね!

また、最もスコアが高かったのが 「コミュニケーション(8.2点)」 でした。 Squad(開発チーム)が分かれて普段の業務がバラバラになりがちな組織拡大期において、LADRが「エンジニア同士の会話のハブ」として機能していることがわかります。

一方で、「効率化」や「学習・成長」の項目では古参メンバーと新メンバーで特にスコアに開きが見られました。このギャップについては、LADR導入以前の痛みがある状態を知っている古参メンバーにとっては「LADRはマイナスをプラスに変えてくれるもの」だが、整備された状態で入社した新メンバーにとってはLADRがある状態がスタート地点(あるいは単なる追加タスクという認識)となった為ではないかと推察しています。実際、新メンバーからは「スピードが求められるシーンでボトルネックになる」という率直な意見も挙がっており、ここは今後の改善ポイントです。

4. 【定性評価】3倍規模になってもまだまだ手放せないLADR

一方、アンケートの定量評価(自由記述結果)から、LADRが一定支持されていることが伺えます。そこで、今度はその理由について考察してみます。

(※アンケートの設問と実際の回答内容については文末に付録として掲載します)

① 手戻りの撲滅と設計の民主化

LADRを出すタイミングはコードを書く前を推奨(最遅でも実装PRと同時)しています。これにより、実装後のコードレビュー(Pull Request)で議論が白熱し丸々作り直し…といった事態がなくなります。

実装前に設計のプロセスが強制的に組み込まれること、そのため設計時点でレビューしてもらうことで大規模なロールバックが発生しづらいことは大きなメリットかと思います。 (新メンバーより)

また、これから作る機能について「こうしたいんだけど、どう思う?」とLADRを通して気軽に相談できる文化が、心理的な負担を下げているようです。

② コードレビューの純度向上

LADRで設計の合意が取れているため、実際のコードレビューでは「設計議論」をする必要がなくなります。

コードレビューをする際に、設計周りのコメントをする必要がほぼ無くなる為レビュー側としても楽。 (新メンバーより)

これはレビュアー・レビュイー双方にとって大きなストレス軽減になっています。余談ですが、我々はAIコードレビューも導入しており、単純なロジックミス等はAIが先に指摘してくれる状態となっているため、相乗効果で実装PRのレビュアー負担を大きく減らすことができています。

③ 心理的安全性とオンボーディング

個人的に一番嬉しかったのが、新しく入ったメンバーからの以下の反応でした。

過去ログを参照してみましたが Light なこともあり書き方も人それぞれだったためいい感じに肩の力を抜いて書く事ができました。 実際 LADR を書く中でチームメンバーに質問したときも丁寧に教えてもらえたことを覚えています。 (新メンバーより)

書き方の参考にとてもなった。 足りてない部分や書き方など、チームメンバーが丁寧に指摘してくださった印象があり受け入れ体制は丁寧に感じた。 (新メンバーより)

ドキュメント文化が「参入障壁」にならず、むしろ「チームに馴染むためのツール」として機能していました。その結果がコミュニケーションの高得点に繋がっているのかと感じました。

5. 課題をどう乗り越えているか? 〜AIという新たな相棒〜

もちろん、良いことばかりではありません。人数が増え、ドキュメントの数が膨大になるにつれて顕在化した課題と、2年前には予想していなかった解決策について触れておきます。

課題1:過去のドキュメント、どうやって探すのだ問題

「仕様書」として更新せず、ログとして積み上げる運用のため、GitHub上のファイル数は増え続けます(現在約175個)。2年前の懸念通り、人間が目で探すのは困難になりつつあります。

しかし、この課題はAIの進化によって思わぬ形で解決されていました。

最近は AI が便利なので Claude Code に 「この項目とその時書いた設計を LADR から探してサマライズしてください」 などと投げ掛けています。 (新メンバーより)

新しくLADRをつくる際に既存のLADRをAIに探させることがあったがよく探してくれる印象 (新メンバーより)

GitHubのリポジトリをAIに読み込ませることで、「検索性」の問題はAIが解決してくれました。これは2023年時点では想像していなかった嬉しい誤算です。*1

課題2:レビューのボトルネック化

一方で、組織拡大に伴う悩みもやはり出てきています。現在はLADRが出されるとAndroidメンバー全員がレビュアーにアサインされます。これがスピード感を損ねる要因になりつつあります。

実装とLADRのレビューからマージまでには数日かかっている印象があります。 スピードが求められるシーンでも、LADR をレビューに出しながら並行して実装し PR までたてた後 LADR 側で指摘をもらった場合に、実装の PR を LADR を見ながら修正する必要もありコンテキストが分断されるのでネックかもしれません。 (新メンバーより)

マージ条件としては「Android Chapter LeadのApproveのみ必須」という緩めな形にはしているものの、より多くの人の目に触れればそれだけコメントの数も必然的に多くなります。

ここについては、「10人程度までが見れる範囲。15人を超えたらコードオーナー制や分散レビューが必要かもしれない」といった意見も出ており、まさに今のフェーズが運用の転換点であるとも感じています。

課題3:AI時代の「思考停止」リスク

AI活用は書くハードルを劇的に下げてくれましたが、副作用も無視できません。 実際、定量評価における「学習・成長」のスコアが新メンバーで顕著に低かった(5.4点)のは、「AIが下書きをしてくれる分、自分の頭でゼロから言語化して悩む機会が減った」ことの裏返しである可能性があります。

AIにほとんどを書いてもらうため、記述するコストを小さくすることに意識が向くことが多くなったと感じる。 (新メンバーより)

AI活用自体は組織的にも推進しており歓迎するところですが、「AIに下書きさせて、人間が思考を整理する」という健全なバランスをどう保つかが、今後の新たな課題点となりそうです。

結論:約3倍規模になってもLADRは必要だったか?

結論として、 「必要だし、むしろ人数が増えた今こそ手放せない」 存在です!

約3倍規模に増えても、LADRは形骸化することなく、チームの意思決定の質とコミュニケーションを支え続けてくれています。 特に、新しく入ったメンバーがこの文化をポジティブに受け入れ、すぐに適応してくれている姿は、導入者として何よりの成果だと感じています。

ただし、(努力目標とはいえ)「全員で全部見る」運用はそろそろ限界に近づいています。 次のフェーズ(10人〜20人規模)に向けて、AI活用を前提としつつ、レビュー体制の分散化など、仕組みのアップデートを進めていくつもりです。

この記事が、拡大するチームでの情報共有やドキュメント運用に悩む方の参考になれば幸いです。

タイミーのプロダクト開発に興味を持ってくださった方、よろしければぜひ一度お話ししましょう!

プロダクト採用サイトTOP

カジュアル面談申込はこちら

付録: アンケート自由記述の全回答まとめ

アンケートの自由記述設問、および全回答です。

クリックしてアンケートの全回答(原文ママ)を見る

### 1. 組織拡大(Scale)に関する変化

**Q. 人数が増えてLADRのレビュー依頼も増えましたが、レビュー負荷や承認までのスピード感はどう変化しましたか?(ボトルネックになっていませんか?)**

- CLとして全てのLADRを見るのでその分負荷は増加しているが、いうほどLADRの数自体が多く無いため変化は感じない
- LADRが最近になってApproveまでのスピード感が落ちた気がします。他のも見るPRが増えたことや、AIによって書かれる分量が増えたので把握する量が増えたことなどが要因な気がします
- 多少のボトルネックは発生しているように感じますが、それを補って余りある効果があると思います
- (自分も含め)忙しさの度合いによりLADRのレビューが若干後回しになってしまっている印象があり、開発スピード上がったという印象はそこまで感じていないが、著しく開発スピードが落ちた、という印象もない
- レビュー負荷は良いが、レビュー完了までに時間がかかりリードタイムが悪くなるのに貢献している気がして申し訳ない
- レビューはLADRがあることでやりやすい
- 個人的に事前に設計を考える点はメリットである反面、メンバーの設計をレビューするのは特に自分が持っているコンテキストの外側だと心理的にもハードルが高く、なかなかレビューに参加できなかったりします。実際 LADR のレビューからマージまでには数日かかっている印象があります
- 基本的にはみるようにしている、特に負担と感じたことはない。忙しいタイミングかつ多くのメンバーに承認されている状態だとクリティカルではなさそうな気になりはコメントしない・残さないことは何度かあったかもしれない

**Q. 過去のLADRの数がかなり増えているはずですが、現在「過去の意思決定」を探すのは容易ですか?**

- GitHubの検索機能やローカルでの検索を使っているのでいうほど困ってない
- そんなに過去のLADRを探すケースがないので、困っていないです
- Githubのblobから検索して探しています。検索容易性は十分あると思います
- 過去の意思決定を探すのは容易。すべてのLADRを目を通しているので脳内INDEXがあり AndroidStudio で検索すれば出てくる。最悪思い出せなくても ladr フォルダにまとまっているので探し出すのに困っていない
- AIがあるので問題ないかも
- 特定のLADRを読んだときに、これは今も正しい情報なのかの確信は持てていない
- 最近は AI が便利なので Claude Code に「この項目とその時書いた設計を LADR から探してサマライズしてください」などと投げ掛けています
- 普段の開発において既存のLADRを参照する機会があまりないかも(Androidにおける開発の実装方針が大きくはずれることがなさそうなことに起因していそう)。新しくLADRをつくる際に既存のLADRをAIに探させることがあったがよく探してくれる印象

**Q. 書くこと自体の心理的・工数的ハードルについて、現在の率直な感覚は?**

- AIによって、より書くハードルは下がった気がします、レビューするハードルは分量の増加によって上がったかもなぁという感じです
- どのくらいの内容で書けば良いかはあまり肌感覚がなく、後から「書いてください!」と言われることもあります
- 仕様が固まっていなくても方針や予定を含んだ内容で書いてもOKとなっているので、書くことへの心理的ハードルはない。ある程度仕様をまとめたりしなければならないので工数的ハードルは忙しい時は少し気になるが、実装PRレビュー時などに使えることを考えると、工数的ハードルもほとんど感じていない
- あまりない
- 作りながら仕様が変わるのでドキュメントをアップデートし続けるのが難しい
- プロダクトタスクの立ち上がりから実装までの間にどうしても LADR を書く工数が少なからず発生してしまうこと、作りながら仕様を決めることもあるためその都度 LADR に立ち戻ってドキュメントを修正することになり勢いが削がれてしまう点は課題かなと感じます。スピードが求められるシーンでも、LADR をレビューに出しながら並行して実装し PR までたてた後 LADR 側で指摘をもらった場合に、実装の PR を LADR を見ながら修正する必要もありコンテキストが分断されるのでネックかもしれません
- AIによって書きやすくなった印象がある。実装を終わらせてから論点を整理させるといった使い方もできそう

### 2. オンボーディング・新メンバー視点

**Q. 入社時や新しい領域を触る際、過去のLADRを読むことは役立ちましたか?**

- 役に立ちそうとは思うが、直接恩恵を受けたというエピソードはないかも
- 仕様や経緯が記載されているのでその機能に手を加える際の参考になりました。ただ、Git 管理なのでドキュメントの更新も少しハードルがあると感じていて特に仕様について見つけた情報が最新かの判断が難しい気もしています

**Q. 初めてLADRを書いた時、既存のLADRは参考になりましたか? また、チームの受け入れ体制はどう感じましたか?**

- 書き方の参考にとてもなった。足りてない部分や書き方など、チームメンバーが丁寧に指摘してくださった印象があり受け入れ体制は丁寧に感じた
- 既存のLADRは、ある程度参考になった(ある程度、なのは粒度がそれぞれ異なりどれに合わせれば良いか迷ったと思うため)。レビューで指摘してもらえブラッシュアップ可能なため、わからないままで終わるとかがなく受け入れ体制は良いなと感じた
- LADRを書くこと以外にも初めてのことが多くて書いたが、あまり深く考えていなかった気がする
- 過去ログを参照してみましたが Light なこともあり書き方も人それぞれだったためいい感じに肩の力を抜いて書く事ができました。実際 LADR を書く中でチームメンバーに質問したときも丁寧に教えてもらえたことを覚えています
- 他のLADRを参考に書いた記憶、書き手によってフォーマットが異なっていた気がしている。AI主体で書いてくれるようになれば記述のハードルやフォーマットもそろいそう

### 3. 未来へ向けて

**Q. 独自LADRの「ここが好き」(一番気に入っている点)**

- 自分・所属Squad以外の開発内容についても知れ、自身の意見を述べる機会が与えられるところ。意思決定意図をリポジトリ内に残せるところ
- Planモードの先駆けてきな感じで、最初に仕様を自身でも整理できるのが良いですね
- みんなでレビューすることにより認識がそろえられるところ
- これからこういった機能を開発したい、こういった機能を入れたいんだけどどう思う?を気軽に共有できる点
- 他のメンバー・squadが何をしているのか知ることができる。コードレビューをする際に、設計周りのコメントをする必要がほぼ無くなる為レビュー側としても楽
- とにかく書くハードルを下げていること
- 実装前に設計のプロセスが強制的に組み込まれること、そのため設計時点でレビューしてもらうことで大規模なロールバックが発生しづらいことは大きなメリットかと思います

**Q. 改善したい点・今後への提言**

- もっと書きやすいように項目を取捨選択・整理したい
- やはり把握する量が増えるので、LADR管理者の負担が心配になってきます
- 全員レビューは人数が増えると限界を迎えると思うので、他に認識を揃える方法を考えるべきだと思います
- 15人を超えてくるとすべてのLADRに目を通すことはかなり負担になりそうに感じるため、そこまでスケールはしないやり方かな、というところに限界を感じる。10人くらいまでが見れる範囲だと思っている。もし今の倍の人数になるならば半分くらいのメンバーを自動アサインなどにし...など分散する仕組みがあっても良いかも
- レビューを締め切るタイミングが難しい為、一次コメントは3日以内にとか決めたいかも
- 仕様書駆動開発になった時にLADRが仕様書っぽくなったりするのか妄想をする
- 物理的・心理的ハードルの課題も散見され、特に高速なバリューデリバリーが求められる中で小さくないボトルネックになりつつある気がします。とは言え数10人規模になってくると rails chapter と同様に領域ごとのコードオーナー制も視野に入ると思うのでそこまで人数がネックになることも少ないかなとは感じます

*1:※AI利用に関しては、社内のセキュリティガイドラインに則り、学習利用されない設定(エンタープライズプラン等)で行っています

英語力がチームを変える:オフショア開発を成功に導いたエンジニアの学習体験記

はじめに

こんにちは、バックエンド・エンジニアのMaxx (マックス) です。

私は現在、オフショア開発チームのブリッジ・エンジニアという役割でプロダクト開発に携わっています。

本記事は Timee Product Advent Calendar 2025 の12日目の記事として、私が2年前から取り組んでいる英語学習の体験を共有します。

英語を学習している方々の参考になれば、または興味がある方々が学習を始めるきっかけになればうれしいです。

オフショア開発チームと英語

「チームの生産性を上げ、成果をたくさん出し、そしてそれを価値につなげていくには私に英語力が必須だ、やるしかない!」

これは私がオフショア開発チームに携わって感じてきたことで、また英語学習のモチベーションを維持させてくれているものです。

私が所属するオフショア開発チームは、私とオフショア先の外国籍の方々で構成され、共通言語は英語です。私の役割は、チーム内の作業管理、チーム内外の中継、またエンジニアとしての技術的な支援などで、情報伝達と意思疎通が必須です。

これらを怠ると、理解の浅さによる考慮漏れ、誤解による手戻り、信頼性の不足または心理的な壁によるモチベーションの低下などを起こします (昔も今もときどき起こります) 。

オフショアメンバーの中に日本語話者がいるので通訳をお願いできるのですが、複雑な仕様や設計の意図などの技術的な話題の場合は、エンジニア間で直接話したほうが効率がよいですよね。

ということで、チームが上記のような問題を防ぎ、よい成果を出すためには英語でのコミュニケーションが必須な環境なのです。

英語学習の動機と目標

そもそも、なぜ英語学習を始めたのか、その根底にあるのは、単純な「好奇心」と「向上心」でした。

実は私はソフトウェア・エンジニアとして20年以上のキャリアがあり、これまでソフトウェア・エンジニアの技能に対する好奇心や向上心によって自身を成長させ、この業界に生き残ってきました。

20周年を迎えて、さらに自身を非連続に成長させそうなものはないかと未知の領域を見渡したときに見つけたのが英語で、そこで次のように考えたのでした。

(今であればLLMも未知の領域の候補になりましたが、当時はこれほど盛り上がっていませんでした。)

  • 「シニアになった私でも、今から成長できるのか? やってみるしかない!」

  • 「英語力が身についたら、人生の可能性はどう広がるのか? やってみるしかない!」

そして、英語の環境であるオフショア開発チームのブリッジ・エンジニアという役割に挑戦したのでした。

目指す英語力

目指す英語力はCEFRのB2です。

CEFR (ヨーロッパ言語共通参照枠) は外国語の習熟度を測る国際基準で、B2は上から3番目、「中の上」にあたるレベルです。

ヨーロッパ言語共通参照枠 - Wikipedia

このレベルを目指す理由は、『エンジニア組織の英語化変革 EX』という書籍の内容を参考にしています。この書籍に「開発チームのすべてのコミュニケーションを英語化するにはB2が目安である。」、「英語のバックグラウンドがないフルタイムエンジニアでも約2年で全員がB2レベルに達しており十分に到達できる水準と考えています。」と書かれており、これは具体的 (Specific) 、達成可能 (Achievable) 、期限あり (Time bound) で、かつ2年という長さが自分にちょうどよいと感じました。

direct.gihyo.jp

また、初学者がCEFRのB2レベルの英語力を身につけるには、600時間の学習が必要なようです。

今年の学習成果

では、この1年の英語学習を振り返ります。

学習内容と時間

学習教材の約95%は、NHKの語学番組を活用しました。1回5〜15分という長さが継続しやすく、レベル別に番組が豊富なため、自分に合った教材が見つけやすいのが魅力です。

視聴している主な番組 *()はCEFRのレベルです

学習時間は合計で390時間でした。1日平均すると約1.1時間。主に夜22時以降、番組の視聴と教材のテキストで学習しました。

毎日やること、そしてやりすぎないことが私のおすすめです。

やる日とやらない日があると、やらない日の楽さを知っているのでやる日が少し辛く、よしやるぞと心を整えるまで時間がかかります。一方で毎日やる、つまりやるしかない!という状況にすると心を整える必要がありません。

あとは、やりすぎないこと、つまりがんばりすぎないことです。がんばると、短期なら気合いでなんとかなりますが長期は辛いです。

英語力の推移

成長を客観的に測るため、今年は定期的に Duolingo English Test を受験しました(受験費用をサポートしてくれる社内制度「エンジニア桜」に感謝!)。

productpr.timee.co.jp

今年のスコア推移

テスト日 認定スコア CEFR判定
2025年10月11日 95 B1
2025年7月20日 90 B1
2025年4月5日 85 B1
2025年2月10日 85 B1
2024年12月15日 85 B1

ご覧の通り、最初の3回はスコアが全く変わりませんでした。 「もう成長の余地がないのか?」「やり方が間違っているのか?」と不安に襲われることもありましたが、「英語学習の成長曲線はある日突然跳ね上がる」「英語は筋トレと同じだ、続けると必ず上達する」という先人の言葉を信じて継続しました。

その結果、4回目、5回目と連続でスコアが上昇しました。単なる幸運ではなく、着実に力がついていることを実感できた瞬間でした。

オフショア開発チームの成長

次に、私の英語力の成長がチームにもたらした変化を振り返ります。

大きな変化として、チームは1年前と比べて、より影響範囲が広く難易度の高いプロダクトゴールをまかされ、そしてやり遂げられるようになりました。

私の英語力と関連する要因は、もちろん情報伝達や意思疎通の質や量が向上したからかと思いますが、それに加えて私の気持ちも英語でも伝わるようになり、信頼関係を構築できたからだと思います。この変化によって積み上がった成果がPdMの信頼を獲得し、そしてより大きなプロダクトゴールをまかされることに繋がったのだと思います。

小さな変化は、エンジニアたちが私にビデオ通話をしてくれる機会が増えたことです。

私の英語力が上がったことで、私に対する彼らのコミュニケーションの負荷が下がったのだろうと思います、話したほうが早い的な。私のほうは英語での言語化に精一杯で発音も文法もひどいと思うのですが、それでも内容が伝わっているようでうれしいです。

最後に今後の抱負

現在の英語力はDuolingo English Testのスコアが95点で、CEFRのB1です。 このスコアがあと5点上がって100点になると、目標のCEFRのB2になります。 また、学習時間は去年から合計して606時間となり、こちらは目標の600時間を超えました。

ようやく、、、ここまできました。この調子であればおそらく最短で次回のテストで、最長でも半年以内に到達できるかと思います。

次回のテストは今年の年末の予定です。目標を達成して年を越したいところです。

認定スコア CEFR
155 ~ 160 C2
130 ~ 150 C1
100 ~ 125 B2 目標はここ
60 ~ 95 B1 いまここ
10 ~ 55 A1 ~ A2

一方で、自身の英語力が目標に近づいたことで、その英語力がどの程度かを知り、少し期待以下であることに気づきました。

「自分の英語力なんてまだまだだぞ、この程度で満足していいのか?」という気持ちです。 ということで、目標を達成した後も引き続き学習を続ける予定です。

もしかしたら、自分との戦いである点も筋トレと同じで終わりはないのかもしれません。。。笑

引き続き、オフショア開発チームと英語の両方をがんばってまいります!

ということで、以上が私の体験談でした。ご参考になればうれしいです。

2025年もお疲れ様でした!

最後に、タイミーでは一緒に働くメンバーを募集してます!ご興味があればぜひお話ししましょう!

プロダクト採用サイトTOP

カジュアル面談申込はこちら

「機能開発」だけがPdMの仕事か?「総合格闘技」としてのGrowth PdMの面白さ

はじめに:「タイミーって、もう完成してるんでしょ?」

「タイミーはIPOもしたし、プロダクトも組織も出来上がっているから、今から入ってもやることがないのでは?」 候補者の方とお話しする中で、そんな声をいただくことがあります。

正直に言います。めちゃくちゃ勿体ない誤解です。 むしろ、IPOを経て確かなアセットが揃った今だからこそ、「プロダクト開発を科学する」という最高に面白いフェーズに入っているのです。

今回は、コンサル・スタートアップの事業統括を経験した私が感じる、「Growth領域の知的な楽しさ」と、その先に待っている景色についてお話しします。


自己紹介

みなさん、初めまして!

タイミーでスポットワーク事業のGrowth全体を担当しているYang Haoと申します。

新卒で経営コンサルに5.5年従事し、その後、営業SaaSのスタートアップにてプロダクト責任者・事業統括を2.5年経験しました。2025年4月にタイミーに入社し、現在Group Product Managerとして10名弱のPdMのピープルマネジメントも行っています。


1. Growthとは「コツコツヒットを重ねながら、常にホームランを狙うゲーム」

そもそもGrowthとは何でしょうか。単にUIを微調整してCVRを0.1%上げるだけの仕事ではありません。 私は「顧客価値を提供し続けるために、データドリブンで反復し続けるプロセス」だと定義しています。

GAFAをはじめとする世界のトップテック企業には、一般的に必ずと言っていいほど強力なデータドリブンGrowthチームが存在します。彼らは機能開発チームとは異なる筋肉で、事業を非連続に成長させています。

なぜこれが「面白い」のか?

最大の魅力は、「即座にフィードバックが得られること」と「大胆なホームランを狙えること」です。

通常の機能開発が数ヶ月かけてリリースするのに対し、Growthは毎日バッターボックスに立ちます。 実際にタイミーのGrowthチームでは、月間10本前後のリリースを行い、常に7〜8本のABテストが走っています。

「この仮説はどうだ?」「ダメか、じゃあ次はこうだ」

すぐに数字としてフィードバックが返ってくるため、高速でPDCAを回しながらヒット(改善)を積み重ねることができます。

しかし、それだけではありません。 確かなデータがあるからこそ、勘や度胸に頼らず、「ここを変えれば事業が跳ねるはずだ」という特大ホームラン(非連続な成長)を狙って打ちにいくことができる。 この「確実性」と「爆発力」の両方を追い求めるヒリヒリ感こそ、Growth PdMの醍醐味です。


2. 「コードを書く」だけが解決策じゃない。総合格闘技としてのGrowth

もう一つの面白さは、「解決手段(レバー)の多様さ」にあります。

AIの進化により、「作る」ことのハードルは劇的に下がりました。これからのPdMの真価は、「作る」ことそのものよりも、「どのレバーを引いて事業価値を最大化するか」という意思決定に問われます。

Growth PdMが扱うレバーは、プロダクトだけに留まりません。例えば以下のような選択肢を複合的に組み合わせます。

  • Productレバー:UI/UXの改善、新機能の追加
  • Marketingレバー:獲得ターゲットの変更、メッセージの刷新、新規獲得チャネルの立案
  • Biz/Opsレバー:営業オペレーションの変更、自動化によるCS対応コストの削減
  • Strategyレバー:ダイナミックプライシング、課金モデル、インセンティブ設計の変更

「今回は開発せずに、LPや提案活動で仮説検証をしよう」「ここはプロダクトで自動化して、CSのオペレーションコストを下げながら、リードタイムを短くしよう」

このように、事業全体を俯瞰して最適な手を打つ「総合格闘技」のような面白さがあります。


3. キャリアステージで変わる「Growthの楽しみ方」

Growthの面白さは、PdMとしてのキャリアステージによって味わい深さが変わる領域です。

ジュニアPdM:プロダクト開発の「密度」を味わう

とにかく、打席に立てます。0-1フェーズでは仕様策定からリリースまでに数ヶ月かかることもありますが、Growthフェーズではそのサイクルが圧倒的に早いです。 「仮説→要件定義→開発→リリース→検証」というプロダクト開発の一連のプロセスを、短期間で何度も回すことができる。 濃密な開発経験を浴びるように積めることは、PdMとしての足腰を鍛える上で最高の環境です。

ミドルPdM:「再現性」と「チームづくり」の楽しさ

単発の施策ではなく、チームとして勝ち続けるための仕組みづくりが面白く感じられるようになります。 「どうすればABテストの勝率が上がるか」を突き詰め、プロダクトで再現性高く数値を作れるようになると、経営からの信頼(投資)も集まり、チームも急拡大します。 そこで必要になるのが、「人を育て、組織で勝つ」マネジメントの視点です。プレイヤーとしての個人の成果を超えて、チーム全体のレバレッジを効かせる面白さが出てきます。

シニアPdM:「事業そのもの」を動かす楽しさ

ここまで来ると、前述した「Strategy」や「Biz/Ops」のレバーを含め、事業全体を動かすダイナミックな采配が可能になります。 プロダクトの変更によって数百名の営業組織の動き方を変えたり、プライシング戦略で収益構造を進化させたりする。 これはもはやPdMという枠を超えて、事業をハンドリングする予行演習そのものです。


4. なぜ「タイミー」がGrowthの実験環境として最高なのか

「Growthが面白いのはわかったけど、別にタイミーじゃなくてもいいのでは?」 そう思うかもしれません。しかし、今のタイミーだからこその環境があります。

① 「有意差」が出る圧倒的なトラフィック

Growthの天敵は「データ不足」です。アーリーフェーズのスタートアップでは、ABテストをしようにも母数が足りず、検証に時間がかかります。 タイミーでは現在、月間100万回以上のマッチングが生まれています。今日打った施策の結果が、明日には明確な「有意差」として現れる。この規模で高速な実験ができる環境は、国内でも極めて希少です。

② 「攻め」の実験にリソースを投下できる

これが一番リアルな話ですが、資金やリソースに余裕のないフェーズでは、どうしても目先のキャッシュ獲得に追われ、大胆な実験ができません。 タイミーは、IPOを経て事業基盤が強固になったからこそ、守りに入るのではなく、「次なる非連続な成長」のためにリソースを大胆に投下できます。 失敗を恐れずに仮説検証にベットできる。この「攻めの姿勢」を支える環境があるからこそ、Growth PdMは思い切りバットを振ることができるのです。


おわりに:キャリアは後からついてくる

冒頭で「Growthは面白い」と書きましたが、結果としてこの領域に熱中することは、キャリア形成においても非常に合理的です。

事業全体を見渡し、あらゆるレバーを引いて数値を伸ばす経験は、将来どのようなプロダクト、あるいは事業を任されたとしても通用する「本質的な事業推進力」になります。

  • 完成された組織でルーティンを回すのではなく、ヒリヒリするようなスピード感で実験を繰り返したい。
  • プロダクトという枠を超えて、事業を伸ばす手触り感を味わいたい。

そんな「知的好奇心」旺盛な方にとって、今のタイミーは最高の挑戦の場です。 「ちょっと面白そうかも」と思った方、ぜひカジュアルにお話ししましょう。この巨大な挑戦環境で何ができるか、一緒に妄想しませんか?


みんなでワイワイ発信活動をやってく環境いいな〜と思う方、ご興味があればぜひお話ししましょう!

プロダクト採用サイトTOP

カジュアル面談申込はこちら

チームの認識を揃えるためのDatadogダッシュボード設計

はじめに

こんにちは!絶賛採用中 のタイミーのDevPlatformチームの @MoneyForest です。なお、この記事は Timee Advent Calendar 2025 シリーズ2の11日目の記事です。

本記事ではタイミーの「アプリケーション定点観測会」で取り扱っているDatadogのダッシュボードを改善した件について記載します。

アプリケーション定点観測会とは

タイミーにおける「アプリケーション定点観測会」は「アプリケーションの品質に関わるメトリクス、イベント、ログ、トレース(MELT)を週次のサイクルで観測し、それぞれの事実をチーム全員で確認しフィードバックループを回すこと」を目的として行われます。

平たくいうとDatadogのダッシュボードを全員で眺め、認識を合わせたり、確認や改善のアクションを決定する会です。

このような取り組みは各社のテックブログでも散見され、SREの取り組みとしては一般的なもののように思います。(各社「SLO定例」「モニタリング定例」「パフォーマンス観測会」などさまざまな名前がついているようです。)

それぞれ何を重視するかで特色があるとは思いますが、基となる考えはおそらくSRE本の「31章 SREにおけるコミュニケーションとコラボレーション」の「31.1 コミュニケーション:プロダクションミーティング」の以下の内容に拠るところではないでしょうか。

しかし、私たちが行うミーティングの中で、平均以上に有益なものが一つあります。それはプロ ダクションミーティングと呼ばれるもので、SREチームが自分たちと他の参加者に対し、担当す るサービスの状況について十分に注意を払って明確に説明をすることによって、すべての関係者の 全般的な認識を高め、サービスの運用を改善するために行われます。概して、これらのミーティン グはサービス指向で行われるもので、直接的に個人の状況のアップデートに関するものではありま せん。このミーティングが目標とするのは、ミーティングが終わった後に、進行中のことに関する 全員の認識が同じになることです。プロダクションミーティングには他にも大きな目標がありま す。それは、サービスに対するプロダクションの知恵を持ち寄ることによって、サービスを改善す ることです。すなわちサービスの運用パフォーマンスの詳細について話し合い、それを設計や設 定、実装と関連づけて考え、問題解決の方法を推奨するということです。定期的なミーティングに おいて設計上の判断をサービスのパフォーマンスと合わせて考えてみることは、きわめて強力な フィードバックループになります。

(出典:Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy 編、澤田武男・関根達夫・細川一茂・矢吹大輔 監訳、玉川竜司 訳『SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム』オライリー・ジャパン、2017年、p.448)

これまでの会とその課題

「アプリケーション定点観測会」は概ね目的を果たしていましたが、「チームの認識が揃わない」 ということがしばしばありました。

  • どこを見るかが揃わない: 会議の最初に「各自でダッシュボードを眺めて気になった点を挙げる」という時間を設けていましたが、人によって見始めるウィジェットが違うことで時間内に見切れなかったり、見る人によって解釈が異なったりしていました。
  • 良いか悪いかの判断が揃わない: 例えばCPU Utilizationのようなウィジェットは、100%に達していなければOKと一瞬で判断できる一方、Y軸が100に固定されていないと自動でウィジェットが縮尺してしまうため、パッと見て判断できず無駄な時間がかかることがありました。
  • 次のアクションが揃わない: メトリクスの見方が人によって違うため、「このグラフのこの変化はどういう意味か?」といった認識合わせの議論に時間が割かれることもしばしばありました。

このようなケースがときおり発生しており、会が非効率になってしまうことで気づくべき変化を見落としてしまうことは避けたいと考え、ダッシュボードを改善しました。

改善アプローチ

課題に対応する形で、3つの改善を行いました。

課題 改善
どこを見るかが揃わない ダッシュボードの集約
良いか悪いかの判断が揃わない 明確なウィジェット
次のアクションが揃わない 観点の明記

1. ダッシュボードの集約 ─ 「どこを見るか」を揃える

プロダクトごとに似たようなダッシュボードが並んでいたので、テンプレート変数を使い集約できるようにしました。またプロダクト・非同期処理・データストアなどでダッシュボードが分散していたので、1つのダッシュボードに集約しました。

テンプレート変数とはダッシュボードに定義できる変数のことです。クエリに$をつけることで変数を参照でき、似たようなウィジェットを複数作らなくてもよくなることで保守性が上がるメリットがあります。

2. 明確なウィジェット ─ 「良いか悪いか」を揃える

ウィジェットについて「閾値に抵触していないか?」「変化はリリースによるものか?」といった点がパッとわかるようにしました。

Y軸の固定とマーカー

例えばなんらかの使用率(Utilization)を見る場合、Y軸を100%に固定し、85%と100%にマーカーを引くことで、一目で状態が把握できるようになります。

マーカーを設定する理由は、意思決定をブレさせないためです。たとえばある日ではCPU使用率が80%のときに「なんかやばくね?」と判断して調査したのに、それより上の85%のときは「まだ余裕あるし対応しなくていいか」となってしまうことがあります。人によって、あるいはその日の気分や残り時間によって判断基準が変わってしまうことがあるのです。

では「CPU使用率が85%を超えた場合は一次調査する」と決めるだけでいいかというと、見逃してしまったり忘れてしまったりのリスクが残ります。マーカーで線を引いておけば「85%を超えたら調査や対応を検討する」との決めが視覚的に表現でき、ブレがなくなります。

マーカーを2つ引く理由にも意図があります。85%(ワーニング) はスケールアウトやスケールアップを検討する目安です。この段階で気づければ、余裕を持って対応できます。観測会では主にこちらを取り扱います。100%(クリティカル) はアラートが発報されるラインであり、すでに問題が顕在化している状態です。通常こちらはアラートによって取り扱うため、観測会では事後的な確認になります。この2段階にすることで、判断がしやすくなります。閾値自体が大切ではなく、「対応を開始するライン」と「抵触したら問題になるライン」を常に表示しておくことが大切です。

前週比のオーバーレイ表示

Datadogのcalendar_shift関数を使って、前週のデータを点線でオーバーレイ表示しています。これにより「先週と比べてどうか」が一目でわかります。

そもそも前週比がないと何が困るのでしょうか?グラフを見ても「この数値は高いのか低いのか」が判断できません。例えばエラー数が100件あったとして、それが普段通りなのか異常なのかは、比較対象がないとわからないのです。結果として「なんとなく大丈夫そう」という曖昧な判断になったり、正常なのに異常と誤認して無駄な調査をしてしまうことがあります。

「前週比」という点にもポイントがあります。前日比だと曜日による変動に惑わされます。例えばリクエスト数が平日と休日で大きく異なるプロダクトの場合、月曜と日曜を比べてもあまり意味がありません。前月比も同じく週が一致しない場合があるので、使いづらいです。そのため「前週の同じ曜日」との比較がちょうど良いと考えました。この辺りはプロダクトの特性にもよって適切な設定が変わってくると思われます。

リリースとの関連付け

メトリクスに変化があったとき「それはいつのリリースが原因か?」を特定したいことがあります。リリースと紐づいていないと、変化の原因を探すために別途デプロイ履歴を確認する手間が発生します。

用いるメトリクスもそういった観点を踏まえて選びます。CloudWatchのaws.ecs.cpuutilizationメトリクスはECSサービスレベルしかわからず、どのコンテナを改善すべきか、リリースとの関連がわかりづらいです。Datadog AgentサイドカーのFargateメトリクスで使用率を計算し、task_versionでグルーピングすることでリリースによる使用率の推移を観測できます。(デプロイのイベントをDatadogに送信するのもありかと思います)

sum:ecs.fargate.cpu.usage{$service_name} by {task_version}
/ sum:ecs.fargate.cpu.task.limit{$service_name} by {task_version} * 100

3. 観点の明記 ─ 「次のアクション」を揃える

ウィジェットの横にメモを必ず設けるようにしました。

メモがないとグラフが異常なように見えても「で、どうすればいいの?」となってしまうことがあります。自分が詳しければ問題ない、または詳しい人がいれば説明してくれますが、その人が休みだと判断できません。メモに「異常時は〇〇を確認する」と書いてあれば、誰でも次のアクションを取れます。ネクストアクションについて書きすぎると目が滑ってしまうので、あくまで簡単な記載にとどめます。ランブックへのリンクにするのもよいでしょう。

逆にメモが書けないような「とりあえず出してみている」ウィジェットは今回を機にバッサリ整理しました。そのようなウィジェットは時間が余った際に探索的に見るものと位置付けています。

余談ですが、スキルアップやバックログアイテムの発見につながるため探索的に見ることも重要だとは考えています。一方で、「予防」のアクションを取りたいのか「発見」のアクションを取りたいのかで適切なやり方は異なるため、会を分けるべきと考えています。

メモには「メトリクスの説明(どういったメトリクスで、どういった事象を引き起こすか)」「望ましいメトリクスの状態」「異常時に取るべきアクション」などを簡単に記載しています。

実際のダッシュボードでは以下のような形式でメモを記載しています。

## 🗒️ Check!!
- 前週比(点線)で異常に増えていないか
- アプリケーションのエラーなのでLogsから原因を確認
## 🗒️ Check!!
- Task Limit(赤線)に抵触してないか
- 抵触している場合スケールアップ or 性能改善が必要
## 🗒️ Check!!
- 前週比(点線)で異常に増えていないか
- AWSの「Troubleshoot your Application Load Balancers」のドキュメントを参考に対応する
- 4xxが跳ねている時はWAFがブロックして403を返していることが多く、
  その場合は攻撃を弾いているので特に問題はない

おわりに

このような工夫をすることで、「どこを見るか」「良いか悪いか」「次に何をするか」について以前よりチームの認識が揃うようになりました。認識合わせに費やしていた時間が減り、その分を「なぜこの変化が起きたのか」という深掘りの議論に当てられるようになっています。

一方で、観測会ではアプリケーションのダッシュボード以外にもセキュリティやコストについても確認しており、「人によって見始めるウィジェットが違うことで時間内に見切れない」という課題は以前より緩和したものの、解消されたとは言い難い状態になっていますので、引き続きの改善を行っていきたいです。(今期からコストは一部別の会議に切り出しています。)

今回ご紹介したダッシュボード改善のプラクティスが、みなさんのチームの参考になれば嬉しいです。


タイミーでは一緒に働くエンジニアを募集しています!興味のある方はぜひカジュアル面談でお話ししましょう。

採用情報はこちら

またね〜

失敗から学ぶ 〜Androidでバーコード読み取り機能を実装して学んだこと〜

この記事はTimee Product Advent Calendar 2025の11日目の記事です!

qiita.com

こんにちは。Androidエンジニアの Hunachi(@_hunachi)です。

突然ですが、日常生活において、バーコードを目にしたり、使ったりすることはけっこうありますよね。私もセルフレジでいつもピッピしています 🥦🛒

そんな身近なバーコードの読み取り機能を、Androidアプリに実装してみて失敗したときの話をします。失敗はしましたが、今はすでに安定稼働しているのでご安心ください ✅

このブログでは、コードの詳細は書きません ✂️

なお、ここではiOSの話はしません。iOSはAndroidとはまた別の苦難があり、後日iOSエンジニアの方がブログを書いてくれることを願っています 🙏📱

経緯:ユーザーにコードを読み取ってもらう機能が必要に 🧩

  • 仕様は0から自分たちで考えており、制約の範囲内でコードタイプも自由に決められる状況でした。
  • 他の箇所でQRコードを使っていたため、ユーザーが混同しないよう一次元バーコードを採用しました。
    • 社内の技術以外の制約により、チェックデジットなしの形式を選ぶ必要がありました。
  • Pixelなど主要端末での手動確認では問題は見つかりませんでした。
    • チームメンバーを含む複数人での確認も実施済みでした。
  • 今回使用した、バーコード読み取りの主要技術 🛠️
    • ML Kit(Google ML Kit)
    • CameraX(Android Jetpack)

補足注: 「チェックデジット」は、読み取り誤りを検出するための検査用桁です。今回は発行側の事情で付けない形式を採用しました。

リリース後に発生した問題 🚨

問題1:一部端末で読み取りが難しい(もしくは実質不可)📵

  • ユーザーからの問い合わせで発覚しました。
  • 分析の結果、影響は一部の数種類の端末に限られそうだと分かりました(おそらく100ユーザー以下)。
    • 低スペック端末だけの問題ではなく、高性能カメラの端末でも発生していました。
  • 特定端末を検証用として購入し、手元で再現を確認しました。
    • 高価な端末にもかかわらず、検証用として迅速に手配してもらえました(関係各位に感謝です 🙇‍♀️)。
    • 完全に不可能というほどではないものの、かなり読み取りにくいことが分かりました。
  • 問題発生確率の調査方法 🔍
    • 厳密な定量分析は難しいため、「本来読み取られるはずの回数」に対する「実際に読み取られた割合」が極端に低い端末や、問い合わせがあった端末を特定して調べました。
  • 対応策(暫定) 🧯
    • 画像からバーコードを登録できる機能を追加しました。
    • 撮影方法の説明を強化し、誤った方法で操作してしまう可能性を下げました。

問題2:誤読(別のコードとして読み取ってしまう)🔀

  • 本来そのユーザーが読み取るはずのないコードが読み取られる事象が発生しました。正しいコードが読み取れないと、そのユーザーが特定の機能を正しく使えなくなるため、重大な問題です ⚠️
    • バーコード読み取り機能に欠陥がある可能性を疑いました。
    • CameraX経由の読み取りで、ブレた画像から別コードとして解釈されるケースがあると分かりました。
  • 即時フィードバックが難しい背景 ⏱️
    • 裏側の仕組み上、ワーカーが読み取ってすぐに誤りに気づけない場合があります。
      • 多くはすぐに弾けますが、条件次第では弾けないことがあります。
  • 問題発生確率の調査方法 🧮
    • 手元での再現は運に左右され、難しいです。
    • 無効データ検出時のログを分析して、発生確率を推定しました。
  • 対応策(暫定) 🛡️
    • CameraX経由の読み取りに限り、「同一コードが1秒以上連続で読み取られた」場合のみ読み取り成立と判定するようにしました。
      • これにより、従来は弾いていた分も含め、読み間違いが減少しました。
      • 1秒という閾値は、UXの観点も踏まえて決めました。

恒久的な対策 ♻️

  • バーコードをやめ、QRコードへの全面置き換えを決めました。
    • QRコードには誤り訂正やチェックデジットがあり、問題2の発生確率がほぼ0に近づきます。
    • バーコードにチェックデジットを付ける選択肢もありましたが、誤読時に二桁同時誤りが起きる可能性があり、精度面でQRコードに劣ると判断し、QR化に舵を切りました。

学びと所感 📝

  • アプリから読み取る × 一次元バーコード(特に発行側の制約でチェックデジットがない形式)の画像読み取りは、採用しない方が良いです!🙅‍♀️
  • 低スペック端末だけが問題になるとは限らず、高性能カメラ端末でも問題が起き得ると分かりました。
  • 初期の選択は誤りでしたが、問題が見つかるたびにすぐ解決策を模索し、両OSとも最短に近い速度で対応できたのは良かったです 🚀
    • ユーザーに追加操作を強いることなく、UI/UXを損なわない形で解決できた点も良かったです 🙆‍♀️
  • 今年も失敗から多くの学びを得ました 😌
    • 次回以降は、ユーザーさんに影響を全く与えない形で失敗するようにしたいです 😭

みんなで楽しく発信していける環境、いいなと思ってくださった方は、ぜひ気軽に声をかけてください!📣 

product-recruit.timee.co.jp

product-recruit.timee.co.jp

(画像はAIで生成しています🍌)

タイミーのプラットフォームエンジニアリング組織における各種課題探索の実例紹介

こんにちは!タイミーでエンジニアリングマネージャーをしている恩田です。 この記事は Timee Advent Calendar 2025 の10日目の記事です。

はじめに

この記事では、私が所属するプラットフォームエンジニアリング部の活動の紹介、特に課題探索を目的としてどのような活動をしているかをご紹介したいと思います。前置きとして、弊社におけるエンジニア組織およびプラットフォームエンジニアリング部の役割やメインミッションの紹介もしており、本題まで少し前置きが挟まります。また、あくまで弊社組織での実例紹介であり、ベストプラクティス等を意識したものではない点にご留意いただきつつ、どなたかのご参考になれば幸いです。

前置き・プラットフォームエンジニアリング部門の役割

タイミーのようなプロダクト主導型組織において狭義のプロダクト戦略とは、マーケティングとイノベーションに対して戦略的意図(顧客ニーズに応える新しいプロダクトやサービスをどう生み出し、どう市場に届けるか)を策定することを指します。この戦略的意図を実現するための具体的なアクションプランをタイミー社内ではプロダクトイニシアチブと表現しています。開発者目線であえて端的な表現をすれば「ユーザ価値を届けるためのプロダクト機能開発」に類する仕事です。タイミーのエンジニアの大部分は、このプロダクトイニシアチブの実行/推進を主たる業務とする組織に所属しており、職能横断的なチーム構成のもと企画から設計、開発、テスト、リリース、施策評価までを一貫して行える組織設計を意図して組成されています。

その一方、プラットフォームエンジニアリング部門ではチームのユニット単位を「職能」で定義しており、WebFront領域に専門性を持つエンジニアで構成されるチーム、バックエンド領域に専門性を持つエンジニアで構成されるチーム、クラウドインフラ領域に専門性を持つエンジニアで構成されるチーム、QAエンジニアで構成されるチーム、セキュリティ領域に専門性を持つチーム、といった具合です。

その上で、組織のミッションと存在理由を

  • タイミーユーザ目線のあたりまえ品質を提供する
  • プロダクト開発組織がプロダクトイニシアチブを爆速でデリバリできる状態を提供する

と定義しています。そのため、プロダクトイニシアチブに則った開発プロジェクトにプラットフォームエンジニアリング部が直接・間接的に参画寄与することもありますが、メイン業務は上記を達成するための技術改善/支援となります。

[NOTE] 「プラットフォームエンジニアリング」とは、安全で管理されたフレームワーク内の改善された開発者エクスペリエンスとセルフサービスを通じて各開発チームのセキュリティ、コンプライアンス、コスト、およびビジネス化までの時間に関する価値を向上させることを目的として、DevOps 原則から構築されたプラクティスである、と一般的に定義されています(定義話は長くなるのでこの記事ではこれ以上は触れません)その上で、弊社におけるプラットフォームエンジニアリング部は、上記に掲げるミッション/目標達成のために上記プラットフォームエンジニアリング(プラクティス)を「手段として必要に応じて選択、実践するもの」と捉えています。

PO/PdM不在のチームは「やるべきこと」をどうやって決めるのか?

前置きが長くなりましたが本題です。我々が上記ミッションを達成するために、どのようなアクションプランを立てるべきなのか - この意思決定の材料の1つが顧客の声です。我々にとっての顧客とは、タイミーのエンドユーザ(プロダクト品質の受益者)と社内開発者が該当します。

プラットフォームエンジニアリング組織にはいわゆる「プロダクトマネージャー」と呼ばれる役割を設置しておらず、各チームは定量軸と定性軸の一次情報、すなわちタイミーの各種システムモニタリングと社内開発者のVOC(Voice of the Customer)の継続的な収集を通じて課題仮説の言語化と打ち手仮説を立て、検証とアクションプランの実行をエンジニア全員が主体となって継続しています。これを各チームが各々定期イベントとしてチーム業務に組み込んでいます。

以下、具体的にどのような定期業務イベントでどのような定量、定性情報を日々収集し、課題仮説立てに用いているのかを紹介します。

定量情報の観測

アプリケーション定点観測会

タイミーのシステム信頼性、パフォーマンス、コスト、セキュリティ等にまつわる様々なメトリクス/指標を観測する会です。現状とトレンドの事実確認を行い課題仮説を立てアクションにつなげる / 直近の改善施策の効果を確認し、対策を継続すべきかクローズすべきか等の判断を行うことを目的としています。具体的には以下のような指標を同期ミーティングで集まり確認をしています。

  • 信頼性/パフォーマンス観点
    • タイミーのBackend API群のレイテンシ、エラーレート、コンテナの各種メトリクス、スケーリング傾向やリクエスト傾向(シーズナリティ/スパイク傾向)
    • データストア層(MySQL, Redis, ElasticSearch) の各種メトリクス、クエリパフォーマンスやスロークエリ、Cache Hit Rate、etc
    • Sidekiq Jobのスループット、Jobs count推移、Workerのスケーリング傾向
    • バッチジョブのメトリクス、起動失敗率
    • 外部SaaS類へのリクエスト数推推移やスループット、メールのバウンスレートやPUSH配信のエラーレート等
  • Security観点
    • CSPM等によるAWS構成不備の新規逸脱検知状況のチェック
    • ECRイメージ脆弱性検査状況の定点チェック
    • GuardDutyの検出結果振り返り
  • コスト観点
    • AWS、Datadog、GitHub等利用料の大きいSaaS類の利用状況トレンドの把握。
    • 月次/年次予算対比での上振れリスク
    • 利用内訳(group by service, product, etc)の確認と、内訳比率に大幅な変化がないかのチェック
    • RI Coverageの状況
  • Observability観点
    • メトリクスの不備、不足などについての課題提案
    • アラートの過不足、およびしきい値の調整予定についての課題提案
    • ダッシュボードの見直しなど、観測設計そのものを改善対象としての改善点洗い出し

内部品質定点観測会

タイミーのバックエンドアプリケーションにおける開発者体験を司る各種指標を定点観測する会です。目的はアプリケーション定点観測会と同様で、現状とトレンドの事実確認を行い課題仮説を立てアクションにつなげる / 直近の改善施策の効果を確認し、対策を継続すべきかクローズすべきか等の判断を行うことを目的としています。具体的には以下のような指標を同期ミーティングで集まり確認をしています。

  • CI/CDパフォーマンス観点
    • CI, CD の失敗率・失敗要因の分析
    • CI, CD の実行時間、実行時間変化の分析
  • PRのレビュープロセス観点
    • レビューリードタイム推移
    • マージしたPR数のトレンドと各チームの開発状況との因果関係考察
  • テストの健全性観点
    • Flaky Test の新規発生・修正状況
    • 遅いテストの抽出と高速化余地の洗い出し

定性情報の観測

組織として現在収集できているメトリクスから開発生産性の全容を捉えるのは難しい側面があります。特に開発のバリューストリーム上のボトルネックやToilはコーディング、テスト、リリースといった開発工程の外にあるケースも多いです。観測しやすいメトリクス (4keysやGitHub上で観測できるLead time to Change等)だけを追っていても改善対効果の高い課題仮説が浮かび上がらないケースもあります。ビジネス要件の把握、仕様策定、コードベースの把握、レビュー、手動/自動テスト、承認、リリース作業、etc,,。開発工程のどこにボトルネックが発生しているか課題仮説を立てる材料として、開発者からの定性情報(これがツライ、わからない、知らない、etc)は貴重な情報源となります。

ポストモーテムを眺める会

タイミーの開発組織では、障害発生後にポストモーテムを行う文化が定着しています。ポストモーテムは障害対応/収束を担当したチームが中心となって実施します。このポストモーテムの内容(議事録)に記された議論過程やNext Actionをプラットフォームエンジニアリング部門のチームでクロスレビューし、「どのような支援(技術的改善、プロセス/ガードレール整備、知識/情報の非対称性の解消等)を行うと価値がありそうか」を探索しています。

スプリントレポート報告会

プラットフォームエンジニアリング部のチームがデリバリした開発者の生産性向上、体験向上を目的とした各種施策のサマリをレポートし、顧客(社内開発者)からのFBや要望を受け取る会です。

スプリントレポートはチームの作業計画に沿ったアウトプットです。アウトプット内容を共有しつつ、同時に社内開発者から「こんなことで困っている」といった一次情報を受領する相互情報交換を目的としています。

開発者体験アンケート

「開発者が自信を持ってリリースできる状態の実現」をゴールとした、開発者体験の現状を把握し改善につなげるためのアンケートを実施しています。また、アンケート収集後に内容を精査、具体的な改善アクションにつなげるため、必要に応じて回答者へインタビュー等も実施します。SDLCの各フェーズ毎、プラットフォームエンジニアリング部門のエンジニアが独自に策定した論点を元に質問を作成しており、技術的負債、業務プロセス、知識/情報の非対称性、様々な確度から課題の種情報を収集しています。

オフィスアワー

主にクラウドインフラ領域の技術に関するオープンドア形式のQ&Aセッションです。特定時間にslackのhuddleを開き、参加者は自由に出入りできる形で場を運営しています。

クラウドインフラチームが専売特許となりがちな技術領域、例えば監視設計やデータストア選定、データマイグレーション計画のノウハウ、CI/CDパイプラインやAWS全般に関する疑問や質問、興味のあることを何でも気軽に同期で質問・相談できる場として設計しています。

この場を通じ、開発組織全体で信頼性エンジニアリングのプラクティス実践を推進するにあたり障壁となる知識/情報の非対称性や、技術/組織課題の探索の場として活用しています。

おわりに

この記事では、弊社プラットフォームエンジニアリング組織における各種課題探索の実例を紹介しました。実例の一つとして参考になれば幸いです。

We are hiring!

タイミーでは絶賛エンジニアを募集中です。興味があればぜひお話ししましょう!