割れ窓理論をWebインフラの改善に活用し、チーム内の知識共有を促進している話

はじめに

はてなでSREをしている id:hokkai7go です。この記事は、SRE Advent Calendar 2018の13日目の記事です。 

割れ窓理論とWeb開発での実践例について

割れ窓理論(われまどりろん、Broken Windows Theory)とは、軽微な犯罪も徹底的に取り締まることで、凶悪犯罪を含めた犯罪を抑止できるとする環境犯罪学上の理論。アメリカの犯罪学者ジョージ・ケリングが考案した。「建物のが壊れているのを放置すると、誰も注意を払っていないという象徴になり、やがて他の窓もまもなく全て壊される」との考え方からこの名がある。破れ窓理論[1]壊れ窓理論[2]ブロークン・ウィンドウ理論などともいう。  [割れ窓理論 - Wikipedia] より

割れた窓が放置されていると他の窓も割られやすくなってしまいます。軽犯罪を取り締まることで重大な犯罪も抑止できるとする理論です。不安や無秩序な状態を取り除くことができるというのも大きそうです。 

 pixivさんが以前このような記事を公開されていました。devpixiv.hatenablog.com公開された当時からこの記事に書いてある内容がとても気になっていました。なぜなら私達はエンジニアで改善に向かいたいからです。また、はてなでSREとなりインフラ周りを中心としてソフトウェアと向き合うことが増えたことや、こうした活動の提案を受け入れてもらえる感じがあったためSREチームでも割れ窓を直す活動をやってみることにしたのでした。SRE以外のプロダクトチームでも実践しているようでした。

また少し視点は違いますが、労働災害防止の経験則であるハインリッヒの法則を見ても、異常(ヒヤリ・ハット)や軽微な事故を放置するのは良くないことがわかります。SREは信頼性向上に責任をもっており、障害という重大事故を防ぐための現場活動として割れ窓理論の実践は有用であるように見えました。

