AWS リソース管理の Terraform 移行

技術部 SRE グループの鈴木 (id:eagletmt) です。クックパッドでは Codenize.tools を用いて様々なリソースをコードで管理してきましたが、現在では大部分が Terraform へと移行しています。Terraform の使い方等については既に沢山のドキュメントや紹介記事があるので本エントリでは触れず、なぜ Terraform へと移行しているのか、どのように Terraform を利用しているのかについて書いていきます。

Terraform 移行の理由

クックパッドでは自分と同じく SRE グループに所属している菅原 (id:winebarrel) によって開発された Codenize.tools のツール群を利用して IAM、Route 53、CloudWatch Alarm、CloudWatch Events 等をコードで管理し、いわゆる GitOps を実践してきました。Codenize.tools による AWS リソース管理は基本的に1アカウント内のすべてのリソースを対象に動作します *1。これに従うと、ある AWS サービスに属する全てのリソースの管理は1つのリポジトリに集約されることになります。実際、社内には cloudwatch というリポジトリや iam というリポジトリが存在します。この構成は1つのチームが1つの AWS アカウント内のすべてのリソースを管理しているような場合は抜け漏れ無くコードで管理できるため非常に有効です。cloudwatch と iam を1つのリポジトリにまとめるか別のリポジトリに分けるかという選択肢はありますが、1つの AWS アカウント内のすべてのリソースを SRE グループが管理していたクックパッドでは自然な構成でした。

しかしマイクロサービス化が進みセルフサービス化が進むと、様々なチームで様々なリソースが必要になり、SRE グループがあらゆる AWS リソースを管理することが困難になっていきました。新しくアプリケーションをデプロイしたい人たちにとっても、複数のリポジトリに別々の pull-request を出す必要があり面倒に感じられていました。また、ELB + ECS/EC2 + RDS という伝統的な構成ではなく AWS SAM (Serverless Application Model) を利用したサーバレスな構成も選択されるようになり、CloudFormation で管理されるリソースも増えていきました。このような状況では Codenize.tools の「1アカウント内のすべてのリソースを対象に動作」という挙動は次第にフィットしなくなっていきました。

そこで、選択的にリソースを管理することができ、多くの現場で利用されている Terraform へと移行する方針になりました。これまでも Codenize.tools の対象外だった Auto Scaling Group や RDS インスタンス等の管理に Terraform は使われていましたが、Codenize.tools の対象でも Terraform を利用するように移行が始まりました。現時点では IAM、Route 53 以外の AWS リソースは一通り Terraform への移行が完了しています。

Terraform 運用

全面的に Terraform へと移行するにあたって、いくつか工夫した点があるのでそれぞれ紹介します。

tfstate の単位

Terraform では管理対象のリソースに関する情報を state ファイル (以下 tfstate と呼ぶ) にまとめているわけですが、Terraform を利用するにあたってこの tfstate をどのような単位で分割するのかという話題があります。1つの tfstate ですべての AWS リソースを管理するのは少なくともクックパッドの規模では無謀で、もしそうしたら terraform plan の時間が非常に長くなってしまいます。 クックパッドでは1つのリポジトリに Terraform ファイルを集約し、その中でプロジェクト単位でディレクトリを分けて記述していくことにしました。1つのディレクトリが1つの tfstate に対応します。

.
├── service-1
│   ├── aws.tf
│   ├── backend.tf
│   └── rds.tf
├── service-2
│   ├── acm.tf
│   ├── aws.tf
│   ├── backend.tf
│   ├── iam.tf
│   ├── rds.tf
│   ├── security_group.tf
│   └── vpc.tf
└── service-3
     ├── acm.tf
     ├── aws.tf
     ├── backend.tf
     ├── elb.tf
     ├── s3.tf
     ├── sg.tf
     └── vpc.tf

1つのリポジトリにしたのは一覧性を確保するためと、後述する CI の整備を楽にするためです。

linter の整備

