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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
岡本卓也
October 12, 2016
Technology
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
現場から始めるアジャイルの技術プラクティス
SPI Japan 2016 で発表した際の資料です。
岡本卓也
October 12, 2016
More Decks by 岡本卓也
See All by 岡本卓也
遅いのはコードではなく会話だった / new-bottleneck-conversation
okamototakuyasr2
0
85
AIコーディング x 音声入力 / work-with-AI-via-voice
okamototakuyasr2
0
43
AI駆動開発の コードレビュー地獄を なんとかしたい / code-review-with-ai
okamototakuyasr2
0
490
ソフトウェアエンジニアの学習方法/meta learning for engineers
okamototakuyasr2
0
430
気がついたらAIをガッツリ使っていた話 / getting-close-to-generate-ai
okamototakuyasr2
0
180
普通のチームがスクラムを会得するたった一つの冴えたやり方 / the best way to scrum
okamototakuyasr2
0
260
Ghost Writer(代筆さん) / ghost-writer-for-newbiz-hackathon
okamototakuyasr2
0
33
AI活用時代のUML再評価/UML collaborate with AI
okamototakuyasr2
1
750
私が好きなUMLダイアグラム / The UML Diagrams I Love.
okamototakuyasr2
0
130
Other Decks in Technology
See All in Technology
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
110
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
330
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
230
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
220
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
210
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
410
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
120
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
200
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
110
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
260
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
0
200
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
160
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Marketing to machines
jonoalderson
1
5.7k
Ethics towards AI in product and experience design
skipperchong
2
360
How GitHub (no longer) Works
holman
316
150k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Transcript
2016年10月12日 富士通株式会社 岡本卓也 SPI Japan 2016 現場から始める アジャイルの技術プラクティス ~ ユニットテストから勝手に始めよう
~ Copyright 2016 FUJITSU LIMITED
Copyright 2016 FUJITSU LIMITED 1 本日お話しする内容 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと
導入のときに悩んだこと 導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 2 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 3 ソフトウェア開発者 (19年目) 開発チームのマネージャ アジャイルとの関係 2002年、XPと出会う
(長い間、一人で悶々とし続ける) 2013年からAgile Japanに参加(聴講者) 現在は、アジャイルを実業務へ 適用/推進する為に奮闘中 自己紹介
Copyright 2016 FUJITSU LIMITED 4 伝送装置の制御ソフト開発 特徴 大規模 (数十人、数カ月) 厳格なプロセス
(基本はWF) HW/SW 同時開発 (組み込み的) 業務ドメインと背景 インターネット マルチ・データセンター 光アクセス WiFi 3G/LTE 広域ネットワーク (光伝送装置で構成) 伝送装置 制御ソフト開発 ココ WF: Water Fall HW: Hardware SW: Software
Copyright 2016 FUJITSU LIMITED 5 特徴 (続き) 顧客までの遠い距離 業務ドメインと背景 顧客
営業 事業部 開発 商談 開発方針 開発委託 ココ いろいろとアジャイルには不利な条件
Copyright 2016 FUJITSU LIMITED 6 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 7 アジャイル導入あるある 開発 アジャイルでやって良いよ。 出来るよね? 一括請負契約だから・・・
開発プロセスが・・・ (仮想) 偉い人 え !?
Copyright 2016 FUJITSU LIMITED 8 アジャイル導入の壁 アジャイル開発 プロセス 技術 開発プロセス定義
契約形態 オブジェクト指向 テスト駆動 ユニットテスト CI コードレビュー 開発環境 リファクタリング 構成管理 技術の壁は現場で解決しないとダメ CI: Continuous Integration
Copyright 2016 FUJITSU LIMITED 9 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 10 アジャイルの技術プラクティス いったいどれから手を付ければ・・・ テスト駆動開発 回帰テスト ペアプログラミング
リファクタリング ユニットテスト シンプルデザイン 継続的インテグレーション コードの共同所有 岡本
Copyright 2016 FUJITSU LIMITED 11 とあるセミナーにて (2013年頃) 岡本 ユニットテストからやるのが オススメ
先達 アジャイルってどうすれば良いですか? なんでですか? 自動化して怒る上司はいないから (上手いこと言うな~) しかし、本当は深い示唆があった
Copyright 2016 FUJITSU LIMITED 12 アジャイル開発 ユニットテストの前提と価値 ユニットテスト 良い設計 オブジェクト指向
リファクタリング CI 繰り返し開発 環境 良い実装 構成管理 CIツール 前 提 価 値 ユニットテストはアジャイルの肝
Copyright 2016 FUJITSU LIMITED 13 (参考)アジャイル実践企業の実態調査 (出典:牛尾剛 「アジャイル・DevOps 実践企業サーベイ(2016)」 )
半数以上のチームで ユニットテストが 十分に出来ていない
Copyright 2016 FUJITSU LIMITED 14 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 15 従来の単体試験(手動テスト)を ユニットテストに置き換えてみた これらの内容を開発計画に明記した プロセス 従来
今回 試験項目書 テストコード 試験手順書 テストコード 試験項目/手順レビュー テストコードのレビュー 試験消化作業 “make check” 叩く or CIで自動的に実施
Copyright 2016 FUJITSU LIMITED 16 現実 : 初めてユニットテスト書く人が大半 勉強する 勉強会の開催
(エース/キーマンを講師に) テストコード/ノウハウを共有 1h/週程度を、業務と別枠で確保 技術 勉強会 読書 (押し売り)
Copyright 2016 FUJITSU LIMITED 17 開発マシンの管理者になる スピード感のために自分で動く 各種環境/ツールの導入 環境 環境構築の主導権を握る
目的 導入環境/ツール CI環境 Jenkins メトリクス測定 gcov/SonarQube コード管理(VCS) git/RhodeCode チケット管理(ITS) Redmine テストフレームワーク Google Test
Copyright 2016 FUJITSU LIMITED 18 構築した環境の全体像 Jenkins (CI) (チケット管理) (コード管理)
(ユニットテスト) (コードレビュー) Project-A
Copyright 2016 FUJITSU LIMITED 19 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 20 解決法 自分でテストコード書いて試してみた 結論 想定の範囲内でテストコードは書ける 逆に試験の実行時間は激減する
効率について (具体的な結果は後述) テストコード書く時間ある? 手動でテストした方が早くない?
Copyright 2016 FUJITSU LIMITED 21 解決法 (なし) 結論 最初のイテレーションでやってみる ダメならそこで手動テストに戻せば良い
品質について (具体的な結果は後述) 手動テストと同じ品質出せる?
Copyright 2016 FUJITSU LIMITED 22 工夫したこと 実装の中身はコードレビューで担保 テストカバレッジを測定して安心感を得る 心配な所は手動でホワイトボックスもやる 結論
ブラックボックステストでOKとする ブラックボックステストについて ブラックボックステストで良い? 従来はホワイトボックスだけど
Copyright 2016 FUJITSU LIMITED 23 例) カバレッジデータ
Copyright 2016 FUJITSU LIMITED 24 例) カバレッジデータ テスト済 テスト未 ↓
テストコード追加 or 手動でテストする 可視化して安心感を得る
Copyright 2016 FUJITSU LIMITED 25 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 26 今回の開発概要 項目 内容 開発装置 伝送装置の制御ファーム
開発言語 C++ 開発メンバ数 13人 開発規模 プロダクトコード 約30 KStep テストコード 約30 KStep テストカバレッジ 約80% (ラインカバレッジ) 同時期に他の3チームでも類似の開発を 行ったため、結果の比較を行う ユニットテストの実施は岡本チームのみ
Copyright 2016 FUJITSU LIMITED 27 効率について • 基準の開発効率をクリア • 他チーム比でも良好な結果
岡本チーム 基準値
Copyright 2016 FUJITSU LIMITED 28 効率について • 繰り返し開発でも試験工数は爆発せず • 絶対値でも基準の範囲内(従来と同等)
実際にはイテレーションを 3回まわしている ① ② ③
Copyright 2016 FUJITSU LIMITED 29 品質について • 他チーム比でも良好な結果
Copyright 2016 FUJITSU LIMITED 30 品質について • 不具合の検出時期が上流にシフト • ユニットテストで品質を確保可能
上流で検出 品質確保
Copyright 2016 FUJITSU LIMITED 31 その他の効果 (エピソード#1) 岡本 なんかテストがFailするんですが・・・ メンバ
いつから? いや、毎日テスト流そうよ!! CIの本当の価値を認識 2週間前までは動いてました・・・
Copyright 2016 FUJITSU LIMITED 32 その他の効果 (エピソード#2) 岡本 なんかテストが書き難いんですが・・・ メンバ
どうして? それ、ソフトの造りが悪いよね 良い設計と実装の価値を認識 前準備とか与えるデータを 用意するのが大変すぎて・・・
Copyright 2016 FUJITSU LIMITED 33 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 34 導入したプラクティス一覧 カテゴリ プラクティス 技術 コードの共同所有
バージョン管理 自動ビルド 継続的インテグレーション シンプル設計 リファクタリング インクリメンタル開発 自動化された回帰テスト ユニットテスト
Copyright 2016 FUJITSU LIMITED 35 導入したプラクティス一覧 カテゴリ プラクティス プロセス 日次ミーティング
(朝会) かんばん 定期的なふりかえり ファシリテーション
Copyright 2016 FUJITSU LIMITED 36 自己紹介と背景 アジャイルについて 技術プラクティス 導入のためにやったこと 導入のときに悩んだこと
導入の効果 導入したプラクティス まとめ
Copyright 2016 FUJITSU LIMITED 37 ボトムアップからのチャレンジは可能 現場は勇気をもってやれば良い ユニットテストで従来の単体テストを 代替することは可能 効率/品質共に致命的な問題はない
併用するという選択肢もある 継続と改善が大事 とある現場の単発事例で終わらせない 見える形で実績を積み上げて定着させる まとめ
Copyright 2016 FUJITSU LIMITED 38 アジャイルとかWFとか関係ない 技術プラクティスはプロセスに依らない WFでもやれば良い (やるべき) 技術は超大事
エンジニア/開発部門の根幹 人とチームを大事にする 技術は人/チームに宿る チームを作り上げるには手間と時間が必要 気づき
INTERNAL USE ONLY INTERNAL USE ONLY Copyright 2010 FUJITSU LIMITED