トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

2025年 トレタ開発部振り返り

こんにちは、トレタでVPoEを務めている北川です。 この記事はトレタ Advent Calendar 2025の記事です。だいぶ遅刻してしまい、大晦日に執筆しています……。

年末ということもありますので、本記事ではトレタのプロダクト開発部における2025年の取り組みを振り返ってみようと思います。

開発 & リリース

215

リリースノートを見返してみたところ、今年のリリース回数は合計「215回」でした。 1年は約52週ですので、平均すると週に約4回の頻度でリリースを行っていた計算になります。

リリース内容は新機能の追加からバグ修正まで様々ですし、プロダクト自体も多岐にわたるため、この数字が一概に「多い」とは言えないかもしれません。 しかし、今期は開発指針として「大きな機能を一度に出すのではなく、小さくリリースを重ねる」ことを掲げていました。その点では、少しずつでも継続的にユーザーへ価値を提供し続けられた一年だったと感じています。

比較的規模の大きな開発に絞って振り返ると、プレスリリースを出した案件は「トレタ予約台帳」で6件、「モバイルオーダー・トレタO/X」で5件でした。今年は他社システムとの連携など、プロダクトの広がりを強化する開発が多かった印象です。

プレスリリース | 株式会社トレタ

チーム体制

今年は、開発組織の枠組みを変えることにトライした年でもありました。

マイクロサービスとサイロ化

これまでのトレタの開発文化では、組織図上は「フロントエンドチーム」「バックエンドチーム」といった職能別で構成されていました。しかし実態としては、「モバイルオーダー注文アプリチーム」「決済システムチーム」「POS連携チーム」といった具合に、プロダクトやマイクロサービスごとにチームが分かれて動いていました。

この体制での課題は、一つの機能追加を行う際に1チーム内で完結できず、複数チーム間での連携が必要になることでした。 リリース当初の規模が大きい開発では並列稼働も有効でしたが、比較的小さな機能追加を繰り返すフェーズに入ると、チーム間のコミュニケーションコストや、認識の齟齬による手戻りが無視できなくなってきました。 IF定義書などで対策しても、「値がない時はnullなのか空文字なのか」といった細かい部分でのミスは頻発します。また、各チームが「機能の一部の部品作り」に終始してしまい、全体を通しての振る舞いに対する意識が希薄になる、全体を見通す人に負荷が集中し考慮漏れが起きる、といった問題も発生していました。

目的別チームへの再編

そこで、チームを大きく3つの目的別に再編しました。

価値向上チーム / 体験向上チーム: いわゆるデリバリーチームです。「顧客価値」の提供を目的とし、1チーム内で開発を完結できるよう、プロダクトを横断して開発を行います。

基盤開発チーム: プラットフォームとしての共通部分を開発しつつ、デリバリーチームと連携します。

この体制により、開発ロードマップの項目を各チームに明確に振り分けられるようになり、各チームが仕様検討からリリースまで自走できるようになりました。エンジニアにとっては、よりフルスタックな動きが求められ、上流工程にも関わりやすくなりました。

マトリックス体制への着地

一方で、この体制にも副作用がありました。「プロダクトごとのオーナーシップ」が希薄になったことです。 SLO管理、エラー対応、ライブラリ更新などの保守業務を行うメンバーが明確でなくなり、なし崩し的に「以前担当していたメンバー」が対応せざるを得ない状況になってしまいました。

そのため最終的には、目的別チーム(横串)に加え、プロダクト別チーム(縦串)も改めて設定し、双方向に関わるマトリックスな所属形態に落ち着きました。 現在は、各プロダクトを担当するメンバーが整備やルール作りを行い、形式的にでもレビューに入ることで「プロダクトの秩序」を守る役割を担っています。 結果として、これまで特定のチームに属人化していた知見がオープンになりつつ、他のチームメンバーも手を入れやすいコーディングルールが整備されるという流れが生まれています。

出社回帰

昨年までは完全フルリモートでしたが、今年からは全社的に一部出社の方針となり、開発部では週1回の全体定例日を出社日としています。

