以下の内容はhttps://c5meru.hatenablog.jp/より取得しました。


技術は人で動いている

ソフトウェアエンジニアとしてコードを書くことはもちろん楽しいですが、組織が大きくなり、システムが複雑になるほど、技術そのものと同じくらい「人」や「組織」との調整が重要になると感じています。
どれほど優れた設計も、関係者全員の合意がなければ絵に描いた餅になってしまいます。私はこれまで、異なる専門性を持つチーム間の懸念や要件を解きほぐし、共通のゴールに向けて調整する、いわば「翻訳家」のような役割を担ってきました。
今日は、私が実際に経験した組織横断的な調整のエピソードを抜粋してお話しします。

私が関わった中で特に調整が難しかったのは下記です。

  1. 既存の巨大な基幹システムから特定の機能を安全に切り出し新しいマイクロサービスとして独立させるプロジェクト
  2. システムのコア機能に大きな変更を加えるプロジェクト

1. リスクを分離するためのマイクロサービス化

このプロジェクトの発端は、既存の機能に、大規模な関連データを扱う新しい仕組みを追加することでした。しかし、そのデータは非常に数が多く、そのまま既存の基幹システムのデータベースに追加すると、性能が劣化し、最悪の場合、システム全体の障害につながるという重大な懸念がありました。

さらに、そのデータは複数の異なるドメインのシステムから参照される性質を持っており、そもそも基幹システムのDBに存在すること自体が不自然な状態でした。

これらの課題を解決するため、私はこのデータ参照機能を独立したマイクロサービスとして切り出す旗振り役を務めました。

基盤チームとの密な連携

  • インフラ構築の合意形成:
    • 設計書を基にSREチームと議論し、サービスの要件や想定負荷を伝えました。当初、既存のDBを間借りする案も出ましたが、DBREの助言を受け、リスクを避けるために独立したDBを新たに構築することで合意しました。
  • 認証基盤:
    • サービス間の通信を安全に行うため、社内の認証基盤を利用する必要がありました。担当の基盤チームと協力して設定を進めました。
  • 運用の自動化:
    • データの定期的な更新が必要だったため、バッチ処理の実装も必要でした。このバッチ処理用の k8s pod 作成や定時実行の設定についてもSREチームと調整を行いました。

c5meru.hatenablog.jp

2. コア機能における意思決定とトレードオフ

次に、基幹システムの中核となるデータに対する一括操作機能を開発した際も、多くの調整が必要でした。

データ整合性のための排他制御

一括操作では、データの整合性を保つことが最重要です。そのため、処理中に他のユーザーが対象のデータを更新できないように、悲観的ロックを採用しました。この仕様はモバイルアプリや公開APIなど、あらゆるクライアントに影響を与えるため、事前に設計書で仕様を明確にし、関係チームと影響範囲の確認を徹底しました。

非同期処理の実行環境に関するトレードオフ

一括処理はサーバー負荷を考慮し、非同期で実行します。その実行環境をどうするかで、大きな議論がありました。
私は当初、ドメインの独立性、運用・調査の容易性、そして将来の機能拡張を見据え、「一括処理専用のWorkerを新設すべき」と主張しました。しかし、他チームのリードエンジニアからは、コスト面を理由に既存の共用環境を利用すべき、という反対意見も出ました。
ここで安易に妥協するのではなく、私は改めてプロダクトSREに直接相談を持ちかけました。技術的な観点からWorkerを分離するメリットと、将来的なリスクを丁寧に説明した結果、最終的に専用Workerを新設するという、当初の理想案で合意を得ることができました。

技術的な正しさだけでは、プロジェクトは前に進まない

振り返ると、これらのプロジェクトの遂行は、コードそのものよりも、人と人との対話によってもたらされた部分が大きいと感じます。
設計書は、単に仕様を記すものではなく、異なる背景を持つ専門家たちの「共通言語」として機能しました。性能、コスト、セキュリティ、ユーザーインターフェース、それぞれの立場からの懸念や要求を丁寧に「翻訳」し、ときには粘り強く議論を重ねることで、ようやく組織としての最適解にたどり着くことができます。 技術的な正しさの追求と、組織の複雑さを理解した立ち回り。その両方を持つことこそが、大規模なプロダクト開発をリードする上で不可欠なスキルなのだと、この経験を通じて改めて学びました。

