RubyKaigi 2023 Wi-Fi: 足回り徹底解説

id:sora_h です。最近は RubyKaigi の Organizer や Wi-Fi NOC をやっていましたが… 何屋なんだろう? 一応 Software Engineer (Site Reliability, Corporate Engineering) を名乗っていますが…。あっ RubyKaigi から戻ってからは学者をやってますね。落ち着いたら本業を思い出していこうと思います。

さて、Cookpad は 2010 年より RubyKaigi に協賛していますが、近年は Wi-Fi Sponsor など*1として携わっています。実体的には、 id:sora_h (筆者) が RubyKaigi 前にほぼフルタイムで Wi-Fi の準備に提供されたり、細々とした機材、一部の回線・ラックスペースの提供を行っています *2

本稿では RubyKaigi 2023 Wi-Fi ネットワークの L1~L4 設計について解説します *3。Wi-Fi についてというより、Wi-Fi AP より先の足回り、会場のルータからインターネットまでの区間についてがメイントピックです。

*1:Ruby Committers’ スポンサー (2017-2022) や Rubyists on Rails スポンサー (2023) も平行してやっています。Wi-Fi スポンサーは 2017 年から

*2:RubyKaigi の Wi-Fi 機材の大半はスポンサーのみなさまからの協賛金をもとにして RubyKaigi で購入所有しています。スポンサーのみなさま、ありがとうございます!

*3:RubyKaigi 2022 でもほぼ同様の構成を取っていました

続きを読む

RubyKaigi 2023の冷蔵庫は何だったのか

エンジニアの成田(@mirakui)です。最近はクックパッドマートの流通基盤エンジニアとして、商品の流通に関わるソフトウェアやハードウェアに携わっています。

さて、クックパッドは先日長野県の松本で開催された RubyKaigi 2023 にスポンサーとして参加しました。そのスポンサーシップの一環として、参加者に配られるドリンクを冷やすための冷蔵庫を提供しました。

会場に設置した6台の冷蔵庫は、私たちが「マートステーション」と呼ぶ、クックパッドマートにおいてユーザーが購入した商品を受け取るための冷蔵庫です。現在は都内を中心に、駅やコンビニエンスストア、マンションの共用部といった生活動線に設置しています。マートステーションの技術的な詳細は下記の記事をご覧下さい。

techlife.cookpad.com

今回設置したのは、上記の記事中で "JCM-Mk4" と呼んでいる、現行型である第4世代の冷蔵庫です。それまでのモデル第3世代とはベースとなる冷蔵庫は同じですが、断熱性能を高めて結露対策を行ったり、Raspberry Pi を使うのを止めて、より安定性の高い産業用の機材に変更したりといった改良が加わっています。

冷蔵庫監視ダッシュボード

会場のクックパッドブースでは、6台の冷蔵庫をリアルタイムに監視する Grafana ダッシュボードを展示していました。

会場で展示した冷蔵庫のダッシュボード

ダッシュボードには、会場に設置したそれぞれの冷蔵庫において、主に以下のような値を表示していました。

  • 冷蔵庫の庫内温度
  • 解錠状態
  • ドアの開け閉めの状態

各冷蔵庫には産業用IoTゲートウェイであるFutureNet MA-S110 が取り付けられています。これは簡単に言うと小型 Linux PC であり、SIM カードやアンテナを取り付けることで、LTE 回線を通じてインターネットに繋がることができます。

ダッシュボードは Grafana で作られており、AWS 上にある Prometheus に格納されたデータを表示していました。Prometheus からは SORACOM Gate を経由して、各冷蔵庫の SORACOM Air SIM と通信を行い、温度センサーや鍵の会場状態の値を取得しています。これらの値を返しているのは、もちろん Ruby です!(RubyKaigi しぐさ)Linux 上で Sinatra の API サーバが動いていて、冷蔵庫における各種デバイスの制御や状態取得を司っています。

クックパッドマートは主に生鮮食品を配送するサービスであるため、商品の温度を担保することは事業において非常に重要です。たとえばもし冷蔵庫のドアが開けっぱなしになっていて庫内の温度が上がってしまうと、商品が傷んでしまう可能性があります。そのために私たちは冷蔵庫の温度やドアの開閉などを遠隔監視できるようにしており、会場で展示したダッシュボードは実際に運用で用いているものを簡易化したものです。

写真で振り返る RubyKaigi 冷蔵庫

RubyKaigi 開催前日です。会場に6台の冷蔵庫が届きました。各種の配線を行う私です。配線を終えて電源を入れればやがてオンラインになり、冷蔵庫の管理システムに自動的に登録されます。

設営中の筆者 / Photo by @pastak

設営を完了した6台の冷蔵庫です。中にはドリンクが入っています。

会場に設置した冷蔵庫

ドリンクはみやもとファームのりんごジュースと松本ブルワリーのクラフトビールで、RubyKaigi から提供されました。りんごジュースはりんごの品種違いで4種類あり、風味の違いを楽しむことができました。松本ブルワリーのビールは Session IPA と RubyKaigi 2023 Matsumoto Lager で、どちらも RubyKaigi 2023 のオリジナルラベルがデザインされていました。

