障害ふりかえりに向き合ってみた話

この記事は、弥生 Advent Calendar 2020 24日目のエントリーになります。

障害のふりかえりについて、私が感じていた課題と取り組んだことを書きます。

はじめに

私はいくつかのサービスについて品質保証の仕事をしています。ちょっと前までプロジェクトマネージャーを担当していました。どのような立ち位置でも、品質やテストに関して計画をし、実行をリードし、評価するということをやってきました。うまくいかないこともあるし、うまくいったこともあります。 その中で、個人的にうまくできないなとおもっていた、障害のふりかえりについて感じていた課題と取り組んだことを書きます。

なぜこれを書くか

障害が発生する、もしくはミスが起きるとふりかえりをして、次に同じことが起きないように対策を立てる、教訓にするという活動を行っているチームは多いと思います。私も、次に生かすためにふりかえりを行うことは大事、と思っています。障害が起きればふりかえりを行い、次に向けた対策を考え、次のプロジェクトでは同じことが起きないように対策を実行するということを行ってきました。

その一方で、私自身はふりかえりという活動がうまくできないなと思っていました。大きく分けると以下の2点に課題を感じていました。

  • 事実の抑えや原因をすっとばして、再発防止策を先に考えてしまう
    • 対策が先にあって都合がいい原因を選んでいるイメージ
    • 事実という土台がしっかりしてないからそこから導き出される再発防止策もふわふわしている
  • わかりやすい原因、対策を思いついたらそれ以外の発想が出ない
    • 誰かに説明をすることが決まっていると、わかりやすいに加えて、説明しやすいも加わる
    • ストーリーとしてこれだ!ってのがあると、それ以外目に入らなくなる、思いつかなくなる

 客観的に考えればできるはずでしょ、という話はありますが、私にとって、思い込み、思惑、心理的抵抗を排除して考えるということはそんなに簡単なことではありません。ましてや当事者の立場であれば、もっと難しいと思います。ということで、私がやってみたことをこれから書きます。

読んでもらいたい人

  • 障害のふりかえりをやってはいるものの、うまくいってないなと思っている人
  • 障害のふりかえりについて深く考えたことがない人

課題を整理

 はじめに、にも記載しましたが、ここで私の感じている課題を整理します。

  • 事実の抑えや原因をすっとばして、再発防止策を先に考えてしまう
    • 順を追って考えられていない
    • 次に向けた教訓を得ることを目的とするあまり、結論を急ぐ
    • 事実⇒原因⇒再発防止策の順で積み上げるべき
  • 事実の把握をおろそかにしている
    • 担当者、レビューをした人の話を聞いて、原因を考えていた
    • 現物を見れてない、記憶ベースの時もあった
  • わかりやすい原因、対策を思いついたらそれ以外の発想が出ない
    • 障害の原因となる欠陥を作りこんだ原因は1つではなく、複数の要素が絡まっていることがほとんど
    • 本来は原因が複数出てくるべきだが、ほかの原因はないか?という問いに対する答えが出てこない

やったこと

やったことは大きく分けて2つです。

  • 障害ふりかえりで考える項目を挙げた。挙げた項目について考える順番も決めた。
    • 経緯を現物で抑える
      • 混入した経緯
      • 検出できなかった経緯
      • チケットや成果物の格納場所のリンクを載せる
    • あるべき姿
    • 今のやり方の課題は?
    • 今度こう変える
  • 上記で挙げた項目をマインドマップの1つ目のノードにした。考えた内容は各ノードにぶら下げて書けるようにした。

f:id:yharuta:20201218110655p:plain
障害ふりかえりのマインドマップ

工夫したポイント

ここでのポイントは以下の3つです。

  • 考えるべき項目を挙げて、順を追って考えるようにした
    • 再発防止を先に考えない
  • 経緯を現物で抑える
    • 関わった人の話を聞く場合でも、現物をみながら経緯を追うようにする
  • 違う切り口の意見を考えやすいように、Excelなどのフォーマットではなく、マインドマップにした
    • マインドマップはExcelなどと比べて、意見をたくさん出す、というときに使いやすいと感じていたため

