Gaudiy Tech Blog

Gaudiyの技術、開発組織、カルチャーについてお伝えするブログです

10min勉強会の導入と、運用改善をふり返る。

f:id:gaudiy:20211217112850p:plain

こんにちは。エンタメ領域のDXを推進するブロックチェーンスタートアップ、Gaudiyでフロントエンドエンジニアをしているkodai(@r34b26)です。

色んなアドベントカレンダーをみながら、もう2021年が終わるのか…という実感が湧いてきました。

今回は、約2ヶ月前から開発チームで取り入れた「10min勉強会」について、その運用と改善の道のりを振り返ってみたいと思います。

勉強会がなかなか続かなかったり、チーム間のコラボレーションを促したい方にかなりオススメなので、よければご参考ください!

1. 10min勉強会を導入した背景

元々Gaudiyでは「dev hour」という名の、1時間枠での勉強会を開催していました。

その後、職種横断のコラボレーションをより促進するために、エンジニアに閉じない全社向けの勉強会としてGaudiy Hourが今年の6月から始まり、その運用が継続されている状況でした。(今もGaudiy Hourの運用は続いています。詳しくは、デザイナーのTORAJIROくんが以下noteにまとめてくれてます。)

note.com

このGaudiy Hourは「発表するトピックを投票制で決める」というDAO的な仕組み(民主的なやり方)で、うまく運用を回せていましたが、開発が忙しい時期になるとどうしても「続かない…」という課題が再び発生してきました。

続かない理由はいくつかあるのですが、

  • 開発が忙しすぎて時間が取りづらい
  • 発表準備に時間がかかり、負荷が高い
  • 1時間も話せるようなトピックは枯渇する

みたいなところがありました。

加えて、今年の夏頃からExperience TeamとPlatform Teamの2チーム体制に移行したことから、チーム間でのナレッジ共有がうまくできていなかったり、コミュニケーション頻度が減ってしまったことも新たな課題としてありました。

こうした課題を解決するため、今年の10月から「10min勉強会」の運用を、開発チーム全員を対象に導入してみることにしました。

2. 運用のはじまり

きっかけは、エンジニアのshoさんからの提案でした。

f:id:gaudiy:20211216235842p:plain

Slackを遡ってみたら、10月11日に提案がありました。

この10min勉強会は、ANDPADさんやログラスさんの発信を参考にして導入しました。

tech.andpad.co.jp

Gaudiyにおける目的としては、ナレッジを属人化させず、実際の開発で使えるようなレベルまでチームに浸透すること。10分という短い時間設定にすることで、日々のスコープでの学びや気づきを共有しやすくし、習慣化することを狙いとしています。

初期の運用としては、以下のような形でスタートしました。

  • 開催日:月・水・金の12:00〜(10分間)
  • 対象:開発チームのメンバー全員
  • 内容:Notionにかるくまとめてシェア

GaudiyではSlackのハドルで会話する文化が根づいているので、10min勉強会も、月・水・金の12時に#dev_teamのSlackチャンネルでリマインダーを飛ばし、そこのハドルに全員が集まる形で実施しています。

f:id:gaudiy:20211217000112p:plain

スレッドに共有したいNotionやPRのリンクなどを貼ってます

3. つまずいたポイントと改善プロセス

2ヶ月ほど運用を続けてきた中で、いくつか躓いた点があったので、その改善プロセスについてもご紹介したいと思います。

3-1. 発表用の資料をつくらず、書記を立てる

はじめは発表者がかるくNotionにまとめてから共有するスタイルにしていましたが、人によっては準備に時間がかかることもあったので、発表者ではなく、他の人を書記に立ててドキュメント化するスタイルに変更しました。

これによって負荷が分散され、かつ発表が終わった段階できちんとドキュメント化がなされる状態をつくることができました。

f:id:gaudiy:20211217000254p:plain

実際の提案①

また、開始時刻に間に合わない人がいた時に、以前は集まるまで待っていることがあり、結局10分以上かかっていたことも課題のひとつでした。これに対しても、その場でメモを書き進めることで、途中から入ってきた人もある程度キャッチアップしやすくなりました。

3-2. ネタぎれ防止とkaizenをセットにする

もうひとつは、勉強会テーマの「ネタぎれ」の問題です。週3でやっていると、10分間とはいえ、発表ネタが尽きてくることがありました。

そこで10min勉強会の空いたコマに、Slackに投稿されているチームのkaizenを拾って、共有する時間を取り入れてみることにしました。

日々のSlackで、細かいレビューの観点や、細かいコード上の改善点などが共有されてはいるものの、投稿が流れてしまったりしてチームに十分浸透できていない課題もあったので、10min勉強会でその週のkaizenを拾いながら、軽く議論するみたいな形式も導入しました。

f:id:gaudiy:20211217000457p:plain

実際の提案②

Slackの共有で終わってしまいがちな細かいナレッジの蓄積だったり、習慣を途切らせない工夫として、うまく運用が回っている点かなと思います。

4. 10min勉強会を運用してみての変化

10min勉強会を運用してみて、ナレッジ共有の習慣がついたのと、課題のひとつであったチーム間でのコラボレーションが促進されるようになったなと感じます。

エンジニアメンバー全員が集まる場ができたことで、誰がどこに詳しいのか、何に興味持っているかが以前よりもわかるようになり、「このレビューだったら、この人に聞いてみようかな」という動きが、チームをまたぐ形で生まれてきています。

一方で、kaizenやナレッジの共有はチーム横断でできるようになったものの、それを実践まで落とし込むレベルまではまだ至っていないので、そこは今後の課題かなと思います。また、発表者が同じ人に偏りがちなところもあるので、うまく分散化する仕組みを導入していきたいです。

5. さいごに

今回は、Gaudiyの開発チームで取り組んでいる「10min勉強会」についてご紹介しました。

簡単に始められて、習慣化しやすい取り組みだと思うので、ぜひ試してみてください。

最近は個人としてだけじゃなく、チームとしてつよつよにならないとな、という思いが強いので、チームの改善に興味ある方がいればぜひお話ししてみたいです!

自分のmeety貼っておきます。

meety.net

あとGaudiy Hourは社外の人も参加できますので、よければぜひー

www.notion.so

LaunchDarklyを入れてフィーチャーフラグの運用を改善した話

f:id:gaudiy:20211208171540p:plain

こんにちは!エンタメ領域のDXを進めるブロックチェーンスタートアップ、Gaudiyでエンジニアをしている椿(@mikr29028944)です。

僕が所属しているExperienceチーム(ユーザー体験に関わる開発を担う)では、リリースのサイクルを極力短くして、ユーザーの方になるべく早く価値をお届けできるように「フィーチャーフラグ」を活用しています。

今年の7月頃から導入し、チームで運用を続けてきましたが、その中でいくつかの課題も見えてきました。そこで今回は、実際に直面した課題と、Gaudiyがそれに対してどのようにアプローチし、解決してきたかについて、お伝えできればと思います。

