トレタ開発者ブログ

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

優秀な QA メンバーが上流工程に加わると開発が捗る話

こんにちは、なんとか今年のアドベントカレンダーを埋めようとしている鄧(でん)です。

今日は社内での QA メンバーの活動についてお話させてください。

今までのトレタでは 要件定義(ふんわり)→ 設計(ふんわり)→ 実装 → QA の流れでどちらかというとウォーターフォール型の開発が多かったと記憶しております。リリースはできていたのである意味ワークしていたと言えますが、QA の視点からすると

  • この画面や API はどんな課題を解決するためのものか
  • なぜその設計に至ったのか
  • 今の挙動やレスポンスは果たして当初意図した正しものなのか

など、QA メンバーのフィードバックから、コンテキストが正しくバトンタッチされていないことが多いと感じました。

改善内容

サービスの品質や保守容易性(maintainability)を担保するために QA のメンバーにお願いして以下の施策に協力していただきました。

ドキュメント整備

まずは、QA メンバーの協力を得て API シーケンスからエラーコードの整備など、暗黙知だった部分を仕様とドキュメントとして言語化しました。まだまだ、改善の余地は多い(というか伸び代しかない)のですが、API 利用者目線でも全貌が把握しやすくなりましたし、設計意図、動作確認など、テストケースを設計する際にも便利になったと認識しております。

API シーケンス図

f:id:toreta-dev:20211204101829p:plain
API シーケンス図

エラーコード一覧

f:id:toreta-dev:20211204101933p:plain
エラーコード一覧

テスト駆動

一部のサービスではコードを書く前に QA メンバーの協力を得て、テスト内容をコードより先に書く所謂テスト駆動の手法を検証してます。トレタは TypeScript、Ruby on Rails、Golang、Clojure などさまざまな言語やフレームワークを扱っております、それを QA が全て把握するのは現実的ではないと思いますが、仕様を把握した上で日本語として言語化することなら実行可能ですので、それを実際にコードを書く前に仕様書ベースですり合わせ、実装と共に担当エンジニアがテストコードとして翻訳して CI を通してことによって、毎回 QA の手を借りずとも継続的品質を担保しやすくなりました。

情報を俯瞰できる環境づくり

最後に、QA メンバーには要件定義段階から会話に参加頂き、開題と設計意図などの情報をキャッチしやすくしました。これによって QA メンバーは基本的に事後出来上がったものを渡されて「テスト作業」する作業員ではなく、課題を理解し、方針や設計などにも参加しやすくなったと考えております。

たまにはライオンの威を借りて品質の重要性、テスト容易性などに注目するように意識喚起することもあります。

f:id:toreta-dev:20211204102657p:plain
品質の重要性

最後に宣伝

トレタでは一緒に飲食店の未来を作る QA エンジニアを積極募集中です!まずはカジュアルに話を聞きたい方もこちらからご応募いただけます!

corp.toreta.in

参考資料

リモート環境下でのコミュニケーション改善へ取り組んだこと

こんにちは。エンジニアのkitagawaです。 こちらはトレタアドベントカレンダー2021 2日めの記事です。

今年はまだまだ立ち上げ時期のトレタO/Xプロジェクトでマネージャーとして、エンジニアが開発に専念できる環境づくりを多くやっていました。

今となっては全員フルリモートで働くの当たり前の状況となりましたが、 まだまだコミュニケーションが不足していたり、まだまだリモート環境とのつきあいかたを模索しているような状況です。 そんな中でコミュニケーション改善に向けて取り組んでみたことを紹介しようと思います。

決定事項を流す「決めた」チャンネル

リモート環境でのコミュニケーションは基本的にSlackとGoogle Meetで行っています。 その環境の中で課題の一つに、「共有事項がどこまでの人に伝わってるかがわからない」 という状況がありました。

よくあるケースは、

  • スレッドで議論された結論が要約されることなくふんわり終わる
  • 見逃さないようにスレッドをウォッチしているとスレッドの長さが100件を超え出してツラくなる
  • 別チャンネルで似たような議論がされている
  • Meetで話した結果が議事録として残っていない

そこでSlack新しくに「決めた」チャンネルを作りました。

このチャンネルは議論の結論をサマリーした内容を投稿するためのチャンネルです。 すべてのメンバーはとりあえずここのチャンネルを見ておけば、様々な場所で議論された結果を把握することができます。

f:id:mkitagawa-312:20211202104959p:plain

