SlideShare a Scribd company logo
1 of 44
ProductManagement / front-end
in Sansan( & remote work)
2016.03.25 Sansan株式会社 岩下弘法
Copyright © Sansan, Inc. All rights reserved.
introduce
- 岩下 弘法
- ♂(4) と ♀(0) の父
- 2013 年 10 月 Sansan 入社
- 前職は SIer で HRM パッケージを作ってた
- Java(Seasar2, Play!)
- フロントエンドエンジニアではない
1
Copyright © Sansan, Inc. All rights reserved.
introduce
Copyright © Sansan, Inc. All rights reserved.
Ice break
3
Copyright © Sansan, Inc. All rights reserved.
リモートワーク
- 通勤は人生の無駄づかい
- 9時5時からの解放
- 節約するより価値を生みだそう
- 上司が見張っていないと仕事をサボる?
- 家には邪魔が多すぎる?
- 社内に不公平が生まれる?
- セキュリティを守るにはオフィスが必要?
4
「強いチームはオフィスを捨てる」の目次より
Copyright © Sansan, Inc. All rights reserved.
リモートワーク
5
Copyright © Sansan, Inc. All rights reserved.
リモートワーク
6
Copyright © Sansan, Inc. All rights reserved.
リモートワーク
7
Copyright © Sansan, Inc. All rights reserved.
リモートワーク
- 昨年は計四ヶ月ほど
- 通勤の満員電車ないだけで世界が変わる
- 怠けより働き過ぎに注意
- 孤独は人を狂わせる
- 信頼関係が大事
8
Copyright © Sansan, Inc. All rights reserved.
体制 / プロジェクト
9
Copyright © Sansan, Inc. All rights reserved.
体制
Product Owner Product Manager Engineer
プロダクト部 開発部
Copyright © Sansan, Inc. All rights reserved.
プロダクトマップ
11
UX 進化
ビジョンニーズ
ビジネス進化
既存改善
大規模対応 新ビジネスモデル対応
API 連携
ネイティブアプリ強化
新機能
Copyright © Sansan, Inc. All rights reserved.
プロダクト
- 唯一無二のシステムを創っている
- 顧客ごとのオーダーメイドシステムではない
- 準拠する明確なルールがあるわけではない
- 世界観を決めるのは我々
12
Copyright © Sansan, Inc. All rights reserved.
進め方
Product Owner Product Manager Engineer
プロダクト部 開発部
Copyright © Sansan, Inc. All rights reserved.
進め方(PM)
- 解決すべき課題を見つけユーザー体験を考える
14
Copyright © Sansan, Inc. All rights reserved.
進め方(PM)
- 解決すべき課題を見つけユーザー体験を考える
- 既存仕様との整合性検証
15
Copyright © Sansan, Inc. All rights reserved.
進め方(PM)
- 解決すべき課題を見つけユーザー体験を考える
- 既存仕様との整合性検証
- POに設計意図を伝え承認を得る
16
Copyright © Sansan, Inc. All rights reserved.
進め方(PM)
- 解決すべき課題を見つけユーザー体験を考える
- 既存仕様との整合性検証
- POに設計意図を伝え承認を得る
- PM & エンジニアで UI/UX 確認
17
Copyright © Sansan, Inc. All rights reserved.
進め方(Engineer)
- 解決すべき課題を見つけユーザー体験を考える
- 既存仕様との整合性検証
- POに設計意図を伝え承認を得る
- PM & エンジニアで UI/UX 確認
- 負の遺産を掻い潜りながら実装する
- 前側 : ASP.NET Web Forms -> ASP.NET MVC
- 後側 : DDD
> 過去勉強会( #Sansan_DDD )を参照
18
Copyright © Sansan, Inc. All rights reserved.
進め方(PM)
- 解決すべき課題を見つけユーザー体験を考える
- 既存仕様との整合性検証
- POに設計意図を伝え承認を得る
- PM & エンジニアで UI/UX 確認
- 負の遺産を掻い潜りながら実装する
- PM レビュー
19
Copyright © Sansan, Inc. All rights reserved.
進め方
- 解決すべき課題を見つけユーザー体験を考える
- 既存仕様との整合性検証
- POに設計意図を伝え承認を得る
- PM & エンジニアで UI/UX 確認
- 負の遺産を掻い潜りながら実装する
- PM レビュー
- PO レビュー
- リリース
20
Copyright © Sansan, Inc. All rights reserved.
フロント周りの技術
21
Copyright © Sansan, Inc. All rights reserved.
JavaScript framework
出展 : http://engineering.paiza.io/entry/2015/03/12/145216
Copyright © Sansan, Inc. All rights reserved.
僕 is
Copyright © Sansan, Inc. All rights reserved.
弊社 is
- 使ってない。 jQuery のみ。
- SPA は(今のところ)合わない
> スイッチコストを掛けれない
- 画面複雑 / 多機能
> 画面デザパタが異なる
> MVC と Web Forms の混在
- Vue.js
- IE8 サポートNG
- Knockout.js で代替
24
Copyright © Sansan, Inc. All rights reserved.
弊社 is
- Graceful Degradation
- 最近の環境を基準にし、古い環境にはレベルを落とす
25
Copyright © Sansan, Inc. All rights reserved.
手を入れたこと
- ASP.NET MVC3 -> ASP.NET MVC5
- WebGrease
- jQuery1.2, 1.5, 1.6 -> jQuery1.11
- jQueryUI -> Bootstrap
- css -> less
- Grunt (-> Gulp)
- gif, png -> web fonts
- Nuget -> Bower
26
Copyright © Sansan, Inc. All rights reserved.
WebGrease
- WebGrease is a suite of tools for optimizing javascript,
css files and images.
- Minification of JavaScript files
- Validation of JavaScript files
- Minification of CSS files
- Bundling of JavaScript and CSS files
- Image sprites
- Auto Version naming of the files (version stamp)
27
Copyright © Sansan, Inc. All rights reserved.
Auto Version naming of the files (version stamp)
- BundleConfig.cs で全ての js, css を処理
28
<%: Styles.Render("~/Content/commns.css.bundle") %>
Directory.GetFiles(fullPath, "*.css", SearchOption.AllDir
ectories).ForEach(fileFullName => {
var relativePath = …;
var bundleName = relativePath + "*.bundle";
var bundle = (Bundle) Activator.CreateInstance(typeof (
T), bundleName);
bundles.Add(bundle.Include(relativePath));
});
Copyright © Sansan, Inc. All rights reserved.
jQuery1.11
- 1.8 以前と 1.9 以後の壁が大きい
- 早めにクリアしておきたかった
- IE8 を切れない…ので 1 系
- 合わせて各種 plugin も version up
- $hoge.on( events [, selector ] [, data ], handler )
- As of jQuery 1.8, the use of async: false with jqXHR
($.Deferred) is deprecated
29
Copyright © Sansan, Inc. All rights reserved.
Bootstrap
30
- 使えてない。 js メイン。
- 影響範囲を見ながら少しずつ解放
- あとから grid layout 入れるのむりぽ
Copyright © Sansan, Inc. All rights reserved.
css -> less
- grunt-contrib-less で変換
- wiredep で対象一覧を BundleConfing に inject
31
Copyright © Sansan, Inc. All rights reserved.
その他
- gif, png -> webfonts
- 画像ではなく svg を受け取る
- Nuget -> Bower
- A package manager for the web
32
Copyright © Sansan, Inc. All rights reserved.
その他
33
Copyright © Sansan, Inc. All rights reserved.
Bower.json
34
Copyright © Sansan, Inc. All rights reserved.
課題
- CSS is カオス
- OOCSS, SMACSS, BEM, FLOCSS なにそれ美味しいの
> 詳細度の考慮
> 再利用性
- フロント周りのテスト
- PO レビューで UI /UX 変わる
- 自動化するコスト
- バージョンアップ追随
- 「覚悟」が暗闇の荒野に進むべき道を切り開く
35
Copyright © Sansan, Inc. All rights reserved.
課題
- CSSLint, JavaScriptLint かけたい
- js 生で書きたくない
- Vanilla.js が早いのは分かるけど
- IE8
- 規約がない
- WEB デザイナー
36
Copyright © Sansan, Inc. All rights reserved.
少しでも足掻く
- class は静的用 data-* は動的用
- 同一観点で見れる人間をレビューアとする
- ここから規約やレギュレーションの策定
- デザインチェックの仕組み
- スクショ比較とか
- リビーリングモジュールパターン
37
Copyright © Sansan, Inc. All rights reserved.
React(*´ρ`*)
- react-dom を使ってPE-SPA
- View 層を Razor -> react
- 言語境界を Edge.js で跨ぐ
38
出展 : https://msdn.microsoft.com/ja-jp/magazine/mt632272.aspx
ASP.NET と React によるプログレッシブ エンハンスメント
Copyright © Sansan, Inc. All rights reserved.
発表は以上です。
39
Copyright © Sansan, Inc. All rights reserved.
僕は今、限界集落の山奥でリモート発表して、
40
Copyright © Sansan, Inc. All rights reserved.
この後業務と自炊に戻るけど、
41
Copyright © Sansan, Inc. All rights reserved.
皆様この後も楽しんでください(゚Д゚)
42
ProductManagement / front-endin Sansan( & remote work)

More Related Content

What's hot

自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性azumakuniyuki 🐈
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Dai Iwai
 
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」Yui Ashikaga
 
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)さくらインターネット株式会社
 
Azure FunctionsでPowerShellを使ってみた
Azure FunctionsでPowerShellを使ってみたAzure FunctionsでPowerShellを使ってみた
Azure FunctionsでPowerShellを使ってみたkimura50
 
ベアメタルOpenStackで始めるクラウド環境構築
ベアメタルOpenStackで始めるクラウド環境構築ベアメタルOpenStackで始めるクラウド環境構築
ベアメタルOpenStackで始めるクラウド環境構築Nobuyuki Tamaoki
 
ACE 第6回定例会 ショートプレゼン
ACE 第6回定例会 ショートプレゼンACE 第6回定例会 ショートプレゼン
ACE 第6回定例会 ショートプレゼンYui Ashikaga
 
JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料Dai Iwai
 
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~Dai Iwai
 
Black jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみたBlack jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみたYasuaki Matsuda
 
Tips for passing AZ-103 once
Tips for passing AZ-103 onceTips for passing AZ-103 once
Tips for passing AZ-103 onceOshitari_kochi
 
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)さくらインターネット株式会社
 
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月VirtualTech Japan Inc.
 
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Yoshimasa Katakura
 
JAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトークJAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトークDai Iwai
 
Azure Contract, Support, License ちょっと Dive
Azure Contract, Support, License ちょっと DiveAzure Contract, Support, License ちょっと Dive
Azure Contract, Support, License ちょっと DiveYui Ashikaga
 
Azure Private Linkのご紹介
Azure Private Linkのご紹介Azure Private Linkのご紹介
Azure Private Linkのご紹介Tsukasa Kato
 
Azure Policyでハイブリッドな構成管理
Azure Policyでハイブリッドな構成管理Azure Policyでハイブリッドな構成管理
Azure Policyでハイブリッドな構成管理Masahiko Ebisuda
 
Azure bastion ignite the tour @tokyo 2019
Azure bastion   ignite the tour @tokyo 2019Azure bastion   ignite the tour @tokyo 2019
Azure bastion ignite the tour @tokyo 2019Yoshimasa Katakura
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことgree_tech
 

What's hot (20)

自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
 
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
 
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
Arukasの運用事例と、末永くインフラ運用していくためのTips(SRE Tech Talks #2)
 
Azure FunctionsでPowerShellを使ってみた
Azure FunctionsでPowerShellを使ってみたAzure FunctionsでPowerShellを使ってみた
Azure FunctionsでPowerShellを使ってみた
 
ベアメタルOpenStackで始めるクラウド環境構築
ベアメタルOpenStackで始めるクラウド環境構築ベアメタルOpenStackで始めるクラウド環境構築
ベアメタルOpenStackで始めるクラウド環境構築
 
ACE 第6回定例会 ショートプレゼン
ACE 第6回定例会 ショートプレゼンACE 第6回定例会 ショートプレゼン
ACE 第6回定例会 ショートプレゼン
 
JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料
 
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
 
Black jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみたBlack jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみた
 
Tips for passing AZ-103 once
Tips for passing AZ-103 onceTips for passing AZ-103 once
Tips for passing AZ-103 once
 
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
インフラ初心者向け・サーバの選び方(第31回さくらの夕べ in 仙台 ~全国さくら前線ツアー2016 #さくらクラブ ~)
 
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
 
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
 
JAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトークJAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトーク
 
Azure Contract, Support, License ちょっと Dive
Azure Contract, Support, License ちょっと DiveAzure Contract, Support, License ちょっと Dive
Azure Contract, Support, License ちょっと Dive
 
Azure Private Linkのご紹介
Azure Private Linkのご紹介Azure Private Linkのご紹介
Azure Private Linkのご紹介
 
Azure Policyでハイブリッドな構成管理
Azure Policyでハイブリッドな構成管理Azure Policyでハイブリッドな構成管理
Azure Policyでハイブリッドな構成管理
 
Azure bastion ignite the tour @tokyo 2019
Azure bastion   ignite the tour @tokyo 2019Azure bastion   ignite the tour @tokyo 2019
Azure bastion ignite the tour @tokyo 2019
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
 

Similar to ProductManagement / front-end in Sansan( & remote work)

JAWS DAYS 2016 ランチセッション
JAWS DAYS 2016 ランチセッションJAWS DAYS 2016 ランチセッション
JAWS DAYS 2016 ランチセッションTetsuya Mase
 
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッションJAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッションTetsuya Mase
 
20150326 ベストアプリの裏側勉強会
20150326 ベストアプリの裏側勉強会20150326 ベストアプリの裏側勉強会
20150326 ベストアプリの裏側勉強会Kenta Kuwata
 
Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側Kenta Kuwata
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)Toshiharu Sugiyama
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecaseMinehiko Nohara
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ− のサマリ
社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ−  のサマリ社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ−  のサマリ
社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ− のサマリSatoshi Yokoi
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Takashi Someda
 
新規事業を 支える文化と加速させる技術 ~ devops / GCP / DDD ~
新規事業を支える文化と加速させる技術~ devops / GCP / DDD ~新規事業を支える文化と加速させる技術~ devops / GCP / DDD ~
新規事業を 支える文化と加速させる技術 ~ devops / GCP / DDD ~Mao Ohnishi
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア leverages_event
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアIsamu Suzuki
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118Nozomi Kurihara
 
CFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service BrokerCFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service BrokerKazuto Kusama
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingKeiji Kikuchi
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみましたKoji Hasebe
 
エウレカ:SageMakerを導入した話
エウレカ:SageMakerを導入した話エウレカ:SageMakerを導入した話
エウレカ:SageMakerを導入した話Mizuki Kobayashi
 

Similar to ProductManagement / front-end in Sansan( & remote work) (20)

JAWS DAYS 2016 ランチセッション
JAWS DAYS 2016 ランチセッションJAWS DAYS 2016 ランチセッション
JAWS DAYS 2016 ランチセッション
 
JAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッションJAWS DAYS 2017 ランチセッション
JAWS DAYS 2017 ランチセッション
 
20150326 ベストアプリの裏側勉強会
20150326 ベストアプリの裏側勉強会20150326 ベストアプリの裏側勉強会
20150326 ベストアプリの裏側勉強会
 
Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ− のサマリ
社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ−  のサマリ社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ−  のサマリ
社員数100名の壁を越える タイミングに在籍する、 組織・サービスを支える プロダクトチームの 苦悩と喜び−ランサーズ− のサマリ
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
 
新規事業を 支える文化と加速させる技術 ~ devops / GCP / DDD ~
新規事業を支える文化と加速させる技術~ devops / GCP / DDD ~新規事業を支える文化と加速させる技術~ devops / GCP / DDD ~
新規事業を 支える文化と加速させる技術 ~ devops / GCP / DDD ~
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
 
CFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service BrokerCFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service Broker
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
プライベートクラウド作ってみました
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみました
 
エウレカ:SageMakerを導入した話
エウレカ:SageMakerを導入した話エウレカ:SageMakerを導入した話
エウレカ:SageMakerを導入した話
 
Jazug6周年lt(片倉義昌)
Jazug6周年lt(片倉義昌)Jazug6周年lt(片倉義昌)
Jazug6周年lt(片倉義昌)
 

ProductManagement / front-end in Sansan( & remote work)

  • 1. ProductManagement / front-end in Sansan( & remote work) 2016.03.25 Sansan株式会社 岩下弘法
  • 2. Copyright © Sansan, Inc. All rights reserved. introduce - 岩下 弘法 - ♂(4) と ♀(0) の父 - 2013 年 10 月 Sansan 入社 - 前職は SIer で HRM パッケージを作ってた - Java(Seasar2, Play!) - フロントエンドエンジニアではない 1
  • 3. Copyright © Sansan, Inc. All rights reserved. introduce
  • 4. Copyright © Sansan, Inc. All rights reserved. Ice break 3
  • 5. Copyright © Sansan, Inc. All rights reserved. リモートワーク - 通勤は人生の無駄づかい - 9時5時からの解放 - 節約するより価値を生みだそう - 上司が見張っていないと仕事をサボる? - 家には邪魔が多すぎる? - 社内に不公平が生まれる? - セキュリティを守るにはオフィスが必要? 4 「強いチームはオフィスを捨てる」の目次より
  • 6. Copyright © Sansan, Inc. All rights reserved. リモートワーク 5
  • 7. Copyright © Sansan, Inc. All rights reserved. リモートワーク 6
  • 8. Copyright © Sansan, Inc. All rights reserved. リモートワーク 7
  • 9. Copyright © Sansan, Inc. All rights reserved. リモートワーク - 昨年は計四ヶ月ほど - 通勤の満員電車ないだけで世界が変わる - 怠けより働き過ぎに注意 - 孤独は人を狂わせる - 信頼関係が大事 8
  • 10. Copyright © Sansan, Inc. All rights reserved. 体制 / プロジェクト 9
  • 11. Copyright © Sansan, Inc. All rights reserved. 体制 Product Owner Product Manager Engineer プロダクト部 開発部
  • 12. Copyright © Sansan, Inc. All rights reserved. プロダクトマップ 11 UX 進化 ビジョンニーズ ビジネス進化 既存改善 大規模対応 新ビジネスモデル対応 API 連携 ネイティブアプリ強化 新機能
  • 13. Copyright © Sansan, Inc. All rights reserved. プロダクト - 唯一無二のシステムを創っている - 顧客ごとのオーダーメイドシステムではない - 準拠する明確なルールがあるわけではない - 世界観を決めるのは我々 12
  • 14. Copyright © Sansan, Inc. All rights reserved. 進め方 Product Owner Product Manager Engineer プロダクト部 開発部
  • 15. Copyright © Sansan, Inc. All rights reserved. 進め方(PM) - 解決すべき課題を見つけユーザー体験を考える 14
  • 16. Copyright © Sansan, Inc. All rights reserved. 進め方(PM) - 解決すべき課題を見つけユーザー体験を考える - 既存仕様との整合性検証 15
  • 17. Copyright © Sansan, Inc. All rights reserved. 進め方(PM) - 解決すべき課題を見つけユーザー体験を考える - 既存仕様との整合性検証 - POに設計意図を伝え承認を得る 16
  • 18. Copyright © Sansan, Inc. All rights reserved. 進め方(PM) - 解決すべき課題を見つけユーザー体験を考える - 既存仕様との整合性検証 - POに設計意図を伝え承認を得る - PM & エンジニアで UI/UX 確認 17
  • 19. Copyright © Sansan, Inc. All rights reserved. 進め方(Engineer) - 解決すべき課題を見つけユーザー体験を考える - 既存仕様との整合性検証 - POに設計意図を伝え承認を得る - PM & エンジニアで UI/UX 確認 - 負の遺産を掻い潜りながら実装する - 前側 : ASP.NET Web Forms -> ASP.NET MVC - 後側 : DDD > 過去勉強会( #Sansan_DDD )を参照 18
  • 20. Copyright © Sansan, Inc. All rights reserved. 進め方(PM) - 解決すべき課題を見つけユーザー体験を考える - 既存仕様との整合性検証 - POに設計意図を伝え承認を得る - PM & エンジニアで UI/UX 確認 - 負の遺産を掻い潜りながら実装する - PM レビュー 19
  • 21. Copyright © Sansan, Inc. All rights reserved. 進め方 - 解決すべき課題を見つけユーザー体験を考える - 既存仕様との整合性検証 - POに設計意図を伝え承認を得る - PM & エンジニアで UI/UX 確認 - 負の遺産を掻い潜りながら実装する - PM レビュー - PO レビュー - リリース 20
  • 22. Copyright © Sansan, Inc. All rights reserved. フロント周りの技術 21
  • 23. Copyright © Sansan, Inc. All rights reserved. JavaScript framework 出展 : http://engineering.paiza.io/entry/2015/03/12/145216
  • 24. Copyright © Sansan, Inc. All rights reserved. 僕 is
  • 25. Copyright © Sansan, Inc. All rights reserved. 弊社 is - 使ってない。 jQuery のみ。 - SPA は(今のところ)合わない > スイッチコストを掛けれない - 画面複雑 / 多機能 > 画面デザパタが異なる > MVC と Web Forms の混在 - Vue.js - IE8 サポートNG - Knockout.js で代替 24
  • 26. Copyright © Sansan, Inc. All rights reserved. 弊社 is - Graceful Degradation - 最近の環境を基準にし、古い環境にはレベルを落とす 25
  • 27. Copyright © Sansan, Inc. All rights reserved. 手を入れたこと - ASP.NET MVC3 -> ASP.NET MVC5 - WebGrease - jQuery1.2, 1.5, 1.6 -> jQuery1.11 - jQueryUI -> Bootstrap - css -> less - Grunt (-> Gulp) - gif, png -> web fonts - Nuget -> Bower 26
  • 28. Copyright © Sansan, Inc. All rights reserved. WebGrease - WebGrease is a suite of tools for optimizing javascript, css files and images. - Minification of JavaScript files - Validation of JavaScript files - Minification of CSS files - Bundling of JavaScript and CSS files - Image sprites - Auto Version naming of the files (version stamp) 27
  • 29. Copyright © Sansan, Inc. All rights reserved. Auto Version naming of the files (version stamp) - BundleConfig.cs で全ての js, css を処理 28 <%: Styles.Render("~/Content/commns.css.bundle") %> Directory.GetFiles(fullPath, "*.css", SearchOption.AllDir ectories).ForEach(fileFullName => { var relativePath = …; var bundleName = relativePath + "*.bundle"; var bundle = (Bundle) Activator.CreateInstance(typeof ( T), bundleName); bundles.Add(bundle.Include(relativePath)); });
  • 30. Copyright © Sansan, Inc. All rights reserved. jQuery1.11 - 1.8 以前と 1.9 以後の壁が大きい - 早めにクリアしておきたかった - IE8 を切れない…ので 1 系 - 合わせて各種 plugin も version up - $hoge.on( events [, selector ] [, data ], handler ) - As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated 29
  • 31. Copyright © Sansan, Inc. All rights reserved. Bootstrap 30 - 使えてない。 js メイン。 - 影響範囲を見ながら少しずつ解放 - あとから grid layout 入れるのむりぽ
  • 32. Copyright © Sansan, Inc. All rights reserved. css -> less - grunt-contrib-less で変換 - wiredep で対象一覧を BundleConfing に inject 31
  • 33. Copyright © Sansan, Inc. All rights reserved. その他 - gif, png -> webfonts - 画像ではなく svg を受け取る - Nuget -> Bower - A package manager for the web 32
  • 34. Copyright © Sansan, Inc. All rights reserved. その他 33
  • 35. Copyright © Sansan, Inc. All rights reserved. Bower.json 34
  • 36. Copyright © Sansan, Inc. All rights reserved. 課題 - CSS is カオス - OOCSS, SMACSS, BEM, FLOCSS なにそれ美味しいの > 詳細度の考慮 > 再利用性 - フロント周りのテスト - PO レビューで UI /UX 変わる - 自動化するコスト - バージョンアップ追随 - 「覚悟」が暗闇の荒野に進むべき道を切り開く 35
  • 37. Copyright © Sansan, Inc. All rights reserved. 課題 - CSSLint, JavaScriptLint かけたい - js 生で書きたくない - Vanilla.js が早いのは分かるけど - IE8 - 規約がない - WEB デザイナー 36
  • 38. Copyright © Sansan, Inc. All rights reserved. 少しでも足掻く - class は静的用 data-* は動的用 - 同一観点で見れる人間をレビューアとする - ここから規約やレギュレーションの策定 - デザインチェックの仕組み - スクショ比較とか - リビーリングモジュールパターン 37
  • 39. Copyright © Sansan, Inc. All rights reserved. React(*´ρ`*) - react-dom を使ってPE-SPA - View 層を Razor -> react - 言語境界を Edge.js で跨ぐ 38 出展 : https://msdn.microsoft.com/ja-jp/magazine/mt632272.aspx ASP.NET と React によるプログレッシブ エンハンスメント
  • 40. Copyright © Sansan, Inc. All rights reserved. 発表は以上です。 39
  • 41. Copyright © Sansan, Inc. All rights reserved. 僕は今、限界集落の山奥でリモート発表して、 40
  • 42. Copyright © Sansan, Inc. All rights reserved. この後業務と自炊に戻るけど、 41
  • 43. Copyright © Sansan, Inc. All rights reserved. 皆様この後も楽しんでください(゚Д゚) 42

Editor's Notes

  1. コンパスに「フロントエンドエンジニアとしてSansan入社」と書いてあるけど違います。 技術なお話しはしません
  2. コミット数が多い理由は、自分で掘った穴を自分で埋めているから。
  3. リモートワークに興味を持ったのは、弊社にはサテライトオフィスがあって、そこで働いている社員がいます。サテライトオフィス以外にもいます。そしてこの本に感銘を受けました。
  4. 「強いチームはオフィスを捨てる」の目次から抜粋したものです。誤解のないように言っておくと、弊社がこの内容を実現しているわけではないです。場所縛り時間縛りですしリモート推進してないです。 Play!を日本でいち早くキャッチアップしていた「池田たかふみ」さんという方がいるのですが、この人が Github 日本で二人目の社員になってリモートワークしていることに興味を持った 弊社もサテライトオフィスがあったり実際にリモートワーカーもいて試すことは出来るのでやってみました
  5. これが職場近辺の風景です
  6. 朝はゆっくりと電車遅延の遅刻報告を眺めてます リズムを掴まないと最初はハードワークになりやすい リモートワーク中に子供が一人生まれたのですが、家族と離れるのはツラい ふらっと席に行って話しかける、なんてことは出来ないのでコミュニケーションのコストは高い それでもやる価値は十分にある(と僕は思っています)
  7. Ice break 終わり。まずは弊社がどうのようにシステムを作っていっているのかご紹介します
  8. 弊社開発部は現在40名弱で、数人単位のチームにわかれている。 きっちりの4エリア通りにチームが分かれているわけではないが、どのチームはどの軸が主軸のプロジェクトを担当するかが決まっている 僕の担当するのは右上部分の色が強いプロジェクトを担当している
  9. Sansan は名刺管理だけに留まらず、ビジネスインフラになることを目指しています。 つまり前例がない。ガイドがない。コピペ対象がない。人事・給与・就業みたいに法律も計算式もないわけです。
  10. モックを使って UI /UX をざっくり考える
  11. 影響調査、仕様作成
  12. ここで開発部としてはプロジェクトキックオフとなります
  13. PO
  14. 過去の弊社勉強会資料を参照してみてください
  15. PO
  16. PO
  17. 弊社の Eight は WEB は全て React で出来ている
  18. というか、その段階は来ないかも
  19. Progressive Enhancement(プログレッシブ エンハンスメント)「一般的環境を基準にし、進んだ環境をも視野に入れる」という考え方を「Progressive Enhancement(プログレッシブ エンハンスメント)」といいます。 Graceful Degradation(グレイスフル デグラデーション)「限られた古い環境を基準にする」よりも、「最近の環境を基準にし、古い環境にはレベルを落とす」
  20. ここ二年ぐらいでチームでやったこと
  21. system.web.optimization が参照してるやつです
  22. 今まではリリース手順に、「日付つきクエリパラメータを書く」とかあって忘れるとキャッシュ効いちゃうことがあった
  23. Modal とか tooltip とかを利用しているだけ
  24. Bootstrap 4 系になると IE8 切り、 Sass が待っているがどうしようかな。。
  25. IE対策のコード1(コンディショナルコメント)Paul Irish氏が提案するIEの過去バージョンに対するCSSハック Modernizr でタッチデバイス化の判断
  26. !important とか csslint で引っかかるようなのも普通に使われている。 Web Forms が勝手に style 吐いたりするので詳細度勝てなかったりする 例えば bootstrap 使用バージョンは 3.2 系。今の最新は 3.3.6。 Rails の文化を取り入れるのなら、アプリケーションを開発し運用し続けていくには、バージョンアップに対応するための「覚悟」が必要です。が、至らず。 「覚悟」が暗闇の荒野に進むべき道を切り開く。備えよう。 Railsに限らず、アプリケーションを開発し運用し続けていくには、バージョンアップに対応するための「覚悟」が必要です。
  27. React は v0.14 で dom 生成部分が切り離されたので、サーバーサイドで DOM 生成が出来るようになった ってことは View 層(razor)のとこ置き換えられるんじゃない?って発想(だと思う) Edge.jsを使えば、node.jsは.NETメソッドを呼び出せ、.NETコードはNode.jsを呼び出せる。 razor は C# 文法で書いてたけどこれを jsx をトランスパイルした javascript が動かないとダメなので、Edge.jsを使って .NET で node.js を実行して DOM 結果を得る。 こうすることで、最新ブラウザでは SPA、旧ブラウザでは従来のクラサバアプリみたいなことが出来る。 学習コストは高いしパフォーマンスも気になるし静的コードの良さが失われる(コードを文字列で渡す)ので、現実的なのかどうかは疑問だけど、こうやって徐々に移行していく方法もあるんだなーと。