フィーチャーフラグを導入してみたけれど、うまく運用できていないチームや、フィーチャーフラグの導入を検討する上で、どのような課題が起こり得るのか把握したい方などにご参考になると嬉しいです!

1. フィーチャーフラグを運用する中での課題

はじめに、フィーチャーフラグの運用を理解いただく上で、Gaudiyのアーキテクチャ構成について簡単に説明させていただきます。

Gaudiyが提供しているコミュニティアプリのアーキテクチャは、下図のようなマイクロサービスアーキテクチャを採用しています。

f:id:gaudiy:20211208010634p:plain
全体のアーキテクチャ構成

ここでは詳細な説明は省きますが、この構成のもとで、新規フラグの追加フローとしては、以下のような形で運用していました。

  1. データベースにフィーチャーフラグを追加
  2. GraphQLのスキーマを修正
  3. フロント側も同様にスキーマを修正
  4. Notionなどのドキュメントにフィーチャーフラグの詳細を記入

ただ、このフローで生じてきた問題は、フィーチャーフラグの実装コストがめちゃくちゃかかる…ということです。特に感じた課題としては、2点ありました。

1-1. 全環境におけるフラグの状態把握がしづらい

データベース上でフラグを管理していたため、全環境×テナントごとに用意されているフラグを、一覧で確認することが不可能でした。

また、いつ、誰によって状態の変更がなされたかの把握が難しく、なにかあった際に誰に聞けばいいのかわからない状態でした。加えて、フラグを追加した人がNotionにその詳細を書くという運用をしていましたが、段々とメンテされなくなり、古いドキュメントのまま残り続けてしまう、といった問題もありました。

1-2. フラグの実装上のルールが統一されてない

さらに、使われなくなったフラグが削除されずに残り続けることで、コードベースを複雑化させてしまっていました。

たとえば、トップのコンポーネントですでに制御されているにもかかわらず、フラグを挿入してしまうなどの無駄が生じる問題や、フラグを挿入する際にリファクタリングで関数を分けるのではなく、そのコード上に上書きしてしまって一つの関数が肥大化していく、みたいな問題が起きていました。

これらに加え、他にも課題がたくさん……

カテゴリ 課題
管理 環境ごとのDBにフラグを用意するコストと運用ミスの発生
管理 Bizサイドなどの開発者以外の人がフラグを変更しにくい
UX 単一ごとのフラグ取得のローディング状態を考える工数がかかり、UXも悪化
設計・開発 実装コストが高く、メンテナンスが大変(※)
設計・開発 フラグを使う方法・宣言がバラバラ
設計・開発 もともとフラグを置く想定をせずにコンポーネント設計をしていたため、
既存のコードに置く際に散在してしまうことがある

※補足すると、BFFにフラグのコードを書いていましたが、フロントからの呼び出しも含めてフィーチャーフラグの実装コストがかかるのと、BFFのないサービス環境もあるため、その場合は実装の差異が生まれてしまってメンテナンスが大変という課題がありました。

2. フィーチャーフラグのツールを調査

これらの課題を解決するため、フィーチャーフラグのよりよい活用の仕方を検討している中で、フィーチャフラグ管理ツールの利用を検討することにしました。

いくつかのツールを調査した結果、Gaudiyでは「LaunchDarkly」というツールがよさそうだ、という結論になりました。

launchdarkly.com

各ツールの比較は、下図のCodeZineさんの記事がわかりやすかったです。

f:id:gaudiy:20211208011431p:plain
参照:https://codezine.jp/article/detail/14662

特にGaudiyの場合は、サービスの品質維持の観点から、リアルタイムでフラグの状態を切り替えられるという点が大きなメリットとしてありました。実際、瞬時にON/OFFが反映できるので、非常に運用しやすいです。

他にも、「ミニマムの場合はコストが抑えられる」「障害が起きてもフラグの状態が保存されるため、サービスの継続性が高い」「公式ドキュメントが充実している」などのメリットがあることから、LaunchDarklyを利用してフラグを実装し、リファクタリングを併せて行う運用に変更しました。

docs.launchdarkly.com

また、LaunchDarklyは、開発する上でのUXが良いのも特徴です。

たとえば、Gaudiyのエンジニアの多くが使用しているエディター、VS Codeのプラグインも備わっています。

このプラグインの特徴としては、以下の3点があります。

  1. ソースコード上で各フィーチャーフラグの現在の値を確認できるため、そのためだけに管理画面に入ったり、どのような値が入るかをデバッグしたりする必要がない。
  2. ソースコード上でフィーチャーフラグのkey入力を自動補完してくれるため、keyのタイポによる意図しないバグが生まれにくい。
  3. VS Code上でフィーチャーフラグの値を変更できるため、変更のために管理画面にいく必要がない。

f:id:gaudiy:20211208011828p:plain
👆key部分をホバーすると、現在のフラグの値が確認できる

f:id:gaudiy:20211208011913p:plain
👆各フィーチャーフラグの値を変更できる

上記のような感じで、エディターのみでフィーチャーフラグの操作を完結でき、ストレスのないフラグ管理を可能にするのが、開発者目線での魅力かなと思います。

3. LaunchDarklyを導入して何が変わったのか

LaunchDarklyの導入と、コードのリファクタリングを実施した結果、以下のように前述した課題を解決することができました。

カテゴリ 課題 結果 詳細
管理 環境ごとのDBにフラグを用意するコストと運用ミスの発生 各環境に自動的にフラグが生成されるようになった
管理 Bizサイドなどの開発者以外の人がフラグを変更しにくい GUIツールで誰でも更新がしやすい
UX 単一ごとのフラグ取得のローディング状態を考える工数がかかり、UXも悪化 フラグを一括で取得することができるようになった
設計・開発 実装コストが高く、メンテナンスが大変 フロントからLaunchDarklyのフラグを参照する形で実装コスト減
設計・開発 フラグを使う方法・宣言がバラバラ フラグの使う方法・宣言をLaunchDarklyのuseFlagsに統一した
設計・開発 もともとフラグを置く想定をせずにコンポーネント設計をしていたため、既存のコードに置く際に散在してしまうことがある リファクタリングを実施して解消した(※後述)

たとえば、フィーチャーフラグの設定一覧はこんな感じです。

f:id:gaudiy:20211208012257p:plain
👆右のトグルボタンのON/OFFでフラグを切り替えられる

また、サービス環境も一覧できます。

f:id:gaudiy:20211208115233p:plain
👆フラグ追加時に右の全環境にフラグが追加される

Gaudiyでは1つのソースで複数のサービス(コミュニティ)を管理しているため、フィーチャーフラグを追加した時に、全サービスに一律でフラグが追加されるのはとても便利です。

