Ichizoku is an official partner of Arize in Japan

SentryのRollback、Hack Week発のプロジェクトが本番稼働へ

Article by: Malachi Willey

 

❗❗もしあなたが Sentry を使っていて、今が2024年なら、今すぐ読むのを止めて、まずは rollback.sentry.io にアクセスしてみてください。自分専用のRollbackが手に入ります!

 


 

ほんの数週間前、私たちは Sentry Rollback という機能をリリースしました。

これは Sentry で初めてとなる「年次レビュー体験」です。

イメージとしては、Spotify Wrapped(Spotifyが毎年行っているユーザーの音楽の好みをハイライトする機能) の開発者版のようなもので、Sentry を通して過ごした1年を振り返ることができる独自の機能です。

見た目はスタイリッシュで、ちょっと(というか、かなり)皮肉も効いています。あなたの成果をしっかり称えながら、ついでに失敗も軽くあざ笑います。成功というのは、失敗の上に成り立ちますからね。

Rollback の起源は少しユニークです。最初は社内向けに「何か面白くて笑えるものを作ろう」という軽い気持ちからスタートしました。しかしそれが、気が付けば本格的なプロジェクトに成長していました。今回は、その歩みをご紹介していきます。

クエリ結果が得られないことに何度も悩まされたのではないでしょうか。私たち自身もその例外に何度も頭を抱えた結果、ついに修正することに踏み切りました。

 

始まり:Rollback のアイデア誕生

 

毎年、Sentryでは社内ハックウィークを開催しています。これは Sentry 社員全員が普段の業務から離れ、自分の「作りたいもの」に自由に取り組む1週間です。ルールは「何を作ってもOK」ただ一つ。「こんなものがあったらいいのに」と思ったら、それを作るだけです。

多くのハックウィークのプロジェクトは、その週が終わると役目を終えますが、中には社内で使い続けられるものもあります。そして時々、本番環境に飛び込すプロジェクトが生まれることがあります。Sentry Rollback はその一つでした。

 

チーム編成から始まった Rollback

ほとんどのハックウィークのプロジェクトは、エンジニア同士が数人集まってチームを組んで進めます。同じチーム内で完結することも少なくありません。

しかし、Rollback は違いました。エンジニアリング、プロダクト、マーケティング、デザイン、さらにはセールスコピーまで、社内全体から人が集まり、Sentry 全体で取り組む「全社プロジェクト」となったのです。

多様な視点が加わったことで、Rollback はごく初期の段階から「まるで本物のSentryの製品(TM)」のような完成度を見せはじめました。なぜなら、必要な要素がしっかり揃っていたからです。

 

出荷とクラッシュ、そして再スタート… Rollback

Rollback を他の年次レビューと差別化するため、まず取り組んだのは名前を決めることでした。私たちはあまり堅い印象になりすぎないようにしているので、ちょうどいいユーモアのある名前が必要だと考えました。

利用者ターゲットの99%がエンジニアのため、開発者の心に響く名前でなければなりません。Sentry Replay、Sentry Shipped、Sentry Wreckedなどのアイデアが出ましたが、最終的に「Rollback」に決定しました。

「Rollback」という名前は、まるで過去に戻って1年分のバグを再体験するようなイメージを呼び起こします。開発者がひと目見て、直感的に理解できるネーミングです。

今年、あなたも一度は“ロールバック”したのではないでしょうか?私たちはもちろんしましたよ!

 

MVPを最速で作ることから始める

 

ハックウィークの限られた数日間で、Rollback のような体験を作るのは簡単なことではありません。

プロジェクトはチームを跨いで関わる部分も多いため、綿密な進行管理が必要でした。プロダクトマネージャーは、優先順位を理路整然と決め、初期のデザインやワイヤーフレームといった障害になりそうな要素を排除していきました。その結果、対象スコープも最小限になりました。

ハックウィーク版では、Sentry の従業員のために動作することだけに焦点を当てました。複雑なインフラ構成は避け、データベースも使わず、パフォーマンス最適化に悩む必要性もなくしました。ひたすらコンセプトの実証だけに集中し、クスッと笑える動作を目指しました。

ハックウィークの優勝者

数日間の集中作業の末、Rollback はついに形になりました。綿密な計画、しっかりとしたスコーピング、そしてチームが持ち寄った多くの才能のおかげで、Rollbackは形になりました。そして「笑い」もうまれました。

このプロジェクトは瞬く間にヒットし、ハックウィークの最優秀賞も受賞しました。

優勝の賞品ですか?

主に「自慢できる権利」ですが、Sentryの全従業員が持っているカスタムメカニカルキーボード用の超レアな限定キーキャップもありました。

Sentry社内には(ほとんどの人には知られていない)さまざまなカスタムキーキャップが存在します。このキーキャップを、まるでトロフィーのように飾っている人もいます。使い勝手はさておき、「ちゃんと機能するトロフィー」なのです。