AWS リソースの追加、削除、変更は Terraform 用のリポジトリへの pull-request で行うわけですが、pull-request に対する CI として terraform plan の結果を表示したり terraform fmt 済みかチェックしたりすることに加えて、独自に用意した linter を適用しています。Terraform 向けの linter というと tflint が既に存在していますが、tflint がカバーしているような一般的なルールではなく、社内独自のルールを強制したかったため自作しました。 ルールとしては現時点では

  • タグ付け可能なリソースには Project タグを必ず設定する
    • クックパッドの AWS アカウントではコスト分配タグとして Project というタグが設定されており、コスト管理のために Project タグを設定しなければならない
  • Aurora MySQL を使うときに特定のエンジンバージョンを禁止
    • クックパッドでの典型的なワークロードで致命的な問題が発生するエンジンバージョンがあるため、そのバージョンの指定を避ける

を強制しています。

ちなみにこの linter を pull-request に対して実行するにあたって、見易さの観点から GitHub の Checks の機能を利用することにしました。linter のように行単位で指摘する箇所が分かる場合、Checks を使うと見易く表示できます。 https://developer.github.com/v3/checks/

remote state の取り扱い

tfstate の保存場所としては S3 を使っていますが、RDS インスタンスの master user のパスワードのようなセンシティブな値の取り扱いを考慮する必要があります。たとえば aws_rds_cluster を新規に作成するとき、master_password に直接パスワードを書くと GitHub リポジトリで社内全体に公開されてしまいます。そこで SSM の Parameter Store に SecureString として保存して aws_ssm_parameter で参照したり、Vault の KV backend に保存して vault_generic_secret で参照したりといった方法を思い付きますが、これにより Terraform ファイル上からはパスワードが消えても tfstate にパスワードが平文で記録されてしまいます。この問題は upstream でも認識されていて tfstate 自体をセンシティブなデータとして扱うことを推奨しています。 https://www.terraform.io/docs/state/sensitive-data.html

しかしながら社内のエンジニアであればどのプロジェクトでも terraform plan は実行できるという状態を目指したかったので、パスワードのようなセンシティブな値は tfstate にはダミーの値を指定するという方針を試してみています。たとえば aws_rds_cluster を新規作成する場合は

resource "aws_rds_cluster" "my-awesome-app" {
  ...
  master_password = "pasuwa-do"
  ...
}

のように記述して terraform apply し、その後 mysql コマンド経由や ModifyDBCluster API で正式なパスワードに変更します。API を通じて master_password を得る手段が無いので Terraform は tfstate にある値を信じるしかなく、tfstate にも Terraform ファイルにも pasuwa-do と書かれているので差分が発生せず、センシティブな値を tfstate にも Terraform ファイルにも書き込まずに Terraform でリソースを管理することができています。

今後

Codenize.tools から Terraform への移行は進んでいるものの、最初の移行時にはプロジェクト単位に分割することを諦めたため、Terraform 管理へと変更はできていても適切なプロジェクト内の tfstate で管理させることはまだ十分にはできていません。現在はたとえば cloudwatch のような tfstate に様々なプロジェクト向けの CloudWatch Alarm が混ざって管理されている状態です。これを分解していくことは地味な作業ではありますが、今後も少しずつプロジェクト単位で管理された状態へと移していこうとしています。

また、多くの現場で実践されていそうな Terraform の自動適用もまだ実践できていません。Terraform 管理への移行や Terraform 管理内での tfstate の変更も徐々に落ち着いていくと思われるので、master にマージされたら自動的に terraform apply される状態を目指したいです。

*1:--exclude や --target で対象を限定できるようになっているものもあります

「このレシピは何人分?」を機械学習で推定する

研究開発部の原島です。在宅勤務中は部のメンバーと 3 時にラジオ体操をしています。今日はラジオ体操の話はおいといてレシピの分量の話をします。

1 人分、2 個分、三枚分、約 4 皿、5 杯くらい、18 cm タルト型、...

クックパッドの一部のレシピは 1 人分のカロリーが計算されています。計算されたカロリーは検索結果の絞り込みや献立の作成などに使用されています。

ここでポイントとなるのは「1 人分」というところです。