また、フィーチャーフラグまわりの課題解決だけでなく、特定のユーザー限定でフラグを有効にできる機能を利用することで、管理者ユーザーのみフラグをONにして、本番環境での動作確認をすることが可能になりました。これによって、テスト環境でのテストから、本番環境へのデータ移行をするコストが大幅に削減できました。

※付け加えると、一部のユーザーにこの機能を適用することで、クローズドβ公開のような限定公開も簡単に実現することができます。

4. 実装の際に注意していること

ツールを導入したことでかなり運用しやすくなりましたが、実装の際に注意している点がいくつかあるので、それについてもご紹介します。

4-1. 親コンポーネントでの制御を意識する

特にフロントエンドでは、バックエンドと比べてフラグが多くなる傾向にあります。そこで、できるだけ親コンポーネント側で制御することを優先しています。

こうすることで、フィーチャーフラグを使っていることを明示できますし、検証が終わったときには削除しやすくなります。

社内での工夫としては、フィーチャーフラグライブラリにあるLaunchDarklyのHooksを、Contextを使ったコンポーネントとして、複合コンポーネントを作って利用しやすくしています。

kentcdodds.com

...

// FeatureFlagを適用するためのコンポーネントを作成
export const FeatureToggle = ({ featureFlagName, children }: Props) => {
  ...
  return <FeatureToggleContext.Provider value={value}>{children}</FeatureToggleContext.Provider>;
};

const On = ({ children }: ChildProps) => {
  const { featureFlagEnabled } = useFeatureToggleContext();
  return <>{featureFlagEnabled && children}</>;
};

const Off = ({ children }: ChildProps) => {
  const { featureFlagEnabled } = useFeatureToggleContext();
  return <>{!featureFlagEnabled && children}</>;
};

FeatureToggle.On = On;
FeatureToggle.Off = Off;

フィーチャーフラグコンポーネントの活用例:

const Group = () => {
  ...
  return (
      <CommunityHome>
         // フィーチャーフラグを活用している箇所が深掘りをしなくてもわかる
        <FeatureToggle featureFlagName="groupTimelineReleaseFlag">
          <FeatureToggle.On>
              <TimelineGroupPage />
          </FeatureToggle.On>
          <FeatureToggle.Off>
              <GroupPage />
          </FeatureToggle.Off>
        </FeatureToggle>
      </CommunityHome>
  );
};

4-2. フィーチャーフラグの種類によって実装方針を定義する

また、フィーチャーフラグの利用法によっても実装の仕方は変わってきます。

Gaudiyでは、主にリリースフラグとアクティベーションフラグとして利用することが多いですが、できるだけコード上に存在しないほうが将来的な負債にならないと考えているため、リリースフラグとして早期に消すことを前提とした使い方が多いです。また、アクティベーションフラグに関しては、利用ケースとしても少し長期でみて、動作を変更したい時に利用しています。

リリースフラグを実装する場合は、例えばhooksの関数を制御したい場合は、同じ処理が重複することがあったとしても関数を2つ設ける方針にしています。これは消しやすさを優先した実装です。

そのため、スコープとしても、リリースフラグを消すところまで開発チームのコンテキストとして抱えるようにしています。

2つの関数に分けてフラグで制御するパターン:

const { singleGroupReleaseFlag } = useFlags();

const handleSubmitV2 = useCallback(
    async (value: TopicCreateValue) => {
        await createOrUpdateTopic(value);
    },
    [createOrUpdateTopic]
  );

const handleSubmit = useCallback(
    async (value: TopicCreateValue) => {
        ... // 他の処理
        await createOrUpdateGroupTopic(value)
    },
    [...]
  );

逆にアクティベーションフラグの場合は、すぐに削除できないものに利用されるため、2つの関数に分けて運用するのではなく、同じ関数内にフラグ制御を設けて使う場合が多いです。

これは長期に滞在することになるため、関連する箇所で不具合が発生した場合に、複数箇所を修正する必要が出てしまうことを避けるための運用です。デメリットとしては、より複雑になってしまうことがありますが、たとえば不具合発生時に、片方しか修正できていなかったなどの問題を考慮しての方針としています。

同一関数内でフラグによる制御するパターン:

const { singleGroupActivationFlag } = useFlags();

const handleSubmit = useCallback(
    async (value: TopicCreateValue) => {
       
   // フラグが適用される場合の処理    
        if (singleGroupActivationFlag) {
            await createOrUpdateTopic(value);
   // それ以外
        } else {
            await createOrUpdateGroupTopic(value);
        }
    },
    [...]
  );

4-3. フィーチャーフラグの追加・更新管理

また、フィーチャーフラグを追加し忘れて実装してしまうことも一部発生していたので、フィーチャーフラグが必要かどうかのチェックと、名前、対象範囲、消すタイミングを開発チケットの段階で記入することで、抜け漏れを防ぐようにしました。

これにより、チケット作成の段階でフィーチャーフラグの考慮をするようになり、実装漏れすることがなくなりました。

f:id:xiaochuan:20211208134605p:plain
👆実際のチケット

5. 解決できた課題とこれから

以上のようにフィーチャーフラグをうまく利用することで、開発コストの大きな削減と品質の向上につなげることができました。

現在はフラグが増えてきたこともあり、不要なフラグをきちんと削除することや、命名ルールなどを揃えてオペレーションミスが発生しづらくするなど、引き続き改善しています。

また、LaunchDarklyの料金プランを上げると、スケジュール機能A/Bテスト機能なども利用できるので、このあたりは今後利用を検討していけたらと思っています。

6. おわりに

今回は、フィーチャーフラグの運用で出てきた課題と、その解決アプローチとしてのLaunchDarkly活用についてご紹介させていただきました。

まだまだ試行錯誤中なので、フラグのうまい利用の仕方や、出し分ける機能の粒度など、他社さんのよいTipsがあったらぜひお話をお伺いしてみたいです。

Gaudiyでは他にも、アジャイル開発を改善していくための取り組みを色々行っているので、開発プロセスの改善に興味のある方がいたらぜひお話ししましょう!

(僕のMeetyです。DDD以外でも全然大丈夫なのでよければ!)

meety.net

Gaudiyの技術選定については、こちらの記事をご参考ください!

techblog.gaudiy.com

毎週水曜日、オープン勉強会やオープンオフィスもやってます!

www.notion.so

文化人類学の手法を用いたユーザーインタビュー実践のコツ

f:id:gaudiy:20211129210805p:plain

こんにちは!エンタメ領域のDXを推進するブロックチェーンスタートアップ、GaudiyでプロデューサーをしているRyosuke(@RNmlc1)です。

プロダクト開発において「UXリサーチ」を実施している企業は多いと思いますが、Gaudiyでもユーザー中心のプロダクト開発を進めるため、積極的に取り入れています。

なかでも、N1でユーザーのメンタルモデルを深掘る「デプスインタビュー」をよく実施しており、プロデューサーとデザイナーが中心となって取り組むことも多いです。

