SlideShare a Scribd company logo
1 of 73
レガシーコード改善ガイド読書会
      第1回
      第1回
          2012/06/18
  CyberX  エンジニア 石川泰式
まえがき


• 最初はプログラマの心の中でけがれの
 ない水晶のように輝いていた設計が,
 時間が経つことで劣化し,悪くなった
 肉のように腐敗していく
まえがき


• 最初に必要だと言ったもので顧客が満
 足してくれさえすれば,設計は問題な
 かったはずだ,と考えて自分を慰める
• 要求を変えてくる顧客がいけない
まえがき


• 「要求変更が発生しました」要求の変
 更に耐えられない設計は,そもそも悪
 い設計です
• 優秀なソフトウェア開発者は皆,変更
 に耐え得る設計を目指している
まえがき

• これはどうにも困難な課題に思える
• 実際あまりに困難なため,これまでに
 開発されたほとんどすべてのシステム
 がゆっくりと衰弱し腐敗していく
• この腐敗したプログラムを「レガシー
 コード」と特別な名前と名付けた
まえがき


• プログラミングの最初の喜びが強烈だ
 ったとしても,レガシーコードに取り
 組む苦痛のせいで,その炎が消されて
 しまうことも少なくない.
まえがき


• 私たちの多くは,コードがレガシーに
 なることを「防ぐ」方法を探し続けて
 きた.
• Michael Feathers は,私たちの多くが見
 落としていた点を見抜いた.
まえがき


• それは,防ぐだけでは不十分だという
 こと
• 腐敗を防ごうとするだけでは不十分で
 あり,逆戻りさせる必要がある.
まえがき



• 本書で取り上げるテーマは,腐敗を逆
 戻りさせる方法
まえがき

• 絡み合った,不透明で入り組んだシス
 テムを,ゆっくりと,徐々に,1つず
 つ,1歩ずつ,簡素できちんと構造化
 された,優れた設計に変えていくため
 の本
• エントロピーを逆転させる.
まえがき

• 腐敗を逆戻りさせるのは簡単ではない
 し,すぐにできることもない.
• Michael が本書で紹介している手法やパ
 ターンやツールは有効だが,それには
 手間と時間と忍耐力,そして慎重さが
 必要
まえがき



• 本書は魔法の弾丸ではない.
• システムに積りに積もった腐敗を一晩
 で取り去る方法は教えてくれない
まえがき

• 本書には今後仕事を続けていく上で役
 立つ,規律や概念や姿勢が書かれてい
 る
• まさにそれによって,徐々に質の落ち
 ていくシステムを,徐々に質の向上す
 るシステムに変えていく事ができる
はじめに



• コンピュータで何かを動かすという純
 粋な喜びを経験したことがありますか
 ?
はじめに



• プログラマに尋ねてみたところ,ほと
 んどが経験していた.
はじめに



• その喜びは私たちがこの仕事に就いた
 理由の1つのはずですが,日常のどこ
 に埋もれてしまったのでしょうか?
はじめに


• 頑張ってはいるものの,スケジュール
 のプレッシャーからか,過去のしがら
 みからか,自分の仕事の見本となる優
 れたコードがないためか,多くの人が
 レガシーコードを書いてしまっている
はじめに



• レガシーコードとは,誰かから引き継
 いだコード
はじめに


• 簡単なはずの機能追加をしようとして
 徹夜したことや,士気を喪失してまっ
 たこと,チーム全員がコードにうんざ
 りしてどうでもよくなってしまった感
 覚,死んでしまいたくなるようなコー
 ドを思い出すでしょう.
はじめに


• そのコードを改善しようと考えること
 すら嫌な気持ちになるかもしれない
• そんな手間をかけるのは無駄に思える
 から
はじめに



• レガシーコードとは,単にテストのな
 いコード
はじめに


•   テストのないコードは悪いコードである

•   どれだけうまく書かれているかは関係ない

•   どれだけ美しいか,オブジェクト指向か,き
    ちんとカプセル化されているかは関係ない
はじめに


•   テストがあれば,検証しながらコードの動き
    を素早く変更することができる.

