Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Hiro Yoshioka
PDF, PPTX
7,645 views
テスト勉強会よしおか100311 1
大規模ソフトウェア開発におけるディリービルド&リグレッションテストについて。 OracleやDECにおける経験を話します。Samba3.0国際化のプロジェクトの経験も紹介します。
Technology
◦
Business
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 49
2
/ 49
3
/ 49
4
/ 49
5
/ 49
6
/ 49
7
/ 49
8
/ 49
9
/ 49
10
/ 49
11
/ 49
12
/ 49
13
/ 49
14
/ 49
15
/ 49
16
/ 49
17
/ 49
18
/ 49
19
/ 49
20
/ 49
21
/ 49
22
/ 49
23
/ 49
24
/ 49
25
/ 49
26
/ 49
27
/ 49
28
/ 49
29
/ 49
30
/ 49
31
/ 49
32
/ 49
33
/ 49
34
/ 49
35
/ 49
36
/ 49
37
/ 49
38
/ 49
39
/ 49
40
/ 49
41
/ 49
42
/ 49
43
/ 49
44
/ 49
45
/ 49
46
/ 49
47
/ 49
48
/ 49
49
/ 49
More Related Content
PDF
TDDBC osaka 2012/06/02
by
Hiro Yoshioka
PDF
「継続的デリバリー」読書会 第3章 継続的デリバリー
by
Norikazu Hiraki
PDF
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
by
Takuma SHIRAISHI
PPTX
Software Test Basic
by
Akinari Tsugo
PDF
継続的デリバリー読書会 第 7 章 コミットステージ
by
Yasutomo Arai
PPSX
開発生産性と品質向上を実現する開発基盤の構築
by
Katsuhiro Aizawa
PPTX
少し分かった気になるテスト駆動開発
by
lnial
PDF
Jenkinsを利用したCI、弊社導入事例
by
Ryoichi Obara
TDDBC osaka 2012/06/02
by
Hiro Yoshioka
「継続的デリバリー」読書会 第3章 継続的デリバリー
by
Norikazu Hiraki
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
by
Takuma SHIRAISHI
Software Test Basic
by
Akinari Tsugo
継続的デリバリー読書会 第 7 章 コミットステージ
by
Yasutomo Arai
開発生産性と品質向上を実現する開発基盤の構築
by
Katsuhiro Aizawa
少し分かった気になるテスト駆動開発
by
lnial
Jenkinsを利用したCI、弊社導入事例
by
Ryoichi Obara
What's hot
PPTX
Jenkinsを使った初めての継続的インテグレーション
by
dcubeio
PPTX
バイオインフォマティクスのための開発基礎知識
by
丈 宮本
PDF
Jenkins+Play!で気軽にCI
by
Takafumi Ikeda
PDF
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
by
Developers Summit
PDF
提案:Qaも実装に踏み込んでみよう
by
Kosuke Fujisawa
PDF
CodeZineAcademy TDD実践講座PR資料
by
Yasui Tsutomu
PDF
デプロイメントパイプラインって何?
by
ke-m kamekoopa
PDF
Dockerとdev ops
by
Hiroshi Maekawa
PDF
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
by
Developers Summit
PDF
SICE 2020 Rtm tutorial 2_online_ja
by
openrtm
PDF
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
by
Game Tools & Middleware Forum
PPTX
Klocworkのご紹介
by
Masaru Horioka
PPTX
テストしなイカ? Seleniumで自動ブラウザテスト
by
Ohishi Mikage
PPTX
静的解析のROI
by
Masaru Horioka
PDF
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
by
智治 長沢
PPTX
没セッション 知識ゼロから学んだソフトウェアテスト
by
伸男 伊藤
PPTX
第9回Jenkins勉強会 超簡単Pipeline講座
by
Hiroko Tamagawa
PDF
My style agile
by
Kenji Hiranabe
Jenkinsを使った初めての継続的インテグレーション
by
dcubeio
バイオインフォマティクスのための開発基礎知識
by
丈 宮本
Jenkins+Play!で気軽にCI
by
Takafumi Ikeda
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
by
Developers Summit
提案:Qaも実装に踏み込んでみよう
by
Kosuke Fujisawa
CodeZineAcademy TDD実践講座PR資料
by
Yasui Tsutomu
デプロイメントパイプラインって何?
by
ke-m kamekoopa
Dockerとdev ops
by
Hiroshi Maekawa
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
by
Developers Summit
SICE 2020 Rtm tutorial 2_online_ja
by
openrtm
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
by
Game Tools & Middleware Forum
Klocworkのご紹介
by
Masaru Horioka
テストしなイカ? Seleniumで自動ブラウザテスト
by
Ohishi Mikage
静的解析のROI
by
Masaru Horioka
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
by
智治 長沢
没セッション 知識ゼロから学んだソフトウェアテスト
by
伸男 伊藤
第9回Jenkins勉強会 超簡単Pipeline講座
by
Hiroko Tamagawa
My style agile
by
Kenji Hiranabe
Viewers also liked
PDF
DevLOVE LT: Do you know axes of software testing?
by
Toshiyuki Kawanishi
PPTX
探索的テストから考える現場の工夫(Slideshare)
by
Masao Tsuzuki
PDF
探索的テストを探索する
by
Masao Tsuzuki
PDF
Agile Software Development advanced course (PBL) at AIIT, 2015
by
Hiro Yoshioka
PPTX
記事タイトルづくりで学ぶオモシロイ企画のつくり方(ワークショップ)
by
Nobuhiro Kawaharasaki
PDF
プレゼン初心者にありがちなアンチパターン
by
真俊 横田
PDF
探索的テスト入門
by
H Iseri
PDF
概説 テスト分析
by
崇 山﨑
PDF
ドキュメントシステムはこれを使え2015年版
by
Keiichiro Shikano
PDF
デザイナのためのGit入門
by
dsuke Takaoka
PDF
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
by
swwwitch inc.
PDF
どうしてプレゼン研究会を始めたのか
by
Masahito Zembutsu
PDF
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
by
Tsutomu Sogitani
PDF
しょぼいプレゼンをパワポのせいにするな! by @jessedee
by
「MakeLeaps」請求書の作成、管理、郵送
PDF
いつやるの?Git入門
by
Masakazu Matsushita
DevLOVE LT: Do you know axes of software testing?
by
Toshiyuki Kawanishi
探索的テストから考える現場の工夫(Slideshare)
by
Masao Tsuzuki
探索的テストを探索する
by
Masao Tsuzuki
Agile Software Development advanced course (PBL) at AIIT, 2015
by
Hiro Yoshioka
記事タイトルづくりで学ぶオモシロイ企画のつくり方(ワークショップ)
by
Nobuhiro Kawaharasaki
プレゼン初心者にありがちなアンチパターン
by
真俊 横田
探索的テスト入門
by
H Iseri
概説 テスト分析
by
崇 山﨑
ドキュメントシステムはこれを使え2015年版
by
Keiichiro Shikano
デザイナのためのGit入門
by
dsuke Takaoka
SINAP TALK Vol.04「プレゼンテーションについて」鷹野雅弘
by
swwwitch inc.
どうしてプレゼン研究会を始めたのか
by
Masahito Zembutsu
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
by
Tsutomu Sogitani
しょぼいプレゼンをパワポのせいにするな! by @jessedee
by
「MakeLeaps」請求書の作成、管理、郵送
いつやるの?Git入門
by
Masakazu Matsushita
Similar to テスト勉強会よしおか100311 1
PDF
大規模ソフトウェア開発とテストの経験について
by
Rakuten Group, Inc.
PDF
ソフトウェア開発の現場風景
by
Koichi ITO
PDF
Code Reading at Security and Programming camp 2011
by
Hiro Yoshioka
PPT
Distributed Agile using UML
by
Kenji Hiranabe
PDF
GCSアジャイル開発を使ったゲームの作り方
by
Hiroyuki Tanaka
PDF
Code complete ch22_developper_test
by
Sho Shimauchi
PDF
Programming camp code reading
by
Hiro Yoshioka
PDF
AJ2010_20100409_maegawasensei
by
Akiko Kosaka
PPTX
20151127 agile japanpreseminar_公開用
by
Makiko Nakasato
PDF
"Ordinary" System Development
by
Shintaro Kakutani
PDF
20151127 Agile Japan ビギナー向けセミナー
by
麻記子 中佐藤
PDF
大崎的デリバリー第2章
by
Koji Takahara
PDF
Agile japan2010 rakuten様プレゼン資料
by
Akiko Kosaka
PDF
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
PPT
レガシーコード読書会 20120618
by
Suguru Shirai
PDF
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
by
Ryutaro YOSHIBA
PDF
Software Engineering And Role of Agile
by
Kenji Hiranabe
PDF
Agile Estimating And Planning
by
Eiwa System Management, Inc.
PDF
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
PDF
【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
by
Developers Summit
大規模ソフトウェア開発とテストの経験について
by
Rakuten Group, Inc.
ソフトウェア開発の現場風景
by
Koichi ITO
Code Reading at Security and Programming camp 2011
by
Hiro Yoshioka
Distributed Agile using UML
by
Kenji Hiranabe
GCSアジャイル開発を使ったゲームの作り方
by
Hiroyuki Tanaka
Code complete ch22_developper_test
by
Sho Shimauchi
Programming camp code reading
by
Hiro Yoshioka
AJ2010_20100409_maegawasensei
by
Akiko Kosaka
20151127 agile japanpreseminar_公開用
by
Makiko Nakasato
"Ordinary" System Development
by
Shintaro Kakutani
20151127 Agile Japan ビギナー向けセミナー
by
麻記子 中佐藤
大崎的デリバリー第2章
by
Koji Takahara
Agile japan2010 rakuten様プレゼン資料
by
Akiko Kosaka
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
レガシーコード読書会 20120618
by
Suguru Shirai
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
by
Ryutaro YOSHIBA
Software Engineering And Role of Agile
by
Kenji Hiranabe
Agile Estimating And Planning
by
Eiwa System Management, Inc.
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
by
Developers Summit
More from Hiro Yoshioka
PDF
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
by
Hiro Yoshioka
PDF
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
by
Hiro Yoshioka
PDF
不揮発性メモリ(NVM)とはなにか
by
Hiro Yoshioka
PDF
続・人生100年時代の学び方
by
Hiro Yoshioka
PDF
人生100年時代における学び方 定年後の学生生活
by
Hiro Yoshioka
PDF
Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persisten...
by
Hiro Yoshioka
PDF
人生100年時代の学び方、脳には可塑性がある
by
Hiro Yoshioka
PDF
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
by
Hiro Yoshioka
PDF
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
by
Hiro Yoshioka
PDF
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
by
Hiro Yoshioka
PDF
未経験プログラマがコボルコンパイラを作った話 #compiler_study
by
Hiro Yoshioka
PDF
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
by
Hiro Yoshioka
PDF
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
by
Hiro Yoshioka
PDF
理科系の作文技術
by
Hiro Yoshioka
PDF
質問される力 #TechGirls
by
Hiro Yoshioka
PDF
Oracle vs Google API 著作権裁判を考える
by
Hiro Yoshioka
PDF
Using oss at an internet company and hacker culture
by
Hiro Yoshioka
PDF
Be Hacker
by
Hiro Yoshioka
PDF
Project Based Learning using by PaaS
by
Hiro Yoshioka
PDF
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
by
Hiro Yoshioka
Infra study 2nd #1 人生100年時代の学び方,定年後の大学院生活
by
Hiro Yoshioka
Infra study 2nd #1「インフラ技術者・研究者としてのキャリア」
by
Hiro Yoshioka
不揮発性メモリ(NVM)とはなにか
by
Hiro Yoshioka
続・人生100年時代の学び方
by
Hiro Yoshioka
人生100年時代における学び方 定年後の学生生活
by
Hiro Yoshioka
Thesis introduction "RECIPE : Converting Concurrent DRAM Indexes to Persisten...
by
Hiro Yoshioka
人生100年時代の学び方、脳には可塑性がある
by
Hiro Yoshioka
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、「私のような仕事につく方法」、2019/06/23 DevLOVE X Day 1 D-7
by
Hiro Yoshioka
OSSとの付き合い方。OSSから学んだこと。OSS貢献者賞受賞講演
by
Hiro Yoshioka
エンジニア人生と定年退職、人生100年時代のエンジニアの生き方、デブサミ 2019 【15-A-8】
by
Hiro Yoshioka
未経験プログラマがコボルコンパイラを作った話 #compiler_study
by
Hiro Yoshioka
Godel, Escher, Bach: an Eternal Golden Braid, reading club, Chapter 12
by
Hiro Yoshioka
海外から見た東京 〜人生100年時代の働き方〜 #efsta56
by
Hiro Yoshioka
理科系の作文技術
by
Hiro Yoshioka
質問される力 #TechGirls
by
Hiro Yoshioka
Oracle vs Google API 著作権裁判を考える
by
Hiro Yoshioka
Using oss at an internet company and hacker culture
by
Hiro Yoshioka
Be Hacker
by
Hiro Yoshioka
Project Based Learning using by PaaS
by
Hiro Yoshioka
IT勉強会 Anatomy of IT Study groups, seminars, conferences in Japan
by
Hiro Yoshioka
テスト勉強会よしおか100311 1
1.
よしおかひろたか
テスト勉強会 楽天株式会社 開発部 アーキテクトGよしおかひろたか | 2010年3月12日 1
2.
よしおか
本日のメッセージ 開発者の皆さん、 テストを書こう テストを書く=テストコード+入力データ+期待する出力デー タ Excelでテストケースを作ることではない。 2
3.
アジェンダ • 大規模ソフトウェア開発におけるディ
リービルド&リグレッションテスト 3
4.
自己紹介 • 開発部、ACT課アーキテクトG、技術理事
よしおかひろたか • 2009年8月入社 • カーネル読書会の主宰者、DEBUG HACKS共著 ISBN978-4-87311-404-0 • twitter @hyoshiok http:// d.hatena.ne.jp/hyoshiok 4
5.
わたしの経験から • 大規模ソフトウェア開発の現場の経験をお
話する。 – ソフトウェア製品開発は受託開発とは相当異な る。 • 事例: – Oracle8の開発現場 – DEC Rdbの日本語化、国際化 – 日本語COBOL – Samba3.0国際化対応(オープンソースの場合) 5
6.
Oracleの場合 •
開発環境 • 開発プロセス • プログラマの日常 • リズム • チェックアウト、チェックイン • ディリービルド • リグレッションテスト • 学んだこと 6
7.
Oracle 8の場合 • わたしが参加した時期、1995年~2000年 •
Oracle8/8iあたりのころ • 開発環境:Sun Workstation、SunOSから Solaris • Clearcaseベースの開発環境。 – ファイルの仮想化。一人で複数のブランチを同 時に持てる。 • 例えば、Oracle 7.3用、Oracle 8用、Oracle 8.1用。バグ 修正、機能ごと、ちょっとした確認用などなど • check-outしたものはcheck-inするまで他の人には見え ない。 7
8.
開発プロセス(Oracleの場合) •
要求仕様作り(開発者) – 外部API、UIなどを決定する。 • 例:SQLのシンタックス、セマンティックスを定義する。 – リファレンスマニュアルのベースになる。 • 設計(開発者) – APIなどを決定したら、設計&実装になる。 • 実装(開発者) – コードを書く、テストを書く、テストをする • ディリービルド&リグレッションテスト(自動) – チェックインされた最新のコードをスクラッチからビルドして、リグレッションテ ストを実行。 • チェックインしたコードの概要と、テスト結果の概要が日々担当者にメールで送られる • 常に動くコードが毎日ある。 • 安定化プロセス – フィーチャーフリーズ(機能追加を凍結する) – コードフリーズ(重大なバグフィックス以外のチェックインを認めない) 8
9.
ソフトウェア製品開発のプログ
ラマ • 設計者が実装者でテストも書く • 一つの機能については、すべて知って いる。 • コーダーという人がいるわけではない 。 9
10.
プログラマの一日 •
朝会社に来る。 • コーヒーでも飲みながら、メールをチェックする。 – 担当のテストを確認する。 • 自分が昨日チェックインしたコードがリグレッションテストを壊していないか。 • 他の人のチェックインが、担当テストを壊していないか。 • 壊れている場合は、調査する。あるいは調査を依頼する。 • 仕掛の作業を行う。 – コードを書いたり、テストを流したり、あれやこれや。 – 全テストを流すと時間がかかるので、サブセットを流す – コードが安定したら当該ブランチの最新版にマージする • 自分の環境で動作確認ができたら、 – 同僚にレビュー依頼をして、コメントをもらう。特に問題がなさそうの場合、リリ ースマネージャーにチェックインの許可をもらう。 • 許可が出たら、チェックインする。 – 次の日はどきどきしながらリグレッションテストの結果を見る • 休暇の前に確認しないでチェックインをするな、という不文律 – http://d.hatena.ne.jp/hyoshiok/20040516#p1 10
11.
リズム • チェックアウトして • コードをいじって、テストを書いて、 •
テストを実行して、OKになるまで繰 り返して、 • 同僚にレビューしてもらって、 • リリースマネージャに許可をもらって 、 • チェックイン 11
12.
チェックアウト、チェックイン • 複数のブランチを同時にいじっている • バージョンがいくつか •
それぞれについて、バグフィックス、 機能変更、機能追加、機能ごとに別々 のブランチを切っておく。 • 最新のバージョンでバグフィックスし たものを昔のバージョンに適用するこ ともある。(バックポート) 12
13.
ディリービルド • 毎日大量のチェックインがある。数十
~ • 最新のソースからビルドする。 – コンパイルエラーが出るチェックインは 無条件にロールバックされる。 – 複数のビルドマシンで分散ビルド • 安定性に差こそあれ常に動くものがあ る。 – Oracle8の最初のビルドは前バージョン (Oracle 7.3)と同一。ここから始まる。 13
14.
リグレッションテスト • ディリービルドされた最新の実行イメージ
でリグレッションテスト(数千)を実行す る – 10数台(?)のサーバーマシンで何時間もかか る。 – テストコード、入力データを与えて、期待する 出力と実際の出力の差分を見る – diff(差分)が出たらそれを目視確認する。期待 する結果なのか、いなか。 – 新機能追加、バグフィックスの場合は対応する テストの追加、修正などを行う。 – リグレッションテストがあるので、既存の機能 の予期しない影響がすぐにわかる。リグレッシ ョンの発見。 14
15.
安定化プロセス • あるクライテリアで、安定化プロセスに入
る。 – 新機能の追加を凍結する(feature freeze)期間に 入る – バグ修正だけを行う – リグレッションテストのdiffの数を減少させる – テストの追加、実行だけをやって、製品の安定 化を図る。 – あるクライテリアで、重大なバグ修正以外は一 切変更を認めない(code freeze)期間に入る。 – バグ(不具合)はリリースノート等に記載し出 荷する 15
16.
学んだこと • ディリービルドによって、常に動作が確認されてい
るものがある。 – どの機能が実装されていて、どの機能が実装されていない かが一目でわかる – 実装すべき機能のプライオリティが変更になったとしても 、すぐに対処可能 – スケジュールが遅延した場合、どの機能を落とすかの判断 が容易に可能。(どれが動いているかいないかを把握でき ているので) • 大規模ソフトウェア開発において俊敏性を高めるベ ストプラクティスで、ソフトウェア製品開発では広 く利用されている。(例:マイクロソフトのOS開 発など) • 闘うプログラマー http://books.rakuten.co.jp/rb/6130084/ 16
17.
DEC Rdbの日本語化、国際化 • ソフトウェアの日本語化プロセス •
ビルド環境って • インターネット以前のソフトウェア開 発 • 学んだこと 17
18.
DEC Rdbの場合 • ソフトウェアの日本語化プロセス
– 米国本社で開発されたソフトウェアを日本で日 本語化した。(別のバイナリーになる) • 1980年代後半のころ • 参加人員:日本側開発者3名~。US側は100名前後 • 開発環境の入手 – ソースコードの入手 – ビルドスクリプト – テスト環境 • 開発環境構築 – VAX/VMS、OSの違い、コンパイラの違い、その他ツールの違 いなどなどで一筋縄では行かない場合も • 実際の開発 – ビルド&リグレッションテスト 18
19.
ビルド環境 • 開発環境を日米で完璧に一致させることは
難しい – もちろん仮想化環境などはない。ツール、コン パイラ、OSのバージョン • 社内ネットワークはあったが回線が細い – 100MBをコピーするのに足掛け3日とか • リグレッションテストの結果を確認するの が難しい。(開発環境が微妙に異なるので ) – 安定化させるのに2~3ヶ月かかることも。 19
20.
インターネット以前のソフトウ
ェア開発 • 大規模分散開発だったのだけど、 – 社内ネットワークの帯域は細かった – コミュニケーションは、メール、電子掲示板(VAX Notes) • 最終的には、本社に乗り込んで、ソースコードをマ ージした(1990年ごろ) • DECはOS(VMS)、ハードウェア(VAX)、ミドルウ ェア(Rdb)、コンパイラ、ツール、その他すべて内 製品。垂直統合型企業 • SQA (Software Quality Assurance)という部隊があっ た。 – OS/HW/ミドル:各レイヤーの互換性をリグレッションテ ストで確認 20
21.
学んだこと • 米国本社のエンジニアと一緒に働いた • すごいエンジニアがいっぱいいた •
ソフトウェア国際化のあるべき姿につ いてとことん議論できた • 大規模広域分散ソフトウェア開発のイ メージが持てた 21
22.
日本語COBOLの場合 • 非力なマシンでのソフトウェア開発 • コード管理システム、モジュール管理
システム、テスト管理システムなどの お話 • バグ管理 • エンジニアのイロハを教えてもらった • 学んだこと 22
23.
プロジェクト概要 • 日本語COBOLの開発 –
1984年~ – 3人(自分は新卒プログラマ) – 開発環境、VAX/VMS – 言語:BLISS、SCAN(独自の言語) • コード管理システム、モジュール管理 システム、コンパイラ、テスト管理シ ステム、バグ管理システム、すべて自 社製 23
24.
• 夜中の0時に、ビルドのバッチが動き出し、
その後テストを実行する。 – チェックインしたファイルのdiffをメールするよ うにした。 – 見よう見まねで、makeファイルを書いた。 – テストスクリプトもテスト管理システムを利用 して書いた。テスト結果もメールした。 • チェックインの数、発見したバグの数、修 正したバグの数などをグラフにすると、週 単位での進捗が見えた。 24
25.
バグ管理 • テストプログラムは、自分以外が実装
した分について書いた。(他人のコー ドをテストする) • 発見したすべてのバグはバグデータベ ース(自作)に登録した。 – 110件くらいバグを発見したと思う。 – バグの分析などもした。3割くらいが未実 装。 25
26.
エンジニアのイロハを教えても
らった • マニュアルを読むこと • テストを書くこと • デバッグの仕方 • 質問の仕方 26
27.
学んだこと •
社内にはすごい人がいっぱいいる • 自分もそうなりたい • ソフトウェア開発プロセスのイロハ • 大規模分散開発のイメージ(未来像) • ソフトウェア国際化のイメージ(未来 像) 27
28.
Samba3.0国際化対応の場合 •
オープンソースとコミュニティの対応 • 新参者がコミュニティに入るには • プロジェクトの流れ • オープンソースの都市伝説 • プログラマの日常 • リズム • 学んだこと 28
29.
Samba3.0国際化 • プロジェクト概要 –
Samba2.xは日本人コミュニティが開発した日本 語パッチがあったが、Samba3.0になって、内部 コードがUnicodeになったため当該パッチが利用 できなくなりShiftJIS関連の問題が発生した。 – Unicode対応、テストの追加など – 2003年ごろ – http://www.miraclelinux.com/technet/samba30/index.html – http://d.hatena.ne.jp/hyoshiok/20041022 29
30.
オープンソースとコミュニティ • 高い技術力とdisciplineを持ったハッカーによ
って構成されている – 企業の開発者は企業の利益拡大 – 企業の開発者とコミュニティのハッカーの利害 が一致するとは限らない。しばしば相反する。 • パッチを送ったからといって受け入れられ るとは限らない。 – 技術的な問題というより、しばしばコミュニケ ーションの問題だったりする 30
31.
新参者がコミュニティに受け入れら
れるには • 何の実績もない人が受け入れられるには – 技術の問題ではなくコミュニケーションの問題だと認識し た • Samba-jp(日本のコミュニティ)とSambaのコミュニティの 関係。両方に受け入れられる必要がある。 – テストをどんどん作って、発見した問題をバグデータベー スにどんどん登録した。チームのメンバーは個人名で登録 。 – ついでにパッチなども投稿した。個人名で投稿。 – 直接会って話したり、メール、チャット、電話会議などで 、プロジェクトの紹介などを行った。 – コミュニティにデビューするには、自分たちの技術力を理 解してもらう必要がある。バグフィックスは最初の一歩。 – 大きなパッチをいきなり送るのではなく、小さいバグフィ ックスの積み重ねで、徐々に信頼を得ていく。 31
32.
プロジェクトの流れ • ディリービルド、リグレッションテストの開発環境を準備し
た。 • Sambaのテストフレームワークを利用し – テストケースの作成 – テストコードの作成 – テストの実施 – 不具合をbugzillaに登録 – 修正パッチを投稿 • 機能追加、修正などのパッチを適宜投稿。本家にマージして もらう。 • 英語のホームページ、ドキュメントなども用意した • フェースツーフェースの会議、メール、チャット、電話など 様々な方法をとった 32
33.
オープンソースの都市伝説 • ハッカーは無法者? –
極めて高い技術力とdiscipline(規律)を 持つ – コミュニティの価値を大切にする – プロフェッショナルである 33
34.
プログラマの日常 •
やることリストの確認 • Bugzillaのチェック • テストの追加 • パッチの作成 – リグレッションが起こっていないことを 確認 – 新機能が実装されていることを確認 • コミュニティへ投稿 – メーリングリスト、電話、チャット、な どなど 34
35.
リズム • 作成したテスト数が見える • バグの数が既知
– 最初にテストがあるので、そのテストで 発見した数が初期値になる – Samba3.0は今ここにあるが国際化の機能 がない。(バグの数=実装すべき機能) • バグの数を減らしていくのがリズム 35
36.
学んだこと • OSSもテストファーストできた • 何をやりたいかをテストで表現した
WHAT • テストを作ることによってオリジナル 製品の挙動を深く理解した • プロジェクトマネージャーとして、プ ロジェクトの進捗が、テストの進捗、 残バグ数によって見える化されている ので、安心。 36
37.
ちょっとした思い • プロフェッショナルって • 変化を許容すること •
プログラマに必要な3つのチカラ 37
38.
プロフェッショナルについて • ソフトウェアは人が作る –
自分がプロフェッショナルになるしかな い… – アスリートが毎日トレーニングしている ようにわれわれはトレーニングをしてい るだろうか 38
39.
変化を許容することについて • 環境は変化する • 自分は変化しているだろうか •
成長しているだろうか 39
40.
プログラマに必要な3つのチカ
ラ • ソースコードリーディング • テスト • デバッグ • ワークショップや勉強会を開催してい きたい~~~ 40
41.
経験則 • テストを書かない
プロフェッショナルはいない (プログラマ的な意味で) • テストのないコードは レガシーコードだ。 • 読書会しましょう~ レガシーコード改善ガイド 保守開発のためのリファクタリング、翔 泳社 http://books.rakuten.co.jp/rb/6121689/ 41
42.
• 公理1:すべてのプログラムは
テストをしなければいけない。 • では、どうテストをするか – A:人がやる – B:テストコードを書いて、それを実行す る – 正解:B – 証明:自明。 42
43.
テストを作ると • システムの振る舞い(WHAT)を
記したことになる – テストを作ることによって、システムの 深い理解を得られる – 安心感を得られる(心の平静を保てる) 43
44.
テストがあると • 変更の影響が即座にわかる –
影響範囲がわからなくて、 塩漬けではなく、 どんどん積極的に変更できる >変更容易性、アジリティ向上 – 安心である。(心の平静が保てる) 44
45.
テストがあると • 機能を確実に実装したことを
確認できる。 – 手作業による確認は、もれやミスが発生 する。コストが高いし、なにより楽しく ない。 – 機械が実行してくれるので、楽である。 – 安心である。 (心の平静が保てる) 45
46.
テストがあると • 変更容易性があがり、
運用コストが下がる – OSやHWなどシステムを変更したときも 、その影響がすぐにわかる – 安心である。 (心の平静が保てる) 46
47.
レガシーコード改善ガイド読書
会 • レガシーコード改善ガイドを読む • 世話役:アーキテクトGよしおかひろたか • 日程:木曜日、19時~20時30分ころ • やり方:分担で、説明して、参加者による 議論 • ペース:一回あたり60ページくらい進みた い。7回程度で全部を網羅したい • レガシーコードを改善して楽をしよう ご参加 おまちしてます 47
48.
開発者の皆さん、 テストを書こう テストを書いてプロフェッショナルにな ろう 世界へ
48
49.
49
Download