2021年12月のふりかえりです。 引き続き B 社(週5日)にて Rails 製の EC サイトの開発業務と Engineering Manager / Scrum Master 業務に携わっています。

12 月はマネジメント 6 割、プレイヤー 4 割といった割合で対応していました。

マネジメント系

  • ソフトウェア検証の外部委託関連
    • 一度確定したのですが、事業状況が厳しく、確定がひっくりかえってしまいました。
    • 1月にもう一度判断が入ることになっています。
    • 先方には平謝りしました。
  • 成果物の品質向上に向けた動き
    • 中長期計画であげていた項目で、日々の成果物(ドキュメントとかコードとか)のクオリティを安定・底上げするためのガイドラインをいくつか策定しました。以下のようなタイトルになります。
      • Software Design & Review Guideline
        • 設計に関するガイドラインです。設計成果物のレビューもあわせて。
      • Large Scale Rails Guideline
        • Rails に関するガイドラインです。大規模な Rails との付き合い方です。かなり詳細にルールを決めています。
        • Issues of Large Scale Rails という文書も合わせて作成しており、一般的な Rails と大規模 Rails との違い、大規模になったときに発生する問題について解説しています。
      • React.js(ES6) and Bundle/Transpile Pipeline Guideline
        • ES6 環境のガイドラインです。React.js および Webpack のパイプライン関連です。
      • Javascript(ES5) and Sprockets Pipeline Guideline
        • ES5 環境のガイドラインです。jQuery, Vue.js および Sprockets のパイプライン関連です。
      • Software Testing Guideline
        • テストにまつわるガイドラインです。
  • エンジニア育成
    • 引き続きです。
    • 対象メンバー二人がかなり成長してきている手応えがあり、大変たのもしいです。
  • 採用活動
    • 事業状況が厳しくなっており、採用ストップとなりました。
    • すべりこみリファラルで一人 1 月から副業ジョイン予定となっています。
  • 契約書関連
    • 会社として準委任にまつわる契約書の更新があったのでそのレビューと修正依頼を延々とキャッチボールしていました。
    • 専門ではないので調査と説得が大変でした。Integrity の低い内容に対して説得する案件だったので正直疲れました。

プレイヤー系

  • CRM 導入
    • ちょっと調整がはいりました。
  • フロントエンド関連
    • IE11 終了に向けた動き
      • 業界として IE11 の終了を 2022 年 6 月に控えていますが、そこにむけた動きを始めています。
      • できれば年明けすぎにクロージングさせたいと思いまして一応調整してみましたが、まだ UU 規模は少ないものの売上規模がそれなりにあるので難しいですねということで本来の期限である 6 月に終了の流れです。
        • 現時点で事業状況が厳し目なのでしょうがないですね。
    • Coffee Script の撤去に向けた動き
      • 以前からちょいちょいメンバーに対応方針を探ってもらっていた件です。撤去に向けて放置されていたので自分で着手してみました。
      • 以前は decaffeinate でなんとかしようとしていて難しい感じになっていましたが、 asset:precompile の結果を使えばいいのでは?というのに気づき変換してみたところ良さそうな感じがしています。
      • ファイル数が多く影響範囲も多大なため、先にまだ整えきれていない周辺を整えることにしました。具体的には以下の対応を行いました。
        • Sentry の JS 版を全フロントエンド環境に適用してエラー推移をモニタリングできるようにしました。
          • ここで既存バグをいくつか検出できているので地道に修正を進めています。
        • Datadog RUM を EC 面以外に適用してモニタリングできるようにしました。
          • セッション数課金なのでまずはどの程度のセッション数になるかを確認して、高額にならないことは確認できたのでそのまま適用していく予定です。
          • RUM 側のダッシュボードがよくできており、Sentry 相当の機能も持っているので RUM に集約できそうな印象も持てました。(要素技術を絞りたい観点)
      • 上記のように周辺が整ってきたので、1 月以降に実際の変換結果を適用していくのを徐々に進めたいと考えています。
    • Webpack でのバンドルのフローを sprockets から切り離す作業を行っているところです。
      • Webpack ビルドで manifest.json を生成するのとファイル名にハッシュ値を含めるようにする対応を行いました。
      • 上記で生成した manifest.json を Rails 側から読み込めるようにする仕組みを gem として実装しつつ、 Github Package Registry で配信するようにしました。
        • この対応にともなって、Github で Personal Access Token を運用する必要がでてきたため、いわゆる bot user を準備しました。そのユーザーの Token をシステムで使うように設定しています。
      • こちらはここまでの適用は終わっていますが、Webpack ビルドの sprockets からの切り離し、Github Actions での Webpack ビルド、CloudFront でのアセット配信は 1 月以降の対応になります。
    • Webpack 側のコードででているワーニングを消していく作業をしています。
      • 一部対応しましたが、依存している npm パッケージで出ているものも多く、時間がかかりそうな状況になっていることがわかっています。
      • 徐々に継続対応していきます。
  • 検索関連
    • 検索システム側は順調に進捗しています(他メンバーが対応しています)
    • その検索システム側で商品のランキングデータを使ったインデックス構築を行うことになっています。
    • そのランキングデータが過去の経緯で現在うまく動いておらず、検索システムの運用を始める前に修復する必要があり事前検討を行っていました。
      • CRM 側でランキングデータ生成に必要な元データが一通り揃っており、それを活用する前提で検討していいかんじに着地しそうな手応えを得ています。
    • こちらは 1 月以降に詳細な設計と実装を行う予定です。
  • Developer Productivity Engineering 的活動
    • Log4j 関連
      • みなさん対応されていたかと思いますが、われわれも対応しておりました。
      • Java アプリケーションは開発していないので、情報収集・調査、一部修正の適用をしてまわる、といった対応を行いました。
      • AWS WAF の対応が早く Log4j のクエリをブロックするルールが即デプロイされていたのが自動適用していたりして大変ありがたかったです。
        • このタイミングで WAF 周辺の見直しやログまわりの見直しも合わせて行っておきました。
      • 関係あるか不明ですが、Log4j 問題以降、明確な攻撃を受けるようになっておりその対応に追われたりなどもしていました。(ここでは詳細はかけない系です)
    • Docker Desktop の契約準備をすすめました。

おわり