投稿フォームをワークフローで作っていますが、特定のチャンネルで「決めた」のリアクションをすると決めたチャンネルに転記する仕組みも入れているので、よりここに書き込みやすくなっています。

特に「あの時話したあれって結果どうなったんだっけ」がとても探しやすくなりました。

全体共有会を設ける

O/Xプロジェクトはそれなりの人数が関わっていて、いくつものWeekly定例であったりスタンドアップが行われています。 ただ、プロダクトオーナーから各開発メンバーまで関わる全メンバーが集まる会というのがなかったので新しく設けました。

実際に会の中で行うことは、

  • ビジネス側からの1ヶ月の振り返りと今後の営業スケジュール
  • 開発側からのリリース報告や障害報告と、今後の開発スケジュール
  • プロダクトオーナーから一言

という構成です。

この会を設けた狙いとしては、「全メンバーの目線合わせ」と「メンバーのモチベーション維持」の2つです。

  • 自分が行っているタスクはどこに寄与し、どんな効果を産むのかを理解する
  • 達成したことをメンバーのみんなで祝い労う
  • 顧客からの声やフィードバックを共有し、良かった/悪かったこと含めてメンバーに伝える

f:id:mkitagawa-312:20211202111706p:plain

開発メンバーは日々のタスクをこなしていると、新機能リリースを行ってもすぐに次のタスクに追われてしまい、 目前のタスクだけを見ていて視野が狭まったり、徐々にモチベーションが下がったりしてしまうものです。 メンバーの上から下までそれぞれがやってきたことをちゃんと皆で振り返る、というのはとても効果があったと感じています。

オンラインランチ会を開催

リモート環境でよく聞く問題として、雑談が減ったというのがあると思います。 トレタでもリモートになる前までは会社にカウンターがあり、そこで行われた雑談からいろいろなアイデアがでたり部署をまたいだコミュニケーションが行われていました。 雑談が減ったことで、特に問題だと思ったのが新入社員へのケアです。

新入社員には大体の場合メンターがつくのですが、メンターとのコミュニケーションはあっても、同じチーム以外の人や定例で会う人以外は接点があまりないです。 雑談の会を今までいろいろと試してみましたが、

  • 雑談する時間を業務中にとっても、業務の方を優先してしまう
  • いざ雑談するとなってもかしこまってしまう

という理由でなかなか定着しませんでした。 そこで今回はランチ休憩の時間を使って、オンラインでみんなでランチを行う取り組みを行いました。 そもそも出社していた時代では新入社員が入った時は社内にいる人たちでランチに行くのが恒例だったのでそこからの着想です。

やることはシンプルで、決まった時間にバーチャルオフィスに集まって、ご飯食べながら雑談するだけのスタイルです。 f:id:mkitagawa-312:20211202112322p:plain

開催ごとに参加人数は減ってきてはいますが、ある程度の人数が定着したので成功だったかなと思います。 技術的な話だったり、最近何買ったとか、やっぱり他愛もない会話する時間って楽しいですよね。

詳細についてはこちらでも記事にしていただきました。 note.com

さいごに宣伝

トレタではエンジニアを積極募集中です!まずはカジュアルに話を聞きたい方もこちらからご応募いただけます! www.wantedly.com

2021 年の振り返りと今後の展望

初めに

こんにちは。トレタ CTO の鄧(でん)です。 今年も残り少なくなってきたので、少し早いかもしれませんがこの怒涛のような一年の振り返りをさせて頂ければと思います。

プロダクト

2021 年は主に 3 本の柱に絞って開発を進めております。

  • O/X(Order Experience、より良い顧客体験を実現するためのメニュー / POS システム)
  • B/X(Booking Experience、より良い顧客体験を実現するための予約管理システム)
  • CC(飲食店向けのコンタクトセンター)

それぞれ事業として違うフェーズになっていたり、技術的な制限が異なってたりするので事業を横断するときのコンテキストスイッチはそこそこ大変だったと記憶しております。

O/X

「2021 年は第二の創業期」という代表の思いと、「お客さまとお料理の幸せな出会いを最高に演出できるメニュー」というコンセプトを元に

  • 各法人、各ブランド毎にメニューの演出をフルカスタマイズする(SES)
  • 裏側のインフラ、サーバー、店舗スタッフが操作する管理画面などは共通のものを使うことによってコスト面とリリース速度のスケールメリットを得る(SaaS)