レシピには、下図のように、その分量が記入されています。クックパッドの全レシピのうち、大体 50% のレシピの分量は「N 人分」という表記です。これらのレシピは、レシピ全体のカロリーを N で割ることで、1 人分のカロリーが計算できます。

f:id:jharashima:20200225174134p:plain
レシピの分量

一方、残りの 50% のレシピの分量は「N 人分」という表記ではありません。その半分(全体の 25%)はそもそも表記がありません。これは単に分量の記入が任意のためです。では、残りの 25% はどうなっているのでしょうか?

答えは様々です。「M 個分」や「M 枚分」、「M 皿分」のように「人」ではない助数詞による表記もあれば、「M cm タルト型」や「直径 M cm シフォン型」、「M cm 丸形 L 個」のように何らかの型の大きさとその個数による表記もあります。

こういった分量を「N 人分」に換算するにはどうすれば良いのでしょうか。同じ「M 個分」でもマフィンのレシピとケーキのレシピで N は違うでしょう。また、M は全角の時も半角の時も漢数字の時もあります。接頭辞や接尾辞も付いたり付かなかったりします。さて、どうすれば良いのでしょうか。

人手で頑張る

やっぱりまずはこれでしょう。人間の能力はすごいです。どんな表記でもちゃんとパースして、常識的な N に換算することができます。悩んだ時もレシピのタイトルや完成写真、各材料の分量などを参考にして、違和感のない N を選択することができます。

実際、1 日に十数レシピ(1 年で数千レシピ)の分量が人手で「N 人分」に換算されています。これは、配信記事で取り上げるレシピのカロリーを計算する過程などで換算されるものです。換算の際は、まず、一人のアノテーターが仮の N を決定します。そして、別のアノテーターがチェックして、最終的な N を決定します。

なお、チェック時のアノテーター間の一致率は大体 67% です。また、残りの 33% もそれほど大きな違いがないケース(e.g., 一人が N = 3、もう一人が N = 4)が多いです。これは、そもそも N の候補が少ないことが幸いしています。クックパッドのレシピは家庭用のものが多いので、大体 75% のレシピで N は 1 〜 4 です。

このように、できるのであれば、人手で換算するのが一番です。ただ、表記が「N 人分」でない(かつ、表記はある)レシピは数十万品あります。これらの分量を全て人手で換算するのはさすがに大変です。1 年で数千レシピを換算する今のペースでは大体 100 年くらいかかりそうです(その間に新しいレシピが投稿されるので、実際はもっとかかりそうです)。

機械学習を試す

そこで、機械学習の出番です。最近はライブラリやマネージドサービスが充実し、マイクロサービス化も促進されたので、機械学習をサービスで利用するハードルがぐっと下がりましたね。もちろんまだハードルはありますが、4 〜 5 年前と比較するとだいぶ楽になりました。機械学習は誰でも利用できる手段になりつつあります。

さて、今回開発したモデルは二つあります。一つ目は下図の single-source model です。このモデルはレシピの分量(もしくは、レシピのタイトル)を入力として N を出力します。より具体的な挙動は以下の通りです。

  1. 分量(もしくは、タイトル)をサブワードに分割
  2. 分割されたサブワードをエンコーダーに入力
  3. エンコーダーの結果を全結合層に入力
  4. softmax でいずれかの N(後述する実験では 1 〜 20)に分類

f:id:jharashima:20200305093505p:plain
single-source model

二つ目は下図の multi-source model です。このモデルは分量とタイトルの両方を入力として N を出力します。より具体的な挙動は以下の通りです。入力が複数になったことと、エンコーダーの出力を concat すること以外は single-source model と同じです。

  1. 分量とタイトルをそれぞれサブワードに分割
  2. 分割されたサブワードを各エンコーダーに入力
  3. エンコーダーの出力を concat して全結合層に入力
  4. softmax でいずれかの N に分類

f:id:jharashima:20200305093256p:plain
multi-source model