どうだったか

良かった点、改善が必要な点がそれぞれあります。

良かった点

  • 経緯を現物ベースでやると混入した経緯、検出できなかった経緯が腹落ちする
    • 複数人で行うときには皆が同じ経緯を認識して始めることができたので効果的だった
  • 原因や対策は決めうちにならず、いくつか意見が出た
    • 個人で考えるときにも、複数人で行うときにも、意見が出やすくなったと感じました。マインドマップの良いところが出た

改善が必要な点

  • 事実はおさえられたが、今度こうしよう!を先に考えてしまうのは変わらず
    • あるべき姿、こうすればよかったを軽く考えて、結論をいそいでしまう傾向は変わらずあった
      • 手法だけでカバーではなく、他の工夫も必要。たとえば、複数人で行うときはファシリテーションをうまく行う、一人でやるときは推敲の時間をとるといったこと

最後に

 ここまでで、障害ふりかえりについての取り組みの話は終わりになります。

 最後にもう1つ、取り組みのご紹介をします。障害の再発防止という意味では、ふりかえりして教訓を得るということも大事だけど、その教訓を忘れずに引き継いでいくという取り組みも大事であると考えます。ふりかえりした、というだけでは、次のプロジェクトの対して貢献することができないためです。 これに対する取り組みを最後に紹介します。プロジェクト開始のキックオフで、過去の障害の話をして同じことが起きないようにしようというのを伝えるという取り組みです。弥生の他のチームでは同じ取り組みをしていまして、先日行った自分のチームのキックオフでも取り入れてみました。 このように、障害が起きたらきちんとふりかえりをする、さらに、そこから得られた教訓を折に触れて思い出すこともセットでやっていくとチームに教訓が浸透していくのではないか、と思っています。まだまだ改善できる余地はあるので、今後も取り組んでいきます。

 ということで、障害ふりかえり、というややニッチなテーマではありますが、私が取り組んだことをご紹介しました。誰かの参考になればうれしいです。ここまで読んでいただきましてありがとうございました。

マネージャー視点でリモートワークを語ろう

弥生株式会社で製品サービスのチーフテクニカルリーダーをしているクロキです。
弥生アドベントカレンダー 2020の22日目の記事を書きますよ。

f:id:ym_AdventC:20201221131749j:plain
クロキのリモートワーク作業環境

はじめに

コロナ禍の影響で、弥生でも2020年4月からリモートワークが始まりました。
すでに中途入社してすぐリモートワークになった記事や、新卒1年目なのにフルリモートで研修になった記事が投稿されていますが、今回はマネージャー視点でリモートワークを語る話となります。

リモートワークの困りごと

リモートワークとは、働く場所がオフィスではなく自宅になるだけです。
とは言っても、実際やってみるとオフィスとは違う困りごとが出てきます。

  • とりあえず腰が痛い。会社の椅子って実はよかったのかも…
  • 通勤がなくなった分、メリハリもなくなってしまった
  • 誰ともしゃべってなくて寂しい
  • 毎日、代り映えしなくて、今日が何曜日か分からない
  • ちょっと相談したいけど、状況がよくわからないから声をかけづらい

世間的にもリモートワークの課題は話題になっているようです。
そこで弥生では、以下の3つのテーマに対して施策をやることにしました。

  1. 生活の乱れ
  2. 孤独
  3. 何が起こっているのか、どうすればいいのか分からない不安

詳細は以下に書きますが、平たく言うと「メンバーの心と身体をケア」が目的です。

①朝会、夕会

朝会では毎日の作業予定、課題を。
夕会では毎日の作業実績、課題を。
それぞれZoomでプロジェクトのチームメンバーに共有します。

②チーム会

月水金の午後イチにチームメンバーがZoomに集まり、会社からの連絡事項や他のプロジェクトで起こっているトラブルなどを共有します。

③個別面談

週に1回、上司と15分以上話す時間を設けます。
チームメンバーが話したいことをなんでも話す場となります。

④カウンセリング

