Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コア技術の段階的発展とチームの代謝
Search
NAVITIME JAPAN
PRO
February 28, 2020
Business
0
55
コア技術の段階的発展とチームの代謝
ナビタイムジャパンの、プロダクトの発展とそれに対するチームの向き合い方についてまとめた資料です。
NAVITIME JAPAN
PRO
February 28, 2020
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
23
16k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
850
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
250
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3.1k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.6k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
380
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.7k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.4k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
8
5.7k
Other Decks in Business
See All in Business
【Agile Japan2025 発表資料】AI時代におけるアジャイルチームの価値
agile_effect
0
260
明和不動産会社概要
prkoho
0
3.9k
キャンバスエッジ株式会社 会社説明資料
canvasedge
0
1.3k
AIエージェントウェビナー_20251118_suzaki
suzakiyoshito
0
370
【エンジニア採用】BuySell Technologies会社説明資料
buyselltechnologies
3
81k
株式会社マイクロアド 会社説明資料
yuiiii0412
0
610
CREALを知る
creal
PRO
0
1.1k
Corporate Info
yuzo
0
380
ネクストビートコーポレートガイド/corporate-guide
nextbeat
3
83k
株式会社TVer 会社紹介資料
techtver
PRO
9
96k
お客様から大量の質問は Slackで"真打エージェント"がお答えいたしましょう
kosakiteppei
0
720
Crisp Code inc.|わたしたちの事例 / 実績 - Works
so_kotani
0
1.5k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
KATA
mclloyd
PRO
32
15k
Why Our Code Smells
bkeepers
PRO
340
57k
Being A Developer After 40
akosma
91
590k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How STYLIGHT went responsive
nonsquared
100
5.9k
Making Projects Easy
brettharned
120
6.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Site-Speed That Sticks
csswizardry
13
990
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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!!