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

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

マネジメント系

  • ソフトウェア検証の外部委託に向けた準備
    • 先月から引き続きで、中長期計画で計画のひとつとしていた QA(Quality Assurance) の構築の活動を開始しています。
    • ソフトウェア検証会社さま複数社にアポをとりつつ、ご提案をいただきつつ、検討しつつみたいな感じで進めまして、稟議用の提案にまとめていきました。
    • 無事体制構築開始が確定して1月から QA 構築していけるようになっています。
  • 安定していなかったスタイルシートの書き方について、最低限ではありますがガイドラインを作成しました
  • 採用活動
    • 引き続き書類選考ボリュームがかなり多め推移しています。
    • 途中から TechLead 中心の採用に切り替えていたのでボリュームは減少していきました。
      • 当然ですがほぼ書類選考を通過しない状況になっています。
  • IPO 対応
    • 引き続きショートレビューの指摘事項の整備を進めています。(内容は当然ですがここには書けない感じです。)
  • エンジニア育成
    • 引き続きです。
    • 11月から育休から帰ってきたメンバーがいたため、2on1のような形式で実施しています。
    • 当初の目的どおり、知らない状態を知っている状態にするという点で価値がでているため引き続き継続してやっていく想定です。
    • 実際にやってみると、自分も学びが多くあり大変よい企画だなぁと感じています。
    • なお想定どおりではありますが、2005〜2015年付近のあらゆる Web サービスが成長した時代を経験していないエンジニアたちの基礎力の不足について、想定どおり不足しているんだなあというところは明確になりました。
  • セキュリティマネジメント
    • 毎月恒例になっているいろいろなアカウントの棚卸しを行いました