提供されたドリンク

冷蔵庫を開けるためには QR コードリーダーに解錠用の QR コードをかざす必要があります。実際の商品受け取りではクックパッドマートのアプリ上に表示される購入者用の QR コードを使って解錠するのですが、RubyKaigi の解錠では簡易的に、あらかじめ印刷した QR コードをぶら下げておくことで誰でも解錠できるようにしました。ちなみにこのカードは私の手作りです。QR コードは現地でマートのラベルプリンターを使って印刷しました。

解錠用のQRコード

りんごジュースは全日提供でしたが、ビールの提供は17時以降のみにしていました。Ruby で制御しているスマートロックなので、17時以降でないと解錠できないというギミックも簡単に用意できるのですが、わかりやすさを優先して物理的に QR コードリーダーを封印していました。

物理的な封印。これもマートのラベルプリンターで現地作成

クックパッドブースではダッシュボードの展示を行っていました。ビールの提供が始まる17時以降、ドアの開け閉めによって一斉にグラフが動き始めます。

クックパッドブースのダッシュボード展示

私もエンジニアとして、期待通りビールが冷やされているか確認を行いました。

温度監視の動作確認

おわりに

RubyKaigi 2023 では、とてもおいしいりんごジュースとクラフトビールが用意されました。私たちは大量に冷蔵庫を所有するスポンサーとして偶然居合わせたので、喜んで冷蔵庫を提供しつつ、クックパッドマートの流通の裏側をデモする機会をいただきました。クックパッドマートでは、生鮮食品を適切な温度を保ちながらユーザーに届けるために様々な工夫を凝らしています。首都圏のサービス提供エリアにお住まいの方は、ぜひクックパッドマートで買物をしてみて、生産者から冷蔵庫に届くまでの技術に思いを馳せていただければ幸いです。 最後に、RubyKaigi 2023 スタッフのみなさまおよび、ブースに訪れていただいたみなさま、どうもありがとうございました。

いい感じのプランニングポーカー作りました

こんにちは。クックパッド事業部プロダクト開発グループの末田(@terfno_mai)です。 クックパッドがスポンサーする 2023 年のカンファレンスに向けてノベルティ制作をしました。 この記事では、今年作ったプランニングポーカーについて書きます。

プランニングポーカーとは

プランニングポーカーについて ChatGPT に聞いてみました。

Q.プランニングポーカーについて 140 字程度で説明してください。

プランニングポーカーは、アジャイルソフトウェア開発において、作業の見積もりを行うための手法で、開発チームがカードを使って難易度を評価し、議論を重ねて合意を得ることで正確な見積もりを行います。

基本的な使い方も ChatGPT に聞くと答えてくれるのでそちらを参照してください。クックパッドでのプランニングポーカーの運用については後述します。

Q.プランニングポーカーの基本的な使い方について完結に教えてください。

プランニングポーカーの基本的な使い方は以下の通りです。

  1. チームメンバー全員が集まり、見積もりを行う作業についての理解を深めます。
  2. 見積もりに使うカードを用意し、1〜100 の数字が書かれたカードを配布します。
  3. チームメンバーは、各作業について自分が考える見積もりを、カードを使って提示します。
  4. カードの数字によって見積もりがばらついた場合、チームメンバーは理由を話し合い、合意を得るまで議論を続けます。
  5. 見積もりが合意されたら、次の作業に進みます。
  6. 複数の見積もりが必要な場合、上記の手順を繰り返します。 プランニングポーカーは、チームメンバーが互いに議論しながら合意を形成するため、見積もりの正確性が向上するというメリットがあります。

過去にプランニングポーカーの詳細な使い方について言及している記事もあります。合わせてどうぞ。 techlife.cookpad.com

今回制作したプランニングポーカーの構成

今回配布するプランニングポーカーのカード構成は一般に流通しているものとは異なります。 1, 2, 3, 5, 8, 13/? の 6 枚 1 セットで 9 セット 54 枚です。紛失時のために、白紙になっているカードが 1 枚入っています。もしなくしてしまったら、いい感じに書いて代用してください。合計 55 枚 1 束にしています。なぜこの構成になっているかについては後述します。

「13/?」カードについて

このカードは少し特殊です。13 を表示したいときは、? を隠してください。 ? を表示したいときは、13 を隠してください。右手で持つといい感じになる想定です。

クックパッドでのプランニングポーカー活用

私が所属しているプロダクト開発グループのフィーチャーチームではスクラム開発を採用しています。スクラム開発では、ある一定期間を「スプリント」として捉えます。 私のチームでは、スプリントの開始/終了のタイミングで「スプリントレビュー」「レトロスペクティブ」「スプリントプランニング」をしています。 スプリントプランニングで、次のスプリントで着手する施策について見積もりをしていて、この見積もりにプランニングポーカーをしています。プランニングポーカーに使うカードは私の私物のトランプや、UNO などで代用していました。

もやもや

「さすがにプランニングポーカー使いたいな〜。毎回トランプから使う数字だけ取り出すのめんどいし…」 「かといって普通のプランニングポーカーだと使わないカードあるし…」