ハインリッヒの法則(ハインリッヒのほうそく、Heinrich's law)は、労働災害における経験則の一つである。1つの重大事故の背後には29の軽微な事故があり、その背景には300の異常が存在するというもの。

今回のAdvent Calendarでもすでに引用されていましたが、まさに下記を体現する活動であると捉えています。

ゴミが散らかったりしないように環境を保つことによってイノベーションにまっすぐ焦点を当て続け本物のエンジニアリングが前進できるようにしているのです

Betsy Beyerら著、澤田 武男ら監修 「SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム」2017年  

はてなSREチームでの割れ窓理論の実践について

はてなSREチームでは、割れ窓に関するタスクを行う一連の時間を「割れ窓タイム」と呼んでいます。現在のところ、以下のような実施方法となっています。

  • 適宜、チームメンバーは割れ窓を発見したらissueを作成し、割れ窓ラベルをつけておく
  • 割れ窓タイムの日程を確保し、取り組みやすそうなissueを週刊割れ窓マガジンという記事にリストアップしておく
  • 週に1度、1時間リモートでつないで作業時間をとる(SREチームは東京、京都の2拠点で仕事をしているからです)
  • 割れ窓タイムスタート時に、その日の割れ窓タイム用issueを立て、やることが決まればissueにその旨を書き、ログを取っていく
  • 実施後に非同期的に参加者がその日の割れ窓タイム用issueに感想やKPTにつながる内容をコメントする
  • 感想やKPT等を割れ窓タイム用issueにまとめる
  • 振り返りやすいよう、スプレッドシート上でissue URL等を一覧にしておく
  • 割れ窓タイム企画者が、企画の改善のために振り返りを行う

また、割れ窓の対象物ですが

  • SREチームで作っているソフトウェア
  • サーバの設定
  • 物理サーバやAWS上などのリソース
  • アラート

といったものを扱っています。割れ窓タイムで取り組むべき内容と、普段の仕事で取り組むべき内容の線引が難しいなとも感じており、割れ窓タイムで実施する内容のガイドラインを作ろうかと考えているところです。

効果

効果は以下にまとめました

  • 割れ窓タイムがないと取り組めないタスクに取り組むことができる
  • モブプロ、モブオペを推奨しており、知識(前提知識や、コード、過去の経緯等)の共有を図りやすい。新しく入った人のキャッチアップにも利用可能
  • 一人で取り組むには勇気がいりそうなところも、複数人で判断できるので勇気を持って取り組むことができる
  • あそこに割れ窓がありそうという認識がみんなに出てきた
  • みんなが集まっているので、タスクで困ってもすぐに相談、解決できてスピード感がある
  • これって割れ窓じゃないですか?と話す機会が増えた
  • 同じ割れ窓が発生することを検知できる
  • 普段だと時間取れないけど、割れ窓で直しましょうという会話がされるようになった

タスクの解決ができるだけでなく、知識の共有やコミュニケーションの促進につながるという点が良いと感じています。

 

今後に向けて

これまで割れ窓タイムを8回ほど実施してきたのですが、割れ窓タイムで取り組むべき内容と、普段の仕事で取り組むべき内容の線引が難しくなってきているところがあります。また割れ窓タイムのスケジューリングや、短時間で終わらないものへの対処、過去の経緯や多分に絡む物のコンテキストの説明の難しさにどう立ち向かうのがよいのかという点を今後の改善点としたいと思います。

ゴミが散らからないようにして、本物のエンジニアリングが前進していけるようにしていこうな!

こうした取り組みを一緒にやっていきたいSRE職を大募集中です。

hatenacorp.jp

 

参考文献

割れ窓理論にまつわるうわさを整理しよう。そして見えざる権力を見える化しよう。 - 廿TT

割れ窓理論を導入してWebサービスのクオリティに直結した話 - pixiv inside [archive]

 

Rails Girls Kyoto9thのコーチをしてきました

掲題のとおり、Rails Girls Kyoto 9thのコーチをしてきました。ブログを書くところまでが Rails  Girlsですという話があったので当日中にきちんと書いておきます。

http://railsgirls.com/kyoto201812.html

 

コーチ経験は、2013年のTokyo 2ndに続いて5年ぶり2回目でした。なんとなく当時のページを見た感じでは、当時はRuby2.0がリリースされた頃だったらしいです。今では2.5系が最新なので、気がつけばわりと時間が経っていました。

 

時間が経っていたので、最近の様子に追随できてないかなと少し不安だったのですが、最近のガイドにて復習してみたところ、わりと大丈夫なことがわかり安心しました。

 

当日は何をやっていたかというと、インストールデイはニコニコしたり飾り付けの風船を生産しまくりました。というのも、マンツーマンでつくことのないフリーのコーチだったからです。

実際に開発を行う本編の日(今日、2018/12/08)は、戸惑っている様子のテーブルに行き、問題解決のアドバイスをしたり、進捗を聞いたり、完成を一緒に祝ったりしていました。

 

 

問題解決に関わった話について、具体的にはWindowsでRuby2.5とRails5.2でcarrierwaveを使おうとすると、sqlite3で問題が出ました。gem installやbundle installは正常に終わるけど、railsがcannot load such file -- sqlite3/sqlite3_native (LoadError)と言ってくる問題でした。これは結局どうしようもなく、Ruby2.4を使うようにしたようでした。

ほかはmigrateのやり直しの件や、Herokuを使う際にS3アップロードを行うので、fog経由でアップロードしたいが設定でうまくいかないというあたりでした。設定値のアドバイスなどをしましたが結局うまくいっていてよかったです。Rails Girlsのガイドにもあまり説明が載っていない部分にまで踏み込んでいたペアがあったとはすごいなぁと感じました。

 

自分もそこそこいた意味があったのかなと思えたので、最高でした。あと、「動いたらハッピー!」、「便利でーす!」という言葉も最高でした。末永く使っていきます。

 

個人的な話でいうと、京都移住を控えているなかで京都や関西圏の方々とたくさんお話する機会となってとてもよかったです。コーチ募集中ですよと知らせてくれた id:Sixeight さんありがとうございました。

オーガナイザーの桐生あんずさん、お疲れ様でした!

豊洲で寿司からのもつ鍋フィニッシュ

同僚が豊洲市場で寿司を確認したいと言っていたので、その企画に乗って昨日(2018/12/06)は出社前に寿司を食べてきた。夜はもつ鍋を食べた。東京に住む時間が残り短くなってきたのでいい感じに贅沢してやろうという思いだ。

こんな感じだった。心の栄養は大事だ。築地に市場があるとき、何度か同様に出社前に築地に寄って寿司や煮魚、親子丼、カレーなどを食べて出社するということをやっていた。朝からスタートダッシュをしている感じがしてとても良い。豊洲市場になってからは行けてなかったので、同僚が「明日行くぞ!」と言っていてタイミングがよかった。豊洲市場はすべてがとても綺麗で、見学者と市場関係者が完全に分離されており工場のようだった。あの雑然とした築地市場の体験はもうできないのだった。何度も行っておいてよかったなと感じた。豊洲市場はニュースでしか知らないという人も行ってみるといい。駅前にデータセンターしかなかった市場前駅が機能しはじめていて驚いた。

そんな素晴らしい朝を過ごし、仕事時間をなんとか終えて夜は同僚たちとともにもつ鍋に行った。もつ鍋写真はコンデジで撮ったのでいつか上げたい。早朝から起きていたおかげで、テンションがいつもより2割り増しくらいになっていた感じがあったし、ゲラゲラ笑えたいい熱狂の渦だったとおもう。

入社時のActiveDirectoryアカウント作成をSpreadSheetで半自動化していた話

この記事は、 Spreadsheets/Excel Advent Calendar 2018 - Adventar の9日目の記事です。

ActiveDirectoryについて

ActiveDirectoryをみなさんはご存知であろうか。

Active Directory (アクティブディレクトリ) とはマイクロソフトによって開発されたオンプレミスにおけるディレクトリ・サービス・システムであり、Windows 2000 Serverから導入された、ユーザとコンピュータリソースを管理するコンポーネント群の総称である。なお、クラウドコンピューティングにおけるディレクトリ・サービス・システムであるAzure Active Directoryと区別する場合、オンプレミス Active Directoryと表記することもある。

以後、ActiveDirectoryをADと表記する。社員のアカウント管理の中心にADがある組織では、入社時にADアカウント作成を行うこととなる。ADアカウントの作成は非常にめんどくさい。項目名も慣れにくい。samAccountNameとか、User Principal Nameとかである。

概要

社員番号、メールアドレスがほぼ一意に決まる環境があり、入社する人が発生したタイミングでActive Directoryのアカウントを作成する必要があった。これまではエンジニアが入社のたびに呼ばれぽちぽちと作成をしていた。ここを自分が見ることになったタイミングでアカウント管理に使っているスプレッドシートから、ボタンをポチッとしたらCSVをダウンロードでき、このCSVPowerShellに食わせるとさくっとADアカウントたちを作成できるようにした。というのが話のあらましである。

なお、エンジニアじゃない管理者に操作方法を教え、それ以後はその人の操作のみでアカウント作成が完結するようになった。

詳細

図

 

まあ詳細と言いつつ、過去の環境なので実際のコード(スプレッドシートのGoogleAppScriptや、PowerShellワンライナーも)は自分すらもう見ることができない。とはいえ、いくつか工夫していた点があったので紹介したいと思う。

 

カスタムメニューと、選択した行のみcsv出力していた件

Custom Menus in G Suite  |  Apps Script  |  Google Developers

上記のように、スプレッドシートの画面上にCustom Menusを追加することが出来る。

アカウント一覧のスプレッドシートであったため、新しいアカウントは下に下にと追加されていくことになる。ADアカウント作成は、新しい人の分だけをやりたい。なので新しい人たちの行を複数行選択したうえでCustom Menusから、CSV出力を行うようにプログラミングしていた。CSVの出力先はGoogle Driveのマイドライブである。

CSVのファイル名も決め打ち

Google Driveのマイドライブに出力されたCSVは、たしか毎回同じ名前だったと思う。そのファイルを、リモートデスクトップ先の所定の場所にコピーしたうえでPowerShell実行をしてもらっていた。そのファイルは、入社のたびにあたらしいものが出来上がるが、古いファイルを残しておく必要もないので毎回上書きしてもらっていた。こうしたことで、PowerShell側に書いたファイル名は変更する必要がない状態になった。

効果

入社に関する情報を扱う管理者がスプレッドシート入力をして、その流れでADアカウント作成まで自力でできるようになった。何か困ったことがあるときに呼ばれるくらいだったので、管理者もこちらもかなり負荷が下がった。

とはいえ、本当はOktaなどアカウントをつくり、そこからプロビジョニング機能で各種アカウント整備を行うのが現代の流行りであろうことはわかっていました。今回に関しては、そこまでの時間もお金も権限もなかったため、このような解決の仕方をしたのであった。

 

まあ、いかにも詳細に手が届かないブログではあるのだが、こういったこともできますね。ということでご理解いただけるとありがたい。

2018ラスベガス2日目

今日はワークショップ、セッション等に出た。

カンファレンス飯、1mmも期待してなかったのだが正直おいしかった。普通にホテルビュッフェだった。AWSありがたい。

今日のよかったこと

晩ごはんは、同僚の知り合いとごはんに行ったんだけど軽くつまむつもりが大変なことになり、これがアメリカか…となった。

明日も早いので寝よう

2018ラスベガス1日目

re:Invent 2018参加のためにラスベガスに来ている。アメリカ本土はRubyConfのマイアミ以来だと思う。

いくつかよかったことがあったのでメモしておく。

  • まずは無事に着いて入国できたこと。これが一番
  • 普段のシャンプーを持ってきたこと。泡立ちとか匂いとかわりと癒しですね
  • まずはおいしい肉を食べて食生活をスタートしたこと

Outback Steakhouseなら日本にもあるじゃんとか言われそうだけど、おいしかったから良し。

気圧調整付きの耳栓が機内でも平地でも使えて便利でありがたいのだが、ずっと装着していると耳の穴が痛痒いのが問題だなぁと思う。

さてもっかい寝よう