Slide 1

Slide 1 text

#microcms_meetup 大西 智也 microCMSの エンジニア組織と文化

Slide 2

Slide 2 text

目次 2 ● 自己紹介 ● 技術スタック ● チームと役割 ● 雰囲気や文化、ワークスタイル ● 開発方針 ● 生産性をアグレッシブに上げる取り組み ● 今後の展望 #microcms_meetup

Slide 3

Slide 3 text

自己紹介 3 #microcms_meetup 大西 智也 / Tomoya Onishi @Tomoya_Onishi エンジニアリングマネージャー/個人アプリ開発者 iOS(Swift), React(TS), WebAPI(Golang) Appleプラットフォームが得意なエンジニア TomoyaOnishi

Slide 4

Slide 4 text

自己紹介 4 #microcms_meetup 1位 未来志向 2位 共感性 3位 親密性 4位 分析志向 5位 回復志向 … 34位 競争性 ストレングスファインダー 性格など ● 好きな食べ物:焼きそば ● 嫌いな食べ物:トマト ● 走れば間に合う電車には走らないタイプ

Slide 5

Slide 5 text

自己紹介(経歴) 5 #microcms_meetup ● 2013年 ヤフーに新卒入社 ● 社内スタートアップを経験 ● XP開発を経験 ● CTO室にて技術の追求 ● 2022年5月 microCMSに入社

Slide 6

Slide 6 text

自己紹介(経歴) 6 #microcms_meetup ● 2013年 ヤフーに新卒入社 ● 社内スタートアップを経験 ● XP開発を経験 ● CTO室にて技術の追求 ● 2022年5月 microCMSに入社 ● SNSアプリ ● ヤフーメールiOSアプリ ● ライブコマース スモールチームでの開発経験 企画、デザインも一緒に考える リードエンジニアとして様々なチームと連携

Slide 7

Slide 7 text

自己紹介(経歴) 7 #microcms_meetup ● 2013年 ヤフーに新卒入社 ● 社内スタートアップを経験 ● XP開発を経験 ● CTO室にて技術の追求 ● 2022年5月 microCMSに入社 ● ヤフオク、PayPayフリマの開発 ● アジャイル開発の一種 ○ エクストリームプログラミング=XP ○ 企画から開発までのプラクティスの集まり ● ペアプロとテスト駆動、CI/CDなどの自動化 ● テストの重要性と自動化、省略で生産性を向上 ● コードレビュー省略による生産性の高さを実感 一部の考え方を取り込んでいるので後ほど紹介

Slide 8

Slide 8 text

自己紹介(経歴) 8 ● 2013年 ヤフーに新卒入社 ● 社内スタートアップを経験 ● XP開発を経験 ● CTO室にて技術の追求 ● 2022年5月 microCMSに入社 ● Web、アプリの技術トレンドのキャッチアップ ● 機械学習の実証実験 ● その他 ○ 企業内大学にて、リーダーシップや 組織の知見を学ぶ

Slide 9

Slide 9 text

自己紹介(経歴) 9 #microcms_meetup ● 2013年 ヤフーに新卒入社 ● 社内スタートアップを経験 ● XP開発を経験 ● CTO室にて技術の追求 ● 2022年5月 microCMSに入社 ● 開発本部の大まかな方針、ロードマップ ● 生産性向上の仕組み作り

Slide 10

Slide 10 text

目次 10 ● 自己紹介 ● 技術スタック ● チームと役割 ● 雰囲気や文化、ワークスタイル ● 開発方針 ● 生産性をアグレッシブに上げる取り組み ● 今後の展望 #microcms_meetup

Slide 11

Slide 11 text

技術スタック 11 ● インフラ ○ AWS ■ DynamoDB ■ Lambda ○ Amplify → Terraform #microcms_meetup ● Web API ○ Node.js → Golang ● Web フロントエンド ○ React

Slide 12

Slide 12 text

チームと役割 12 ● プロダクト開発チーム ● バックエンド開発チーム ● Go移植チーム #microcms_meetup

Slide 13

Slide 13 text