一般に流通しているプランニングポーカーの構成は、0, 1, 2, 3, 5, 8, 13, 20, 40, 100, ½, ?, 無限大, ☕️ などのカードが 1 セットになっていることが多いです。 私のチームでは、1 スプリント 2 週間としていました。また、プランニングポーカーの 1 ポイント = 1 時間 として扱っていました。なので、20 時間より大きな見積もりについては細分化するのでカードを使うことがなく、通常のプランニングポーカーは私達にとって過剰でした。また、1 束に 4 セット(4 人分)しか入っておらず、十数人規模の私達のチームでは 3 セット以上用意する必要があり、大変面倒です。 これらの理由から、いい感じのプランニングポーカーが欲しかったです。

祈り

クックパッドには tech/tanzaku という、願い事を書いて叶ったら close するというリポジトリがあります。ここにいろいろ書いておいて、チャンスがあれば…

チャンス到来!

RubyKaigi に向けてノベルティを作ることになり、口頭で提案してみると本当に作ることになりました。なんでも言ってみるもんですね。

制作

「良質のプランニングポーカー」が欲しいです。良質なプランニングポーカーは良質なカードによってもたらされます。しかし、普通にカードを発注するだけでは私達の求めるカードを得られないことが一般に知られています。いい感じに設計し、発注する必要があります。

私は 2.5 inch x 3.5 inch の紙製品をシャッフルすることにおいて、社内で最も秀でています。ガチで。1 何を言っているか分からないかもしれませんが、私はこのサイズの紙製品について社内で最も詳しい社員でもあります。2.5 inch x 3.5 inch で 54 枚程度のいい感じのカードを作ってくれる会社を知っていました。そこにいい感じに発注することで、良質なカードが得られそうです。今回のプランニングポーカーは 54 枚程度に収めることにしました。

カードの構成について

私達が使わないカードを排して、よく使うカードだけを選んで用意することにします。同じチームのテックリードや、他の部署のテックリードや同期とお話して、「1, 2, 3, 5, 8, 13 あればよくない?」という結論に至りました。13 より大きな見積もりは分割したい、また見積もり不可能を意思表示するために「?」も必要そうという話をしました。「1, 2, 3, 5, 8, 13」のどれか に「?」のカードを同居させれば 6 枚になり、 9 人分で 54 枚になります。1 セットで 9 人分まかなえるので、そこそこの人数のチームでもカバーできていい感じですね。

カードそのものの仕様を考える

今回は MPC2 に発注することにしました。いろいろな紙と仕上げがありますね。今回の発注数に合わせて選べる紙からいい感じの組み合わせを選んで提案しました。

  • 紙(Card stock): M31 Linen
  • 枚数(Size of deck): up to 55
  • 印刷(Print type): full color print
  • 仕上げ(Finish): BETA playing card finish
    • 仕上げ/finish とは表面加工のことです。
    • カードの表面にエンボス加工や薬品によるコーティングがされています。
    • 一覧: https://www.makeplayingcards.com/pops/card-finish.html
    • BETA 以外のやつはよくある百均のやつみたいになります。避けたい。
    • BETA playing card finish は、紙製トランプによく使われるエンボス加工と薬品によるコーティングでカード同士がむらなく広がったり、カードの耐久性を高める仕上げです。
  • しおり(Booklets): なし
  • 箱(Packaging)
    • Custom tuck box (sealed base)
    • Box printed: Outside
    • Custom box finish: T30 UV coated (gloss)
    • Custom box effect: Full color print
    • Box seals: None
    • Wrapping: Shrink-wrapped
  • Add-on: None

いい感じですね。

デザインを考える

デザイナーの方と共通の用語を使うために、用語集を作りました。

私物のコレクションをいくつか持ち込み、「いい感じにしてください!」とお願いしました。何度かの壁打ちの結果、コーポレートブランドデザインの Organic3 、オリジナルフォントの Cookpad Sans、クックパッドで使用している Cookpad Symbols などのデザイン資産をふんだんに使って、めちゃいい感じになりました。 デザイナーすごい…助かりました。

発注!

MPC に発注しました。Fedex で届くらしいです。途中税関で止まってそうでしたが無事届きました!

できあがり!

という感じで、tanzaku に書いた願いが叶いました。ありがとう…!!!!!!!

最高のプランニングポーカーをノベルティとして用意していますが、最高故にたくさん作ることはできませんでした。スポンサーブースで誰でも簡単に入手できる感じではないです。ごめんなさい。

RubyKaigi 2023 に限らず、他のカンファレンスにも持っていきます。何かしらのチャレンジをクリアした人などに配る予定です。会場でスポンサーブースを見かけたら是非立ち寄ってみてください。

クックパッドではサービス開発に気持ちがあるやさしいエンジニアを募集しています。クックパッドで働くことに興味のある方もない方も是非クックパッドのスポンサーブースにお越しください。お待ちしております。 cookpad.careers

PLANNING POKER ® is a registered trademark of Mountain Goat Software, LLC Sequence of values is (C) Mountain Goat Software, LLC