•   テストがなければ,コードが良くなっている
    のか悪くなっているのかが本当にはわからな
    い.
はじめに


•   きれいなコードは有益だが,それだけでは不
    十分

•   テストなしに大規模な変更をしようとすると
    ,チームは危険な賭けに出ることになる.
はじめに


•   チームの腕が上がって,より明確なコードを
    書き始めたとしても,古いコードがきれにな
    るのには時間がかかる.

•   たいていの場合,完全にきれいになることは
    ありえない.
はじめに


•   本書で説明する手法は,かなり大きいコード
    でテストしてある.例が小さいものになって
    いるのは,本のスペースの都合のため.特に
    次のようにコードの中に省略記号( ... )が含
    まれている時は,「汚いコードがここに 500
    行入る」と読み替えて下さい.
はじめに


•   本書は美しいコードを書くための本でも,美
    しい設計をするための本でもない.

•   優れた設計を目指すべきではあるが,レガシ
    ーコードにおいては,不連続ないくつものス
    テップへ経なければそこには到達できない.
はじめに

•   本当に必要なのは,ありのままの患者を受け止
    め,悪いところを直し,より良い健康状態にす
    ること

•   コードをより健康に,より作業しやすくするこ
    とは可能

•   患者の状態が少し回復したら,その後で,より
    健康的な生活が送れるよう患者を手助けする
はじめに

•   ちょっと落ち着いて楽になれるところまで持
    って行きたい

•   私たちはそれを望み,コードの変更を楽にし
    ようと頑張っている.

•   チームがその意識を持ち続けることができれ
    ば,設計は良くなる.
はじめに


•   本来プログラミングは非常にやりがいのある
    ,楽しい仕事のはず

•   日々の仕事の中でそのように感じられずにい
    る人が,本書の手法によってその気持を発見
    し,チームに広げてくれることを望んいでい
    ます.
はじめに


•   本来プログラミングは非常にやりがいのある
    ,楽しい仕事のはず

•   日々の仕事の中でそのように感じられずにい
    る人が,本書の手法によってその気持を発見
    し,チームに広げてくれることを望んいでい
    ます.
第1部
変更のメカニズム
変更のメカニズム
第1章
ソフトウェアの変更
ソフトウェアの変更
ソフトウェアの変更


•   コードの変更は素晴らしいこと

•   私たちの日々の生活を困難なものにしてしま
    うコードの変更方法はいくらでもある.

•   逆に楽にできる方法もいくらでもある.
ソフトウェアの変更


•   本書では,その議論を少し広げて,非常に厄
    介な状況のコードに取り組む方法について考
    えてみる.

•   そのために,まず変更のメカニズムについて
    掘り下げてみる.
1.1 ソフトウェア変更の4つの理由


•   話を簡単にするために,ソフトウェア変更の
    理由を大きく4つに分けて検討する.

    •   要件の追加

    •   バグの修正

    •   設計の改善

    •   リソース利用の最適化
1.1.1 要件の追加とバグの修正



•   要件の追加は,変更の理由の中で一番わかり
    やすいものと言える

•   ソフトウェアが実現する,ある動作に対して
    ,別の動作も行ってほしいとユーザーが言う
    場合である.
1.1.1 要件の追加とバグの修正




•   マネージャが左側にある会社のロゴを右側に
    移してほしいといったとする.
1.1.1 要件の追加とバグの修正



•   しかし話を聞いてみると,実現するのがそれ
    ほど簡単ではないと気づく.

•   マネージャはロゴの移動だけでなく,次のリ
    リースではユーザの操作に応じてロゴの表示
    を動的に変化することを望んでいた.
1.1.1 要件の追加とバグの修正




•   これはバグ修正?それとも要件追加?
1.1.1 要件の追加とバグの修正




•   顧客の立場からすると,マネージャは紛れも
    なく問題の修正を依頼している.

•   開発者の立場からすると,この変更は完全に
    新しい要件とも取れる.
1.1.1 要件の追加とバグの修正


•   見方によっては,要件追加かバグ修正かは終
    わりのない議論かもしれない.