出社の目的の一つはコミュニケーションの改善です。前述の通り、開発におけるコミュニケーションコストの削減は積年の課題でした。 フルリモート時代、全員カメラオフで行っていたオンラインミーティングに比べると、対面での打ち合わせは確実に空気感が良くなったと感じます。特に社内の技術発表会(テックトーク)では、以前より確実に発言が増え、活発な意見交換が行われるようになりました。

課題としては、週1回の出社日に予定を詰め込もうとするため、その日がミーティングで埋まりすぎてしまう点でしょうか。 個人的には「合宿」と称して、必要なメンバーで半日ほど会議室に籠もり、設計会を行う動きをたまに行なっています。ホワイトボードを囲んで集中して取り組む時間が、もっとオフィス内で頻繁に行われるようになると良いなと考えています。

AIブーム

開発現場におけるAI利用は、もはや「ブーム」という一過性のものではなく、不可逆な変化となっています。

この1年を振り返ると、ChatGPTが懐かしく感じるほど変化が激しい年でした。最近の社内ではClaude Codeの利用率が最も高く、エディタもCursorが流行していましたが、現在はAntigravityへ移行している場面もあります。 当初は会社制度としてChatGPTのアカウントを付与していましたが、ClaudeやCursorなどツールの入れ替わりが激しく、制度設計が追いつかないほどです。最近は「トークンがすぐ切れるのでClaudeのMaxプランが必須」という声も増えてきました。

社内ではメンバーの発案で「AIテックトーク」という情報交換会も始まりました。隔週30分の開催ですが、新しいモデルやサービスが次々と出てくるためネタが尽きることがありません。コーディングの現場から少し離れている私にとっては、キャッチアップの場として非常に重宝しています。

AIで生産性は上がったのか?

よく議論になる「AIでエンジニアの生産性は上がったのか」という問いに対しては、AIテックトーク内での反応を見る限り「そこまで劇的には上がっていない」というのが正直なところです。 テストコード生成やスペック駆動開発など様々なアプローチが試されていますが、多くの場面において「コーディングにかけていた時間が、AIへの指示や生成物の管理(マネジメント)の時間に置き換わっただけ」というのが、生産性が微増にとどまっている背景のようです。いかにAIを複数並列に動かしていくかが今後の課題になりそうです。

一方で、確実に便利になった場面もあります。 初見のコードを読む際の補助としては非常に有益で、先述した「プロダクトを横断して開発を行う」体制において、既存コードの理解を助ける強力なツールになっています。 また、実装前の高速なプロトタイピングも増えました。プロトタイピングと「Vibe Coding」は相性が良く、デザインやUXの検証・ブラッシュアップを早期に行えるため、手戻りが減り、結果として開発サイクルが早まるケースも出てきています。

さいごに

こうして1年を振り返ってみると、かなり前の出来事のように感じるくらい、密度の濃い開発を行ってきたなと感じます。 無事にこの1年を走り抜けることができたこと、まずはメンバー全員に感謝を伝えたいと思います。

来年はさらに忙しくなりそうで、今はその準備に追われる年の瀬です。 それでは皆様、良いお年を。そして2026年もトレタ開発部をよろしくお願いいたします。

開発マネージャーが取り組む仕様駆動開発の現在地

こんにちは、トレタでVPoEをしている北川です。

この記事はトレタアドベントカレンダー2025 1日目の記事です。

今年のテック業界のトピックといえば、やはりAIを避けて通ることはできませんので、この記事では開発マネージャーとしての自分の日々の業務の中でどのようにAIを活用しているかについて書いていきたいと思います。

開発マネージャーの日常とAI

VPoEという立場になってからプログラミングをする機会はだいぶ少なくなりましたので、今の開発業務の大半は要件定義や仕様作成です。

これまでドキュメント作成のサポートとしてChatGPT、Cursor、ClaudeCodeなど様々なAIツールを試してきましたが、最近特に力を入れて取り組んでいるのが「仕様駆動開発」という手法と、それを支援する「cc-sdd」というツールです。

仕様駆動開発とは

仕様駆動開発(Specification-Driven Development)は、要件定義、設計、タスク作成、実装というプロセスを順にAIが生成するものをレビューしながら進めていく開発手法です。

従来の開発では、要件定義から実装まで一気に進めてしまい、実装内容にある意味ガチャが発生していたものを、仕様駆動開発では各段階でマークダウンでのドキュメントを作り、人が都度レビューを行うことで意図した実装に近い内容を生成させていきます。