もっとも重要なのは「これは本当に実現できるかもしれない」という種が、しっかりと芽を出したことです。

 

Rollback を本番環境へ

 

それから数ヶ月経っても、社内で Rollback の話題は尽きませんでした。

「実際にこれをリリースしたらどうだろう?」という声が何度もあがりました。すでに魅力的なMVP(Minimum Viable Product:顧客に価値を提供できる最小限のプロダクトのこと)だったためです。少し手を加えれば、本番環境で稼働させるのもそんなに難しくないだろう、そんな空気が漂っていました。

しかし、何かを作った経験がある人なら誰でもわかると思います。

それがソフトウェアでも小屋でも「思ったより手間がかかる」ということがよくあると思います。正直に言えば当初の1週間のスプリントでは全く足りませんでした。

その努力の末に完成したのが今皆さんの目の前にある Rollback です。

 

Rollbackに含めるべきデータの選定

年末に振り返りを行うには、そのためのデータが必要です。しかし今回のプロジェクトは年初から計画されていたわけではなかったため、私たちが利用できるデータには多少の制限がありました。最終的に私たちが使えたデータは以下の通りです。

  • アカウントの年齢
  • イシューワークフローアクション(ビュー、解決、アーカイブ、割り当て)
  • 疑わしいコミット
  • ページビュー
  • リプレイ再生

 

データの種類としてはシンプルなものでしたが、それでもクエリすべき項目はたくさんありました。

最初のハックウィークのプロジェクトでは、社員の数百人の半年分のデータを集計するだけで済みました。Sentry では社内で自社サービスを活用する「ドッグフーディング」を積極的に行っていますが、それでも私たち自身のデータでは 400万以上いるユーザー全体の規模には到底及びません。

さらに複雑にさせたのは、多くのユーザーが複数の組織に属していたことです。Rollback のパーソナリティを各ユーザーが「組織内でどのような行動をとったか」に基づいて決定したかったので、多くのケースで1ユーザーに対して複数の Rollback を生成する必要がありました。

その課題に対する解決策は、事前にデータ処理しておくことです。機能を公開した初日から毎回オンデマンドでユーザー単位のデータ処理を行わなくてもいいように、12月初めに各組織・各ユーザーの1年間分のデータをまとめてクエリしました。

そこから集計した統計情報をデータベースのテーブルに保存し、すぐに取り出せるようにしておきました。

 

Rollbackパーソナリティの考案

Rollback の中でも特徴的なのが、ユーザーに割り当てられる「パーソナリティ」です。これは開発者としての1年の活動を、皮肉たっぷりに誇張したキャラクターです。

このパーソナリティを考えるにあたっての目標は、できるだけ多くのユーザーが自分だけのユニークな体験を楽しめるようにすること。またSentry のさまざまな使い方をちゃんと反映できるようなキャラクターにすることでした。

そしてこれらのパーソナリティは、全ユーザーと比較して選ばれるのではなく「組織内でのあなたの行動」に基づいて決まるようにしました。例えば、1年間に1件か2件しか課題を解決していなくても、その各組織で比較すれば「Fixer(修理屋)」として認識されるようにしたかったのです。すべては相対的な評価なのです。

最終的に、11種類のユニークなパーソナリティに決まりました。

ネタバレを避けつつ、いくつかの例を挙げます。

  • The Fixer(修理屋):多くの問題解決し、疑わしいコミットは少なめ。
  • The Hot Mess(大混乱):著者が個人的に好きなパーソナリティ。疑わしいコミットに名前が頻繁に登場するけど、解決はあまりしていないユーザー。
  • Lookie Loo(見物人):たくさんの課題を見ているけど…それだけ。
  • The Overachiever(過剰達成者):担当課題が多く、実際に多くの課題を解消している。さらには疑わしいコミットも多いという Sentry のヘビーユーザー向け。

 

 

Suno.ai で各 Rollback パーソナリティに合った音楽を作成

ハックウィーク版の Rollback では、カスタムサウンドトラックが特に好評だったことを思い出しました。この機能だけは欠かせません。

各パーソナリティに対して、私たちは Suno.ai に説明的なプロンプトを用意し、ジャンルのバリエーションも含めて音楽を生成してもらうという機能です。

出力される音楽はどれもキャッチーで、歌詞も秀逸でした。例えば、The Hot Messテーマ曲などは、そのキャラクターにぴったりでした。

[Verse]

Got a codebase all in tatters breakin every day

Commits come in like wildfires it’s a mess I’d say

No resolves or assignments just chaos on parade

You stir that pot so reckless why clean up what you made

[Chorus]

Oh baby you’re a hot mess ain’t no fixing goin on

Living life in that chaos singing your wild song

No bother for the broken just stoking up the flames

You leave the wreckage laughing you never take the blame

[Verse 2]

Every merge feels like a gamble nothing’s ever safe