必要に応じてカウンセリングの場を設けます。
弥生にはカウンセラーの資格を持ったマネージャーがいます。また契約している産業医との面談も可能です。

うちのチームの結果

チームメンバーからは個別面談を通じて施策のフィードバックを受ましたが、「リモートワークのほうがむしろ快適で、全員一律に心配してくれなくても問題ないですよ」「リモートワークのほうが作業に集中できて、効率が上がりました」という意見が多く寄せられました。こういうメンバーはリモートワークだから何か特別な対応をしなくても問題なかったわけです。
ただ、お子さんがいるメンバーは事情が違いました。仕事中にお子さんが乱入してきて集中できなくて困っている話や、自宅での作業場所を確保するのが難しい話などの、様々な相談を受けました。必要に応じて、私の上司にエスカレーションするなどの対応をとりましたが、緊急事態宣言中は先が見えない状況が続くため、ハッキリと回答を出せないところが辛い状況でした。

また、自宅に引きこもることによる運動不足の話や、椅子や机などの作業環境を整える話、作業中の座る姿勢の話など、身体のケアについて話すことが多かったですね。
自宅のモニターやキーボードについて雑談することもありました。21日目の記事はこうして生まれた次第。

施策の効果はメンバーによって様々でしたが、誰もメンタルダウンすることなく乗り切れたことはホッとしました。
肝心の仕事の成果ですが、リモートワーク開始当初は低下したものの、環境が整うにつれて徐々に解消されていきました。そして、今年も無事に弥生21シリーズをリリースできました!

もっとも、コロナ禍の状況は依然として続いており、東京都の新規陽性者数も増加傾向にあります。
弥生でも引き続きリモートワークも継続して、心身の安全を図りながら製品サービスの開発を継続していきます。

クロキ自身の結果

リモートワークで長時間自宅にいるようになったため、同居する妻から「心身が休まらなくなった」と苦情を受けております。
そんな理不尽なw

初心者エンジニアが機械学習の研究開発をする中で思ったこと

はじめまして。SMARTチームエンジニアの鍋谷と申します!
こちらは弥生アドベントカレンダー2020の19日目の記事です。

はじめに

まずは簡単に自己紹介します。

  • 2019年4月 弥生に入社・・・開発ほぼ未経験で入社
  • 2019年6月 開発本部に配属・・・開発研修を受ける
  • 2019年11月 テスト自動化チームに配属・・・自動テストの開発・運用を行う
  • 2020年4月 SMARTチームに異動・・・機械学習の研究開発業務を行う

機械学習の研究開発業務を行ってきた中で、初心者エンジニアの私が感じた点を書きます!

機械学習の特徴と、研究開発の重要性

普通プログラムで何かの判断を行いたい!と思ったら、以下のような流れを考えます。 f:id:ym_AdventC:20201214192005j:plain しかし、ルールを事前にはっきりと形にできないものもありますよね。
そういう場合、仮に最初にルールを決めたとしても、誤って判断されてしまうことが大半でしょう。

機械学習は、「正しい入出力をペアとしたデータをもとに、判断ルールを自動で改善していく手法」です。1
つまり、判断をしてきた経験をもとに、どんどんとルールが改善されていくわけです。 このルール改善の過程を、「学習」と呼びます。

学習の結果どのようなルールができるかは、学習の際に用いるデータや、学習方法の設定などによって異なります。
そして、どのようなときにどのようなルールとなるかを、 一度も学習させずに予測することは難しいです。
つまり、「最終的にどれだけ成果が出るか」は、実際にモデルを動かしていかなければわかりません
これは普通のプログラムとは異なる、機械学習の大きな特徴です。

とはいえ、どれだけ成果が出るのか全くわからない状態では、会社としてプロジェクトに大きく投資することは難しいでしょう。
だからこそ、実運用するプログラムを作る前に、研究開発でモデルを動かし試行錯誤することが、機械学習のプロジェクトでは特に重要であると考えます。
実運用の状況を想定して研究開発ができていれば、その知見を活かして成果をある程度予測できるでしょう。
これが、私の考える研究開発の重要性です。