かなりシンプルなモデルではないでしょうか?単に、分量かタイトル(もしくは、分量とタイトル)の情報から N を推定するというだけです。表記のパースは最初から諦めて、サブワードに分割してニューラルネットワークに突っ込んでいます。

補足することがあれば、回帰問題でなく、分類問題としていることくらいでしょうか。これは、タルトやケーキなどのレシピにおける N が 8 や 6、4 のことが多かったからです。最初は回帰問題としていたのですが、N を連続値とするより離散値とするメリットの方が大きそうでした。

正解率は?

さて、このシンプルなモデルがどこまで通用するのでしょうか。同僚の @himkt にも手伝ってもらって、実験してみました。

実験には、分量表記が「N 人分」でない(かつ、表記がある)5,279 品のレシピを使用しました。これらを人手で「N 人分」に換算し、その 80% を訓練データに、10% を開発データに、10% をテストデータに使用しました。

モデルの設定は以下の通りです。

  • 埋め込み層: 20 次元
  • エンコーダー: 20 次元の LSTM(2 層)
  • 全結合層
    • single-source model: 20 次元(2 層)
    • multi-source model: 40 次元と 20 次元(それぞれ 1 層)

次元数などはいずれも開発データで調整しました。また、サブワードの分割には sentencepiece を、その学習にはクックパッドの 310 万品のレシピを使用しました。

タイトル  分量  正解率
RE 47%
ML (single) 28%
ML (single) 63%
ML (multi) 62%

結果は上表の通りです。RE(regular expression)はベースラインで、正規表現にもとづいて N を決定しました。具体的には、「M 個分」や「M 枚分」から M を抽出し、そのまま N としました。一方、ML(machine learning)は提案手法で、N は 1 〜 20 としました。また、正解率は初期値が異なる 5 回の平均値です。

表を見ると、分量の情報を使用したモデルの正解率は 62 〜 63% でした。アノテーター間の初見の一致率が大体 67% なので、なかなか良い正解率といえるのではないでしょうか。一方、タイトルの情報だけを使用したモデルの正解率は 28% でした。さすがに分量の情報を使用せずに推定するのは無理がありそうです。

意外だったのは、分量の情報のみを使用した single-source model の正解率が multi-source model の正解率より高かったことです。本質的には、タイトルの情報を使用せずに N を推定するのは不可能です。上でも言及したように、同じ「M 個分」でもタイトルが「マフィン」のレシピと「ケーキ」のレシピで N は違うでしょう。

single-source model が multi-source model に勝利(その差は 1% ですが)した理由はおそらく二つあります。一つ目は分量の情報のみでも、ある程度は、人数分が推定できたことです。ベースラインの正解率が 47% だったことから、47% のデータは「M 個分」などの M がそのまま正解の N だったことが分かります。こういった場合はタイトルの情報が必要なかったのかもしれません。

もう一つは、単に、multi-source model がタイトルの情報をうまく利用できなかった可能性があるということです。ベースラインで対応できなかった 53% のデータではタイトルの情報が有用に思われます。しかし、今回の実験では、二つのエンコーダーを学習させるには訓練データが少なかったのかもしれません。

以上を踏まえて、今は single-source model を試用しつつ、multi-source model を改善しているところです。訓練データを追加していけばどこかで multi-source model が勝利するのではないかなと予想しています。

タイトル 分量 正解 single multi
素朴なレーズンパン 1 斤 8 8 8
ツナポテトのミニコロッケ☆お弁当にも 8 個分 4 8 4
甘さ控えめのクッキー 鉄板 1 枚分 16 10 10

最後に成功例と失敗例を紹介します。一つ目の例は single-source model と multi-source model の両方が正解しました。「1 斤」を「8 人分」と換算したのはなかなか面白いです。二つ目の例は multi-source model だけが正解しました。「ミニコロッケ」は「2 個分」で「1 人分」と学習してくれたのでしょうか。三つ目の例は両方とも不正解でした。この場合、材料欄の情報(e.g., 各材料の分量)も利用しなければ正解するのは難しそうです。この辺りも今後の課題です。

おわりに