プレイヤー系

  • CRM 導入
    • 引き続きデータのセットアップを行っていきまして、ぼくの作業としてはすべて完了しました。
      • Google Analytics のような範囲の計測を行うワンタグという仕組みがあり対応していましたが、少々くせがあり時間がかかりました。
    • 初期構築はほぼ Done な状況で、先方の初期構築データ部分の残課題を対処していけば本格利用開始です。
  • Lambda 関連
    • 数ヶ月前に一部の機能を一時的に Lambda で実装していましたが、本体アプリケーションでの実装し直しが完了したため Lambda の撤去を行いました
    • これまでわれわれの Lambda はコマンドやコンソールで手作業で構築していたのですが、今回の撤去作業が大変面倒だったので、今後はなにかしら抽象化する方向にしようかなというところで検討したり、メンバーと相談したりしていました。
    • CDK 使っていこうか、という着地で話をしました。
  • M1 Mac 対応
    • 購入していた M1 Mac が到着したので環境構築してみたところ、ぼくたちの本体の Rails 環境は古すぎるために M1 Native で動かすのが大変厳しいということがわかりました。
      • node.js, readline, ffi, sassc など… 修正が多く、修正しても正しく動かないみたいな状況が続いたので撤退しました。
      • Rosetta2 に進むというのもちょっと脳裏をよぎりましたが、恐らく一定期間しかサポートされないであろうと予想しており、あまり筋が良くないかなという判断で対応作業は見送りました。
    • というところで、Docker ベースの環境を構築しはじめており、こちらの進捗は途中まで完了しています。
      • 数ヶ月後には現行 Rails アプリケーションから切り出した一部機能を Lambda / ECS で稼働させることができそうな状況でもあるので、ここで Docker イメージ構築を押し進めるのは ROI 高いだろうという判断でもあります。
      • Docker for Mac なので素の状態で Rails をコンテナで動かすのは無理があるため、docker-sync, mutagen あたりを試しつつ、mutagen ベースでいくのがよさそうかというところの着地です。
        • どちらも使わない場合と比較して 2 倍程度の速度で動いています。それでも Native で動かすよりはちょい遅いですが。
      • なお、現行の Rails アプリケーションはアセット量が多いだったり外部のパッケージ依存が大きいだったりがあり、イメージサイズが大きすぎて本番運用できないのでこれを先に取り除いてから Docker 環境構築の後続作業をやることにしています。
  • フロントエンド関連
    • sprockets, webpack, rails view などのフロントエンドに関連する各種要素技術をどのように改善していくかについて、時間をとって検討してみた結果、先2年分くらいの計画に落とし込むことができて非常に進捗した感じがしています。
      • 足元の実際の作業内容としては、不使用機能の削除、lint 強化、各種コンポーネントバージョンアップなどを行っています。
    • sprockets 部分について
      • (僕の担当ではないですが) rails assets に依存している部分の対処を完了しました。
        • こちらは、rails assets が 3 ヶ月に一度のペースで証明書更新できなくて bundle install 系ができなくなるというのにずっと悩まされていたのですが、この状況から脱却するため、rails assets をやめて cdnjs からロードするかリポジトリに取り込むかの対応を行う形に着地しました。
      • M1 Mac 対応中に作成した、新しい SCSS と古い SCSS 両方で同じ挙動になるような修正のコミットを個別に本線に取り込むなど行いました。
    • webpack 部分について
      • ビルドワークフローについて、本体 Rails に混ざり込んでいるところを分離するための事前の作業を行っています。
      • 今月は babel v6 から v7 へのバージョンアップが完了し、各種設定も最新な状態に修正できて非常に満足度が高い仕上がりになりました。
        • 個別にいろいろ取り込まれていた polyfill は全部 babel + core js に寄せ切りました。
        • v7 バージョンアップの動作確認で IE 11 を使わざるを得ない状況が続き、非常にストレスが大きかったので IE 11 非対応に向けた提案文書を書き始めました。
      • devDependencies から不要なパッケージを消すなどの整理を行いました。
      • webpack v3 を使っているのですが、この状況でも CommonsChunkPlugin でお手軽に chunk を分けれることがわかったので、雑設定でできる範囲でチャンク分割を行いました。
        • ちゃんと Code Splitting していくのは、元々 v4 にしてからという計画でいたため v4 後にやりたいとおもっています。
      • 現在は webpack でのバンドルのフローを sprockets から切り離す作業を行っているところです。切り離し後に CDN 配信まわりを整備して着地予定です。
        • 本体の Rails が Rails4 系なので、webpacker がやっているようなところも自前で実装中です。
    • rails view 部分について
      • slim lint の設定を強化していっています。
      • Coffee Script を ES5 に変換する作業を一部はじめています。
  • 画像配信関連
    • 以前行っていた作業の続きで、画像配信をアプリケーションサーバーから行っている画像がまだ残っており、それを Imgix 経由に変えていく作業を粛々と行っています。
      • これは Docker イメージに app/assets/images を含めないようにするための措置でもあるので優先度的に先に行っています。
      • どこから参照されているのかよくわからない画像もちょこちょこあるので production.log や access log を確認しながら対応しています。(画像のパスがデータベース等に入っていてコード上に記述がないことがちょいちょいあるのです)
    • また、Imgix 導入初期の頃に対応したもので、WebFolder という機能を使っているものがあり、これも同時に撤去中です。
      • こちらは app/assets/images が参照される際に Imgix の URL に変換する仕組みを実装してあるので Imgix から配信されるようにはなっているのですが app/assets/images を撤去する流れにのっとり撤去対象としています。
      • こちらもどこから参照されているかわからない画像があるので CDN Log を参照しながら撤去していっています。
  • Developer Productivity Engineering 的活動
    • CI 復活
      • 10 月の Let’s Encrypt ルート証明書問題の影響で一時的に止めていた各種 CI のフローを復活させていきました
    • 一部の社内ツールが Ruby on Jets で動いており、非常に厳しい感じになっているため、これを撤去できないか検討しました。
      • 結論としては Zapier でできるな、ということがわかったのであとは移行するだけ、という状況になっています。
      • Ruby on Jets は個人開発にはよいかもしれないですが、企業ユースには全く適さないので本当にやめたほうがいいです。
        • アプリケーションアーキテクチャ面、インフラ面、セキュリティ面がきつすぎます…

おわり