マスターデータのバージョン管理と論理削除の難しさ

Webアプリケーションを開発していると、ユーザーが設定する「マスターデータ」を扱う場面は多いですよね。例えば、ECサイトの商品カテゴリーや、プロジェクト管理ツールのステータスなど。これらは一度作ったら終わりではなく、後から編集されたり、使われなくなったりします。

最近、まさにこのマスターデータの変更履歴をどう管理するか、という課題に直面しました。一見シンプルに見えるこの問題、実は「リビジョン管理」と「論理削除」という、深く、そして考慮すべきことが多い「沼」でした。

なぜただのUPDATEではダメなのか?

マスターデータの変更を、単純なUPDATE文で上書きしてはいけないケースがあります。それは、「過去にそのマスターデータを使って作られたデータが存在する」場合です。

例えば、あるプロジェクト管理ツールで使われるタスクのステータスを考えてみてください。ユーザーが「A」というタスクを「対応中」というステータスに設定したとします。その後、チームの方針変更で、管理者がステータス名を「開発中」に変更しました。
もし単純にUPDATEで上書きしてしまうと、過去のタスク「A」のステータスまで「開発中」に変わってしまいます。これでは、「あのタスクは、どのタイミングでどのステータスだったのか」という履歴が追えなくなり、プロジェクトの状況を正しく把握できなくなる可能性があります。

これを避けるために、マスターデータが更新された際には、古いデータを安易に上書きせず、どの時点のデータを使っていたかを保持する仕組み、つまり「リビジョン管理」が必要になるのです。

シンプルに見えて茨の道だった「論理削除」と「リビジョン管理」

当初、私たちはよくある version カラムを持たせて、更新のたびにバージョン番号をインクリメントする方式を検討しました。しかし、検討を進めるうちに、この方式では解決が難しい様々な問題が浮かび上がってきました。
最終的に私たちが採用したのは、更新のたびに新しいレコードとしてデータを複製し、古いレコードは論理削除扱いにする、という方法でした。一見、単純なようで、実は下記のような多くの課題と向き合うことになりました。

1. 「オリジン」をどう管理するか

レコードを複製していくと、「元は同じデータだった」という繋がりがわからなくなってしまいます。そこで、最初のレコードに「オリジンID」を割り振り、複製されたレコードもそのIDを引き継ぐようにしました。
これにより、ユーザーから見える単位と、DB上のレコードをうまく紐づけることができます。しかし、このオリジンIDの考え方を、関連する様々な機能に浸透させるのが最初の難関でした。

2. 関連するレコードとのライフサイクルの違い

私たちが扱っていたマスターデータは、単体で存在しているわけではなく、他の多くのデータと関連を持っていました。そして、それぞれデータのライフサイクル(作成され、使われ、不要になるまでの期間)が異なります。
マスターデータ側は「新しいバージョンが作られたので、古い方はもう使わないでほしい(論理削除)」という状態でも、関連データ側は「いや、過去のタスクでまだその古いバージョンを使ってるんで消さないで!」という状況が生まれます。このライフサイクルの非同期性を考慮した上で、外部キー制約やデータの整合性をどう保つかは、非常に悩ましい問題でした。

3. 各種APIとの兼ね合い

私たちのサービスは、Webフロントエンドだけでなく、モバイルアプリや外部連携のためのAPIも提供しています。これらすべてのインターフェースを考慮する必要がありました。
特にAPIでは、後方互換性を壊さずにどうやって表現するか、という点で多くの議論を重ねました。安易な変更は、既存のAPI利用者に影響を与えてしまうため、慎重な設計が求められました。

まとめ

マスターデータのリビジョン管理は、単に履歴を保存するだけ、と軽く考えがちですが、実際には関連データやAPI、運用まで含めた幅広い視野で設計する必要がある、非常に奥が深いテーマでした。
特に、「論理削除」という概念を導入することが、システム全体にどのような影響を及ぼすのかを事前に洗い出し、関係者と密に連携しながら進めることの重要性を改めて痛感しました。

もし皆さんが同じような課題に直面したら、「これは深い沼かもしれないぞ」と少しだけ身構えて、慎重に設計を進めていくことをお勧めします。

マイクロサービスを作ったら、いつの間にかチーム間の翻訳家になっていた話