まとめると、クックパッドのレシピの約 25% は分量の表記が「N 人分」ではない(かつ、表記はある)ものの、その 60%(全体の 15%)は機械学習で N を推定できます。残りの 40%(全体の 10%)は訓練データを追加するなり、材料欄の情報を利用することで、N を推定できる可能性があります。

モデル自体を改善するのも一つの手です。Transformer や BERT(流行ってますね)を利用するのもありかもしれません。ただ、運用面を考慮するとモデルは軽量なものが良いので、この辺りは悩ましいところでもあります。やっぱり訓練データを追加するのが一番シンプルで、現実的な気もします。

ところで、最近、複数の学生から「新卒採用ってもう始まっていますか」という質問をいただきました。始まっております。機械学習や自然言語処理、画像認識で毎日の料理を楽しみにすることに興味がある方は、是非、以下のページからご応募ください。お待ちしております。

info.cookpad.com

クックパッドの在宅勤務環境

コーポレートエンジニアリング担当 VP の @kani_b です。 昨今急速に拡大している新型コロナウイルス感染症の感染拡大リスクを鑑みて、従業員や関係者の皆さまの安全確保を目的に、クックパッドでは 2/18 (火) からまずは2週間ほど、国内拠点の全従業員(正社員、契約社員、パート・アルバイト、派遣社員、通常在席の業務委託)を対象に在宅勤務の原則化を実施することになりました。

クックパッド、新型コロナウイルスの拡大防止対策で、全従業員を対象に在宅勤務(Work from Home)を実施 | クックパッド株式会社

この記事では、現在クックパッドでどのような環境づくりのもと、在宅勤務が行われているかをご紹介します。 どの会社の方も同じような状況にあるかと思いますが、「他社ではどうやっているか」の一例として参考にしていただけると嬉しいです。

仕事に利用するシステム

クックパッドでは、業務にインターネットからアクセスできる各種クラウドサービスを多く利用しています。社内ツールもそのほとんどがインターネットからアクセスできるようになっています。 特に日常的に使われているのは以下のようなサービスです。

  • オフィススイート: G Suite
  • コミュニケーション: Slack, Zoom
  • コラボレーション: GitHub.com, GitHub Enterprise
  • Wiki, ドキュメンテーション: Groupad (内製ツール)
  • ワークフロー: ServiceNow
  • 人事・会計: Workday

日常業務の多くのシーンでこれらのシステムを活用しています。また、ここに挙げたツールは、雇用形態や勤務時間・国によらず原則ほぼすべての従業員が利用可能になっています。また業務の多くをこれらを活用する形で設計しているため、例えば特定部署でほとんど利用されていない、といった事象が起きにくくなっています。

環境の調査

在宅勤務の原則化を行うにあたり、オフィスとなる全従業員の自宅について、どういった環境があるかがわからなければ方針を決めることも難しいです。そのため全従業員を対象としたアンケートを Google Forms を使って行いました。具体的には以下のような項目をヒアリングしました。

  • 自宅に安定して接続できるインターネット環境はあるか
  • 遠隔会議のために利用しているマイクはあるか
  • その他、会社からの支援が必要な項目

在宅勤務開始にあたり、「あれもこれもサポートしなければ!」と先に考えてしまうと、実は需要のなかったことに時間を使ってしまうことになりかねません。準備を進めつつ、従業員の状況を把握しておくことが、より効果的な対応のためには重要です。

PC の持ち出し

クックパッドではもともと、個人に割り当てられた PC の持ち出しをほとんどの場合において許可しています 。持ち出しにあたっては、パスワードの設定などはもちろんのこと、内蔵記憶領域の暗号化など必要な設定が必ず行われるようになっています。 MDM (Mobile Device Management) として Microsoft Intune や Jamf Pro を利用し、管理を行っています。

PC 上のイベントは EDR (Endpoint Detection and Response) 製品を利用して監視やイベント対応を行っています。現在は主に CrowdStrike Falcon を利用しています。 また、特に機微な情報に触れるようなケースでは、VDI (仮想デスクトップ環境) として Amazon WorkSpaces を利用し、クライアント PC から接続して利用するようにしています。

