Tabelog Tech Blog

食べログの開発者による技術ブログです

システムの理想を描くための取り組み

はじめに

この記事は 食べログアドベントカレンダー2022 の9日目の記事です🎅🎄


食べログでウェブエンジニアをしている関戸です。

日々システム開発をする中で課題に感じることは多くあり、課題を解消してもまた別の課題が出てきての繰り返しということはよくあると思います。もちろん、目の前の課題を解消することは大事ですが、課題の根本に対してもアプローチもしていきたいところです。

この記事の主題

この記事では、日々課題に追われる中で根本的なアプローチをするために、システムの理想を描くことに取り組んだ話をご紹介します。

課題に対して現状の延長線上でアプローチをしても、思うようにいかないことが多いです。世の中には同じ課題を抱えた人が考えた様々な仕組みがあるので、それを利用した新しい世界を作ることで課題解消をスムーズに進めたいと考えています。

例えば、改修後のテストでどうしても抜け漏れが出てしまうという課題があります。日々の課題解消として抜け漏れが発生しないように観点を蓄積したり、レビュー体制を強化するなどが考えられます。ただ、それでもなお抜け漏れが発生してしまうというのが現実的な悩みとしてあります。

そのような課題に対しては、自動テストの仕組みを整備して、改修による意図しない箇所への影響を検知したり、カバレッジ分析によってテストの網羅性を担保することが考えられます。

新しい世界となるシステムの理想を描くことによって、課題の根本に対するアプローチができると考えます。

食べログで日々課題となっていることについて、システムの理想を描いて、少しでも理想に近づく行動に変えていくことを目指す取り組みをしました。その具体的な内容や手法についてご紹介します。

現状を把握するためのアンケート実施

目的

課題の根本に対してアプローチしていくために現状を把握することにしました。一部のメンバーに対してアンケートを実施して、回答の傾向をみました。

回答の傾向から、日々の課題解消に追われているのか、世の中の様々な仕組みから食べログにおけるシステムの理想を描くことに目を向けられそうかを把握したいと考えました。

アンケート項目

日々システム開発をする中で課題を感じることはあるが、なかなか根本的なアプローチができないだろう項目として下記を考えました。

  • 食べログの技術環境を拡充し、組織の技術力を向上する
  • 技術情報を共有して、食べログの社風や文化を作ったり、社外に発信する
  • エンジニアの活躍機会を広げ、食べログ事業に貢献する

各項目について下記の観点で課題解消のアプローチとなる選択肢を作成しました。

  • A:現状の延長線上にあるアプローチをする
  • B:現状を変えて、新しい要素を取り入れたアプローチをする
  • C:未知の領域となるアプローチにチャレンジする

アンケートを実施した結果

具体的な選択肢と回答は下記の通りになります。図中のABCは上記の観点と対応しています。

※選択肢は社外の方でも伝わる文言に変更しています。

Aにあたる現状の延長線上にある回答数が多く、BCにあたる新しい要素や未知の領域ほど回答数が少ない傾向となりました。アンケートの結果、日々の課題解消に追われていることが分かりました。

システムの理想を描く会の実施

日々の課題解消に追われている現状から、課題の根本に対するアプローチができるようにシステムの理想を描く会を実施しました。

実施要項

アンケートの各項目で回答が多かった選択肢と自由記入欄を踏まえて、下記のテーマについて議論することにしました。

  • 自動テストなど開発効率を上げるための仕組みを作る
  • 社内で資料を作成して、技術情報を共有する
  • 職種を超えた取り組みをして、案件推進のスピードを上げる
  • 組織全体のスキルアップ

議論するにあたっては下記の点に注意しました。

  • オープンであり、誰でも参加できるかつ、参加しないことで本人の不利益とならない
  • 他者になりたいわけではなく、自分たちなりの理想を描く
  • 理想を語りすぎず、まずは行動していく

議論の手法

どのように議論を進めるかを考えたときに既存の手法でパッといいものが思いつかなかったので、下記の形を考えてみました。

「Day 1 〜 ブレスト  〜 理想を語ろう」では、「理想の状態とは?」で理想を語ってもらいました。また、その理想というのが具体的にどの点において理想なのか、「チャレンジ要素は何か?」の項目で明らかにしてもらいました。

「Day 2 〜 アクション  〜 実現可能性を探ろう」では、理想を語るだけでなく、第一歩となる行動まで想像してもらうことを意識しました。ただ理想を語るだけでは曖昧な話になりがちなので、理想に対する行動を想像することで話を具体化してもらう意図です。行動を想像するために「理想の状態を具体化するにあたって必要な調査は何か?」を問いかけて、「調査」といった比較的行動しやすいことを切り口として考えてもらいました。チャレンジ要素についても「何を試すことでチャレンジを実現できるか?」として、第一歩となる行動を考えてもらいました。

理想と第一歩となる行動までイメージできたところで、「Day 3 〜 コミュニティ  〜 実現可能性を探ろう」では、改めて議論する価値を問うことにしています。大事なのは継続して議論できることだと考えています。まわりの人に評価される結果が出せる議論になるかといった客観的な価値というより、自分として議論する価値が本当にあると感じるかを考えてもらいました。価値は感じつつも、今はその時期ではないとか、環境が整っていないために議論の継続が難しいことはあると思いますので、テーマの限界についても考えてもらいました。

議論の進め方

実際の議論として、例えば「自動テストなど開発効率を上げるための仕組みを作る」の結果をみると、さまざまな話題について意見が出ました。議論の進め方として、各個人で思うところの意見を記載し、その意図を説明する中で話題ごとにグルーピングをしていきました。

はじめに議論する「理想の状態とは?」の項目では、「テスト」、「デプロイ」、「オンボーディング」、「開発のしやすさ」といったグルーピングが見えてきました。その後の「理想の状態を具体化するにあたって必要な調査は何か?」などの項目では、そのグルーピングをもとに意見を出す形にしました。意見を出す方向性が見えていると意見も出しやすいと感じました。

議論した結果とそれを受けて考えたこと

システムの理想を描くことを目指して議論する会を実施してきました。議論した結果、システムの理想について議論することができ、理想を踏まえた現状に対する課題について意見が多く出てきました。

今は課題を整理しているところですが、今後はシステムの理想を具体的な形で描くことに議論を進めていきます。議論の手法として、それぞれが考える理想や課題について意見を出してもらうことの工夫をしてきましたが、意見をまとめていく段階ではさらに工夫が必要と感じています。

おわりに

取り組みとしてはまだまだ始まったばかりです。システムの理想を描くための最初のステップとして、現状を把握するためのアンケートやシステムの理想について議論する手法について、工夫した点があったのでご紹介しました。

今後は、システムの理想について議論した意見をまとめて形にしていくための工夫が必要になってきます。ひとつひとつ工夫を積み重ねて、システムの理想を描いて、課題の根本にアプローチできる状態に近づけていきたいと考えています。

明日は @4palace の「FLAKYなテストってなーに?」です。お楽しみに!