今年もええ感じに振り返っていくよ!
新機能開発プロジェクトのリードエンジニア
新機能開発 のプロジェクトリードを今年の8月まで担当した。 プロジェクト自体の担当期間は2年間、リードとしては昨年も合わせて1年間担当したことになる。 初回リリースは1月で、昨年は新基盤の立ち上げフェーズ、今年はエンハンスするフェーズだった。
振り返ると、基盤改善と銘打つだけあり抽象度が高く要件定義に難航したプロジェクトだった。 昨年は要件定義から実装まで結構タスクをこなしていたものの、実際のリリースは今年ということで昨年の年末年始はわりと精神的にやられていた。 とはいえ、無事ランディングできたことはかなり自信にもなったし、社内外での評価も高く、プロジェクトメンバー的にもやったことが報われたのは本当に良かった。 エンハンスもスケジュール的に大きな遅延なく、むしろ初回リリースよりもかなり複雑な機能追加の仕様に向き合ったことを考えると 俺もメンバーも力を出し切った良いプロジェクトだったように思う。
全体的なスループットなどを考えて、自分はほぼ実装をやらず、各種調整・要件詳細決め・タスク割当て・設計・QA調整などに全振りした。 プロジェクトとしては筋の良いアサインを行ったと思うのだが、自身が成果を出すのではなくチーム全体が成果を出せるような仕組みづくりや小石取りが主業務になるので、 自身の成果を感じにくく、モチベーションとして維持しづらいというのは正直あったかもしれない。 このあたりはアンラーニングしないといけない部分だとは思うもののまだ振り切れていない感じ。 とはいえ、プロジェクトリードであっても課題解決の連続で、プロジェクトリードでしか学べないたくさんのことを経験できた。
特に様々なメンバーとコミュニケーションを取ることによる気づきがたくさんあった。 例えば、その人の得意領域と業務がマッチしたときの成果の質とスピードや、自分には到底出来ない仕事の成果を目の当たりにし、 人の得意不得意を活かすコミュニケーションは大事だなと思ったし、専門性の高いメンバーと一緒に仕事ができる楽しみも一層感じた。 一方で、コミュニケーションの難しさも痛感しており、適切な言語化みたいなところももっと勉強しないといけないなと思った。
ちなみにこの新機能のプロジェクトリード自体は9月初旬で引き継ぎを行い、9月中旬からは後述のサーバーサイドの改善を行っていた。 のだが、実は来年また違うサービスのプロジェクトリードになることが決まっていたりする。 今回の役割はどちらかというとテックリードに近く、調整業というよりは実装で結果を出すことが求められる感じなのでめちゃくちゃ楽しみ。
改善業
入社当初から技術的な課題でずっと気になっているところがあり、プロジェクトの合間を縫ってちょいちょい改善していたのだが、 重めの課題にあまり着手できていなかったのと、プロジェクトが一段落するちょうど良い節目だったので9月中旬から上記プロジェクトを外れて改善業を行った。
具体的には↓のタスクをだいたい数ヶ月〜半年くらいの期間で行った
- EOLなPHPやフレームワーク・ライブラリをアップグレード
- 一部テーブルをSQLite3からMySQLに移行するプロジェクトの引き継ぎ&完遂
- 主要アプリケーションでテストカバレッジを75%程度まで引き上げ(引き上げ前は50〜60%くらい)
- 不要コード削除(有識者に聞いたりログを見たりしてコードが半分くらいになった)
- インデックスを貼ってない部分やTwigのキャッシュ設定やAPIレスポンスの調整を行って高速化
- 共通化・エラーハンドリングの強化・autoload化・単体テストができるようにするリファクタリング
- symfony/pantherを使ったE2Eテストの導入
- lintの導入・適用やPHPStanのレベル上げ
- CircleCIのイメージを新しいものにしたり、カバレッジ測定をphpdbgに切り替えたり
改善業としてはだいたい最低限やりきったなという感じで、私が入社した3年前と比べると本当にだいぶ良くなったなと思っていたりする…w テストは無かったしlintや静的解析も無いしライブラリやミドルウェアもEOLだし不要コードもたくさんあったし、冗長なコードだらけな状態だったしWARNING, Noticeも出し放題だったのが 今ではほとんど解消しているし、改善方法を社内共有会やSlackやPRで残せているので、少なくとも3年前よりは俺じゃなくてもトライできる環境になっているのではないかと思う。
これ以外だと、今まであまりメンバーが触ったことのないサービスに関する改善も積極的に首をつっこんで改善していった。 結果として他のメンバーもそのサービスを改善できていたりするので、結構良いムーブだったんじゃないかなと思う。
また、プロジェクトリード業で実装に関われないフラストレーション解消のため たびたび話題に出ていた ちょっと重そうな機能追加 の実装にも関われた。 というか「これやりましょうよ、俺実装やるんで」みたいな感じで声がけして一気に要件定義して実装・QA・リリースした案件で、 これもムーブとしては良かったんじゃないかと思う。 本当はこういう感じでメンバードリブン・エンジニアドリブンでどんどん良さそうな機能を立案したりあーでもないこーでもないと 言って議論して進めていくのが良いと思うんだけど、こういう事例をたくさん作ってそういうムーブが生まれやすくするのも俺の責務かなとも思っていたりする。
PHPerKaigi, PHPConferenceの登壇
4月、10月に行われたPHPerKaigi、PHPConferenceのCfPを提出、ありがたいことに採択いただき登壇した。 前述の通り、プロジェクトリード業が主だったので昨年と違ってPHP系の仕事ネタが無く、趣味の内容に振り切った。
DBGpのネタは 結構前に書いたブログ を焼き直しした内容で、 派生してphp-srcを読んで、PHPConferenceにphp-srcネタで登壇するなど yak shaving な登壇ができたのは面白かった。 なんやかんやPHPerKaigiもPHPConferenceも現職入って2回ずつ登壇していてるんだよなぁw
ブログ執筆
会社のテックブログは14本ほど書いた。 昨年に比べるとプロジェクト系やテックブログのノウハウなど結構大きめなトピックで書くこともあり、社内での反響もそれなりにあって発信してよかったなと思った。
- gRPC-Gateway v2へのアップグレードで対応したこと
- json.Unmarshalでmap[string]interface{}型にパースするときの注意点
- SQLite3入門
- YappliにおけるgRPC, Protocol Buffers運用について
- PHPerKaigi 2022 にダイアモンドスポンサーとして協賛しています!
- NewRelicをYappliのサービスに適用してみた
- YappliのGoのテストについて
- マルチテナント・マルチバージョンなコンテンツ管理システムをMySQLで再構築する
- ノーコード開発プラットフォームの課題とアプリ基盤改善プロジェクト
- PHP Conference Japan 2022に参加・登壇してきました!
- ノーコード開発プラットフォームYappliの社内用検索機能をGenerated Columnsを使って刷新しました
- YappliにおけるPHPのテストと現状の課題
- 俺たちはなぜテックブログを書くのか〜ブログの効能と書き方とメンタル的TIPS〜
- symfony/pantherによるJavaScriptを含めた自動テスト
採用
昨年は個人のタスクとして採用の比重が大きめだったのだが、上半期には一段落した。 昨年から今年にかけて採用したメンバーが多方面で大活躍しており、採用の効果を強く実感した一年だったように思う。 自分が採用したメンバーのメンターをやる機会もあり、飲み込みの早さや自分にはない特殊能力を見るたびに採用の大事さを強く感じた。
他には、会社がスポンサーをやっている関係で Go Conference 2022 Spring のお手伝いもした。オフィスアワーなのであんまりやることは無かったんだけど…w
仕事以外
今年はPS4のソフトが充実した。
- 地球防衛軍4.1
- 地球防衛軍5
- 地球防衛軍6
- 龍が如く6
- 龍が如く7
- ジャッジアイズ
- ミュータント タートルズ:シュレッダーの復讐
特に地球防衛軍シリーズ・龍が如く7・キムタクはめちゃくちゃ面白かった。 知り合いにデトロイトビカムヒューマンをおすすめされたので安くなったら買いたい。 ロストジャッジメントは安くなったので買った。まだやってない。
スマホのゲームも充実した。
- ヴァルキリープロファイル
- サガフロンティア
- モンスターファーム
- FF7
全部PS作品じゃねぇか。
あとLinuCの期限が来年切れるのでそろそろ更新試験(上位試験でアクティベート)を受けないといけない。 セキュリティの303をやろうかと思ってて黒本を買ったけどモチベーション的にまだ着手できていない…。
こちらのブログの方は25件ほど書いていた。 php-srcを始めとしたコードリーディング系が主。LiteFSはFUSEを使っていてコードリーディングしてて面白かった。 来年も面白そうなコードがあればガシガシ読んでいきたい。
今年の振り返り&来年に向けて
プロジェクトリード、中〜大規模な改善業務、ブログ執筆・イベント登壇などの社内外の発信と、 短期的〜長期的な攻め・守りをバランスよく高いレベルで出来たのではないかと思う。
プロジェクトリードは何回か心が折れそうになったものの実際に機能がローンチして社内外での期待値も高かったので、 昨年よりは精神的にはなんとかやっていけた。 それなりにちゃんと向き合っていたからこそプロジェクトリードとして得るものもたくさんあったように思う。
ただ、レバレッジや得意不得意、やりたいこと等を考えると、完全に調整に回るというよりは、 手を動かしてエンジニアリング(例えばドキュメンテーション・設計・実装・基盤整備など)をする比率を上げた方が 今の自分には合っているのかもしれない。完全に調整に回るタスクもできなくはないけど得意な人よりMP消費も高くギリギリなんとかやっていっている感じ。
正直なところ、社内外で同じ年代くらいの人がマネージャーや部長やCTOに登用されている状況が増えていて、 このままICみたいなポジションでやっていくのか、もっと別の角度でトライして成長していく道もあるのではないか、 個人技でどこまでレバレッジを効かせれるのかというのは度々考えている。 単に開発タスクを淡々とこなすのも個人的には飽きているし、コンフォートゾーンの内側という自覚もある。
しかしながら、プロダクトが本当に多機能で良い意味で複雑で、プロダクトに対してはまだ飽きていない。 本当に便利であらゆる会社が使うべきプロダクトだと思っているので、そういうパッションみたいなのはまだまだある。 売上に貢献できてレバレッジが効きそうなら何でもやりまっせという気持ち。
何はともあれ、仕事に真剣に向き合う中でコンフォートゾーンの外側に抜け出すような仕事を自ら見つける力というのは今後も絶対に必要だと思うし、 そうすることでポジション云々に関係なく成長ができると信じたいし、そうして今までやってきたので来年もいい感じにやっていきたい。 常人の10倍くらいの成果が出せるように筋力と知恵と経験を磨いていきたいっすなー。
ということで今年も大変お世話になりました!
来年もよろしくお願いいたしまっす!!