突撃となりのプロジェクト / EC Tech Talk
by
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
突撃となりのプロジェクト hrysd / GMO PEPABO inc. 2022.05.26 EC Tech Talk -カラーミーショップとSTORESを支えるチームづくりと開発の裏側- 1
Slide 2
Slide 2 text
自己紹介 2 - @hrysd - EC 事業部 DX チーム所属 - 事業部を横断したアプリケーションの改善等に従事 - 最近は LeetCode の問題を一日一問解くのを習慣にしてます よしだ ひろし
Slide 3
Slide 3 text
3 あらすじ、今日話すこと
Slide 4
Slide 4 text
あらすじ 、今日話すこと 4 別チームのプロジェクトの助っ人 - 優先度の関係で開発が停滞していたプロジェクトが再開 - エンジニアの助っ人として参画 - プロジェクトを進めていくために取り組んだ、いることを紹介
Slide 5
Slide 5 text
5 プロジェクトを進める
Slide 6
Slide 6 text
プロジェクトを進めていく 6 プロジェクトが進んでいるとは? 指標をみると進んでいると判断できる ? - イテレーションで消化できるポイントが N pt 増えた - ベロシティが上がった - 等々
Slide 7
Slide 7 text
プロジェクトを進めていく 7 この指標が示す状態ってつまり - 持続的にユーザに対し価値を提供できる - チーム、プロジェクトとして予測可能な計画をたてることができる
Slide 8
Slide 8 text
8 プロジェクトを進めていく “アジャイル宣言の背後にある原則 ” https://agilemanifesto.org/iso/ja/principles.html “アジャイル・プロセスは持続可能な開発を促進します。 一定のペースを継続的に維持できるようにしなければなりません。”
Slide 9
Slide 9 text
プロジェクトを進めていく 9 新しいメンバーという立場から考えてみる 今回のようなチームのメンバーの増減といった外的な要因に対してもペースを維持していけるよ うな状態を目指すと良いのでは 💡
Slide 10
Slide 10 text
10 新しいメンバーを受け入れる
Slide 11
Slide 11 text
プロジェクトを進めていく 11 新しいメンバーが仕事に取り組んでいけるように - ドキュメント・仕様をまとめる - 何が決まっていて、何を決める必要があるのか - ゴールとの差分がわかる - ストーリーにやることを実現・解決したいことを明記 - 〜〜を修正、だけではなく何をここでしたいのか - ハイコンテクストな説明をやめる - ストーリーの整理 - 次に何に、どの順で取り組めばいいのか
Slide 12
Slide 12 text
新しいメンバーを受け入れる 12 新しいメンバーが来てくれた - 新しいメンバーが来てくれた! - 受け入れ - このプロジェクトで達成したいことはこういうことで - 資料はここにまとまっていて - タスクの上から取り組んでください - わからないことは聞いてください
Slide 13
Slide 13 text
新しいメンバーを受け入れる 13 新しいメンバーが来てくれた - 超人ならできそう! - だが、超人は空想の話
Slide 14
Slide 14 text
新しいメンバーを受け入れる 14 メンバーごとの違い - 技術、ドメインへの理解具合は人それぞれ - 全員が全てを理解できているわけではない - 新規、既存のメンバー問わず - 考えてもわからない事もある - 私たち特有の事情
Slide 15
Slide 15 text
新しいメンバーを受け入れる 15 新しいメンバーが来てくれた - 質問いつでも受けてます - する側 - こんなに、こんなこと質問して平気かな? - うける側 - 質問来ないから問題なく取り組めている(?) - 今、XXXX をやっているので後で答えます - “フロー状態” の乱れ - https://ja.wikisource.org/wiki/プログラマが知るべき 97のこと/ペアプログラミングと「フロー」
Slide 16
Slide 16 text
新しいメンバーを受け入れる 16 新しいメンバーが来てくれた - ペアプログラミング - エクストリームプログラミングのプラクティス http://objectclub.jp/community/XP-jp/xp_relate/whatisxp-j#pair - 狙い - 仕様、暗黙知の共有 - ペア設計、レビューにおける手戻りの軽減 - 差し込みを減らし、フローを安定させる
Slide 17
Slide 17 text
新しいメンバーを受け入れる 17 どうやっているか - 詳細を考えリストアップ - 項目ごとに休憩、ドライバー、ナビゲーターの交換 - 対面、リモート問わず実施 - Visual Studio Code の Live Share - お互いの環境に左右されない - 一日に 3 時間程度 - 作業のログを取る - 話ながら手を動かす都合、ログを残しづらい - 雑談・意思決定のふりかえりに - 土地を耕す - 種を植える - 水やり - 収穫
Slide 18
Slide 18 text
18 プロジェクトのリリース
Slide 19
Slide 19 text
プロジェクトのリリース 19 大きめな機能の開発 - 機能開発において避けては通れないのはリリース - チームではトランクベースで開発を行なっている - 開発したものは都度本番環境にリリースしている - 公開範囲の制限にはフィーチャートグルを利用 - トピックブランチ、まとめブランチは作らない - 他の開発との衝突を避ける - レビュー負荷の軽減 - リリースの範囲を狭め、影響範囲を狭く
Slide 20
Slide 20 text
プロジェクトのリリース 20 フィーチャートグルの今 - 設定ファイル、コード上での分岐 - 動作環境、対象のユーザ等にのみ公開できるような仕組み - 統一的な方針はなく、プロジェクトにより異なる - 設定自体が煩雑になりがち - コード上からしか読み取る事ができない
Slide 21
Slide 21 text
プロジェクトのリリース 21 煩雑なフィーチャートグル - どの環境、どのユーザで動作確認できるかコード上からしか読み取れない - 例: 本番環境以外で確認できる if env != 'production' feature end
Slide 22
Slide 22 text
プロジェクトのリリース 22 煩雑なフィーチャートグル - どの環境、どのユーザで動作確認できるかコード上からしか読み取れない - 例: 本番環境以外で確認できる - 設定ファイルを環境ごとに用意 if Config.feature_is_enabled feature end production: feature_is_enabled: false development: feature_is_enabled: true
Slide 23
Slide 23 text
プロジェクトのリリース 23 煩雑なフィーチャートグル - どの環境、どのユーザで動作確認できるかパッとわからない - 例: 本番環境以外で特定のユーザは確認できる if Feature.user_ids.include?(current_user_id) && env != 'production' feature end
Slide 24
Slide 24 text
プロジェクトのリリース 24 他の問題点 - 動作環境の変更・設定の変更に、デプロイが必要になる - リリース作業 - 問題発生時の切り戻し作業 - も同様 - チーム外のメンバー、エンジニア以外のメンバーの対応が難しい - コードベースの編集が必要であるため、誰もが対応できるとは言い難い - QA チームといった別チームが自ら動作環境を用意するということも難しい - どこの環境で、どのユーザを使ってください
Slide 25
Slide 25 text
プロジェクトのリリース 25 解決するために - Unleash - フィーチャトグルを管理するサービス - https://github.com/Unleash/unleash - https://www.getunleash.io - 特定のユーザ、段階的なリリースと柔軟な設定が可能 - 各種言語向けの SDK (Ruby, JavaScript, Go, PHP…)
Slide 26
Slide 26 text
プロジェクトのリリース 26 解決するために - プロジェクトに導入中 - Web UI があるため、アクセスできるメンバー全員がフィーチャトグルを設定できる - 設定の仕方はドキュメントを用意しエンジニア以外もできるように - フィーチャートグルの設定次第では本番環境でも動作確認できる - Web UI を操作するだけのため、デプロイを伴わない - トランクベースの開発と相性が良い - 誰でもリリース・切り戻しが可能に
Slide 27
Slide 27 text
プロジェクトのリリース 27 悩んでいること - 操作が気軽 - 人間が操作する場合に切り離せない操作ミス - 結果として全公開といったことは避けたい - 誰もが安心して操作できるような方法はないかを検討中
Slide 28
Slide 28 text
28 まとめ
Slide 29
Slide 29 text
まとめ 29 まとめ 別チームのプロジェクトに助っ人として参画しそこで考えたこと、取り組んだ事を紹介しました。健 全な開発を続けていくために今後とも取り組んでいきます。 また、一緒に取り組んでくれる方も募集中です! !!11