皆さんの職場には、SREチームや全社的な基盤チームはありますか?私の職場にはそうした専門チームがあるのですが、最近、あるプロジェクトでマイクロサービスを新規開発することになりました。その過程で、プロダクト開発チームと、SREや基盤といった専門家チームの間に立ち、気づけば「翻訳家」のような役割を担っていた、という話をします。

なぜマイクロサービスを開発することになったのか

ことの発端は、ある機能追加の検討でした。
その機能で扱うデータが、非常に大規模なものだったのです。既存のモノリシックなアプリケーションのDBにそのまま追加してしまうと、パフォーマンスの低下は避けられませんし、最悪の場合、システム全体を巻き込む障害につながる可能性もありました。

また、そのデータは将来的に他のサービスからも参照される可能性が高いものでした。
「なので、マイクロサービスを立てましょう」
システムの安定性と将来的な拡張性を考え、このアーキテクチャを選択するに至りました。こうして、私のチーム間翻訳家としての役割がスタートしたのです。

チーム間の翻訳家、誕生

マイクロサービスを作ると決まっても、プロダクト開発チームだけで開発が完結するわけではありません。サーバーやDBを準備してくれるSREチーム、社内の認証基盤などを提供してくれる基盤チーム。こうした専門チームの協力なくして、サービスをリリースすることはできません。そこで、私がハブとなり、各所との調整に奔走する日々が始まりました。

最初の関門、サービスの名前決め

インフラ構築を依頼するにも、まずはサービス名がなければ話が進みません。「どんなサービスか」を的確に伝えつつ、覚えやすい名前を考える。これは意外と重要なプロセスです。関係者と議論を重ね、シンプルなサービス名を決定しました。

インフラ構築のキックオフミーティング

名前が決まったら、次はSREチームへのインフラ構築依頼です。設計書をもとに「こういうサービスで、これくらいのアクセスが想定されるので、リソースはこれくらい必要です」といった要件を伝えるミーティングを開きました。この段階で関係者間の認識をしっかり合わせておくと、後の手戻りを大幅に減らせるので非常に重要です。

デプロイスクリプトの準備

サーバーの構成が見えてきたら、次はCI/CDの構築です。幸い、社内にはリポジトリの雛形を簡単に作れる便利なツールがあったため、基本的な部分はすぐに構築できました。とはいえ、プロジェクト固有のデプロイ処理などは、自分でスクリプトを書く必要があります。ここは基盤チームの方々にアドバイスをいただきながら、社内の標準的なデプロイフローに合わせたスクリプトを準備しました。

そうしてサービスは完成へ

この他にも、環境変数や認証周りの設定や、定期バッチの実行方法を調整したり、開発の終盤で社内の技術ルールが変更になって急遽対応したりと、様々な出来事がありましたが、無事にサービスをリリースすることができました。

この記事が、これからマイクロサービス開発に挑戦する方や、組織を横断したコミュニケーションに悩んでいる方の、何かのヒントになれば幸いです。

三浦半島.rb に参加した

三浦半島.rb is 三浦半島.rb #4 近況発表会! & KoR2025のタイムテーブルを眺める会 - connpass

きっかけ

先月に演奏会に出演したんだけど、子連れウェルカムな楽団なので練習に5歳/0歳の息子を連れて行っていたら、本番当日も5歳の方が他の子と約束したから一緒に行きたいと言い出したので、頑張ってお弁当を作って連れて行った。しかも何もしてないのにステージにもちょっと立った。笑
音楽かITかに関わらず、子どもごと受け入れてもらえるのはやっぱり普通に嬉しい。気合を入れているイベントであっても、意外と連れて行けちゃうものなんだな、と拍子抜けしたのだった。

そして実は5歳の息子、その前に静岡で開催された夫の方の勉強会にも着いて行っており、まあまあ長居をして楽しんでいた。

個人的に、夫のワンオペで2人の息子を任せて勉強会などに行くのはちょっと不安で申し訳なくて、1人連れて行けると痛み分け(?)になってちょうどいいと思っていた。
託児のある勉強会やイベントはたまにあるけど、定期的に開催されててかつ託児が確約されてて移動距離がなるべく少ないものとなると選択肢がほぼない。
一方、地域単位のイベントはスポンサー企業ではなく公営の施設で行われることが多いので、子連れでも行きやすそうだと(PHPカンファレンス小田原あたりから)思っていた。これを機に子連れ勉強会がある程度一般化されたら良いなとも思った(子どもがどれくらい落ち着いていられるかにもよるが・・・)。