プロダクト開発チーム 13 #microcms_meetup ● 新機能の開発に特化したチーム ○ ストリームアラインドチーム ● 3.5人 ● PdM、デザイナーと協業 ● WebフロントだけでなくAPIも開発 ● 複雑なものや中規模以上のものはペアで開発 ○ リッチエディターv2は2人 ○ 複数画像フィールドは1人 ● 定例は週1のみ ○ 非同期ワーク ○ 自律した組織

Slide 14

Slide 14 text

バックエンド開発チーム 14 ● インフラやWebAPIなど バックエンド開発に特化したチーム ○ プラットフォームチーム ● 1.5人... #microcms_meetup ● プロダクト開発チームの範囲外のほぼ全て ○ 開発環境の運用 ○ 新機能のインフラ部分の開発 ○ CI/CD ○ Terraform移行 ● 他のチームを技術的にサポート ● 定例などはなく、自律してタスクを進める

Slide 15

Slide 15 text

Go移植チーム 15 #microcms_meetup ● Node.jsで書かれたAPIをGolangに書き換え ● 副業で4人 ● 設計や大まかな構造はバックエンド開発チームで整えた ● 定例などはなく、非同期コミュニケーション中心 ● 半年〜1年単位の抜本的な技術改善

Slide 16

Slide 16 text

目次 16 ● 自己紹介 ● 技術スタック ● チームと役割 ● 雰囲気や文化、ワークスタイル ● 開発方針 ● 生産性をアグレッシブに上げる取り組み ● 今後の展望 #microcms_meetup

Slide 17

Slide 17 text

ワークスタイル 17 ● 全社的に非同期コミュニケーションに比重を置いている ● タスク管理はClickUp ○ 誰が何をいつまでにやるかがわかる ○ 自分のタスクを自分で管理する意識 ● 承認のようなものはない ○ チームで合意が取れれば問題ない ● microマネジメントしない(できない😅) #microcms_meetup 自律した働き方が求められる

Slide 18

Slide 18 text

#microcms_meetup 雰囲気や文化的なところ ● バックエンド、フロントエンドのテックリード1名ずつ ○ 技術的な相談はいつでも気軽にできる ○ そういう雰囲気が醸成されている ● 勉強会や輪読会も活発 ● もくもく会 ● 買ってよかったものFM、AI FM 18

Slide 19

Slide 19 text

#microcms_meetup チーム間を超えたコミュニケーション 19 ● オープンかつテキストコミュニケーションに比重を置いているので問題を他人が見つけやすい ● 勝手にレビューされている状態に近い ● レビューや承認のようなものは最低限でいける

Slide 20

Slide 20 text

目次 20 ● 自己紹介 ● 技術スタック ● チームと役割 ● 雰囲気や文化、ワークスタイル ● 開発方針 ● 生産性をアグレッシブに上げる取り組み ● 今後の展望 #microcms_meetup

Slide 21

Slide 21 text

開発方針 21 ● 面倒な部分を省略or自動化して、楽しい部分を増やす ○ XP開発では、これを徹底していてモチベーションも生産性も高く、 心理的安全性も高かった ○ プログラミングは楽しいが・・実際はそれだけではない ■ リリース作業、動作確認(N回)、コードレビュー、アラート対応、事故対応 ■ 特にアラートや事故対応は精神エネルギーを使うので消耗する ■ 大きめの機能なら月曜日リリースでその前の土日から気がかりなんてことも... #microcms_meetup リリースに関するハードルは0にしたい

Slide 22

Slide 22 text

開発方針 22 ● 当然、単純にやらないにはできないので2つの取り組みで解決する #microcms_meetup ○ 自信を持ってリリースできるようになる (=心理的安全性の向上) ○ 必然的にシステムの安定性が向上する ○ 不具合やアラートが減り、事故対応が減 る ○ リリースの自動化 ○ コードレビューをやめる ○ AI ○ etc… 自動テスト 仕組み →楽しい時間が増える

Slide 23

Slide 23 text

開発方針 23 #microcms_meetup

Slide 24

Slide 24 text

開発方針 24 #microcms_meetup = 生産性の向上

Slide 25

Slide 25 text

目次 25 ● 自己紹介 ● 技術スタック ● チームと役割 ● 雰囲気や文化、ワークスタイル ● 開発方針 ● 生産性をアグレッシブに上げる取り組み ● 今後の展望 #microcms_meetup