•   結局はコードやその他の成果物を変更するこ
    とに変わりはない.

•   残念ながら,バグ修正か要件追加かの議論に
    よって,技術的にもっと重要なことが隠され
    てしまっている.
1.1.1 要件の追加とバグの修正




•   それは振る舞いが変更されるかどうかである

•   新しい振る舞いの追加と,既存の振る舞いの
    変更には大きな違いがある.
1.1.1 要件の追加とバグの修正



•   ソフトウェアで最も大切なのは「振る舞い」
    であり,振る舞いこそがユーザの求めるもの
    である.期待される振る舞いを私たちが追加
    すればユーザは喜ぶが,ユーザの求める振る
    舞いを変更,あるいは削除してしまえば,バ
    グの作り込みとなり,私たちの信頼は失われ
    てしまう.
1.1.1 要件の追加とバグの修正



•   会社のロゴの例は振る舞いの追加?

    •   答えはイエス

    •   なぜならその変更によって,システムはペ
        ージの右側にロゴを表示するようになるか
        ら
1.1.1 要件の追加とバグの修正




•   振る舞いの削除?

    •   答えはイエス

    •   なぜなら左側のロゴがなくなるから
1.1.1 要件の追加とバグの修正



public class CDPlayer {
    public void addTrackListing(Track track) {
        ...
    }
    ...
}
1.1.1 要件の追加とバグの修正




•   このクラスには,曲目リスト( TrackListing )
    を追加するメソッドが定義されている.

•   ここに曲目リストを置き換えるメソッドを追
    加する.
1.1.1 要件の追加とバグの修正


public class CDPlayer {
    public void addTrackListing(Track track) {
        ...
    }

    public void replaceTrackListing(Track track) {
        ...
    }
    ...
}
1.1.1 要件の追加とバグの修正



•   このメソッドの追加は,新しい振る舞いの追
    加だけか?それとも変更か?

    •   答えはどちらもノー

    •   メソッドを追加するだけで,どこからも呼
        び出されなければ振る舞いは変化しないか
        ら
1.1.1 要件の追加とバグの修正




•   ある程度の変化なしに振る舞いを追加するこ
    とはほとんど不可能と言える.
1.1.2 設計の改善



•   設計の改善は,別の種類のソフトウェア変更

•   保守しやすくなるようにソフトウェアの構造
    を変更する時,通常は振る舞いを同じに保つ
    必要がある.

•   もし,その過程で必要な振る舞いが失われて
    しまえば,それはバグと呼ばれることになる
1.1.2 設計の改善



•   多くのプログラマがあまり設計を改善したが
    らないのは,その過程で振る舞いを失ってし
    まったり,間違った振る舞いを作りあげてし
    まいやすいから

•   振る舞いを変えずに設計を改善することをリ
    ファクタリングと呼ぶ.
1.1.2 設計の改善




•   リファクタリングの基本として,変更前と変
    更後で振る舞いが変わらないことを確認する
    ためのテストを書き,検証しながら少しずつ
    作業を進めることで,ソフトウェアの保守性
    を向上できるという考え方がある.
1.1.2 設計の改善



•   リファクタリングは,ただソースコードの書
    式を修正するようなリスクの低い作業ではな
    い

•   リスクを顧みずに大規模にソースコードを書
    き直す作業でもない
1.1.2 設計の改善


•   リファクタリングでは小さな構造修正を繰り
    返し行う

•   その際,容易に変更を行えるようにテストで
    サポートする.

•   変更という面から見て重要なのは,リファク
    タリング時には機能を変更すべきではないと
    いうこと
1.1.3 リソース利用の最適化



•   リソース利用の最適化はリファクタリングと
    似ているが,目的が異なっている.

•   最適化における変更するものは,プログラム
    が使用しているなんらかのリソース(通常は
    時間やメモリ)に相当する.
1.1.4 4つの変更のまとめ


         要件追加   バグ修正   リファクタリング   最適化


  構造     変化する   変化する    変化する       ー


 新機能     変化する    ー        ー        ー


  機能      ー     変化する      ー        ー


リソース利用    ー      ー        ー       変化する
1.1.4 4つの変更のまとめ



