Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
with_エンジニア向けピッチ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
enito
PRO
July 28, 2023
9.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
with_エンジニア向けピッチ
enito
PRO
July 28, 2023
More Decks by enito
See All by enito
【Omiai】デジタルマーケティングマネージャー
enito
PRO
0
25
with QAエンジニア紹介
enito
PRO
0
53
with iOSエンジニア紹介
enito
PRO
0
87
enitoVPoT紹介
enito
PRO
0
41
【enito】MLエンジニア紹介資料
enito
PRO
0
23
withプランナー_採用ピッチ_202606pdf
enito
PRO
0
270
withエンジニア_Real Voices
enito
PRO
0
250
【Omiai】リアーキ LT_202510
enito
PRO
1
1.9k
目的・課題あってのリアーキテクチャ/Omiai-Findy-LT
enito
PRO
1
120
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
930
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Automating Front-end Workflow
addyosmani
1370
210k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
540
Scaling GitHub
holman
464
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Documentation Writing (for coders)
carmenintech
77
5.4k
BBQ
matthewcrist
89
10k
Transcript
For engineer
21 開発メンバー紹介 2 1 デザイナー カスタマーケア プランナー データアナリスト QA サーバー
エンジニア iOS エンジニア Android エンジニア
21 withサーバーエンジニアの業務内容 モバイルアプリ向けWeb APIの開発 ブラウザ向けWebサイトの開発 データベース設計・チューニング AWS/GCPを使ったインフラ設計 インフラのセキュリティ設計と構築
サーバーリソースの監視・改善 データアナリスト向けデータ抽出・転送処理の実装 3 2
21 サービスの技術的特徴 大規模データ セキュリティ ・本人確認書類(免許証等)等、非常に機密性の高い個人情報をお預かりしています。 ・業界団体(IMS)や、上場に向けての監査観点でも高い基準を求められています。 4 累計ユーザー数 800万人以上 サーバー稼働数
100台以上 日次アクセスログ数 5000万以上 DBレコード数 数千万〜億単位 大 最 3
21 開発で大事にしていること 強みやモチベーションを活かせる コーチングやワークショップ・GCP学習プログラムの導入・漫画 で分かるwithなど、各自の強み・モチベーションを活かして チームに貢献しています。 ほとんどが業務時間内に行われているのも特徴です。 安定したシステム開発
相 互 コードレビュー・ 社 内 の 品 質 保 証 チームによる 検 証 ・CI・CD・オートスケールするサーバーによる、品質重視の開 発を心がけています。 リリースを切り戻すことはほとんどありません。中途入社のエン ジニアには、ベンチャーにも関わらずシステムが安 定していて 安心できると言われることが多いです。 5 4 1
21 開発で大事にしていること 開発への納得感 機能の追加・改修にはPRD(Product Requirements Document)が必須です。どんな課題がなぜ存在し、どう解 決して、どんな結果を得たいのか、エンジニアも理解しながら 進めます。 要求通り開発するだけでなく、どんな体験がユーザーにとって 適切なのか、プランナーやデザイナーと議論しています。
リリース後の結果振り返りまでがセットで、自分たちの開発の 成果がユーザーにどのように使われたかフィードバックが得ら れます。Slackチャンネルは原則パブリックで、担当外の開発 の様子も分かります。 6 4 2
21 ・プランナーが企画の原案を作成します。 ・プランナー間でレビューされるプロセスがあり、ブラッシュアップされたものがエンジニアに共有されます。 7 開発フロー:企画立案・企画レビュー 企画作成 プランナー デザイナー アプリ エンジニア
バックエンド エンジニア QA 作成・相互レビュー 5 1
21 8 開発フロー:アサイン アサイン会 ※職種ごとに開催 ・開発はプロジェクト毎のアサイン制にしています ・企画がレビューを通ったら、職種ごとにアサイン会を開きます。 ・サーバーエンジニアは、全員で新企画の仕様を確認し、実装方法を検討、見積もりを行っています。 ・挙手制で担当を決定します。
プランナー デザイナー アプリ エンジニア バックエンド エンジニア QA アサイン会 5 2
21 9 Dev Team 開発キックオフ ・各職種からアサインされたメンバーでキックオフします。 ・どんな体験がユーザーにとって適切か、または実装コストなど、様々な観点で議論します。 ・この場で動作やUIが大きく変わることもあります。 ・スケジュールも仮決定します。 ・プロジェクトの期間は2〜3日から3〜4ヶ月のものまで様々です。
開発フロー:キックオフ プランナー デザイナー アプリ エンジニア バックエンド エンジニア QA 5 3
21 10 コードレビュー QA ・エンジニアはGitHubを使って相互レビューしています ※ 基本は、担当外のプロジェクトのコードをレビューすることにります ・レビュー対応が完了したら、QAチームに検証を依頼します。 ・QAチーム自身で、テスト項目書を作成し、検証していきます。
開発フロー コードレビュー・QA プランナー デザイナー アプリ エンジニア バックエンド エンジニア QA 5 4 相互レビュー 相互レビュー 相互レビュー
21 11 効果測定 振り返り Dev Team ・リリース後、プランナーとデータアナリストが企画効果を測定します。 ・企画段階で設定したKPIが改善されたか、改善しなかった場合はなぜなのか、考察します。 ・最後に、開発チームで企画効果の振り返りを行い、次の開発に活かしていきます。 開発フロー
リリース・効果測定 プランナー デザイナー アプリ エンジニア バックエンド エンジニア QA 5 5 効果測定 リリース リリース リリース
21 12 大規模プロジェクト ForYou機能の開発(期間:6ヶ月程度) with上の行動データを使って、様々な切り口でおすすめのお相手を紹介するパーソナライズに特化した機能を実装 過去のプロジェクト例 5 6
21 13 過去のプロジェクト例 小規模プロジェクト いいね!タブに経由地を追加(期間:5日程度) お相手がどの画面からいいね!を送信したかわかる機能 を実装 中規模プロジェクト サブ写真にコメント付与(期間:1ヶ月程度) サブ写真にコメントを付けられる機能を実装し、
あわせてプロフィール画面を一部リニューアル 5 7
21 withで活躍できる方 14 仕様づくりから 一緒に考えたい! プランナーやデザイナーと も連携してサービス開発を していきたい!
人との縁を提供するサービ ス開発に関わりたい 自分の開発で どれくらいの顧客が喜んで くれたか気になる! POINT 01 POINT 02 POINT 03 POINT 04 6
21 開発言語 : Ruby 2.7, Ruby on Rails 6.1, HTML
/ CSS (SCSS) データベース : MySQL, Redis, BigQuery DevOps : Terraform, GitHub Actions, CodeBuild, CodeDeploy, 監視 : CloudWatch, NewRelic, Sentry 分析 : Firebase Analytics その他 : Docker, nginx, fluentd, AWS, GCP, Swagger, RubyMine(IDE) ※開発は「Mac」を利用します 15 技術スタック(サーバーエンジニア) AWS : Fargate, ECS Task, Lambda, Aurora, ElastiCache (Redis), OpenSearch (Elasticsearch), Rekognition GCP : BigQuery, Firebase バッチ : Digdag, Embulk 開発環境 インフラ 7
21 3 4 13 技術スタック(Androidエンジニア) 開発言語 : Kotlin Kotlin
100% CI/CD : GitHub Actions UnitTestからPlayStoreへのリリースまで自動化済み アーキテクチャ 原則公式ガイド通り。マルチモジュール+DIによる依存制御 ライブラリ Jetpack (Composeなど)、Coil、Hilt、JUnit 5 Lintツール Android Lint、ktlint、Renovate デバッガツール LeakCanary、Hyperion、Flipper、Crashlytics、etc... 8
21 タスク管理 : ソース管理 : ファイル管理 : スケジュール管理 : コミュニケーション
: wiki・仕様書・設計書 17 よく使うツール 9 ※ チケット管理・ガントチャートツール ※ Markdown形式のドキュメントツール
21 3 5 13 開発環境[Android] CleanArchitectureに沿ったレイヤードアーキテクチャの採用 ・モジュール分離とDIツールによって依存方向を整理しています ・ビジネスロジックとUI、データI/O等の責務の分離を意識しながら開発を進めています ・ドメインレイヤーにはAndroid Frameworkの概念が入らないように縛りを入れています
現在は、公式ドキュメントに沿った形にリファクタリング中 ・ドメイン層はオプションとし、無駄なUseCaseを作らないようにしています ・モジュールは機能ごとに分割した形を目指しています 10
21 3 6 13 開発環境[Android] 3 GitFlowに沿ったブランチ運用 広く普及しているGitFlowに従ったブランチ運用を行うことで、 運用について迷うことがないよう、かつCI/CDでの自動化もしやすいよう計らっています CI/CD(GitHub
Actions)や各種自動化ツールを駆使した各個人が担う定型業務の低減 ・ライブラリアップデート ・UnitTest、Lintチェック ・動作確認用バイナリ出力 ・Playストアへのアップロード Kotlinファーストな開発 ・Kotlin言語の特徴をフルに活かせるよう修正や改善を重ねています ・型のNonNull化を強く推進しNullPointerExceptionを排除しながら、inlineクラスを用いることで プリミティブな変数も型安全に扱えるよう調整を行っています 11