Slide 26

Slide 26 text

アグレッシブに生産性を上げる 26 ● 取り組み事例をいくつか紹介 ○ AI ○ 自動テストの拡充とコードレビューの省略 #microcms_meetup

Slide 27

Slide 27 text

ChatGPT 27 ● ChatGPT ○ フル活用する ○ コードの自動生成 ○ フォーマット ○ わからないことを聞く ○ 文章を考えてもらう #microcms_meetup

Slide 28

Slide 28 text

ChatGPT 28 ● PRの概要を自動生成(Copilot for PRsリリース待ってます)

Slide 29

Slide 29 text

ChatGPT 29 ● チームでプロンプトを緩く共有しベースラインを上げる

Slide 30

Slide 30 text

GitHub Copilot 30 ● GitHub Copilot ○ コーディングは当然 ○ フォーマットや文章を 考える時にも使う ○ プライベートでも活用

Slide 31

Slide 31 text

GitHub Copilot 31 #microcms_meetup

Slide 32

Slide 32 text

GitHub Copilot Labs 32 ● Language Translation ○ Node.js→Golangへの書き換え ○ 性能が微妙だからと言って 思考停止しない #microcms_meetup

Slide 33

Slide 33 text

コードレビューをやめる 33 ● 発端はGo移植のコードレビューが溜まってしまっていたこと ● バックエンドの社員1人:業務委託4人 ○ 一般的には社員がレビューしてリリース ○ 明らかに無理がある ○ 通常の思考だと開発チーム全員で分担やレビューの時間を決める ■ ダメではないが、違和感 #microcms_meetup

Slide 34

Slide 34 text

コードレビューをやめる 34 ● 実際指摘することって何かあるか? ● Go移植では設計や大まかなコードの構造は決まっているので大きくずれることはない ● レビューで動作確認まではしない ● レビューなしで生産性が向上することは体験していた ● 条件付きでレビュー不要とした ○ ユニットテストのカバレッジクリア ○ E2Eテスト #microcms_meetup

Slide 35

Slide 35 text

コードレビューをやめる 35 #microcms_meetup

Slide 36

Slide 36 text

計測することも重要 36 ● 本質的なことではないが、効果があったのか なかったのか、説明できることも大切 ● ChatGPTのおかげで低コストでできるように なった

Slide 37

Slide 37 text

目次 37 ● 自己紹介 ● 技術スタック ● チームと役割 ● 雰囲気や文化、ワークスタイル ● 開発方針 ● 生産性をアグレッシブに上げる取り組み ● 今後の展望 #microcms_meetup

Slide 38

Slide 38 text

今後の展望や考え 38 ● AIによって破壊的な生産性向上がもたらされた ○ ちまちま生産性を上げても仕方ない気持ちになったのでアグレッシブに考えている ● エンジニアリングマネージャーの仕事は多々あるが、引き続き生産性の向上を軸に ● 世間と同じことをやっていては同じ成長率 ○ 他の会社の方が優れたエンジニアがいると考える方が妥当 ● LLMの登場でプログラミングの部分では差をつけづらくなる ○ ワークフロー全体の効率化やこの組織ならいいものを作れるという気持ちの醸成などが より重要になる ● 組織が大きくなるとやりづらいことは経験しているので今のうちにトライ&エラー

Slide 39

Slide 39 text

まとめ 39 #microcms_meetup ● 非同期ワークが浸透しており、タスク管理など自律したワークスタイル ● 新機能を開発するチームとそれを支えるチームで構成 ○ ストリームアラインドチーム、プラットフォームチーム ● アグレッシブな生産性向上に挑戦している

Slide 40

Slide 40 text

採用情報 40 ● バックエンドエンジニア、プロダクトエンジニアを大募集! ● AWS、Terraform、Golang、インフラ、Web API、Webフロントが得意な人 ● タスク管理など自律できる人 ● フレックスタイム ● アディショナル休暇制度あり(法定有給に+10日) ● 経営陣も含めてプライベートも大事にするワークスタイル https://jobs.microcms.co.jp/

Slide 41

Slide 41 text

Thanks :) 41 #microcms_meetup https://discord.gg/K3DPqw4EJ2 @micro_cms