備品の持ち出し

日頃から希望者にはマウスやキーボード、プライバシーフィルターなどの備品を (可能な限り希望に沿うものを) 貸し出しており、それらの社外持ち出しに特に制限はありませんでした。 備品の中でも特に大きいものとして、PC 用ディスプレイがあります。個人差はありますが、ディスプレイの有無によって作業効率が大きく変わることがあります。 今回は、「オフィスが主、自宅が副」の状態から、「自宅が主」に変わるということもあり、ディスプレイの持ち出しについても許可することにしました。

在宅勤務の原則化が決定されたのち、全従業員対象のアンケートで「ディスプレイの持ち出しを希望するか」を集計し、数を見積もりました。その後、破損防止のための梱包材を急遽用意し、各自で自宅にディスプレイを送付できるようにしました。

インターネット環境

スマートフォンでできることが増え、通信速度も年々向上している昨今、自宅にいわゆる固定のインターネット環境を持たない方もいます。最初に行った環境調査により人数の見積もりができたため、そういった方には会社からモバイルルーターの貸し出しを行いました。モバイルルーターの在庫も大量には持ち合わせていないため、テザリングの利用を前提に、会社で貸与できる携帯電話も活用しています。

現在のところ、モバイルルーターを利用している従業員の多くは問題なく業務できているようですが、高解像度の画像や動画を扱う業務が多いと厳しいという声も聞こえており、契約データ量については注意が必要です。クックパッドでも対応を検討しています。

VPN の利用

クックパッドでは以前より、社内ネットワークなどいわゆる境界を用いたセキュリティ対策の排除を進めていました。*1

ほぼすべての社内システムは Azure AD, もしくは G Suite アカウントを用いた SSO 環境下にあり、 HTTPS を必須化するなどインターネットから直接アクセスされることを前提に社内システムを構築しています。またほぼすべての認証 (エンジニアが利用する SSH なども含む) では 2FA が必須化されています。

現状では、利用するソフトウェアの制約により Google Drive などに移行されていないファイルサーバ、開発時に利用するデータベースなど、主に Web ではないトラフィックについて VPN を必要とする箇所が若干残っています。今回の在宅勤務の原則化に伴い、既存の VPN 環境のキャパシティ不足が懸念されたため、一次対応としてエンジニアには sshuttle を利用した VPN への切り替えをアナウンスしました。上記のような取り組みにより、キャパシティ不足に陥ることなく問題なく稼働しています。

遠隔会議

クックパッドでは遠隔会議のためのツールとして Zoomのライセンスを全従業員に発行し、利用しています。日常的に Zoom を使ったミーティングを行う従業員は多いため、利用そのものに大きな問題はありませんでした。 しかし、遠隔会議ではマイクを含めた音声品質が非常に重要です。オフィスではほぼすべての会議室に Zoom Rooms と専用ハードウェアを導入しているため、非常に快適な音声環境が得られますが、自宅ではそううまくいきません。

PC 内蔵のマイクでは、キータイプ音が混じったり音をうまく拾わなかったりなど、長時間の会議には不向きなことがわかっていました。特に、イヤホン・ヘッドホンなど声を聴くためのデバイスは分離しておいたほうが良いようです。 そのため、外付けマイクやヘッドホンをお持ちでない方には以下のような対応を推奨しています。

  • iPhone やスマートフォンに付属する純正のイヤホンマイクの利用
    • ミニピンジャックのものは Windows や MacBook でも動作する
  • スマートフォンやタブレットからの参加
    • PC は別途参加させ、画面共有などに利用する

Zoom ではバーチャル背景機能がよく使われています。これは、部屋の中などを映したくない際に背景を任意の画像に合成してくれる機能です。最近は動画を使えるようになっており、ミーティング開始時のウケを狙いたい人などによく使われています。