結局、子どもの体調が万全ではなかったので夫と話し合った結果、私だけ行かせてもらえることになった(大吉祥寺pmや、夫の会社の富士登山の裏でワンオペしていたのが報われたことになる)のだが、次回はぜひ5歳も連れて行きたい。

三浦半島

会場は京急線汐入駅が目の前の横須賀産業プラザ。別の部屋で子ども関連のイベントがあったようで子連れのハードルは低そうだった。

当方、生まれも育ちも神奈川県小田原市で、横須賀とは海を挟んで反対側。車でも電車でもなかなかの時間がかかるので、これまでの人生でほとんど縁がなかった。今は神奈川県央に住んでいるので、都内へ出るのと変わらない所要時間で行けるようになった。混み具合も都内に比べるとそこそこ快適。

参加してみて感じた事

女性比率が高い/全体の人数が多すぎない

特に女性にターゲティングしているイベントというわけではないのに女性比率が高く、全体の人数がほどほどでアットホームだった。

タイムテーブルややることがかっちり決まっていない

その場で話したいことがあれば話す人もいるし、Kaigi on Rails のタイムテーブルは動画を流しながら眺めたので、ゆるふわ感があってよかった。
会社名を出して登壇枠に挙手するのが難しい人でもこのスタイルならこっそり登壇できて良いね、という話になった。本当にそう。途中から私もちょっと用意してたくらい。

懇親会が良かった

ボンベイサファイアジントニックが飲めたし、ごはんがおいしかった。横須賀だからか国際色が豊かだったし、まさか日々お世話になっている TechRacho の hachi8833 さんがキーボードでバースデーソングを弾くのを見ることが(!?)できるとは・・・!

勉強会 w/ChatGPT

