保育園にChaos Engineeringを提案した話

この記事は [NTTコミュニケーションズ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/nttcom)の14日目の記事です。
昨日は @yuki_uchida さん の記事、[BERTを理解しながら自分のツイートを可視化してみるハンズオン](https://qiita.com/yuki_uchida/items/09fda4c5c608a9f53d2f) でした。

## はじめに

当初は [Kubeinvaders](https://github.com/lucky-sideburn/KubeInvaders/) の解説記事を書こうかなと思っていたのですが、先日うちの子供が通う保育園から、うちの子供に対するインシデントの報告を受け、今後の対策として保育園にChaos Engineeringを提案するという我ながら変なことをしてきたのでそのことを書きます。（※完全に会社に関係のない私事です）

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">保育園からインシデントレポートを受けたので、今後の対策案としてChaos Engineeringを提案してきた</p>&mdash; まひと / Mahito (@Mahito) <a href="https://twitter.com/Mahito/status/1200318785112002562?ref_src=twsrc%5Etfw">November 29, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 保育園で起きたインシデントについて
### 妻からの電話

仕事中にスマホのバイブが鳴ったので表示を見ると妻からの電話でした。
「普段だとLINE通話を使うのに・・・」と嫌な予感がしつつ電話に出ると半泣きの妻からでした。

「保育園から電話があって、避難訓練で下の子（当時 1歳11ヶ月）が・・・」

と言われて、怪我でもしたのか大丈夫なのか、生死に関わる何かかとドキドキしたところに

「屋上に置き忘れられたって連絡があって・・・」

**はいっ？？？**

ちょっと意味がわからなくて事態を理解するのに時間がかかりましたが、無事なのか確認すると怪我もなく無事とのことでちょっと安心。

しかし、電話先の妻は依然半泣きの状態であり、子供も無事とは言われたものの、泣いてないかなど心配であり、事態が事態なだけに仕事は午後半休にして帰宅することに。

なお、うちの子供が通っている保育園では避難訓練に力を入れており、年に数回の避難訓練を実施しています。今回は地震の後に津波が来たので、近くのマンション屋上に避難をするという設定で実施していました。保育園からも連絡アプリでも「無事に避難訓練は終わりました」という報告を受けていたので「無事じゃねえ！」って突っ込むレベルの事件です。

### 保育園へ話を聞きに

すでに事件は起きた後だし、子供の無事も確認できているものの、何となくモヤモヤしたものがあり、経緯を聞いて今後の対策を保育園とお話をしないとなと思いながら帰宅。

家で悲しみから怒りに変わった妻の話を聞きつつ、保育園へお迎えを兼ねて妻と二人で今回の話を聞きに向かいました。

事務所に入ると園長に奥の部屋に案内され、そこで担任２名も加え今回の経緯について以下のように説明を受けました。

1. 避難訓練終了時までは全児童がいることを確認していた
2. 屋上から降りる際、うちの子供は最終グループにおり、前のグループで泣く子を抱っこして連れて降りるなどの対応をした結果、最終グループは保育士１名に対して7~8人名の児童がいた。
3. 階段を降りた時点では数の確認をせず全員が降りたという報告をして園に戻った
4. 園に戻った時点で点呼をしたところ１名（うちの子）がいないことに気づいた
5. 急いで現場に戻ると、マンションの管理人が泣いてるうちの子を見つけて保護してくれていた

というのが今回の事件の経緯とのこと。

一歩間違えると怪我や死亡事故にもつながったかもしれず、今回のインシデントについてはすでに職員会議を開き、なぜこのようなことが起きたのか、今後どう対策をしていくのかについても話し合いが行われ、今回の件は市や保育園の運営母体にもレポートを上げるとのこと。

今回のインシデントの原因としては

1. 避難訓練を繰り返すうちに訓練をこなすことが目的になっていた
2. 職員の配置を適切に行なったつもりだったが、泣いている子供などの対応で配置どおりに動けなかった
3. 最後のグループの保育士も「子供の数が多いが手の空いた誰かが手伝いに来てくれる」と思って移動を始めた
4. 降りた時点での確認や、屋上に誰も残っていない確認を行わなかった

などを説明され、今後の対策は現在検討をしておりマニュアルの見直しを行うとのこと。

普通に手動のオペミスでサービス障害起こした話っぽくて、聞いてて「あー、ウンウンわかるー。そういうミスありがちだよね。うん、でも今回は障害起こされた方だから起こされた方はこんな気持なのかー」みたいなことを内心思ったり。

失礼ながら今後の対策としては「気をつける」「しっかりする」という言葉が出てくるのではないかと思っていたものの、園長からは逆に「専門職としてしっかりする、気をつけるでは済まない問題として対応していかなければいけない」という言葉を頂いたので、同じ専門職として申し訳ない気持ちに。。。

### 対策としてChaos Engineeringを提案する

説明を受けていく中で園長からは「避難訓練の中で園児がいなくなることを想定していなかった」という話がでて、私の中で「想定していなかった？それってChaos Engineeringじゃね？」という思いが出てきたので、Googleの[Chaos Engineering For People Systems](https://speakerdeck.com/chaosconf/keynote-chaos-engineering-for-people-systems)の概要を説明し、今後の避難訓練の中で「園児が途中の確認で足りなくなる（園長や一部のスタッフ、対象児童とその保護者には説明する）」などのインシデントを何回かに１回混ぜ込み、そのときに正しく対応できるかを確認してみてはどうかと提案。

Chaos Engineeringは簡単に言うと、システムに意図的な障害を起こすことで、障害時のシステムの振る舞いを把握するための手法です。もし障害時のシステムの振る舞いに問題があった際は、これを修正をすることでシステムをより強固にすることが可能となります。

※ Chaos Engineeringについては拙文ではありますが、 Cloud Native Days Tokyo 2019 で[発表した資料](https://speakerdeck.com/mahito/cndt-osdt-2019-2g1) や Chaos Conf 2019 recap で[発表した資料](https://speakerdeck.com/mahito/a-concept-of-chaos-engineering:embed:cite) がありますので、もしご興味があればそちらをご覧になられると、参考になるかもしれません。

今回の場合だと、避難訓練という擬似的な障害を起こしたところ、無事に避難訓練を終えて全員が保育園に戻ってくることが想定されていましたが、実際は児童が一人いなくなったが、それを検知するのが遅れたという、本来の想定とは違う振る舞いがあったことになります。（場合によっては児童の怪我や命に関わるう危険性もありました）

Chaos Engineeringは従来、情報システムを対象に話をされていたのですが、上記の[Chaos Engineering For People Systems](https://speakerdeck.com/chaosconf/keynote-chaos-engineering-for-people-systems)は今年のChaos ConfのKeynoteでGoogleの人から発表された内容で、簡単にいうと組織というのは人で構成される複雑な分散システムであり、組織に対してChaos Engineeringを仕掛けることで組織をうまく回せるようにするといった内容です。

例：ランダムに選ばれた社員に自宅で作業してもらい、その日は誰かに仕事の質問されても回答しないことで、組織の情報が誰かに偏よりSPOFになっていないかを確認する（Staycation）

[Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)にもシステムについては以下のように書かれています。

> システム（system）は、相互に影響を及ぼしあう要素から構成される、まとまりや仕組みの全体。一般性の高い概念であるため、文脈に応じて系、体系、制度、方式、機構、組織といった多種の言葉に該当する。系 (自然科学) の記事も参照。

会場で発表を聞いたときは「そこにも適応できるのか！？」と驚きました。

また、同じく今年のChaos ConfのKeynoteでも[過去に起きたインシデントを再現するシナリオを作成して、自分たちのシステムが障害時にも動き続けることを確認する話](https://www.youtube.com/watch?v=SM4em_Ei6iE)もされており、園長に過去にもこういう事があったか聞いたところ今回が初めてだということなので、実際に起きたインシデントとして、今後の避難訓練の中に取り入れるのはよいのではないかという話もしました。

最初園長はポカーンというかをしていたものの、検討はしてみるということ。
（まあ、こんな話しされたら普通困惑するよな・・・）

他にも今回の件は保護者たちに説明は不要だけど（言うと保育園になんか言い出す親出そうだし）、幼児クラスの子たちには名前を伏せてこういう事件があったと説明して、周りのお友達がいないと気づいたら先生に言うように言ってほしいなど、いくつか追加で改善も提案しました。

今後、市や保育園の運営母体に上げる正式なインシデントレポートや避難訓練のマニュアルをアップデートするということだったので、どちらもコピーをいただけるようにお願いし本件はひとまず終了。

子供をお迎えに行くと元気な我が子が笑顔で飛びついてきたので安心しました。

## おわりに

そんなわけで保育園で前代未聞のトラブルに見舞われた下の子は本日無事に2歳になりました。
保育園は今後も避難訓練は続けるということなので、Chaos Engineeringが採用されるかどうかはわかりませんが、今回のインシデントを糧にして貰えればなと思っています。

Chaos Confや今回の事件を通じて、Chaos Engineeringは色んな所に使えるなと思ったので、ぜひ皆さんにもChaos Engineeringに興味を持っていただき、システムや組織をより障害に強いものにしていっていただければと思います。

明日は @takahoyo さんの担当となります。

それでは。みなさん良いお年を！


## 余談

涙ながらに今回のインシデントの説明を園長がしてくれていたのですが、途中でポケットからティッシュ（シワシワだから使用済みか？）で鼻を拭いた際に、大き目のティッシュの切れ端が園長の服に落ちました。

個人的には以前より「この園長天然かな？」と思っていたところもあり、面白かったけど真面目な場なので笑いをこらえ、園長の説明の続きを聞いていたのですが、チラッと横に座る妻を見ると肩が震えている。顔も必死に笑いを堪えていたものの・・・最終的に吹き出す始末。

そうなるとこっちも笑いを堪えられず笑ってしまいました。

最初、園長はなぜ笑い出したのかわからず困惑していましたが、服にティッシュの切れ端がついてることを説明。
すると園長が「すいません、でも少しでも笑っていいただけたなら良かったです」というので余計に妻が笑い出し、前を向けなくなり横を向いて必死に笑いをこらえようと、さっきまで怒りと悲しみで涙目だった妻が今度は笑いを堪えるために涙目に。

そして妻は出されたお茶を飲んで落ち着こうとして、お茶を口に入れた瞬間むせました。

それを見て私もまた笑いが堪えられず下を向いて肩を震わせながら笑いました。
園長と妻の天然により、真剣なインシデント説明の場が途端に笑ってはいけない説明会に早変わり。

テーブルの向かいに座る担任２名は我々以上に笑ってはいけないなので下唇を噛んで堪えてるよｗｗｗ

多分、担任の先生たちの間でしばらくネタになるんだろうなと思いながらも、以降の雰囲気が少し柔らかくなったので結果的には良かったのかもしれません。（それにしても天然恐るべし...）

## 追記(2020/1/21)

後日談についてブログに書きました
[（後日談）保育園にChaos Engineeringを提案した話](https://mahito.hatenablog.com/entry/2020/01/21/105329)