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
430
安全で使いやすい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
プロダクトデザイナー向け採用情報資料
robot_payment
0
340
SendGrid Night #10「Email Activityの活用法」
adaisukev
0
170
ACES_エンジニア向け採用資料.pdf
aces
0
390
カテゴリーで多様さを認知し、 認知バイアスに気づき、 カテゴリーでの認知をやめることで 多様さの中に生きる / Women in Agile Tokyo 2025
ohnoeight
0
590
Space BD - CULTURE BOOK「道」
spacebd
0
610
Fuji Oil Holdings (02/07/2025 Press Release)
tsogo817421
2
180
サイボウズの開発チームが行っているスクラムの紹介
tonionagauzzi
0
480
Sales Marker Culture Book(English)
salesmarker
PRO
2
3.8k
RAKSUL Introduction / English Ver.
raksulrecruiting
0
370
Mercari-Fact-book_en
mercari_inc
1
24k
Lisse/採用ピッチ資料
lisse
0
170
総合研究院の概要|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
1.6k
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
It's Worth the Effort
3n
184
28k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
Fireside Chat
paigeccino
34
3.2k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Being A Developer After 40
akosma
89
590k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Music & Morning Musume
bryan
46
6.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!!