この手法が注目を集めるきっかけとなったのが、AWSが公開した「kiro」というツールです。

kiroとは

kiroは、AWSが開発した仕様駆動開発を支援するAIツールです。開発者が要件を入力すると、AIがそれを元に設計書やタスク分解を提案してくれます。

https://kiro.dev/

要件定義から設計、タスク分解、そして実装までのワークフローをAIと対話しながら進められる点が画期的で、このツールの登場により、仕様駆動開発というアプローチが広く認知されるようになりました。

cc-sddとは

https://github.com/gotalab/cc-sdd

cc-sddは、好きなAI Agentを使いながらkiroを模した開発ができるようになるオープンソースのツールです。kiroがAWS独自の環境で動作するのに対し、cc-sddは様々な開発環境に統合できる柔軟性があるのと、無料で使える利点があります。

私はClaude Codeを使っていますが、cc-sddをインストールすると/kiroコマンドが使えるようになります。基本的なワークフローは以下の通りです。

  • /kiro:spec-init で初期構築
  • /kiro:steering で事前情報のインプット
  • /kiro:spec-requirements で要件定義書作成
  • /kiro:spec-design で設計書作成

本来はこのあとにタスク作成と実装のステップがありますが、私は設計書作成までで利用しています。実装はそこで生成された仕様書を開発チームに渡して任せます。

仕様駆動開発をやってみてわかったこと

現在、1〜2ヶ月ほど仕様駆動開発を試していますが、まだまだベストプラクティスには全然至っておらず、いくつか課題が見えてきました。

既存プロジェクトへの適用が難しい

これは仕様駆動開発に限った話ではありませんが、既存プロダクトの現在の仕様などをAIにインプットさせるのが非常に難しいです。

1つのプロダクト、リポジトリ単位であればまだ範囲が狭められますが、私たちのサービスはマイクロサービスアーキテクチャを採用しており、複数のサービス間の関係性や依存関係をドキュメントとして網羅しているわけではありません。

さらに、長年運用してきたプロダクトには、コードには書かれていない暗黙知や背景情報が数多く存在します。「なぜこの実装になっているのか」という経緯や、「この部分は将来的にリファクタリングする予定」といった情報をすべてAIに伝えるのは現実的ではありません。

逆に言えば、まったく新しいプロダクトを作る際は、cc-sddの仕組みに沿っていくととてもスムーズに進められました。頭にある要件とおおざっぱな仕様を伝えればそこからきっちりとした要件定義書、仕様書を生成してくれます。

レビューコストが大きい

AIの生成物は真面目すぎるというか、時として必要以上に詳細な提案をしてきます。

特に非機能要件については、求めていないレベルの詳細まで提案してくることがあります。例えば、小規模な社内ツールの仕様を作っているのに、大規模システム並みの可用性やスケーラビリティの要件を提案してきたりします。

もちろん、自分では考慮し忘れていた部分を指摘してくれることもあるので助かる部分もありますが、とにかくレビューが大変です。不要な部分を削除する作業に時間を取られてしまうこともあります。

設計段階でも、インターフェース設計のコーディング例が含まれていたりするので、この辺はどういうアウトプットが必要か、という定義やフォーマットを事前に明示して渡してあげる必要があると感じています。

AIと要件定義していく価値

課題はありつつも、仕様駆動開発には確実な価値があると感じています。

視覚化による思考の整理

設計書に状態遷移図やシーケンス図などの図示(mermaid記法)をしてくれることで、頭の中にあった曖昧なイメージが整理しやすくなります。

例えば、「ユーザーがログインして、注文して、支払いをする」という要件を口頭で説明するだけでは、細かな分岐やエラーハンドリングが抜け落ちがちです。しかし、AIがシーケンス図に起こしてくれると、「あ、ここで在庫切れの場合の処理が抜けている」といった気づきが得られます。

この視覚化のプロセスは、思考の整理に大いに役立っています。

要件と仕様の往復での磨き込み

そこから設計方針を変えたい、要件を修正したい、となったときの要件定義への修正をAIがスピーディに行なってくれるのが地味に助かります。

網羅的にも行ってくれるので書いたドキュメントの修正はAIに任せて、本筋のどういう要件・仕様にすべきか、という部分に集中できます。