途中、深掘りたいトピックや知らないトピックなどあればChatGPTに聞きまくったら、理解が深まってとても楽しかった。これができるようになったことによって、過去イチ勉強になった(これまで私は何を…

帰りの電車で酔っ払いながら書いているのですが、総じて良い会でした。みなさん大変お世話になりました、ありがとうございました!

最近 ChatGPT や Gemini に聞いたこと

※これだけで判断していないものもあります。特に薬や遺産分割など専門的な内容は、専門家にも相談した方が良いです。

  • ブログ記事に良さそうなトピック
  • ある特定の食材から何が簡単に作れるか
  • 仕事に集中するためにできること
  • ある個別株を買い増すか利確するか
  • 0歳4歳の子連れで◯◯◯◯(複数ケースあり)へ行くときに必要な準備やおすすめスケジュール
  • 市販薬の飲み合わせなどの相談
  • グリーフケア
  • 保育園の連絡帳に書くネタ
  • 市販のベビーフードに特定のある食材を使ったものはあるか
  • 虫取りに行くのに必要なもの
  • 夢についての解釈
  • 4歳におすすめのゲーム
  • 柔軟剤自動投入機能がついた洗濯機に手動で別の種類の柔軟剤を入れる方法
  • 天然石の意味と、おすすめの組み合わせ
  • ◯◯◯◯をしたときに飲酒しても大丈夫か
  • 友人と◯◯◯◯へ行くときにおすすめの待ち合わせ場所
  • ◯◯◯◯な主人公が◯◯◯◯するようなアニメ・漫画はあるか
  • 花瓶の水換え頻度
  • 相続放棄・遺産分割
  • おすすめ漢方
  • ある特定の病気について
  • 子どもの嘔吐対応
  • マンションでお盆に飾るもの
  • 日本は◯◯◯◯だけど海外はどうなのか
  • 赤羽・上野での湘南新宿ラインの判定はどのような基準なのか
  • ◯◯◯◯はセクハラになるのか
  • ◯◯◯◯(プログラミングのエラーやソフトウェアエンジニアリングにおける概念など)とは何か

やっぱ非同期ジョブと排他制御って難しいね

きっかけ

最近、ユーザーが作成した複数のデータを一括で処理する非同期ジョブ機能をリリースしました。特に月末などの繁忙期には多くのユーザーに利用されることが想定されています。

しかし、このジョブには大きな課題がありました。それは、同一のテナント内で他の特定の非同期ジョブが実行されていると、ジョブを開始できないというものです。一方でプロダクトマネージャーとしてはユーザーにガンガン並行実行してほしい、というのが本来の意図だったことがわかり、データ上も特に並行で操作しても問題のない処理内容でした。

さらに、このジョブが利用している共通の非同期処理モジュールを使って、後続の別プロジェクトを計画しています。そちらのプロジェクトでは、今回のジョブとは関係なく、高頻度での並行実行が求められる仕様でした。

現状のアーキテクチャのままでは、本来この機能が持つべきポテンシャルを発揮できないだけでなく、次のプロジェクトの足かせにもなってしまう。こうした背景から、改善を始めることになったのです。

なぜこんなことが起きていたのか?

調査を進めると、課題の根っこには排他制御の実装がありました。大きく分けて2つの難しさに直面しました。

1. ジョブレベルでの排他制御の難しさ

このシステムの他の機能では、データの一貫性を保つため、テナント単位で一度に実行できる非同期ジョブを一つに制限する、シンプルなロック機構が採用されていました。

今回リリースした機能は、同じ非同期処理を並行実行できないように(ここもプロダクトマネージャーと擦り合わせできていなかったポイント)実装したのですが、その際に共通のモジュールを利用したことによって全く関連性のないジョブ同士まで互いにブロックし合うという副作用を生んでしまったのです。

仕様も含めて「とりあえずロックしておけば安全」という初期設計が、システムの拡張性や利便性を損なう典型的な例ですね。どの範囲のジョブを、どの粒度で制御するべきか、というのは非常に悩ましい問題です。

2. データベースレベルでの排他制御の難しさ

さらに、もう一つの難関がデータベースのロックです。

この一括処理ジョブは、処理を開始する前に、対象となるすべてのドキュメントを一括でロック(悲観的ロック)する仕様でした。これもデータ整合性を担保する上では安全な方法です。

しかし、この「一括でロック」方式には大きなデメリットがありました。

ロック待ちとタイムアウトの多発

前述の「ジョブレベルでの排他制御の難しさ」をクリアできたとしても、複数のユーザーがほぼ同時に処理を実行しようとすると、ロックの奪い合いが発生し、タイムアウトでジョブが失敗するリスクがありました。

1件でも失敗すると全体が失敗

たった1件でもロックに失敗すると、ジョブ全体が開始できずにエラーとなる実装になっていました。

おわりに

今回の件を通して、非同期処理における排他制御は、システムの初期段階ではシンプルに考えがちですが、サービスの成長とともに必ず見直しが必要になる重要なテーマだと改めて感じました。

「安全」と「便利」と「パフォーマンス」、これらのバランスをいかに取るか。単純な正解はなく、アプリケーションの特性やユーザーの利用シーンを深く理解した上での設計が必要だなと思いました。

母が亡くなった

先月、母が亡くなった。私を高齢出産したので年齢的にはまあ寿命と言えなくもない。

酒とタバコが大好きだった影響で2016年ごろから入退院を繰り返していた。昨今の流れとは逆行して平均寿命よりは短く、認知症などもなく潔かったなあと今となっては思う。

ちょうど亡くなる数日前から次男が「ばあば」と言うようになったり、亡くなる前々日には実家でよく食べていた冷凍焼きそばをたまたま静岡の義実家で夜食としていただいたり、月命日が私の誕生日だったり、なんだか不思議なことがいくつかあった。まあまあ近所の、2年前に亡くなった母方の祖母がいる墓に1年ぶりに草むしりに行ったら、全部綺麗にした直後の兄に出くわしたりもした。

母の通夜葬儀は姉/兄/私の子どもたちが初めて一堂に会した。姉の娘はもう成人しているが他はすべて乳幼児のため式中もとても賑やかだった。故人さまも喜んでいるでしょうね〜と葬儀屋さんも笑っていた。。

葬儀通夜への家族参加のためのオペレーションもあり大変だったので、葬儀場のほぼ向かいにあった高級ホテルの良い部屋に宿泊した。オムツ児がいたので大浴場は行けなかったが、電車の見える部屋に長男は大喜びだった。

数日は家事や仕事も手付かずだったものの、今はもう仕事も再開して、バリバリには程遠いが最低限働けるくらいには調子も戻ってきた。

とりあえず母の写真を飾り、好きだった酒とタバコ、徳永英明のCD、チャン・グンソクの写真、定期便の花を置いて、LEDキャンドルを朝晩ONOFFしている。

子育てをしていると、長男や次男の表情に自分の幼少期を感じ、それらを見る自分に母を感じる。子どもたちがいてくれて良かった。家事が手つかずな時期は夫もいろいろと助けてくれたし、週末には昔から所属している楽団メンバーに子ども共々よくお世話になっている。

父方の祖父母は自分が産まれたときには既に亡くなっていたりほぼ縁がなかったりしたので、実家を出てから実家の墓には行っていなかったが、四十九日が終わったら行くようにしないといけない。また、実家に父が独りになってしまったので、いずれくるかもしれないダブルケアに備えてフルタイム正社員を辞める覚悟も決めた方が良いのかもしれないな、と思ったりしている。

設計レビューってどうやるの?

はじめに

「設計レビューって、結局どうやるのが“正解”なんだろう?」

設計って、会社のフェーズによっても全然異なるものだと思います。今まで所属していた会社は人数の少ないところが多かったので、かっちり設計せずに即実装とか、それぞれ我流でアーキテクチャ図やDesign Docが作られて特にレビューなどせずに実装していくような感じでした。

ここ最近で設計レビューに参加するようになって、自分がDesign Docを作成するのはもちろん、他のメンバーのDesign Docを見て考えをインプットすることでもめちゃめちゃ設計スキルをつけられるな、と思うようになりました。

そんな中、自分のチームではDesign Docを書いて1回だけレビュー会を開く、という運用が続いていました。でもそれでは、設計を担当していないメンバーに膨大な内容が頭に入らず、レビューの時間も足りなかったりして、上手くいかない状況が続いていました。

この記事では、そんな状況の中で私が個人的に試してきた設計レビューの進め方と、その中で見えてきた課題や工夫についてまとめてみます。

チームの設計レビュー運用:Before

  • 各開発案件ごとにDesign Docを書く(1人 or 項目ごとに分担)
  • ドキュメントが完成したら1回だけレビュー会
  • その後すぐに実装フェーズへ

課題感:

  • ドキュメントの粒度や書き手の視点がバラバラで、整合性がとれない
  • レビューが1回きりなので、指摘が入っても修正の余地が少ない
  • 結果として、レビューが形骸化し、実装に問題が持ち越されることがあった

試してみた改善策

  • 少しずつ書いて、複数回レビューする
    • Design Docをドラフト段階から共有し、早めにWIPレビューを依頼
    • 1回で全て終わらせるのではなく、複数回レビュー
  • アーキテクチャ検討Docを先に作る
    • 特にステークホルダーが多い案件では、いきなり詳細設計に入るのではなく、技術方針や構造の選択肢・トレードオフをまとめたDocを先に用意
    • ADR(Architecture Decision Record)ほど細かくはせず、1つのDocに集約して議論の土台とした
  • アーキテクチャ検討Docは事前コメントを前提に回す
    • 会議の尺を圧縮するため、アーキテクチャDocは事前に共有+コメントをもらう前提で運用…が、事前にコメントのなかった会話で尺を取ったりもした
      → まだまだ運用改善の余地あり

実践してみて分かったこと

  • 「設計レビュー=1回で終わらせる」は本当に無理がある
  • 少しずつ設計を出して議論することで、チーム全体の視座が上がった感覚がある
  • 一方で、ステークホルダーが多いレビューでは「どう巻き込むか」「どう事前に読んでもらうか」が本当に難しい

今後やってみたいこと

  • 設計レビュー観点のリスト化
    • 観点が共有されているとレビューしやすい
  • レビュー会のファシリテーターを明確にする
    • 会議の収束性が上がりそう
  • 設計の粒度を揃えるテンプレート運用
    • 誰が書いても大きくブレないように
  • (若干設計とはズレるが)JIRAチケットを切る前に実装計画 Doc のようなものを作成してみる
    • これまではDesign Docの項目ベースでJIRAチケットを切っていた
      • しかし設計として合意を取りたいポイントと、メンバーに共有したい実装の内容や見積もりの根拠となるポイントは大きく異なる
      • わかりやすいトラブルとして見積もりがガバガバになる・・・
    • なので設計が固まった後、具体的なタスク分解や担当割をレビューしてからチケット化したい
      • 実装フェーズに入る前に、全体像と段取りが見える状態へ

おわりに

自分の試みもまだまだ発展途上ですが、設計品質を高めるには「レビューを回す仕組みづくり」こそが肝心だと感じています。 似たような状況の方の参考になれば嬉しいですし、「うちはこうしてるよ!」という話があれば、ぜひ教えてください。

2回目の産休に入って1週間ちょっと経った

前回のブログから1年近く経ってしまった。
転職してから忙しすぎて、目の前のことに追われ、内省する時間すら取れていなかった。

あれから2人目の妊活を始めて、予定より少し時間かかったけどなんとか産休までこぎつけた。

フルタイム勤務をしながらの 2 人目の妊娠というのは、それはそれは壮絶だった。
業務時間は仕事をする必要があるし、業務が終われば家事育児に追われるので、妊娠などが起因で体調が悪くても一切休む時間が取れないのである。
おまけに 30代半ばになってくると仕事でもそれなりにリードするような動きを求められるので、属人性がないように振る舞うこともままならないどころか、むしろ属人性がないと評価されづらいとかもあって妊娠前からちょっと大変だった(それもあって仕事が軌道に乗るまでは、とブログはお休みしていた)。
産休に入る頃にはほとんど動けなくなるのが分かっていたので、始業前や昼休みに赤ちゃんを迎えるための家の整理や買い出しなんかもやったりしていて、それもまた大変だった。

産休に入ってからは平日は多少余裕ができたが、週末はやっぱり毎回壮絶。
これまでは 1 人の幼児を 2 人でみていたのが、私が体調不良などで休めば半分のリソースになってしまうので、やはり夫の気力体力が1日持たない感じ。今では週末が来ることが憂鬱になってしまった。
今でもこうなのに出産後はどうなってしまうんだろうと、親に頼れない状況で必死で家事代行や病児保育など他のリソースを調べているけど、フルリモートの夫にはなかなか受け入れられにくいみたいで、不安も多い。2人目・・・やっぱり厳しかったかな・・・なんてマタニティブルーになることもよくある。

なんかネガティブな話が多いので。。
平日昼間や、週末に家族が寝静まったあとは、主にこんなことをして過ごしている。

  • ソフトウェア設計まわりの学び直し
    • 現職でいくつかプロジェクトをやってみて、まだまだ能力不足だと思ったため
  • 仕事で使えそうな英語をふんわり学び直し
    • 現職の同じ組織内に英語のチームがあるため
  • アルゴリズムの勉強
    • 意外と業務でも使うことがあるため
    • ちょびっとコード書くのに環境構築とか不要でちょうどいい

どれも理由は別にあるが、将来的にもうちょっと稼ぎたいなと思った時に全部必要そうだなと感じたのも大きい。
産休前は忙しすぎて読書すらままならなかったので良い気分転換になっているし、取り組んだら習慣アプリに記録するようにして、ログを見返すのも楽しい。
産休前までフルフル働いていた&休みなく動いていたせいか、前回の妊娠よりも頭がシャキッとしている気がする。

また、真面目なことばかりでもなく、タイプロを観たり、年齢相当の良いコスメを調べたりもしている。
産前産後はメンタルがヨワヨワになるので、悲しい時や辛い時は良いスキンケアで自分を労るようにしたら、ちょっと前向きになれる気がする。

あとは、産休前に頑張って家をきれいにしたので、動けない代わりにお客さんをよく呼ぶ。
1人目妊娠中はコロナ禍の真っ最中で誰にも会えず、夫以外に大きいお腹を見せることなく出産したので、今回はいろんな人と会えて結構うれしい。
最近はそんな感じで過ごしている。

2023 年末

子育て

息子が3歳になり、会話とか自分のことがだいぶできるようになって、育児のフェーズが大きく変わった。会話の中に思いやりやジョークを織り交ぜてきたりして、人間らしくなったなと感じる。その分「イヤ!」という主張に対してきちんと説得の必要性が出てきたし、もう抱っこで無理矢理どうにかできるサイズ感でも無くなってきたので、そういう苦労は出てきた。

春から思いつきでサッカーを習わせ始めたけど、最近はコーチの指示もちゃんと聞けるようになり、パパとサッカー遊びするようになってからはそれなりに上達もしている。サッカーでは子ども同士の交流を通して親たちも情報交換できたりして、自分にとっても良い時間になっている。そろそろプールもやらせたいな。

あと、2人目を考えているけど予定は未定。

仕事

3月からちょっと大きめの会社に転職をして、ようやく1人前になったところ。7年くらい前に一度落とされてしまった会社に、念願叶ってようやくジョインできた。

大きい会社なので仕事関連のことを許可なくアウトプットはできなくて、なかなか周囲に様子を伝えることは難しいけど、昔からの友人知人が何人か入社してきて思わぬ再会があったり、7年前からこの会社のエンジニアみたいになりたいと分野問わず何でもチャレンジして種をまいてきた自分の実力をまさに今、総合格闘技的に試されている感じがして、仕事をしているときはとても楽しい。本当はもっと若くて無限に時間があるタイミングだったらなあ、と保育園のお迎えに行きながら思う日々。

これまで自分は技術の人間だと思われることは基本的になく、お金が欲しくて惰性でコードを書いていると思っていたけど、いざ開発合宿で家庭から離れてみると(周囲は半分以上寝ているのに)深夜3時までコードを書いていて、ああなんだかんだ好きなんだな、と思えて安心した。理由は分からないけど、だいたい皆が技術レベルに関係なく同じように接する文化があるのも助けになっている。人が多すぎて覚えられないからか…?

こうして日々の仕事をしたり周囲のエンジニアと接する中で、エンジニアとしての目線がグッと引き上がったなと思っていて、今後のキャリアどうする?みたいなことを考えるのも楽しみの一つだったりする。LeetCode は細々と続けているし、社外で新しいコミュニティにも参加し始めたり、英語の学び直しも始めた。

楽器

転職して仕事の時間が融通きくようになったり、子どもも成長してきたので時間が捻出できてきて、久しぶりにちゃんと楽器を吹き、練習の後にお酒を飲んだりもした。楽器を吹いた後のお酒やご飯って、なんであんなに美味しいんだろう。

仕事と同じように、自分は正直あまり楽器が上手くないし、声かけられるまま惰性でやっていると思っていたけど、いざ時間が思い通りにならなくなってみると、どんなに貴重な時間だったかというのを実感した。もっと上手くなりたいとこんなに強く思ったのは10年振りだった。また、練習前後の時間で子育ての大先輩と話ができたのも心強かった。他にも感じたことはたくさんあるけど、あまりベラベラ喋っても野暮なのでこれくらいにしておく。

年末にエキストラ参加したおさらい会を聞いたら触発されたので、なんか1曲ひとりでやりきれるようになりたい。仕事の開発もそうだけど、1人でやりきると上達する気がした。初心に戻ってモーツァルトをちゃんとさらいたいので、いよいよプラスチックのA管を卒業の機運かも。

  • ベーレンライター社

買ったもの

Dell 31.5インチ 曲面ディスプレイ

曲面は使ったことなかったけど、会社にあったやつが良かったので同じものを買った。ディスプレイが複数あるとオンラインMTGで気が散ってしまうことが分かったので、大きいのをひとつ置いておく方が自分には合っていそう。

REALFORCE

キーボードを新調した。特にこだわりはないけど、もうキャリアも長いしプロっぽいモノにしようというモチベーションで、HHKBと割れてるやつは使いこなせない気がした、というだけ。笑

ポップアップテント

公園用に買った。実は同じサイズ感のテントを買っていたんだけど、ポップアップではなくポール組み立てタイプで、自分で出せない・しまえないのがネックになっていたので買い直した。海や大きめの公園で活躍している。

  • PYKES PEAK

アイシャドウ

毎日時間がないので、アイシャドウは発色と程よいラメ感の両方あるものが好きなんだけど、最近の流行りなのかマットなやつが多かったり、安いコスメだと雑なラメ感だったり発色しなかったりして迷子になっていた。結局、デイリー使いはキャンメイクのジューシーピュアアイズのチャイティーローズ(ラメ枠は控えめに使う)で、ちょっと気合い入れたい日はルナソルマホガニーに落ち着いてる。でも髪色をガラッと変えると合う色も変わる(黒染めしたら合わなくなるとか…涙)ので、やはりアイシャドウは無限に沼だな、と思う。

まとめ

今年は楽しいことがたくさんあった。そのぶんエネルギー切れ感も否めなかったので、いわゆるサステナビリティというやつも考えていく必要があるな、と反省。

今年お世話になった皆様、ありがとうございました。来年もよろしくお願いいたします。




以上の内容はhttps://c5meru.hatenablog.jp/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14