•   要件追加,リファクタリング,最適化のいず
    れでも,既存の機能は変わらずに保たれる

•   実際には,バグの修正の場合でも,詳しく調
    べてみると,機能を変更するものの,変更さ
    れない既存機能に比べると,変更量はごくわ
    ずかな場合がほとんど
1.1.4 4つの変更のまとめ



•   要件追加やバグ修正は,リファクタリングや
    最適化とよく似ている.

•   4つのいずれの場合でも,一部機能や一部振
    る舞いを変更するが,元のままに保たれてい
    る部分のほうがずっと多い
1.1.4 4つの変更のまとめ




既存の振る舞い     新しい振る舞い
1.1.4 4つの変更のまとめ



•   変更を行った時に何が起きるかを,整理する
    良い面は,何に集中するべきかがわかりやす
    くなること

•   悪い面は,集中すべきは変更箇所だけではな
    い.厄介なことにコードに触れていないから
    と言って,振る舞いが変わらない保証はない
1.1.4 4つの変更のまとめ



•   変更時には,対象箇所以外の振る舞いが変っ
    ていないことを確認する必要があるが,それ
    はとても困難な作業

•   しばしば問題となるのは,ある変更によって
    どれだけの振る舞いに影響が及ぶかを把握で
    きないこと
1.1.4 4つの変更のまとめ




•   変更を安全に行うために最も重要なことは,
    影響範囲を理解すること
1.1.4 4つの変更のまとめ




•   既存の振る舞いを変えずに保つことは,ソフ
    トウェア開発における最も困難なことの1つ
    である.主要な機能を変更をしようとする時
    でさえ,通常は既存の振る舞いの大部分を変
    更せずに保たれなければならない.
1.2 危険な変更




•   振る舞いを保つのは非常に困難なこと

•   変更を行いながら振る舞いを維持する作業は
    大きなリスクを伴う
1.2 危険な変更


•   リスクを緩和するには,次の3つの点を考慮す
    る必要がある.

    •   どんな変更を行わなければならないか

    •   変更が正しく行われたことをどうすれば確認
        できるか

    •   何も壊していないことをどうすれば確認でき
        るか
1.2 危険な変更




•   変更を避けることでソフトウェアの問題を最
    小限に抑えられるという考え方は魅力的だが
    ,残念なことに必ず問題は付きまとう
1.2 危険な変更



•   良いシステムでは調べることで安心でき,こ
    れから行う変更に確信を持てる

•   悪いコードでは,物事を調べた後で変更に取
    り掛かる時には,虎から逃げるために崖から
    飛び降りるような気持ちになる
1.2 危険な変更



•   大きなクラスを分割する作業は,週に2,3
    回ぐらい行ってない限り,極めて困難な仕事
    になりがち

•   頻繁に変更を行っていれば,日常業務になる

•   何が分割できて,何ができないかの見当を付
    けやすくなり,変更作業もずっと容易になる
1.2 危険な変更




•   変更の回避は恐怖をもたらす.

•   不幸なことに,多くのチームが変更に対して
    信じがたいほどの恐怖を抱いていて,その恐
    怖は日に日に強くなっていく.
1.2 危険な変更


•   他の方法として,やみくもに頑張るというの
    がある.人を増やして,机に向かって分析す
    る時間を確保し,すべてのコードを調べ尽し
    て「正しい」やり方で変更を行うこともでき
    る.

•   時間をかけてじっくり精査すれば,変更は安
    全に行えるはず.
1.2 危険な変更




•   しかし,これは本当だろうか

•   すべての作業を終えた後で,精査が正しかっ
    たかどうかを判断できる人などいるのか?

More Related Content

Viewers also liked

UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDとsters
 
勉強会KLC「図書・図書館史回」
勉強会KLC「図書・図書館史回」勉強会KLC「図書・図書館史回」
勉強会KLC「図書・図書館史回」Satoko Yamashita
 