前回のTech Blogでは主にフィールドリサーチをご紹介しましたが、本エントリでは、デプスインタビュー実践のコツや、どのようにインサイトを作り出しているかについて詳しくお伝えしてみます。

ユーザーインタビューってどうやるの? ユーザーインタビューしてはいるけど、うまくインサイトが導き出せない…といった課題感のある方に、ご参考になると嬉しいです!

なぜユーザーインタビューを大事にしてるのか

はじめに、なぜGaudiyではユーザーインタビューを大事にしているかについて、簡単にご説明します。

Gaudiyが開発・提供するファンコミュニティサービスは、マンガ、アニメ、ゲーム、アイドル、スポーツなど様々なエンタメ領域のIP(知的財産)を扱っていますが、当然ながら、そのIPごとにユーザーの属性が全く異なる独自の文化圏が存在します。

そうしたユーザーの方々に、GaudiyのバリューのひとつでもあるFandom(ファンを喜ばせる体験)を届けるためには、どういう属性のユーザーが、普段どんな活動をどういう感情で行っているのかを理解しておく必要があります。

そこでGaudiyでは、ユーザーの「メンタルモデル(※)」から良質なインサイトを抽出し、プロダクトや企画の方向性を決定していくことを大事にしており、そのための「ユーザーインタビュー」をよく実施しています。

※メンタルモデル…認知心理学の用語で、人間が無自覚のうちに持っている認識と行動のパターンのこと。

ユーザーインタビューは、「探索」「検証」の目的によって大きく2つに分類され、それぞれに様々な手法が存在しますが、Gaudiyでは、N1でより深いインサイトを得られる「デプスインタビュー」を実施する場合が多いです。

そこで今回は、マンガアプリ「GANMA!」さんとの共同プロジェクト「GANMA!コミュニティ」におけるデプスインタビューを例示しながら、Gaudiyで普段どのようにユーザーインタビューを設計、実施し、インサイトを抽出しているのか、その具体的なプロセスをご紹介できればと思います。

デプスインタビューの全体プロセス

今回は、GANMA!コミュニティを利用しているユーザーの方5名を対象に、それぞれ約1時間ほどデプスインタビューを実施しました。

インタビュイーの選出については、コミュニティの利用頻度や、普段の活動内容など、さまざまな軸で異なるタイプの方々にお声がけし、ご協力いただきました。

デプスインタビューの設計・実施から、インサイト抽出までの一連のプロセスは以下になります。

  1. メンタルモデルの仮説を元にしたインタビュー設計
  2. インタビューの実施
  3. 個々のインタビュー記録に、メンタルモデルの解釈を加えて整理
  4. すべてのインタビューをまとめ、ペルソナを分類
  5. ペルソナごとにユーザーインサイトを作り出し、モデリングで可視化

f:id:gaudiy:20211126163053p:plain

それでは、各プロセスにおいてどのように実施しているのか、具体的な方法とそのポイントを次からご紹介していきます。

1. メンタルモデルの仮説を元にしたインタビュー設計

まずは、インタビュー対象のユーザーさん(以下、ユーザー)のメンタルモデルを考慮した質問項目を設計します。

具体的には、普段のコミュニティ活動やTwitterなどのSNS上での活動をリサーチし、ユーザーの特徴的な発言や行動を拾います。

これらを元に「このユーザーはこういう発言をしているから、こんなメンタルモデルを持っているんじゃないか」といった仮説を話し合いながら、質問を設計していきます。

実際のインタビューの設計手順としては以下です。

  1. インタビュー対象ユーザーの、コミュニティ(プロダクト)での活動や、TwitterなどSNS上での活動をリサーチする
  2. ユーザーが普段どういう活動しているかを付箋で挙げていき、いくつかのトピックを抽出する
  3. ユーザーの言動から仮説を立て、インタビューで掘りたい箇所に見当をつける
  4. 仮説に関する質問を列挙し、トピックに紐づけて整理する
  5. 自分たちが聞きたい質問を追加する
  6. それらをシーケンスに並べる(会話が連続しそうな順番、関連性を意識する)

f:id:gaudiy:20211126145714j:plain

👆上記の手順に従って作成した、質問シーケンス

このように、事前に対象ユーザーのメンタルモデルの仮説を立て、インタビューでどこを掘るべきかの見当をつけておくことが大事です。一方で、実際のインタビューでは質問シーケンスは参考程度に留め、会話の流れに合わせて質問の順番や内容を変えています。

2. インタビューの実施

事前準備ができたら、インタビューの実施です。ここでは、インタビューにおいて気をつけているポイントを4つほどご紹介します。

2-1. 相手との「ラポール形成」を大事にする

信頼関係が築かれている状態のことを心理学の用語で「ラポール形成」と呼びますが、インタビューにおいても相手とのラポール形成は重要です。

相手の感性に対して興味・共感を示すことで、ユーザーが自分の話に興味を持ってくれていると感じることができ、より深いストーリーを聞き出すことができます。

ここでのコツとしては2つあって、ひとつは「尋問形式にならない」ということ。淡々と質問をしていくと尋問のようになり、ユーザーが心地よく発言することが難しくなってしまいます。結果的に、本来のメンタルモデルを引き出せない、という失敗にもつながってしまうので注意が必要です。

2つめに「インタビューの設計段階で盛り上がるポイントを作っておく」ということ。設計段階の洗い出して多くでた質問項目は、ユーザーにとっても中心の活動である場合が多く、発言しやすいポイントになります。こうしたポイントを把握し、そのための質問や話題を用意しておくことで、インタビュー中の盛り上がりを作りやすくなります。

2-2. ひとつの話題を深く掘り下げ「メンタルモデル」を探る

話の表層だけをすくわないことが大切です。ユーザーが「〇〇するのが楽しい」と言ったとき、〇〇がその人にとってどういう活動、どういう意味を持つのか。ここが重要なメンタルモデルになります。

これを引き出すためには、このメンタルモデルの解釈ができるまで一次返信で終わらせず、ひとつのトピックについて掘り下げる、枠を広げることが重要です。

その掘り下げのコツとしては、以下があります。

  • 具体的なエピソードを聞いて、過去の描写を引き出す(メンタルモデルは過去の体験によって構築されるため)
  • どのように? どう思ったか? を繰り返し尋ねて、その時の状況や感情を掘り下げる

2-3. 解釈の確認と、その反応から掘るべきポイントを見極める

話を掘り下げていき、ある程度見えてきたら、次に「〜ということですかね」とメンタルモデルの解釈を相手に当ててみます。

ここで重要なのが、この時の相手のリアクションを見て、その解釈が正しいかどうか、つまり掘るべきポイントなのかどうかを見極めることです。

たとえば、解釈を確認する質問に対して、ユーザーの返答が「たしかに〜」と続いた場合、これは元々ユーザーの考えにないリアクションなので、その解釈は外れている場合が多いです。