そうして仕様と要件の往復を繰り返して、より良い要件と仕様を作り上げていく工程が非常に有効だと感じていて、一度で完璧な仕様を作るのではなく、何度も往復しながら徐々に精度を上げていくアプローチが、AIとの協働では特に効果的に感じています。

AIとの付き合い方

今のAIは「入社したての、何も知らない中堅社員」と表現されるのを耳にします。この例えは的を射ていると思います。

人の場合はどうかとあらためて考えてみると、要件定義や仕様作成を大まかなオンボーディングをさせただけの入社したばかりの人に任せるか、というとおそらくしないでしょう。

現実の職場では、OJTとしてまず先輩が手本としての仕様までは作って、詳細のドキュメント作りを伴走しながら任せて少しずつ慣れてもらうという進め方をします。そして、その人は経験を積むことで徐々に成長し、いずれは独力で要件定義ができるようになっていきます。

とはいえ、AIは人と違って少しずつ慣れて上達することはありません。明日にはまた何も知らない状態になっているわけです。この特性を理解し、AIへの期待値はその辺に設定しておくのがよさそうです。

0→1の部分はまず自分がやる、大まかな方向性、コアとなる要件、譲れない制約条件などは自分の頭で考え、ある程度の形にします。そして、それを文書に起こしたり図にして他の人にわかりやすいように整形させるのがAIの役目です。

それを人よりも高速でやってもらうことで、要件と仕様の往復を何度も行い、精度を上げていく。この反復のスピードが、AIを使う最大のメリットだと感じています。

まとめ

仕様駆動開発を使った開発は、まだ完璧ではなくまだまだ課題もあります。

しかし、要件と仕様の往復がスムーズになり、視覚化による思考の整理ができるようになったことは、大きな価値があります。

重要なのは、AIに丸投げするのではなく、自分の思考を補助するパートナーとして使うこと。0→1は自分が考え、1→10をAIに高速で回してもらう。この距離感が、現時点では最も効果的だと感じています。

AI技術の進化は速いので、また新しい使い方が見つかるかもしれませんが、AIの知能が人を超えない限りは人との付き合い方の延長線上くらいに考えて、これからも試行錯誤を続けたいと思います。


明日のアドベントカレンダーもお楽しみに!

技術者のキャリアを考える

こんにちは、トレタ VPoEの北川です。

最近、エンジニアのキャリア形成について考える機会が増えています。特に目標設定の場では、メンバーが今後どのようなキャリアを歩みたいのかという話題をよくしています。今回は、その考察をブログとしてまとめました。

トレタにおけるエンジニアのキャリアパスは、大きく分けて マネージャースペシャリスト の2つがあります。

  • マネージャー は、チームリーダーの上位に位置し、複数のチームをリードしながら組織の生産性を向上させます。
  • スペシャリスト は、マネジメントには進まず、技術を追求し、特定分野の深い知見を持つことでプロジェクトに貢献します。

先日、チーム内で議論した結果、エンジニアのキャリアタイプは 3つのパターン に分類できると考えました。

エンジニアの3つのキャリアタイプ

1. リーダー

  • マネジメントに特化し、チームをまとめながら組織の生産性を向上させる。
  • コーディング業務は減り、チーム全体の成果を最大化することに注力する。

2. オールラウンダー

  • フルスタックエンジニアに近く、フロントエンド、バックエンド、インフラまで幅広く対応できる。
  • ビジネス側のメンバーとのコミュニケーションや要件定義など、エンジニアリング以外の領域にも関与する。
  • 1人で技術面の多くを担うことができ、小規模チームでは特に活躍しやすい。

3. スペシャリスト

  • 特定の技術分野に深く特化し、複数のプロジェクトに関与する。
  • その存在が技術面の課題解決をスムーズにし、チームの「守護神」となる。

タイプごとの伸ばし方

各タイプに沿って、伸ばし方も異なります。

  • リーダー:より多くのメンバーやチームをマネジメントし、マネージャーとしてのスキルを磨く。
  • オールラウンダー:フルスタックとして足りない技術スキルを習得したり、上流工程やデザインなどエンジニアリング以外の領域にも役割を広げる。
  • スペシャリスト:より多くのプロジェクトに参加し、得意分野を多角的に深めていく。

