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
34
コア技術の段階的発展とチームの代謝
ナビタイムジャパンの、プロダクトの発展とそれに対するチームの向き合い方についてまとめた資料です。
NAVITIME JAPAN
PRO
February 28, 2020
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
22
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
440
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
160
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.5k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.4k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
270
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.3k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.3k
Other Decks in Business
See All in Business
ホラクラシー組織の比較
hashiyaman
0
240
5分でわかる松鶴建設 | Shokaku Recruit
shokaku_recruit
0
630
株式会社ビズリーチ 会社概要資料 / Corporate Deck
bizreach_inc
2
26k
株式会社AbemaTV 会社説明資料
abematv
2
1.6k
2ndPASS_リクルートガイド2024
akinodaichi
0
520
SaaSの次なる潮流BPaaS ゼロイチの事業づくりと伴走するプロダクト開発の裏側
kubell_hr
3
1.9k
株式会社shizai - Recruit Deck
shizai
3
56k
VISASQ: ABOUT DEV TEAM
eikohashiba
3
24k
第3回関東Kaggler会 LT Kaggleはうつ病患者の役に立つ
utm529f
2
200
生成AIを活用した勉強法 ~電車内でできたAWS Certified AI Practitioner過去問対策~
yuta3110
0
310
アノマリーマーケティング カルチャーコード_ver1.0
anomalymarketing
1
210
anveil_companydeck_2025
anveilpr
0
320
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
4 Signs Your Business is Dying
shpigford
182
22k
Facilitating Awesome Meetings
lara
52
6.2k
Unsuck your backbone
ammeep
669
57k
Thoughts on Productivity
jonyablonski
69
4.5k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Adopting Sorbet at Scale
ufuk
74
9.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Designing for humans not robots
tammielis
250
25k
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!!