反対に、「そうそれ!」などテンションが明らかにあがった場合などは、メンタルモデルの解釈が正しかった時の特徴のひとつです。この場合は、このリアクションの後に出てくるワードがキーワードになる可能性が大きいです。

このように解釈の確認を挟みながら、それが正しければ深掘るべきポイントになり、それが正しくなければ別の路線に方向転換します。基本的には、「ひとつの話題を掘り下げる→解釈をぶつける→深堀り or 方向転換」を繰り返していくことになります。

2-4. 先入観が入った質問やワードをださない

聞き手の先入観が入った言葉を用いると、間違った方向にユーザーの答えを誘導してしまいます。正確なメンタルモデルを掘るためには、自分の先入観を取り除くことが重要です。

そのためには、自分たちが使う専門用語などは控え、普段ユーザーが使っているワードにインタビュアーが合わせるなどの工夫も大切です。

3. 個々のインタビュー記録に、メンタルモデルの解釈を加えて整理

インタビューを終えたら、記録を整理して、解釈を加えていきます。

インタビューの記録においては、ユーザーの発言に加えて、相手のリアクションや、聞き手の解釈も合わせて記録することが大事です。

文化人類学では「Thick Description(厚い記述)」という言葉もありますが、インタビュー中は、ユーザーが発していた言葉や反応をそのまま記述するだけでなく、なぜそのように行ったのか、根拠や背景、メンタルモデルの解釈も合わせて記録していきます。

次に、ユーザーの発言やメンタルモデルの解釈を視覚的に整理していきます。

Gaudiyでは、ホワイトボードツールのmiroを活用して、発言の解釈や重要なポイントを、インタビュー出席者で話し合いながら整理していきます。基本的には「KJ法」のような方法でグルーピングしたり、「この時にこういう行動をとる」など実際の行動フローをストーリーでまとめたりしています。

f:id:gaudiy:20211126145751j:plain

👆実際のインタビュー整理

4. すべてのインタビューをまとめ、ペルソナを分類

こうして、全員分のインタビューが終わり、それぞれの情報を整理した上で、ペルソナを分類します。

インタビューで出てきたキーワードをもとに、どういう活動の軸があったかを話し合いながら、属性の分析や、ユーザーのグルーピングを進めていきます。

GANMA!コミュニティでは、対象ユーザー5名の共通点や違いなどを抜き出し、その特徴や関係性を整理していくと、大きく3つのペルソナに分類されました。

f:id:gaudiy:20211126150111j:plain

👆実際に分類したコアユーザーのペルソナ

5. ペルソナごとにユーザーインサイトを作り出し、モデリングで可視化

さいごに、3つのペルソナのまとめとして「共感マップ」を作成します。

このモデリングを行うフェーズでは、以下のようなプロセスで思考しています。

  • メンタルモデルを表す言動を中心に、断片的な個々の情報からインサイトを作り出す
  • インサイトのロジックが通るかを検証するため、具体的なファクト(ユーザーの実際の言動)で裏付けを取りに行く
  • 重要なインサイトを中心にモデリングでまとめる

共感マップは、ペルソナの視点での感情・行動や、ペイン・ゲインなどをマップ化して整理したものです。可視化しておくことで、ペルソナのニーズ把握に役立ちます。

f:id:gaudiy:20211126145833p:plain

👆実際に作成した「共感マップ」

また他にも、「文化モデル(Cultual Model)」というモデリング手法を活用する場合もあります。

f:id:gaudiy:20211126145947p:plain

👆実際に作成した「文化モデル(Cultual Model)」

文化モデルは、インタビューで登場した人物やコト、モノに対する、対象ユーザーのメンタルモデルや、それぞれがどのように影響しあっているかの関係性を可視化するものです。

今回ご紹介した共感マップや文化モデルの他にも、メンタルモデル・ダイアグラムやKA法など、様々なモデリング手法が存在するので、目的に応じて選択すると良いと思います。

また近年、海外を中心にReseachOpsの概念が広まっていますが、 GaudiyでもUXリサーチレポジトリ構築の一環として、モデリングで可視化されたユーザーインサイトをNotionにストックしていくという運用も始めています。

さいごに

今回はGANMA!コミュニティの事例をもとに、ユーザーインタビューとインサイト抽出について、具体的なプロセスや手法をご紹介させていただきました。

GaudiyではこうしたUXリサーチをもとに、プロダクト設計のフェーズから、ビジネス、エンジニア、デザイナーなどの関係者全員がコラボレーションし、UX起点で開発を進めているので、この辺りはまた追ってお伝えできたらと思います。

Gaudiyでは、今回ご紹介したユーザーインタビュー以外にも、目的やフェーズに応じて様々なUXリサーチを実践しています。UXリサーチやユーザー中心のプロダクト開発にご興味のある方はぜひお話ししましょう〜!

meety.net

12/3(金)にUXリサーチについて何でも聞けるグループトークも開催します!

meety.net

オープンオフィスやオープン勉強会もやってるので、遊びにいらしてください!

www.notion.so

地下アイドルのライブに潜入!プロダクト開発に活きるユーザーリサーチ

f:id:gaudiy:20211119181910p:plain

こんにちは!エンタメ領域のDXを推進するブロックチェーンスタートアップ、GaudiyでデザイナーをしているSuma(@piyojirou224)です。

このTech Blogはいつもエンジニア中心に投稿していますが、今回は初のデザイナーからのエントリです!プロダクト開発で大切な「ユーザーリサーチ」をテーマに書いてみました。

ユーザーリサーチは多くの手法があり、書籍で読んだらなんとなくわかるものの、実践するとなると生の情報って意外と少ないですよね。

そこで今回は、Gaudiyが実際のプロジェクトで実施した2つのユーザーリサーチについて、具体的なプロセスや意識したこと、学びなどをまとめてみたいと思います!

ユーザー中心のプロダクト開発や、ユーザーリサーチに関心のあるPdM、デザイナー、エンジニアのみなさんにご参考になると嬉しいです!

1. ユーザーリサーチとその種類

ユーザーリサーチとは「ユーザーの特性や物事を達成する際のモチベーションや言動・行動を学ぶために行う調査」のことです。(※こちらの記事が詳しいです。)

簡単に言うと、ユーザーのことを深く理解するために行われる調査になります。

ユーザーリサーチを大きく区分すると、「Generative Studies(生成的調査)」「Evaluative Studies(評価的調査)」に分けられますが、前者がユーザーの価値観や課題を探り、ビジネス機会を見出すことを目的とする一方で、後者は仮説課題がそもそも存在しているか、考案したソリューションは機能するのかを検証します。

具体的な手法としては、アンケートやデプスインタビュー、フィールドワーク、エスノグラフィーなどが「Generative Studies(生成的調査)」、プロトタイプテストやユーザビリティテストなどが「Evaluative Studies(評価的調査)」にあたります。

f:id:piyojirou224:20211119174521p:plain

