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
コア技術の段階的発展とチームの代謝
Search
NAVITIME JAPAN
PRO
February 28, 2020
Business
0
27
コア技術の段階的発展とチームの代謝
ナビタイムジャパンの、プロダクトの発展とそれに対するチームの向き合い方についてまとめた資料です。
NAVITIME JAPAN
PRO
February 28, 2020
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
2
150
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
19
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.1k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
150
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.1k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.2k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5k
こうしてふりかえりは終わってしまった / A Demise of a retrospective
navitimejapan
PRO
44
28k
Other Decks in Business
See All in Business
記憶力に頼らないタスク管理 / Task management without relying on memory
tbpgr
7
14k
株式会社ispec 会社紹介資料
emikamihara
0
5.5k
その失敗は多様性があれば解決していたかもしれない
sena2518
1
300
大規模プロダクトにおける組織作りと技術ポートフォリオマネジメント
recruitengineers
PRO
4
290
ユートニック 会社紹介資料
yukiimai
0
700
「目標」に対するマインドチェンジ~評価指標から周囲への還元に考えが変わるまで~ / Scrum Fest Sendai 2024
ikuwa0720
0
310
事業所の利用を検討いただいている皆さまへ
ymtyhka7o4o8
0
430
株式会社クオトミー COMPANY DECK_As_of_Sep2024
quotomy
1
150
人事図書館ラーニングバー_人事としての学びとその活かし方_ねこやなぎのケース20240831
nekoyanagi
1
460
Datachainご紹介資料(2024年8月) / Company Deck
datachain
3
14k
インキュデータ会社紹介資料
okitsu
2
28k
アジアクエスト会社紹介資料 / We invite you!
asiaquest
7
80k
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
85
5.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.8k
We Have a Design System, Now What?
morganepeng
48
7.1k
Making Projects Easy
brettharned
113
5.8k
Fontdeck: Realign not Redesign
paulrobertlloyd
80
5.1k
Why Our Code Smells
bkeepers
PRO
334
56k
Making the Leap to Tech Lead
cromwellryan
128
8.8k
Happy Clients
brianwarren
96
6.6k
Debugging Ruby Performance
tmm1
72
12k
Into the Great Unknown - MozCon
thekraken
29
1.4k
Transcript
コア技術の段階的発展と チームの代謝 株式会社ナビタイムジャパン 小田中 育生
小田中 育生 (おだなか いくお) (株)ナビタイムジャパン 開発部 部長 ACTS(研究開発) ルートグループ責任者 ミッション
・経路探索のR&D ・全社的なカイゼン活動
Recent Works 106 223 352 606 749 1864 30704 1
10 100 1000 10000 100000 0 200 400 600 800 1000 1200 1400 1600 1800 2000 10 60 110 160 距離[km] 距離と探索時間 GPU Kepler GPU Volta CPU CPU 階層1のみ 指数関数的な 計算時間増大を克服
Recent Works
コア技術の段階的発展
道路ネットワークの経路探索 アルゴリズム コストモデル データ 移動手段 ・徒歩 ・自転車 ・自動車 ・バイク 経路探索の構成要素
自動車向け 徒歩向け 自転車向け 統一 自転車向け (GPU) 発展の系譜 横展開&個別進化期 統一期 発展期
横展開&個別進化期の課題 自動車 徒歩 自転車 ・個別に最適化されてしまう ・I/Fが独自進化、使う側が負担 ・モノリシックで開発コストが高い 別バイナリ ひとつひとつのコストモデルが 別メソッドで定義
統一期への発展 ・モジュール化 ・交通手段を抽象化しバイナリ共通化 ・コストモデルをパラメータ化
世はMaaS時代
開発しやすい設計が、MaaSの要望を支えた
自動車向け 徒歩向け 自転車向け 統一 自転車向け (GPU) 発展の系譜 横展開&個別進化期 統一期 発展期
発展期
増大する計算量に対応すべくGPU対応
APIは変更せず中身だけ変更 CPU API Algorithm gRPC GPU Algorithm
互換性を保ちつつ抜本的に改善 106 223 352 606 749 1864 30704 1 10
100 1000 10000 100000 0 200 400 600 800 1000 1200 1400 1600 1800 2000 10 60 110 160 時間[msec] 距離[km] 距離と探索時間 GPU Kepler GPU Volta CPU CPU 階層1のみ 指数関数的な 計算時間増大を克服
自動車向け 徒歩向け 自転車向け 統一 自転車向け (GPU) 発展の系譜 横展開&個別進化期 統一期 発展期
個別進化がなければ統一期はなかった 統一期でモジュール化されていなければ 発展期の設計は実現しなかった コア技術は段階的に発展していった
でも
「目の前にあるコードが複雑で どうしていいかわからない」 そんなことありませんか? 私はあります。
チームの代謝
モノリシッ ク 自動車向け 徒歩向け 自転車向け 統一 自転車向け (GPU) 横展開&個別進化期 統一期
発展期 この時期が長い
・C言語 ・モノリシック ・テストなし ・交通手段別 ・C言語 ・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化
・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化 ・テストあり(外部FW) ・交通手段統合 統一期の中でも段階的に発展
・C言語 ・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化
・テストあり(外部FW) ・交通手段統合 ・C言語 ・モノリシック ・テストなし ・交通手段別 コードとしてはフルリプレイスされているが アーキテクチャ思想には当時の文脈が息づく
・C言語 ・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化
・テストあり(外部FW) ・交通手段統合 ・C言語 ・モノリシック ・テストなし ・交通手段別 今いるほとんどの メンバーはこれ以降にジョイン 以前の文脈を知らない
文脈を知らないゆえに なぜそう動いているのかわからない どう改修すればいいかわからない 複雑度が低く保たれていても、 テスト保護されていたとしても、 コードはレガシー化する
どう向き合うか ・調査依頼などを通したコードリーディングでの体得 ・モブプロでチームとして未知の文脈に向き合う ・クラスレベルの詳細なスキルマップを作成し チームのナレッジを可視化(最近始めた)
文脈を知らないがゆえに悩む ・「機能追加したいけど元の設計と噛み合わない」 ・「このコードは消していいのだろうか」 ・「なぜこのテストコードはこうなってる?」
モノリシッ ク 自動車向け 徒歩向け 自転車向け 統一 自転車向け (GPU) 横展開&個別進化期 統一期
発展期 小田中は これくらいのタイミングで 入社
・C言語 ・モノリシック ・テストなし ・交通手段別 ここから知ってる ・C言語 ・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++
・モジュール化 ・テストあり(内製FW) ・交通手段統合 ・C++ ・モジュール化 ・テストあり(外部FW) ・交通手段統合
そうだ、語り部になろう
私が描く理想の段階的発展と現実 ・自分たちが作りたいもの、自分たちにあった作り方から 新しい文脈を作り出してほしい。過去の文脈を 気にしすぎない ・気にしないためには、それが何者であるかを 知る必要がある ・「昔からいるおじさん」は文脈を伝えることが使命
まとめ ・ソフトウェアは段階的に発展する ・機能面も、構造面も ・機能面で発展を続けるには構造面の発展が不可欠 ・チームは代謝する ・日本は新卒採用がある ・過去の文脈とはチームで向き合う ・古い文脈が新しい文脈に転嫁するまでは、 語り部が必要なのかもしれない
THANKS!!