部下が仕事に“ハマる”ために必要な 上司のコミュニケーションと職場環境
部下が仕事に“ハマる”ために必要な上司のコミュニケーションと職場環境部下が仕事に“ハマる”ために必要な上司のコミュニケーションと職場環境
部下が仕事に“ハマる”ために必要な 上司のコミュニケーションと職場環境Rikkyo University
 
FOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップFOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップIWASAKI NOBUSUKE
 
プロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのことプロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのことYuji Okazawa
 
編集長に学ぶ、読まれるWebライティング
編集長に学ぶ、読まれるWebライティング編集長に学ぶ、読まれるWebライティング
編集長に学ぶ、読まれるWebライティングKappei Nakano
 
OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO
OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMOOpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO
OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMOOsamu Habuka
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015hirokiky
 
20150926 uwpストア攻略
20150926 uwpストア攻略20150926 uwpストア攻略
20150926 uwpストア攻略Makoto Nishimura
 
創業時を振り返って(起業家向け)Ver1.1
創業時を振り返って(起業家向け)Ver1.1創業時を振り返って(起業家向け)Ver1.1
創業時を振り返って(起業家向け)Ver1.1Shinsuke Usami
 
PyCon JP 2015 keynote
PyCon JP 2015 keynotePyCon JP 2015 keynote
PyCon JP 2015 keynoteHaruo Sato
 
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識marsee101
 
コミュニケーションを科学する
コミュニケーションを科学するコミュニケーションを科学する
コミュニケーションを科学するWorksEntertainment.Inc
 
スタートアップ 立ち上げマニュアル
スタートアップ 立ち上げマニュアルスタートアップ 立ち上げマニュアル
スタートアップ 立ち上げマニュアルTakaya Shinozuka
 
訪日外国人観光客の最新動向【20150520インバウンドセミナー】
訪日外国人観光客の最新動向【20150520インバウンドセミナー】訪日外国人観光客の最新動向【20150520インバウンドセミナー】
訪日外国人観光客の最新動向【20150520インバウンドセミナー】株式会社ゼンリン
 
Windowsシステムの AWS移行とMulti-AZ化 - JAWS DAYS 2015
WindowsシステムのAWS移行とMulti-AZ化 - JAWS DAYS 2015 WindowsシステムのAWS移行とMulti-AZ化 - JAWS DAYS 2015
Windowsシステムの AWS移行とMulti-AZ化 - JAWS DAYS 2015 Takayuki Enomoto
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)IWASAKI NOBUSUKE
 
Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)
Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)
Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)明穂 足立
 
(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説
(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説
(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説Makoto Nishimura
 
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」「納品のない受託開発」の先にある「エンジニアの働きかたの未来」
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」Yoshihito Kuranuki
 

Viewers also liked (20)

UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDと
 
勉強会KLC「図書・図書館史回」
勉強会KLC「図書・図書館史回」勉強会KLC「図書・図書館史回」
勉強会KLC「図書・図書館史回」
 
部下が仕事に“ハマる”ために必要な 上司のコミュニケーションと職場環境
部下が仕事に“ハマる”ために必要な上司のコミュニケーションと職場環境部下が仕事に“ハマる”ために必要な上司のコミュニケーションと職場環境
部下が仕事に“ハマる”ために必要な 上司のコミュニケーションと職場環境
 
FOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップFOSS4G OKINAWA QGIS入門編ワークショップ
FOSS4G OKINAWA QGIS入門編ワークショップ
 
プロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのことプロジェクトリーダに必要な3つのこと
プロジェクトリーダに必要な3つのこと
 
編集長に学ぶ、読まれるWebライティング
編集長に学ぶ、読まれるWebライティング編集長に学ぶ、読まれるWebライティング
編集長に学ぶ、読まれるWebライティング
 
OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO
OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMOOpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO
OpenCloudCampus PrivateCloudStudy Eucalyptus Deep-dive at GMO
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
 
20150926 uwpストア攻略
20150926 uwpストア攻略20150926 uwpストア攻略
20150926 uwpストア攻略
 
創業時を振り返って(起業家向け)Ver1.1
創業時を振り返って(起業家向け)Ver1.1創業時を振り返って(起業家向け)Ver1.1
創業時を振り返って(起業家向け)Ver1.1
 
PyCon JP 2015 keynote
PyCon JP 2015 keynotePyCon JP 2015 keynote
PyCon JP 2015 keynote
 
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
 
コミュニケーションを科学する
コミュニケーションを科学するコミュニケーションを科学する
コミュニケーションを科学する
 
スタートアップ 立ち上げマニュアル
スタートアップ 立ち上げマニュアルスタートアップ 立ち上げマニュアル
スタートアップ 立ち上げマニュアル
 
訪日外国人観光客の最新動向【20150520インバウンドセミナー】
訪日外国人観光客の最新動向【20150520インバウンドセミナー】訪日外国人観光客の最新動向【20150520インバウンドセミナー】
訪日外国人観光客の最新動向【20150520インバウンドセミナー】
 
Windowsシステムの AWS移行とMulti-AZ化 - JAWS DAYS 2015
WindowsシステムのAWS移行とMulti-AZ化 - JAWS DAYS 2015 WindowsシステムのAWS移行とMulti-AZ化 - JAWS DAYS 2015
Windowsシステムの AWS移行とMulti-AZ化 - JAWS DAYS 2015
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)
 
Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)
Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)
Socialmediaaroundtheworld2011日本語版(文字がずれるのでPDF版をおすすめします)
 