生成的調査と評価的調査

ユーザーリサーチといっても多種多様なので、何を検証したいかによってその手法を使い分けることが大切です。

2. Gaudiyのプロダクト開発におけるユーザーリサーチの役割

Gaudiyでも、プロダクト開発のフェーズごとに様々な手法を用いてユーザーリサーチを行っていますが、なかでもユーザーの価値観や課題を探りにいく「Generative Studies(生成的調査)」を重点的に行っているのが特徴的かなと思います。

なぜかというと、Gaudiyは「FPaaS(Fan Platform as a Service:エフパース)」という、ファンとIPコンテンツを直接つなぐプラットフォームサービスをSaaS的にエンタメ企業に提供していますが、そのプロダクトのユーザー属性はIPごとに大きく異なるからです。

たとえば、身の回りの人を思い浮かべてみてほしいのですが、マンガのファンとアイドルのファンでは、雰囲気や趣味など結構違うのではないでしょうか? また、同じ「マンガ」というカテゴリであっても、作品のジャンルによって年齢や性別などファン層は異なるはずです。

f:id:piyojirou224:20211119174831p:plain

だからこそ、プロダクトを通じてファンに最良の体験を届けるために、個別IPのファンを深く理解することが大切です。その上で、クライアントとも共創しながら、ファンの特性に合わせて機能をカスタマイズしています。

またGaudiyでは、NFTやブロックチェーンなどの新しい技術をプロダクトの裏側で活用しているため、機能を開発する前に「どのような体験にすればファンに受け入れてもらいやすいか」を十分に検討する必要があります。

そこでサービスの企画前や、機能要件の設定前、リリース後などのタイミングで、インタビューやフィールドワークなどを中心としたユーザーリサーチを実施しています。また開発においては、このユーザーリサーチで作ったペルソナをもとにユーザーストーリーマッピングを作成し、開発要件の洗い出しをチームで行っています。

3. TIFのプロジェクトでユーザーリサーチを実施した背景

ここからは、実際のプロジェクトを例にしてご紹介したいと思います!

今年10月に開催された、フジテレビ主宰のアイドルフェス「TOKYO IDOL FESTIVAL(以下、TIF)」のプロジェクトでは、サービスの企画案を具体化していくために6月頃からユーザーリサーチを始めました。

その理由としては、大きく3つあります。

ひとつは、いままでGaudiyが提供してきたマンガやゲームのコミュニティとは、ファン層が違うことが予想されたこと。

ふたつめに、複数のIP(アイドル)をひとつのコミュニティで扱う形は今回が初めてだったので、大規模な改修が必要だったこと。開発コストをなるべく抑えつつ、ファンのニーズを満たすために、どんなファンがいて、なにに価値を感じるのかの理解は必須でした。

最後に、企画案を出すにあたり、取っ掛かりとなるヒントがほしかったこと。TIFとしてもオンラインコミュニティは初の試みだったため、これまでの知見がなく、ゼロベースで企画を立てなければいけませんでした。

こうした理由から、まず「どのようなファンがいて」「どんなライブの楽しみ方をしているのか」を探るために、アイドルライブでのフィールドリサーチ(観察&インタビュー)と、社内のペルソナに対するデプスインタビューを実施することにしました。

4. 実際のユーザーリサーチの進め方

では、具体的にどのようにリサーチを進めていったのか、そこで何を意識していたのかを思い出しながらまとめてみます。

4-1. 潜入フィールドリサーチ(観察&インタビュー)

まずフィールドリサーチとして、地下アイドルのライブと、TIFに先行する「mini TIF」のライブに潜入し、そこでユーザーの観察とヒアリングを行いました。

たとえば地下アイドルのライブ会場では、

  • 場内の人の分布
  • ファンの服装や雰囲気
  • 前方と後方の座席ではどんな人が座っているか
  • 推しアイドルの出番前後でどんな反応をしているのか

といった「状態」「行動」を観察しました。(ちなみに推しを聞き出すのは、ひとりで来ていらっしゃる方の隣に座って話しかけるのがスムーズでした。)

この観察から、たとえば「推しのグループの出番中ずっと反応している人もいれば、推しがステージの前に来た時だけ控えめに反応する人もいる」「グループの入れ替わりにより観客も入れ替わる(出番後の物販のためすぐ会場の外に出る)」といったことがわかりました。

さらに、その行動の背景を探るため、推しの出番が終わった2名のファンの方にお声がけして、直接インタビューをさせていただきました。

具体的には、以下のような質問をしました。

  • 応援し始めたきっかけはありますか?
  • どのくらいの頻度でライブに参加されていますか?
  • 周囲より控えめな応援だった気がしますが、いつもと同じですか?
  • アイドルフェスに行ったことはありますか?

こうした質問を通じて、おふたりの共通点として「元々は地上アイドルが好きだったけど、友人に教えてもらったり、ライブ配信アプリで可愛い子を見つけてハマった」という経緯があることがわかりました。

また、元の地上アイドルに戻らない理由としては、「距離感の近さ」「実際に会って話せること」「写真を撮れるから」といった回答があり、ファンが地下アイドルに感じている価値の共通項などを導き出すことができました。

ヒアリングを通じて得られたペルソナは、社内で「楽しんでもらいたいのはこういう人」というイメージを共有するために、簡単にスケッチをしてまとめました

f:id:gaudiy:20211119173605p:plain

実際のスケッチ

4-2. デプスインタビュー(社内インタビュー)

次に、アイドルファンの中でも、アイドルフェスに行くようなペルソナの解像度を上げるため、社内でTIFに何度か参加したことのあるメンバーにデプスインタビューを行いました。

社内インタビューでは、信頼関係のベースがあるため、より深いところまで聞けるというメリットがあります。

この際、ヒアリングで気をつけていたのは、自分の解釈を「こういう認識であっていますか?」と当ててみて、返ってくる反応を見ることです。というのも、結局ユーザーの認知の中で体験の良し悪しを判断されてしまうため、こちらの推測が「あくまで相手の認識に沿うものであるのか」を確認することを意識していました。

f:id:gaudiy:20211119172604p:plain

実際のインタビュー時のメモ

そして、1時間ほどのインタビューを通じて「この人からみたアイドル界隈はどういう関係になっているのか」というCultural Model(文化モデル)を作りました。

このCultural Modelをもとに、インタビューから得られた情報を整理し、関係性を可視化することで、のちに企画をする際のファンの体験設計に役立てました。

f:id:gaudiy:20211119172651p:plain

実際につくったCultural Model

こうした手法の異なるアプローチからユーザーのことを理解した上で、実際の企画を詰めていく際には、よりライトにリサーチできるSNSも活用しました。

例えば「エンタメ、NFT」といったワードで検索して、それに対して一般の人はどんな反応を見せているのか、またこれをアイドルファンに提供したらどんな反応になりそうか、といったことを調べ、企画の参考にしていきました。