ここで大事なポイントは、その人の性格や意思を確認してタイプを把握した上で、異なるタイプを強要しないことです。 例えばスペシャリスト気質のある人に、チームにリーダーがいないからといってリーダータイプのスキルを伸ばすことを強要すると大抵失敗します。 その場合はリーダータイプのエンジニアを連れてくるか、いない場合はエンジニア以外のリーダータイプの人(プロジェクトマネージャーなど)をチームに入れるなどした方が良いと思います。

チーム構成と適切なバランス

どのタイプが良い・悪いということはなく、チーム内の構成バランスが重要です。

  • 大規模プロジェクト → リーダーを中心にチームを統率し、スキル差のあるメンバーをまとめる。その中に少数のスペシャリストがいると安定感が増す。スムーズな開発進行を実現するために、役割分担を明確にすることがポイントです。
  • PoCやスモールチーム → オールラウンダーが1人いることで、コミュニケーションコストを削減し、スピード感を出せる。短期間での意思決定が求められる環境では、特にこの構成が効果的です。

逆に、例えばスペシャリストばかりのチーム では、

  • リーダーが不在のため、仕様待ちの受け身になりやすい。
  • コミュニケーション不足が生じやすく、プロジェクトの進行が遅くなる。

また、エンジニアの担当領域によって、タイプが偏りやすいと考えています。

  • フロントエンドエンジニア は、デザイナーやプロダクトマネージャーとの仕様や挙動の検討が多く、UXの改善やパフォーマンスチューニングにも深く関わることでオールラウンダーになりやすい。
  • バックエンドやインフラエンジニア は、特定技術に深く関わることが多く、パフォーマンスの最適化やセキュリティ対策など、専門的な知識が求められることでスペシャリストになりやすい。

この辺りを踏まえて、チームのサイズ x 担当領域 x タイプで構成を考えると良いと考えています。

採用戦略と育成

採用の際もチームのバランスを意識することが重要です。 基本的に、今のプロジェクトチームにどのタイプのメンバーが足りないかを考えた方がよいです。

また、育成の視点で考えるとジュニアメンバーを採用する際はリーダーがいるチームに配置すると成長しやすいです。 一方で、オールラウンダー は1人で動くことが多いため、育成経験が少なく「どう教えるか」が課題になりやすいことが多いと感じます。 スペシャリスト の場合は「背中を見て学べ」という姿勢が多い印象です。

どのタイプの人材が即戦力として採用する必要があるのか、育成人材をどのタイプの人材のもとで育成するかなど、組織全体で考える必要があります。

より上位のメンバーのキャリア形成

上位の役職を目指すエンジニアは、単一のスキルセットにとどまらず、もう一つの軸を意識することが重要です。

例えば、「スペシャリスト + オールラウンダー」の人は、リーダーと組むことで大きな相乗効果を生み出します。リーダーが方向性ややることを明確にし、幅広く深い知識を持つメンバーが具体化していくことで、スピード感をもってプロジェクトを推進できます。また、リーダーがいない場面でも自律的に動き、プロジェクトを前進させる存在として活躍することが可能です。

ちなみに、私自身は「リーダー + オールラウンダー」だと思っています。エンジニア1人でプロジェクトに参画することが多く、プロジェクトの立ち上げや保守運用を1人で担うことが多かったため、自然とオールラウンダーになっていきました。 オールラウンダーは「器用貧乏」でもあるので、マネジメントを見よう見まねで学びながらリーダー軸を伸ばしていきプロダクトマネージャー、VPoEという経歴を辿ってきました。

まとめ

  • エンジニアには リーダー / オールラウンダー / スペシャリスト の3つのキャリアタイプがある。
  • チームのバランスを意識することで、生産性の高い組織を作ることができる。
  • 採用・育成においても、チームに足りない要素を補うことが重要。
  • さらなる上位のキャリアを考えるときは、もう1つの軸を意識することで成長の幅が広がる。

組織やチーム構築の議論は答えはないので、参考にでもしてもらえればと思います。また、これからAI全盛期となっていくので、どの部分はAIで補うか、と考えても面白いと思います。

© Toreta, Inc.

Powered by Hatena Blog