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
Submit search
EN
Uploaded by
Rakuten Group, Inc.
PDF, PPTX
4,903 views
大規模ソフトウェア開発とテストの経験について
吉岡 弘隆、楽天株式会社 『TDD Boot Camp 大阪』 講演資料 25年以上のソフトウェア開発経験について、ソフトウェアのテスト、 日々の作業などを、実例を交えてお話します。
Read more
4
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 48
2
/ 48
3
/ 48
4
/ 48
5
/ 48
6
/ 48
7
/ 48
8
/ 48
9
/ 48
10
/ 48
11
/ 48
12
/ 48
13
/ 48
14
/ 48
15
/ 48
16
/ 48
17
/ 48
18
/ 48
19
/ 48
20
/ 48
21
/ 48
22
/ 48
23
/ 48
24
/ 48
25
/ 48
26
/ 48
27
/ 48
28
/ 48
29
/ 48
30
/ 48
31
/ 48
32
/ 48
33
/ 48
34
/ 48
35
/ 48
36
/ 48
37
/ 48
38
/ 48
39
/ 48
40
/ 48
41
/ 48
42
/ 48
43
/ 48
44
/ 48
45
/ 48
46
/ 48
47
/ 48
48
/ 48
More Related Content
PDF
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
by
Sugimoto Chizuru
PDF
ソフトウェアテストの歴史と近年の動向
by
Keizo Tatsumi
PDF
RESTfulとは
by
星影 月夜
PPTX
30分で分かる!OSの作り方
by
uchan_nos
PDF
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
by
健人 井関
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PPTX
マスタデータの管理と運用について
by
Kentarou Takeda
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
by
Sugimoto Chizuru
ソフトウェアテストの歴史と近年の動向
by
Keizo Tatsumi
RESTfulとは
by
星影 月夜
30分で分かる!OSの作り方
by
uchan_nos
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
by
健人 井関
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
マスタデータの管理と運用について
by
Kentarou Takeda
What's hot
PDF
電子署名(PKI)ハンズオン資料 V1.00
by
Naoto Miyachi
PDF
フリーでやろうぜ!セキュリティチェック!
by
zaki4649
PDF
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
PDF
ドメイン駆動設計という仕事の流儀
by
増田 亨
PDF
DBREから始めるデータベースプラットフォーム
by
Insight Technology, Inc.
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
PDF
Json型の使い方
by
tsudaa
PDF
Open Policy Agent (OPA) 入門
by
Motonori Shindo
PDF
Scapyで作る・解析するパケット
by
Takaaki Hoyo
PDF
MagicOnion入門
by
torisoup
PDF
Kubernetesを使う上で抑えておくべきAWSの基礎概念
by
Shinya Mori (@mosuke5)
PDF
ドメインオブジェクトの設計ガイドライン
by
増田 亨
PDF
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
PDF
cloudpackサーバ仕様書(サンプル)
by
iret, Inc.
PDF
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
by
Yoshio Hanawa
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
PDF
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
by
Yahoo!デベロッパーネットワーク
PPTX
お絵かきのお話(~nw構成図ってどんな感じで書いてます?~)
by
Tatsuya Maruno
PDF
OAuth 2.0のResource Serverの作り方
by
Hitachi, Ltd. OSS Solution Center.
電子署名(PKI)ハンズオン資料 V1.00
by
Naoto Miyachi
フリーでやろうぜ!セキュリティチェック!
by
zaki4649
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
ドメイン駆動設計という仕事の流儀
by
増田 亨
DBREから始めるデータベースプラットフォーム
by
Insight Technology, Inc.
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
Json型の使い方
by
tsudaa
Open Policy Agent (OPA) 入門
by
Motonori Shindo
Scapyで作る・解析するパケット
by
Takaaki Hoyo
MagicOnion入門
by
torisoup
Kubernetesを使う上で抑えておくべきAWSの基礎概念
by
Shinya Mori (@mosuke5)
ドメインオブジェクトの設計ガイドライン
by
増田 亨
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
cloudpackサーバ仕様書(サンプル)
by
iret, Inc.
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
by
Yoshio Hanawa
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
by
Yahoo!デベロッパーネットワーク
お絵かきのお話(~nw構成図ってどんな感じで書いてます?~)
by
Tatsuya Maruno
OAuth 2.0のResource Serverの作り方
by
Hitachi, Ltd. OSS Solution Center.
Similar to 大規模ソフトウェア開発とテストの経験について
PDF
TDDBC osaka 2012/06/02
by
Hiro Yoshioka
PDF
テスト勉強会よしおか100311 1
by
Hiro Yoshioka
PPT
Distributed Agile using UML
by
Kenji Hiranabe
PDF
ソフトウェア開発の現場風景
by
Koichi ITO
PDF
GCSアジャイル開発を使ったゲームの作り方
by
Hiroyuki Tanaka
PPTX
20151127 agile japanpreseminar_公開用
by
Makiko Nakasato
PDF
20151127 Agile Japan ビギナー向けセミナー
by
麻記子 中佐藤
PDF
"Ordinary" System Development
by
Shintaro Kakutani
PDF
Code Reading at Security and Programming camp 2011
by
Hiro Yoshioka
PDF
Programming camp code reading
by
Hiro Yoshioka
PDF
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
PDF
Code complete ch22_developper_test
by
Sho Shimauchi
PDF
アート・オブ・アジャイル・デベロップメント読書会#1
by
Sosuke Kimura
PDF
Agile japan2010 rakuten様プレゼン資料
by
Akiko Kosaka
PDF
Software Engineering And Role of Agile
by
Kenji Hiranabe
PDF
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
PDF
AJ2010_20100409_maegawasensei
by
Akiko Kosaka
PDF
Agile Estimating And Planning
by
Eiwa System Management, Inc.
PDF
大崎的デリバリー第2章
by
Koji Takahara
PDF
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
by
Ryutaro YOSHIBA
TDDBC osaka 2012/06/02
by
Hiro Yoshioka
テスト勉強会よしおか100311 1
by
Hiro Yoshioka
Distributed Agile using UML
by
Kenji Hiranabe
ソフトウェア開発の現場風景
by
Koichi ITO
GCSアジャイル開発を使ったゲームの作り方
by
Hiroyuki Tanaka
20151127 agile japanpreseminar_公開用
by
Makiko Nakasato
20151127 Agile Japan ビギナー向けセミナー
by
麻記子 中佐藤
"Ordinary" System Development
by
Shintaro Kakutani
Code Reading at Security and Programming camp 2011
by
Hiro Yoshioka
Programming camp code reading
by
Hiro Yoshioka
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
Code complete ch22_developper_test
by
Sho Shimauchi
アート・オブ・アジャイル・デベロップメント読書会#1
by
Sosuke Kimura
Agile japan2010 rakuten様プレゼン資料
by
Akiko Kosaka
Software Engineering And Role of Agile
by
Kenji Hiranabe
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
AJ2010_20100409_maegawasensei
by
Akiko Kosaka
Agile Estimating And Planning
by
Eiwa System Management, Inc.
大崎的デリバリー第2章
by
Koji Takahara
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
by
Ryutaro YOSHIBA
More from Rakuten Group, Inc.
PDF
EPSS (Exploit Prediction Scoring System)モニタリングツールの開発
by
Rakuten Group, Inc.
PPTX
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
by
Rakuten Group, Inc.
PDF
楽天における安全な秘匿情報管理への道のり
by
Rakuten Group, Inc.
PDF
What Makes Software Green?
by
Rakuten Group, Inc.
PDF
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
by
Rakuten Group, Inc.
PDF
DataSkillCultureを浸透させる楽天の取り組み
by
Rakuten Group, Inc.
PDF
大規模なリアルタイム監視の導入と展開
by
Rakuten Group, Inc.
PDF
楽天における大規模データベースの運用
by
Rakuten Group, Inc.
PDF
楽天サービスを支えるネットワークインフラストラクチャー
by
Rakuten Group, Inc.
PDF
楽天の規模とクラウドプラットフォーム統括部の役割
by
Rakuten Group, Inc.
PDF
Rakuten Services and Infrastructure Team.pdf
by
Rakuten Group, Inc.
PDF
The Data Platform Administration Handling the 100 PB.pdf
by
Rakuten Group, Inc.
PDF
Supporting Internal Customers as Technical Account Managers.pdf
by
Rakuten Group, Inc.
PDF
Making Cloud Native CI_CD Services.pdf
by
Rakuten Group, Inc.
PDF
How We Defined Our Own Cloud.pdf
by
Rakuten Group, Inc.
PDF
Travel & Leisure Platform Department's tech info
by
Rakuten Group, Inc.
PDF
Travel & Leisure Platform Department's tech info
by
Rakuten Group, Inc.
PDF
OWASPTop10_Introduction
by
Rakuten Group, Inc.
PDF
Introduction of GORA API Group technology
by
Rakuten Group, Inc.
PDF
100PBを越えるデータプラットフォームの実情
by
Rakuten Group, Inc.
EPSS (Exploit Prediction Scoring System)モニタリングツールの開発
by
Rakuten Group, Inc.
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
by
Rakuten Group, Inc.
楽天における安全な秘匿情報管理への道のり
by
Rakuten Group, Inc.
What Makes Software Green?
by
Rakuten Group, Inc.
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
by
Rakuten Group, Inc.
DataSkillCultureを浸透させる楽天の取り組み
by
Rakuten Group, Inc.
大規模なリアルタイム監視の導入と展開
by
Rakuten Group, Inc.
楽天における大規模データベースの運用
by
Rakuten Group, Inc.
楽天サービスを支えるネットワークインフラストラクチャー
by
Rakuten Group, Inc.
楽天の規模とクラウドプラットフォーム統括部の役割
by
Rakuten Group, Inc.
Rakuten Services and Infrastructure Team.pdf
by
Rakuten Group, Inc.
The Data Platform Administration Handling the 100 PB.pdf
by
Rakuten Group, Inc.
Supporting Internal Customers as Technical Account Managers.pdf
by
Rakuten Group, Inc.
Making Cloud Native CI_CD Services.pdf
by
Rakuten Group, Inc.
How We Defined Our Own Cloud.pdf
by
Rakuten Group, Inc.
Travel & Leisure Platform Department's tech info
by
Rakuten Group, Inc.
Travel & Leisure Platform Department's tech info
by
Rakuten Group, Inc.
OWASPTop10_Introduction
by
Rakuten Group, Inc.
Introduction of GORA API Group technology
by
Rakuten Group, Inc.
100PBを越えるデータプラットフォームの実情
by
Rakuten Group, Inc.
大規模ソフトウェア開発とテストの経験について
1.
よしおかひろたか
TDDBC@大阪 楽天株式会社 DU,開発アーキテクチャ部 よしおかひろたか |June 2nd, 2012 1
2.
よしおか
本日のメッセージ 開発者の皆さん、 テストを書こう テストを書く=テストコード+入力データ+期待する出力データ Excelでテストケースを作ることではない。 2
3.
アジェンダ • 大規模ソフトウェア開発におけるディリー
ビルド&リグレッションテスト – 民族誌的なソフトウェア開発経験のお話 3
4.
自己紹介 • 楽天、開発部、開発アーキテクチャ部、技術理事
よしおかひろたか • 2009年8月入社 • カーネル読書会の主宰者、DEBUG HACKS共著 ISBN978-4-87311-404-0 • twitter @hyoshiok http://d.hatena.ne.jp/hyoshiok http://someday-join-us.blogspot.jp/ 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.
学んだこと • ディリービルドによって、常に動作が確認されているも
のがある。 – どの機能が実装されていて、どの機能が実装されていないか が一目でわかる – 実装すべき機能のプライオリティが変更になったとしても、すぐ に対処可能 – スケジュールが遅延した場合、どの機能を落とすかの判断が 容易に可能。(どれが動いているかいないかを把握できている ので) – Oracle 8開発開始時には、オブジェクトリレーショナル機能が目 玉とされていたが、競合が競争力がなくなって行ったので、そ の機能の多くは次バージョンへ。 • 大規模ソフトウェア開発において俊敏性を高めるベスト プラクティスで、ソフトウェア製品開発では広く利用され ている。(例:マイクロソフトの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ファイルを書いた。 – テストスクリプトもテスト管理システムを利用して書 いた。テスト結果もメールした。 • チェックインの数、発見したバグの数、修正した バグの数などをグラフにすると、週単位での進 捗が見えた。(手書きw) 24
25.
バグ管理 • テストプログラムは、自分以外が実装した
分について書いた。(他人のコードをテス トする) • 発見したすべてのバグはバグデータベー ス(自作)に登録した。 – 110件くらいバグを発見したと思う。 – バグの分析などもした。3割くらいが未実装。 25
26.
新人のしつけ(自分のこと) • コードを書くとは? –
「プログラム書きましたよ」 – 「あれー、どこにある?チェックインした?」 – 「チェックインしました」 – 「あれコンパイルできないぞ」 – 「コンパイルエラーとりました」 – 「ところでテストした?」 – 「していません(てへ)。」 – 「…(怒)」 26
27.
エンジニアのイロハを教えてもらった •
マニュアルを読むこと • テストを書くこと • デバッグの仕方 • 質問の仕方 27
28.
学んだこと •
社内にはすごい人がいっぱいいる • 自分もそうなりたい • ソフトウェア開発プロセスのイロハ • 大規模分散開発のイメージ(未来像) • ソフトウェア国際化のイメージ(未来像) 28
29.
Samba3.0国際化対応の場合 •
オープンソースとコミュニティの対応 • 新参者がコミュニティに入るには • プロジェクトの流れ • オープンソースの都市伝説 • プログラマの日常 • リズム • 学んだこと 29
30.
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 30
31.
オープンソースとコミュニティ • 高い技術力とdisciplineを持ったハッカーによっ
て構成されている – 企業の開発者は企業の利益拡大 – 企業の開発者とコミュニティのハッカーの利害が一 致するとは限らない。しばしば相反する。 • パッチを送ったからといって受け入れられると は限らない。 – 技術的な問題というより、しばしばコミュニケーション の問題だったりする 31
32.
新参者がコミュニティに受け入れられるに
は • 何の実績もない人が受け入れられるには – 技術の問題ではなくコミュニケーションの問題と認識し た • Samba-jp(日本のコミュニティ)とSambaのコミュニティ の関係。両方に受け入れられる必要がある。 – テストをどんどん作って、発見した問題をバグデータ ベースにどんどん登録した。チームのメンバーは個人名 で登録。 – ついでにパッチなども投稿した。個人名で投稿。 – 直接会って話したり、メール、チャット、電話会議などで、 プロジェクトの紹介などを行った。 – コミュニティにデビューするには、自分たちの技術力を 理解してもらう必要がある。バグフィックスは最初の一 歩。 – 大きなパッチをいきなり送るのではなく、小さいバグ 32 フィックスの積み重ねで、徐々に信頼を得ていく。
33.
プロジェクトの流れ • ディリービルド、リグレッションテストの開発環境
を準備した。 • Sambaのテストフレームワークを利用し – テストケースの作成 – テストコードの作成 – テストの実施 – 不具合をbugzillaに登録 – 修正パッチを投稿 • 機能追加、修正などのパッチを適宜投稿。本家 にマージしてもらう。 • 英語のホームページ、ドキュメントなども用意し た • フェースツーフェースの会議、メール、チャット、 33 電話など様々な方法をとった
34.
オープンソースの都市伝説 • ハッカーは無法者? –
極めて高い技術力とdiscipline(規律)を持つ – コミュニティの価値を大切にする – プロフェッショナルである 34
35.
プログラマの日常 •
やることリストの確認 • Bugzillaのチェック • テストの追加 • パッチの作成 – リグレッションが起こっていないことを確認 – 新機能が実装されていることを確認 • コミュニティへ投稿 – メーリングリスト、電話、チャット、などなど 35
36.
リズム • 作成したテスト数が見える • バグの数が既知
– 最初にテストがあるので、そのテストで発見 した数が初期値になる – Samba3.0は今ここにあるが国際化の機能が ない。(バグの数=実装すべき機能) • バグの数を減らしていくのがリズム 36
37.
学んだこと • OSSもテストファーストできた • 何をやりたいかをテストで表現した
WHAT • テストを作ることによってオリジナル製品 の挙動を深く理解した • プロジェクトマネージャーとして、プロジェ クトの進捗が、テストの進捗、残バグ数に よって見える化されているので、安心。 37
38.
ちょっとした思い • プロフェッショナルって • 変化を許容すること •
プログラマに必要な3つのチカラ 38
39.
プロフェッショナルについて • ソフトウェアは人が作る –
自分がプロフェッショナルになるしかない… – アスリートが毎日トレーニングしているように われわれはトレーニングをしているだろうか 39
40.
変化を許容することについて • 環境は変化する • 自分は変化しているだろうか •
成長しているだろうか 40
41.
プログラマに必要な3つのチカラ • ソースコードリーディング • テスト •
デバッグ • ワークショップや勉強会を開催していきた い~~~ 41
42.
経験則 • テストを書かない
プロフェッショナルはいない (プログラマ的な意味で) • テストのないコードは レガシーコードだ。 • 読書会しましょう~ レガシーコード改善ガイド 保守開発のためのリファクタリング、翔泳社 http://books.rakuten.co.jp/rb/6121689/ 42
43.
• 公理1:すべてのプログラムは
テストをしなければいけない。 • では、どうテストをするか – A:人がやる – B:テストコードを書いて、それを実行する – 正解:B – 証明:自明。 43
44.
テストを作ると • システムの振る舞い(WHAT)を
記したことになる – テストを作ることによって、システムの深い理 解を得られる – 安心感を得られる(心の平静を保てる) 44
45.
テストがあると • 変更の影響が即座にわかる –
影響範囲がわからなくて、 塩漬けではなく、 どんどん積極的に変更できる >変更容易性、アジリティ向上 – 安心である。(心の平静が保てる) 45
46.
テストがあると • 機能を確実に実装したことを
確認できる。 – 手作業による確認は、もれやミスが発生する。 コストが高いし、なにより楽しくない。 – 機械が実行してくれるので、楽である。 – 安心である。 (心の平静が保てる) 46
47.
テストがあると • 変更容易性があがり、
運用コストが下がる – OSやHWなどシステムを変更したときも、そ の影響がすぐにわかる – 安心である。 (心の平静が保てる) 47
48.
開発者の皆さん、 テストを書こう テストを書いてプロフェッショナルになろう 世界へ行こう
ご参加 おまちしてます 48
Download