5. ユーザーリサーチから得た学び

改めて振り返ってみて、ユーザーリサーチにおいて大事だと思うポイントをまとめてみます。

① なるべく多くの一次情報を得ること

まずは、なるべく多くの一次情報を得ることが大事です。対象となる人や状況の観察やインタビューなどを通じて、信頼できる一次情報を社内に持ち帰ってくることがファーストステップになります。

② 発言や行動の「特徴」に気づくこと

次に、一次情報を得ていく中でその特徴に気づくことが大事です。「普通はこう思うんじゃないか?」「こう行動するんじゃないか?」という仮説をなんとなく持った上でインタビューを行うことで、相手の発言との違いに気づくことができます。

また、話の矛盾点もヒントになります。たとえば「人の目なんて気にしない」と発言していた人から、別の文脈では「間違いを指摘されたら怖い」といった発言が出てきたりすることがあります。

この矛盾には、その人なりの背景や認知(=メンタルモデル)が潜んでいることが多いので、それを深掘っていくことでペルソナの特徴に気づくことができます。

③ フラットな目線で分析すること

最後に、分析の際には、個人のバイアスを入れないように気をつけることが重要です。

最初からフラットな目線を持つのはなかなか難しいので、場数を踏んだり他の人からフィードバックをもらったりして、認知の歪みに気づくことが必要になります。実際に、数人が同じ対象を各々で分析すると全然違う見方をしていることがあるので、自分の歪みに気づくきっかけを得やすくなるかなと思います。

ペルソナの発言や実際に目にした反応(=一次情報)を軸にして、飛躍しすぎないように気をつけながら解釈することで、実際のユーザーに近づけていくことができます。

6. さいごに

今回のエントリでは、Gaudiyで実施しているユーザーリサーチの一部を紹介させていただきました。

ユーザーリサーチを通じてアイドルファンの方々を深く理解できたことで、TIF本番では、動画を視聴しながらNFTサインが受け取れるなど、ファンの方々を楽しませるFandomな体験を提供できたかなと思います。

今回はインタビューなどの具体的なユーザーリサーチをメインにしたので、そこからどのように企画や機能に落とし込んでいったかについてはあまり触れられませんでしたが、そこは次週のblogにバトンタッチできればと思います!

Gaudiyではユーザー中心のプロダクト開発を行っているので、ユーザーリサーチやデザインにご興味のある方はぜひお話ししましょう〜!🐤🐤

meety.net

12/2(木)にプロダクトデザインの裏側をお見せするグループトークも開催します!

meety.net

オープンオフィスやオープン勉強会もやってるので、よければぜひ〜

www.notion.so

レトロスペクティブを週次→毎日に変更したら、チームの改善がどんどん進んだ話

f:id:gaudiy:20211112105421p:plain

こんにちは!エンタメ領域のDXを推進するブロックチェーンスタートアップ、Gaudiyでエンジニアをしている土居(@taro_engineer)です。

僕は普段、コミュニティや決済などの基盤を開発するPlatformチームで、バックエンドを中心に担当していますが、週次から毎日へとふりかえりの仕方を変えました。

ふりかえりはどのチームでも実践していると思いますが、よくあるのが「ふりかえって課題を洗い出せたものの、それが改善につながらずに忘れられてしまう」ことではないでしょうか。

そこで今回は、2ヶ月ほどチームでうまく運用できているレトロスペクティブの方法について、運用の工夫とともにお伝えしたいと思います。

チームの改善やDXの向上に取り組みたい方に、ご参考になると嬉しいです!

1. なぜ「毎日」ふりかえることにしたか

Gaudiyのふりかえりの歴史から言うと、元々はプロジェクトが終わるごとに実施していました。

背景として、Gaudiyではブロックチェーンを活用したファンコミュニティサービスを開発していますが、新規コミュニティの開発もあれば、既存コミュニティの新機能開発などもあり、常に複数のプロジェクトが進行しているような状況です。

大小さまざまなプロジェクトがありますが、大体2週間〜3ヶ月ほどの期間になるため、プロジェクト終了時のふりかえりだけでは十分な頻度を確保できていませんでした。

そこで、毎週金曜に開発チームでふりかえりを行うようになったのですが、それでも「1週間なにをしていたか、その時なにを感じていたかを思い出せない」「記憶が曖昧で事実にバイアスがかかってしまう」「ふりかえり自体に時間がかかる」といった問題がありました。

また、ふりかえりによって改善案がたくさん上がってきても、そのすべてを実行に移すまでには時間がかかるし、正確なイシューを捉えて次の改善にうまく結びつけることができていませんでした。

Gaudiyの事業は進むスピードが速く、不確実性が高いことを開発で取り扱っているため、チームの改善もアジャイル的に進める必要があると感じて、ふりかえりを「毎日」実施する運用に変えました。

2. Gaudiy流・レトロスペクティブと運用の工夫

このふりかえり手法を、Gaudiyでは「レトロスペクティブ」と呼んでいるので、その運用方法と意識していることをご紹介してみたいと思います。

※厳密なレトロスペクティブではないですが、「Don’t just Do Agile, Be Agile」という言葉があるように、アジャイル的な開発手法に固執するのではなく、アジャイルな状態であることが大事だと考えています。

まず運用としては、毎日実施している夕会で、10分間のレトロスペクティブを設けています。

10分間にした理由としては、毎日行うのでふりかえりに対する時間的コストや心理的コストをなるべく下げたかったのと、実際に何度か試したところ、1日分のふりかえりであれば10分程度でできることがわかった、ということがあります。

また、レトロスペクティブの観点は「👍良かった!」「👎惜しかった... 」「💪変えてこう!」「🧠今日のナレッジ」の4つにしています。KPTをベースにしながら、独自の項目を設定しました。

f:id:gaudiy:20211112090816p:plain

レトロスペクティブ用のNotionテンプレート

ここで大事にしているのは「ふりかえりが、次の改善アクションにきちんとつながるか」という点です。

KPTもシンプルで使いやすいですが、Problemはたくさん出てきたけど、具体的なTryにつながらない…といったことはよく起こりがちかなと思います。「ここを、こう改善していこう」と意思決定しても、それが実行に移されなければ意味がないので、それを解決する仕組みを取り入れたいと考えました。

そこでGaudiyでは、毎日のレトロスペクティブで「良かったこと」をたくさん出すように意識して、それを汎用化させることでチーム全体の改善を促しています。

というのも「良かったこと」は、だれかの実績なので他のメンバーも取り入れやすく、「惜しかったこと」を改善するTryよりも再現性が高いため、チームへの浸透率が高いです。各人の良い行動をチームみんなで真似していくイメージです。

f:id:gaudiy:20211112090913p:plain

各人の良い行動を、チームに共有して取り入れる