また、Zoom による会議がデフォルトになったことによって、会議のためのツールもスライドではなく Google Docs によるドキュメント共有が使われるなど、変化が起きています。これにより非同期に質問を書き込めるようになったり、Google Slides にふせんのようなテンプレートを用意したりするなど、会議の実施方法が進化しておりそれが便利、という声もありました。

社外の方への参加依頼

これまでオフィスで行っていたお客様との打ち合わせや、採用面接についても、Zoom を使った形への切り替えをお願いしています。 今回の目的を達成するためには、従業員だけでなく社外のお客様にご協力いただくことが必要不可欠です。特に遠隔会議においては、環境のセットアップなどでご負担をお願いすることも多いため、お客様向けの簡単なご案内を作成しお送りする試みをはじめています。

ログ収集と運用

在宅勤務を可能にする上で、ほとんどの会社がまず気にかけるのはシステムのセキュリティでしょう。クックパッドでは、これまで紹介したセキュリティに関する仕組みの多くについて、そのログ収集と監視をセキュリティ設計の上での重要事項としています。

現在、ログはすべてセキュリティログ検索基盤に集約され、疑わしいイベントなどが発生した場合に調査できるようになっています。詳しい実装については以下の記事をご覧ください。 Amazon Athena を使ったセキュリティログ検索基盤の構築 - クックパッド開発者ブログ

で、実際どう?

現在の体制となって4日が経過しました。現在のところ、ほぼ全員が在宅勤務をしています。 コーポレートエンジニアリング部では、システム利用で困った際のヘルプデスク(サービスデスク)も担当していますが、この業務のほとんどもリモート環境で行われています。

今回の措置が発表された直後から、社内では #remote-work_ideas というチャンネルが Slack に作られ、椅子やマイクなどの情報交換のほかに、様々な試みが社内で行われています。私が見かけたものをいくつか紹介します。

入退室自由な雑談部屋

一人で黙々と作業をしていると、人に会うこともなく寂しさや不安を感じる方も多いようです。そうした人向けに Zoom ミーティングを作成し、誰でも入れるようにしています。オフィスでもなんとなく起きる程度の雑談を Zoom 内に再現する試みです。

現在では色々な単位で部屋が存在し、部署内で実施されているものから部署関係なく「なんとなく」で人が集まっているものまで様々です。実際の様子はこんな感じ。

f:id:kani_b:20200221123137p:plain

会社の受付にいそうな CTO をはじめ、南国やアメリカにいそうな人たちはバーチャル背景を利用しているだけで、自宅から接続しています。 参加者からは、「自宅だと全く人の目がないのでだらけがちだが、Zoom に接続しておくことで一定の緊張感が保てる点が好き」といった声もあがっています。

リモート昼ごはん

クックパッドのオフィスには大きなキッチンがあり、各自で料理をすることができるようになっています。が、お昼時はどうしても混み合いますし、打ち合わせなどで移動もあり、作れないことも…

原則在宅勤務となったことで、それぞれの自宅キッチンで料理する機会が図らずも生まれています。この機会を活かして、自宅でクックパッドを使って料理をする社員が増えています。Slack に #リモート昼ごはん というチャンネルが生まれ、今は Instagram や Twitter に投稿する社員もいるようです。 #クックパッド社員のお昼ごはん などで覗いてみてください。

f:id:kani_b:20200221123232p:plain

ラジオ体操

在宅勤務では、打ち合わせなどで移動する必要のない反面、意識して体を動かさないといつのまにかつらい状態になっているという声がよく上がっています。 リングフィットアドベンチャーをやっている様子を配信している人や、チームで時間をとって Zoom で中継しながらラジオ体操をやる部署などが出てきているようです。


まだ4日ではありますが、各自・各チームが様々なアイデアをもって仕事を進めています。在宅勤務の実施にあたっては、生産性など様々な議論が行われていますが、我々も継続的な効果測定や改善を行っていきたいと考えています。 すでに実施している方、これから実施される方、検討中の方などにお役に立てば幸いです。

質問などありましたら @kani_b までお気軽に。

*1:昨今では、いわゆるゼロトラストネットワーク、BeyondCorp という形で浸透している概念に近いものです