研究開発をするために大事なこと

「何を実現したいか」を明確にする

これは機械学習以外のプロジェクトについてもいえることですが、 特に機械学習の研究開発をする上で、「何を実現したいか」を明確にすることは非常に大事だと感じました。 理由は以下です。

「何を実現したいか」で用いる手法が変わる

一口に「機械学習」といっても、古今東西いろいろな手法があります。 そしてこれらの手法はそれぞれに特徴があります。
実現において何を重視するのかがわかっていないと、最適な手法を選ぶことができません。

たとえば、単純な線形回帰でそれなりの正解率が出る問題について、それなりに正解率が高ければいい、運用コストは抑えたいという場合を考えます。
この場合に、非線形なディープニューラルネットワークをGPU環境で学習してモデルを作成する......といった手法を選択するのは、オーバースペックで高コストとなってしまいますよね。

このように、「何を実現したいか」を把握してタスクの性質を捉えたうえで、技術を選定することが大事です。

「何を実現したいか」で評価指標が変わる

機械学習の研究開発では、複数のモデルを用意して性能を比較していきます。
このとき、単純に「正解率」をモデルの評価指標とすればいいかというと、必ずしもそうではありません。

単純な二値分類について、予測結果と実際の分類結果をある区分に属するかどうかで整理すると、以下の図のようになります。 f:id:ym_AdventC:20201215194521j:plain この図において、評価指標は以下のようにいろいろあります。

  • 正解率・・・すべての判定に対する真陽性と真陰性の割合
  • 再現率・・・実際の陽性のうち真陽性として検出できたものの割合
  • 適合率・・・陽性と判定したもののうち真陽性だったものの割合

そして、最適な評価指標は場合によって異なります。

たとえば「コロナウイルスの感染者かどうかを一時予測したい」「陽性の可能性が少しでもある人を逃したくない」という場合であれば、 評価指標として「再現率」を重視します。

一方で、「会計システムで勘定科目を予測したい」「ただ、誤った勘定科目には分類したくない」という場合であれば、評価指標として「適合率」を重視します。

このように、ものによって最適な評価の指標は変わります。2
だからこそ、「何を実現したいか」を明確にし、どのような指標で判断すべきなのかを考えなければなりません。

技術動向に常にアンテナを張っておく

機械学習分野は最近ホットな話題ということもあり、非常に研究成果のアップデートが早いです。
技術選定をした2年後にもっといい技術が出た...ということも多々あります。
このため、最新の技術動向がどうなっているかを追っていないと、そのときに最適な手法の選択ができません。

弥生では定期的に大学の先生とディスカッションや機械学習に関する勉強会への参加など、 このような技術動向を知る機会をいただいています。これはかなり恵まれていますし、勉強のモチベーションも上がります。

機械学習以外についても知る

運用に乗せるための研究開発をする中では、「機械学習以外の知識」も必要です。

たとえば、モデルの性能比較においては、測定誤差を踏まえて考察を行うなど、統計の知識を持って取り組む必要があります。
また、運用環境の検討では、メモリやCPUなどのリソースの使用状況を監視することが状況改善の考察につながります。
さらに、クラウド上で動かすということであれば、クラウドコンピューティングの知識も必要となります。
機械学習を実際に動かすシステムの全体像がどのようになっているかを知っておくことも、いわずもがな重要です。

このように、「機械学習の研究開発」をするといっても、実際の運用を考えるためには機械学習以外の知識が必要です。
機械学習の知識とエンジニアとしての知識の両方をもっと勉強して、頑張っていきたいです。

さいごに

研究開発は新しく覚えることも考えることも多く、大変刺激的で楽しい業務です。
興味を持っていただけるかたは、採用ページを是非ご覧ください......! www.yayoi-kk.co.jp


  1. 厳密に言えばこれは機械学習の中でも教師あり学習の定義です。

  2. 余談ですが、再現率と適合率のどちらも同じくらい重要という場合は、これらの調和平均をとったF値という指標がよく用いられます。