これはGalapagos Advent Calendar 8日目の記事です。
はじめまして、ガラパゴスAIチームの中の人まんだです。 AdventCalendarやりますよって話をいただいた時に、 ネタが準備できてない。。。って思ってたら、 「合同反省会レポートを書けば良いのでは?」って機運が高まったので 今日は12月7日に開催された合同反省会のレポートをします。
合同反省会とは?
LIGさん、SONICMOOVさんとガラパゴスの3社合同で2~3ヶ月に一度行われている勉強会です。 今回の正式名称は、「【年忘れ】3社合同反省会」で、 「モノ」を作ることにこだわりある3社が開発や運用で起きたトラブルをどのように解決したかを発信する技術者向けの勉強会です。
登壇者
今回は、 LIGさんから土屋さん、蓮子さん、 ソニックムーブさんから家永さん、 ガラパゴスからは平山さんが発表をしました。
以下、発表した皆様の発表内容の簡単なまとめです。
「草案」に注意!W3C勧告プロセスについて
位置情報と音楽が連動したアプリのweb版にて、 お披露目イベントの直前に突然音が出なくなる→急遽実装の変更を試みる→間に合わず。。。 結局イベントでは実演はできず動画の紹介という形になる。
W3C勧告プロセスとは
W3C勧告とは、World Wide Web Consortium(W3C)の規格を扱うワーキンググループにおける批准プロセスの最終段階である(wikipediaより)。W3C勧告になるまでには次のような段階を経ていく。
- 作業草稿←めちゃめちゃ変わる
- 勧告候補←まだまだ変わる
- 勧告案←そろそろ大丈夫そう
- W3C勧告←大丈夫、安心して使える
原因
- ブラウザのバージョンアップによる仕様変更
勧告より前段階の機能を利用したい場合は?
ラッパーライブラリを利用しよう。howler.jsがおすすめ。
勧告に至るまでの期間は?
- html5 →7年
- webaudioAPI→6年経過。未だに草稿段階。。。
教訓
- まずは落ち着こう
- コンソール警告はチェックしよう
- 勧告の前段階の機能を仕様する時は特に注意しよう
WEB業界に来てから何度もしくじって転機を逃したが、頑張って生きています。
一つ目のトークからガラッと変わってエモい(?)お話。 自身の来歴を振り返りながら、反省と教訓がたっぷり聞けました。
教訓
- 受けた仕事は期限内にやりきる
- やりたいことを常に考える
- チャンスがあれば手を挙げてやってみる
- 早いうちに苦労しておく
非同期処理が終わらない件…など
サーバー編
- 同期処理でのCSVインポートがつらくなったので非同期処理に切り替えるも、インポートができなかった話。
- 非同期処理にするもCSVインポートできず
- 非同期処理変更後に大量にメモリを使っている処理が残っていた
- CSVインポート→Sidekiqがmonitに再起動されてリトライ→以下再起動ループ
教訓
- テストでは大量データがないのでメモリが…みたいな問題は表面化しない
- コードレビューの限界(遥か以前にアクセプトされたコードで問題が発生することも)
AI編
- 別件で作られた単純なデータ構造のシステム
- そこからもりもり増えるデータとテーブル
- 無駄な正規化
- 数ヶ月後…
- IO祭りが始まる
教訓
- 資源は有限である
- 正規化すれば良い…というわけではない
- 条件付きインデックスなどの活用
やらかすその前に、テスト駆動開発「Phalcon」編
テスト駆動開発
- 目的
- 仕様どおりに動作するか
- 想定外の動作に対応しているか
- バグ消し込み、デグレの防止
- 方針
- Controllerテスト(相互作用中心のテスト)
- テスト内容はコメントに(その他できるだけコメントは詳細に書く)
メリット
- バグが減る
- デバッグの時間が短くなる
- 要件への理解が早まる
- リグレッションテストができる
デメリット
- コードを書く量が2倍以上になる。実装工数が膨らむ。
- テストの品質保持の工数が必要
懇親会
ピザとお酒もあり様々な話で盛り上がりました。AIやらかし編データベースの話は、かなり皆様の興味を刺激したようです。
まとめ
3社合同反省会への参加は筆者は初めてでしたが、3社それぞれトラブルとその解決プロセスを惜しげなく披露していました。
おわりに
弊社では、失敗・やらかしを恐れず新しい技術にチャレンジするエンジニアを絶賛募集しています。ご応募お待ちしております。
以上3社合同反省会参加レポートでした。明日以降の記事にもご期待ください。