(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説
(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説
(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説
 
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」「納品のない受託開発」の先にある「エンジニアの働きかたの未来」
「納品のない受託開発」の先にある「エンジニアの働きかたの未来」
 

Similar to レガシーコード読書会 20120618

CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにTakafumi Ikeda
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めDai FUJIHARA
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めRakuten Group, Inc.
 
Php勉強会スライド
Php勉強会スライドPhp勉強会スライド
Php勉強会スライドsuzumurashingo
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事Cybozu, Inc.
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1Hiro Yoshioka
 
サービス改善はログデータ分析から
サービス改善はログデータ分析からサービス改善はログデータ分析から
サービス改善はログデータ分析からKenta Suzuki
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験についてRakuten Group, Inc.
 
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけてAgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけてShuji Morisaki
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02Hiro Yoshioka
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
論文紹介@ Gunosyデータマイニング研究会 #97
論文紹介@ Gunosyデータマイニング研究会 #97論文紹介@ Gunosyデータマイニング研究会 #97
論文紹介@ Gunosyデータマイニング研究会 #97圭輔 大曽根
 
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1Yusuke HIDESHIMA
 
プロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Webプロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Webminamo
 
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりませんレガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりませんTakahiro Okada
 
Eric Ries at Startup Lessons Learned sllconf 2011 - Japanese Translation
Eric Ries at Startup Lessons Learned sllconf 2011 - Japanese TranslationEric Ries at Startup Lessons Learned sllconf 2011 - Japanese Translation
Eric Ries at Startup Lessons Learned sllconf 2011 - Japanese TranslationKenji Hiranabe
 
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~InnovationSprint2011
 

Similar to レガシーコード読書会 20120618 (20)

CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするために
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
Php勉強会スライド
Php勉強会スライドPhp勉強会スライド
Php勉強会スライド
 
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
 
サービス改善はログデータ分析から
サービス改善はログデータ分析からサービス改善はログデータ分析から
サービス改善はログデータ分析から
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけてAgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
論文紹介@ Gunosyデータマイニング研究会 #97
論文紹介@ Gunosyデータマイニング研究会 #97論文紹介@ Gunosyデータマイニング研究会 #97
論文紹介@ Gunosyデータマイニング研究会 #97
 
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
 
プロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Webプロジェクトマネジメント入門以前 Web
プロジェクトマネジメント入門以前 Web
 
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりませんレガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
 
私とインクス
私とインクス私とインクス
私とインクス
 
Eric Ries at Startup Lessons Learned sllconf 2011 - Japanese Translation
Eric Ries at Startup Lessons Learned sllconf 2011 - Japanese TranslationEric Ries at Startup Lessons Learned sllconf 2011 - Japanese Translation
Eric Ries at Startup Lessons Learned sllconf 2011 - Japanese Translation
 
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

レガシーコード読書会 20120618