また、ふりかえりの最後に「今日のナレッジ」を設けることで、ただふりかえるだけで終わらせず、個人の良い動きをチームのナレッジに昇華させるアクションにつなげています。ちなみに最近では「今日のナレッジ&ドキュメント」という項目に改良して、プラス担当者も決めることでナレッジ蓄積を意識しています。

f:id:gaudiy:20211112101911p:plain

ふりかえり項目も改善し続けてます

もちろん良くなかったことの改善も大事なので、「惜しかったこと」に対してもチームで改善に動けるような工夫を取り入れています。そのひとつが、パターン・ランゲージの作成です。

たとえば、ある日のレトロスペクティブで「もう少し早く、Pull Requestを出すくらいのタイミングで、ステークホルダーと一緒に実際に開発したものを触りながら仕様漏れがないかの確認や改善を試みれるといいよね」といった声がありました。

そこから生まれた「ちょいデモ」というパターン・ランゲージは、手戻りが起きる可能性を極力避けるために、実際にチームでよく活用されています。

f:id:gaudiy:20211112102038p:plain

ちょいデモしてる様子

3. レトロスペクティブから実際に生まれた改善たち

運用開始してから数ヶ月ほどうまく回っていますが、ここでは、実際に生まれた改善アクションについていくつかご紹介してみたいと思います。

3-1. レビュー待ちPull Requestが解消され、開発全体のスピードが上がった

ある程度要件が決まり、不確実性が少なくなってくると、開発に集中してコードをゴリゴリ書いていくフェーズになります。このフェーズは開発のスピードが一段と上がるので、チーム全体のPull Requestがたくさん出てくるようになりますが、自分の開発とレビューのバランスを取るのがわりと難しかったりします。結果的にレビューが溜まってしまい、全体の開発スピードが鈍化することがありました。

そうした状況に対し、ある日のレトロスペクティブで「レビュー待ちのPull RequestがないかをSlackで尋ねたら、そこからチームでレビューを解消する動きが生まれた」ことが、良かったこととして挙げられていました。

f:id:gaudiy:20211112102107p:plain

自発的にレビュー待ちがないか確認してる様子

そこで、あるメンバーが自律的に実践してくれていた「レビューの時間を決めて解消する」という動きをチームで取り入れるため、「全員でレビューするタイミングをつくる」ことをNext Actionにしました。

レトロスペクティブでチームとしてのActionを決めると、また同じような状況があった際に、気づいた人が行動に移すことができているなと感じます。

f:id:gaudiy:20211112091205p:plain

チーム全体のレビューが早くなりました


3-2. 開発とコンテキストが異なる全社的なことにも、率先して参加した

またある日のレトロスペクティブでは、「全社宛ての依頼に対して、〇〇さんが率先して対応していた」ことが良かったこととして挙げられていました。

f:id:gaudiy:20211112091546p:plain

この良かったことの共有から、実際、また同じようなことがあった際に、チームのみんなが意識して行動に移すことができました。

f:id:gaudiy:20211112104430p:plain

他チームの依頼に開発メンバーみんなでレビューしている様子

f:id:gaudiy:20211112091431p:plain

良かった行動をまたふりかえり、カルチャーを強める

開発に集中していると、コンテキストが違う全社系の依頼をついつい見過ごしてしまうことがありますが、全社目線をもって改善していこうというチームの意識に変わりました。ナレッジ化まではいかなくても、チーム全員として何が良い行動なのかの意識醸成につながったかなと思います。

3-3. フロー効率を取り入れて、チームの生産性を向上した

さいごは、惜しかったことからの改善です。ひとつのチームが持つコンテキストが広がり、各人が別々のコンテキストのタスクを抱えていたことで、お互いのレビューをする際のコンテキストスイッチにコストがかかったり、今誰が何をやっているか把握しづらくてヘルプしづらいといった課題がありました。

結果として、チーム全体の生産性を下げているのでは? ということがレトロスペクティブで挙がっていたため、「次はフロー効率でやってみよう」というNext Actionが生まれました。

f:id:gaudiy:20211112091912p:plain

フロー効率を取り入れた日のレトロスペクティブ

こうした改善は、レトロスペクティブでなくても誰かの発案から実行に移せると思いますが、誰でも気がつける状態や、行動に移せる状態まで昇華していくためには、チームのレトロスペクティブで意識レベルの共有を行い、再現性を高めていくことがポイントだと思っています。

4. 現在感じている課題と今後改善したいこと

毎日のレトロスペクティブを導入したことで、以下のようなメリットを感じています。

  • 記憶が新しいのでふりかえりに時間がかからない
  • ある事象に対するリアルな気持ちを忘れにくい
  • 改善アクションが格段に増え、すぐに実行できる

特に、やはり3つ目の「小さく、すばやく」改善していけることが一番のメリットかなと感じます。

改善点を溜め込んでしまうと、Next Actionを決めてもそれを消化していくのに時間がかかるし、そもそもの状況が変わってたり、さらに負債が溜まってしまうこともあるので、毎日ひとつずつでも改善していくことが大事だと思います。

一方、以下については今後の課題として、これから改善していきたいと思っています。

① 定量的な観測はできてない

「変えていこう!」に挙げられたことがどのくらいチームに浸透したか、また実際に改善できたかの効果検証については、いまは定性的な感覚になってしまっています。これに対するひとつの解決策として、パターン・ランゲージの作成や活用があると思うので、定量的に測れるアクションにつなげていきたいです。

② チームに閉じている改善が多い

チーム内のふりかえりはうまく回っていますが、改善の影響範囲はチーム内であることが多いので、今後は全社への浸透もしていきたいと思っています。メンバーの自律的な改善から、チームの改善、そして組織全体の改善につなげていきたいです。

また、レトロスペクティブのやり方自体も、試行錯誤しながら常にアップデートしています。最近では、Next Actionにつなげるまで深ぼれないことがあることから、ふりかえりの時間を10〜20分間に設定し、柔軟に調整する形にしています。

5. さいごに

今回は、Gaudiyの開発チームで実践しているレトロスペクティブについて紹介させていただきました。Gaudiyのクレドのひとつでもある「Be Agile」なカルチャーが伝わっていたら嬉しいです。

今回、ブログを書く上でふりかえってみて思ったのは、チーム全体の改善を促すには、良くなかったことを改善するだけでなく、良いことを再現性のあるものに昇華することがアジャイルな組織では大切なのでは、ということです。

また、大きな目標を掲げて、大きな改善めざすのはもちろん良いことですが、そのためにも、毎日コツコツ小さな改善を積み上げることが大事だし、結果としてそれがチームの大きな改善につながっていくと感じています。

僕たちもまだまだ改善途上で、他社の開発チームの良いところもどんどん取り入れていきたいと思うので、初Meety作ってみました(笑)。チームの改善やDX向上に取り組まれている方、関心のある方、ぜひお話ししましょう!

meety.net

オープン勉強会などもやってますので、よければ遊びにいらしてください!

www.notion.so