というぱっと見相反する要件を実現させるため、メニュー画面とバックエンドの仕組みを分離させたヘッドレス(headless)な構成として作っており、こちらは 2020 年の後半から案を練ってましたが、今年 2021 年の 2 月から開発が活発になって一足先に導入テストなども行い、7 月 26 日ようやく一般公開できるようになりました (1)。

技術的に工夫したところとしてはリリースのプロセスを高速化しつつ、高い信頼性を担保するために車輪を再発明せず、市販の SaaS をレゴブロックのように組み合わせて限られたスケジュールの中で高速に組み立てる手法を採用しており、おかげさまで 12 月 1 日現在、システムに登録されている店舗は 90 を超えており、利用している法人は 4 法人となっており、我々は開発手法とツールを工夫することによって小規模な開発組織を維持しながらこの一年でフロントエンドを 6 案件(各ブランドの UI x 4 + 管理コンソール x 2)、且つサーバーサイド多数 (2) をリリースしたことになります。

ただ、タイトなスケジュールがあるとはいえ、品質やパフォーマンスを妥協することは考えてなく、テストの書きやすさを前提に設計を進める、早めにデザインと API 仕様を擦り合わせる、早めに DB 構造と分析要件を擦り合わせる、全般的に QA が情報や流れをキャッチできるようにするなど、開発手法を工夫してチームとしてのアウトプットを底上げするのを狙っております。

参考資料

  1. 弊社代表中村のブログ
  2. O/X を総括しているエンジニアの北川さんの紹介記事
B/X

今までトレタの主力商品であった予約台帳ですが、コロナの影響もあり、正直ここ一年伸び悩んでおりました。その中で SRE やサーバーサイドエンジニアの努力もあり、直近一年間のダウンタイムは合計 9 分間、稼働率に換算すると軽く 99.99% を超えております。

もし 2021 年を守りの一年と例えると、来年に関しては一部コロナオミクロン株の懸念もあるものの、攻めに転じる一年だと考えており、飲食業界が回復した際にちゃんとその成長を支えられるように、API 周りの改修、特にメディア連携と店舗を横断した在庫検索を強化しようと考えておりゆくゆくは O/X のようにカスタマイズしやすい予約システムを目指しております。

技術的にはデータ連携のためのストリーム処理や検索エンジンを中心に開発を進めておりますので、もしご興味がありましたらぜひご連絡ください。

ストリーム処理

検索エンジン

CC

飲食店には電話でのやり取りがまだ多く残っておりますが、その負担を少しでも軽減できるようにトレタでは別途 Amazon Connect を通して、音声認識をベースとしたコールセンターサービスを展開しております。

まだ発展途中の分野で、障害や誤認識がまだ多少残ってはいるものの、飲食店のサーポートツールとしては十分利用可能だと考えており、来年以降はより自然なやり取りとより高度なシナリオを実装することによって、より多くのタスクをこなせるように目指しております。

組織と開発手法

トレタでは限られた時間内で手戻りや良くない意味でのサプライズを減らすためにユースケース整理、DB 設計、API 設計、UI 設計、QA などを実装する前にすり合わせております。一部のシステムにおいては実装する前に先に API 仕様をリリースしたり、あるいはテスト仕様を先に書くような開発手法を採用しております。

また、サービスの設計思想として、ただアプリケーションが正常に実行しているだけではなく、行動履歴や購買履歴など、データが正しく蓄積され、それを集計・分析した上で飲食店のオペレーションにフィードバックするところまでが商品価値であり、それを実現するためには早い DB 設計の段階で分析メンバーにもレビューが入るようにしており、コアなデータベースに関しては初期リリースから分析基盤や BI ツールが全て繋がった状態でリリースされておりますので、ある意味分析を前提としてシステム設計をしていると言っても過言ではないと考えております。

B/X の紹介でも少し触れたように、トレタではリリースのプロセスを高速化しつつ、高い信頼性を担保するために車輪を再発明せず SaaS をレゴブロックのように組み合わせて限られたスケジュールの中で高速に組み立てる手法を採用しております。こちらに社内で使っている技術を幾つかリストアップしておりますので、もしご興味ありましたらぜひご感想、ご指摘などお聞かせいただければと思います。

ご連絡お待ちしております。チームの仲間を募集しています!

フロントエンド

  • Contentful - CMS
  • Firebase - データベース
  • Vercel - CI/CD・CDN・Serverless インフラ
  • Angular / Next.js / TypeScript

サーバーサイド

SRE

データ分析

© Toreta, Inc.

Powered by Hatena Blog