Features crash and burn here can’t catch no lucky break

Frameworks fall to pieces conflicts never fade

But you just keep on stirring in that twisted game you play

 

 

もちろん、すべてのパーソナリティのサウンドトラックを一気に楽しみたい方に向けにプレイリストも用意しています。エラーをデバッグしながら、ぜひ聴いてみてください。

 

Rollback のためにアニメーションスクロール体験を作成

数字だけが並んだ画面は、正直あまり楽しくありません。ただのカラフルなスプレッドシートのようにさせないために、私たちはデザインとアニメーションを通じて、ユーザー体験を楽しいものにしようとしました。

SNSに投稿したくなるような、そんな生き生きとした体験に仕上げることが目標です。少し変わったことも試してみました。

その仕上がりに手応えを感じたのは、あるユーザーからこんなDMをもらった時です。

 「Spotify Wrapped がキノコを食べた感じ。大好き!」

まさに、この体験を完璧に言い表してくれた言葉でした。

 

 

今回のブラウザアニメーションは、2つのライブラリを使って実現しました。

「瞬き」や「手を振る」などの複雑な動きにはLottieを使用しました。このアプローチの最大のメリットは、デザイナーが自分のタイムラインで微調整できるところです。デザイナーが細かい動きやイージング関数を仕上げている間、開発チームは他の部分の実装を進めることができました。

最終的には、いくつかのJSONファイルを追加するだけで一斉に動き始めました。

それ以外の部分にはMotionという、Sentryアプリケーションでも使用している素晴らしい汎用アニメーションライブラリで実装しました。特に useScroll() フックを多用しました。……ちょっとやりすぎたかもしれませんが。

 

Rollbackが基づいているデータに注意を払う

Rollback が他の年末レビュー系機能と少し違うのは、Sentry が多くの人にとって ”仕事で使うツール” であるという点です。

確かに、同僚たちと自分の統計データを見せ合って楽しめるという側面もあるのですが、それによって職場で気まずい空気になったり、不適切な場面で話題になったりすることは避けたかったのです。そこで私たちは組織ごとに、 Rollback を完全に無効にするオプションを提供するのが最善だと判断しました。

結果的にその設定を選んだ組織はごくわずかとなりました。それでもこうした選択肢を提供できたことには満足しています。

 

Rollback のSNSでの反応

このプロジェクトの大きな目的の一つは、もちろん「シェアされること」でした。

私たちはXやBluesky、Slackのワークスペースなどで気軽にシェアされ、好意的に受け取られることを期待していました。ソーシャルボタンをいくつか追加すれば、特に問題はないと考えていました。しかし実際はそう簡単にはいきませんでした。

これらのボタンはウェブインテントに依存しており、テキストとリンクの共有には対応していますが、私たちはもっとデザイン全体をしっかり見てもらいたいという思いがありました。そう思うほど、自分たちのプロダクトに自信があったのです。

そこでいくつかの方法を検討することになりました。

  • オプション1:公開閲覧が可能な、シェア向けのリンクを用意する
  • オプション2:ユーザーが自分で投稿できる画像を提供する

シェア用リンクの提供は、とても魅力的な機能でした。アニメーションや音声も含めて、Rollback の全体像をそのまま届けることができ、ユーザーは簡単なテキストリンクだけで完結する点もメリットです。

しかし、それにはユーザー体験とセキュリティ面で課題がありました。Sentryではプライバシーを常に最優先しているため、ユーザーの同意なしに Rollback が公開されてしまうような事態は避けなければなりません。そのため可視性を制御する仕組みが必要不可欠でした。また認証のないエンドポイントを公開することになるため、セキュリティリスクも増えることになります。

オプション2 は、完璧ではない箇所もありましたが画像の提供というシンプルさに魅力を感じました。ユーザーは自らの意思で情報をシェアでき、アクセス制御に関する責任も回避することができるからです(全てのプロジェクトがこうであったらと思います)。

締め切りが迫る中、この選択肢が最も現実的で明確な解決策でした。

 

Rollback は努力に見合った価値があったのか

 

その答えは「Yes」です。

今もなお、Rollback をチェックしてくださったユーザーは増え続けています。最初の24時間だけで、私たちは世界 130カ国以上の 10,000人以上のユニークユーザーにRollbackを提供しました。

そして何より嬉しかったのは、ユーザーの皆さんが自分の Rollback 画像を SNS でシェアしてくれていたことです。

それが、チーム内の Slack を賑わせているという声も耳にしました。中には「2025年はもっと本格的な Rollback を活用するために Sentry をさらに使いこなそう」と決意している方もいらっしゃいました。

正直、ここまでの反響があることは予想外でした。ハックウィークで冗談半分に、楽しく取り組んだことから始まったものが、こうして成功に終わったことが何よりも嬉しい成果だと感じています。

 


 

IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。

シェアする

Recent Posts