SlideShare a Scribd company logo
1Confidential Crowdworks, Inc. All Rights Reserved.
コードを削除し続けるという習慣
“ボーイスカウトルールを覚えて帰って下しあ”
2017年4月26日/第2回 人形町Techで騒がNight♥
株式会社クラウドワークス エンジニア
安田篤史
2Confidential Crowdworks, Inc. All Rights Reserved.
提供
3Confidential Crowdworks, Inc. All Rights Reserved.
4Confidential Crowdworks, Inc. All Rights Reserved.
Add 124,468
Delete 162,683
5Confidential Crowdworks, Inc. All Rights Reserved.
Why?
6Confidential Crowdworks, Inc. All Rights Reserved.
Web サービスは、
続く
7Confidential Crowdworks, Inc. All Rights Reserved.
増え続ける
• 機能
• コード
8Confidential Crowdworks, Inc. All Rights Reserved.
9Confidential Crowdworks, Inc. All Rights Reserved.
断捨離
10Confidential Crowdworks, Inc. All Rights Reserved.
は、割愛
11Confidential Crowdworks, Inc. All Rights Reserved.
どうやって
削除するものを
見つけるのか?
12Confidential Crowdworks, Inc. All Rights Reserved.
わざわざ探さない。
13Confidential Crowdworks, Inc. All Rights Reserved.
ボーイスカウト
ルール
14Confidential Crowdworks, Inc. All Rights Reserved.
[08]ボーイスカウトルール
ボーイスカウトには大切なルー
ルがあります。それは、「来た
時よりも美しく」です。
- プログラマ知るべき97こと
15Confidential Crowdworks, Inc. All Rights Reserved.
恐怖との闘い方
16Confidential Crowdworks, Inc. All Rights Reserved.
def no_called_method
+ log(”このメソッド呼び出しあるらしい”)
do_something
end
そっと、ログを仕込むだけ
17Confidential Crowdworks, Inc. All Rights Reserved.
 削除したいメソッド
である旨
 いつ、削除予定か
 呼び出し元
18Confidential Crowdworks, Inc. All Rights Reserved.
これがベスト!
19Confidential Crowdworks, Inc. All Rights Reserved.
以下、本編
20Confidential Crowdworks, Inc. All Rights Reserved.
やばい、削除しちゃいけないやつを
削除しちゃった・・・
“何をするとやらかすか・3つの事例”
2017年4月26日/第2回 人形町Techで騒がNight♥
株式会社クラウドワークス エンジニア
安田篤史
21Confidential Crowdworks, Inc. All Rights Reserved.
動的呼び出しの罠
22Confidential Crowdworks, Inc. All Rights Reserved.
class Foo
def bar
do_something
end
end
Foo.new.send(“bar”)
Object.send を使うと
grep できなくなるよ!
23Confidential Crowdworks, Inc. All Rights Reserved.
keys = {foo: :bar, buz: :qux }
keys.each do |key, value|
define_method(“#{key}=“) do |arg|
proxy.send(value, arg)
end
end
いろいろ組み合わせると
カオスだよ!
24Confidential Crowdworks, Inc. All Rights Reserved.
動的言語ェ・・・
25Confidential Crowdworks, Inc. All Rights Reserved.
同じ名前のメソッドだらけ
だと、削除していいかわか
んないよ!
26Confidential Crowdworks, Inc. All Rights Reserved.
class Foo
def bump!; do_something; end
end
class Bar
def bump!; do_something; end
end
class Baz
def abadakedabura(param)
param.bump! # <- こいつ誰だよ
end
end
27Confidential Crowdworks, Inc. All Rights Reserved.
コードベース以外からの
お呼び出し
28Confidential Crowdworks, Inc. All Rights Reserved.
メソッド消したら、
バッチが死んだよ!
29Confidential Crowdworks, Inc. All Rights Reserved.
class Foo
def self.piyo; do_something; end
end
05 1 1 * * cd /path/to/rails;
RAILS_ENV=production bundle exec rails run
‘Foo.piyo’
30Confidential Crowdworks, Inc. All Rights Reserved.
地雷はいっぱい
31Confidential Crowdworks, Inc. All Rights Reserved.
ボーイスカウト
ルール

More Related Content

Similar to コードを削除し続けるという習慣

2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
Serverworks Co.,Ltd.
 
2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料
2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料
2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料
Serverworks Co.,Ltd.
 
第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407
知礼 八子
 
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
Developers Summit
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
 
エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016
エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016
エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016
一成 田部井
 
DBTS2016 DBAのための最新テクノロジー
DBTS2016 DBAのための最新テクノロジーDBTS2016 DBAのための最新テクノロジー
DBTS2016 DBAのための最新テクノロジー
Masaya Ishikawa
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
Kansumi2013 tamagawa
Kansumi2013 tamagawaKansumi2013 tamagawa
Kansumi2013 tamagawaSORACOM, INC
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
 
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
Serverworks Co.,Ltd.
 
20180207 AWS blackbelt online seminar Amazon Workspaces
20180207 AWS blackbelt online seminar Amazon Workspaces20180207 AWS blackbelt online seminar Amazon Workspaces
20180207 AWS blackbelt online seminar Amazon Workspaces
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2018 Amazon WorkSpaces
AWS Black Belt Online Seminar 2018 Amazon WorkSpacesAWS Black Belt Online Seminar 2018 Amazon WorkSpaces
AWS Black Belt Online Seminar 2018 Amazon WorkSpaces
Amazon Web Services Japan
 
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
Mitsutoshi Kiuchi
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
 
ソフトウエアジャパン2017 IT Forum AITC(2)
ソフトウエアジャパン2017 IT Forum AITC(2)ソフトウエアジャパン2017 IT Forum AITC(2)
ソフトウエアジャパン2017 IT Forum AITC(2)
aitc_jp
 
CEDEC2022 Keiji Kikuchi RemoteMobWork
CEDEC2022 Keiji Kikuchi RemoteMobWorkCEDEC2022 Keiji Kikuchi RemoteMobWork
CEDEC2022 Keiji Kikuchi RemoteMobWork
Keiji Kikuchi
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
Godai Nakamura
 
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjugJavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
Yahoo!デベロッパーネットワーク
 

Similar to コードを削除し続けるという習慣 (20)

2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
2013年03月 第32回WebSig24会議「社内LAN撲滅運動」
 
2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料
2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料
2012年09月 仙台ICT復興支援クラウドフォーラム 発表資料
 
第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407第26回八子クラウド座談会当日メモ付き_20180407
第26回八子クラウド座談会当日メモ付き_20180407
 
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
【18-A-2】ゲーミフィケーション・エバンジェリストが見る「あなたの技術力が“ワクワクするサービス”に変わる未来」
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016
エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016
エンタープライズでもクラウドファースト! Amazon Web Servicesをフル活用する Developer Summit 2016
 
DBTS2016 DBAのための最新テクノロジー
DBTS2016 DBAのための最新テクノロジーDBTS2016 DBAのための最新テクノロジー
DBTS2016 DBAのための最新テクノロジー
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
Kansumi2013 tamagawa
Kansumi2013 tamagawaKansumi2013 tamagawa
Kansumi2013 tamagawa
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
 
20180207 AWS blackbelt online seminar Amazon Workspaces
20180207 AWS blackbelt online seminar Amazon Workspaces20180207 AWS blackbelt online seminar Amazon Workspaces
20180207 AWS blackbelt online seminar Amazon Workspaces
 
AWS Black Belt Online Seminar 2018 Amazon WorkSpaces
AWS Black Belt Online Seminar 2018 Amazon WorkSpacesAWS Black Belt Online Seminar 2018 Amazon WorkSpaces
AWS Black Belt Online Seminar 2018 Amazon WorkSpaces
 
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
ソフトウエアジャパン2017 IT Forum AITC(2)
ソフトウエアジャパン2017 IT Forum AITC(2)ソフトウエアジャパン2017 IT Forum AITC(2)
ソフトウエアジャパン2017 IT Forum AITC(2)
 
CEDEC2022 Keiji Kikuchi RemoteMobWork
CEDEC2022 Keiji Kikuchi RemoteMobWorkCEDEC2022 Keiji Kikuchi RemoteMobWork
CEDEC2022 Keiji Kikuchi RemoteMobWork
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjugJavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
 

More from Atsushi Yasuda

Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
Atsushi Yasuda
 
苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方
Atsushi Yasuda
 
たまにはこんなSushiも如何でしょう?
たまにはこんなSushiも如何でしょう?たまにはこんなSushiも如何でしょう?
たまにはこんなSushiも如何でしょう?
Atsushi Yasuda
 
データベース定義書の更新は再考の仕事
データベース定義書の更新は再考の仕事データベース定義書の更新は再考の仕事
データベース定義書の更新は再考の仕事
Atsushi Yasuda
 
I love bug
I love bugI love bug
I love bug
Atsushi Yasuda
 
click するとどうなるのか
click するとどうなるのかclick するとどうなるのか
click するとどうなるのか
Atsushi Yasuda
 

More from Atsushi Yasuda (6)

Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
 
苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方苦いお酒が好きな人のためのコードの苦味の味わい方
苦いお酒が好きな人のためのコードの苦味の味わい方
 
たまにはこんなSushiも如何でしょう?
たまにはこんなSushiも如何でしょう?たまにはこんなSushiも如何でしょう?
たまにはこんなSushiも如何でしょう?
 
データベース定義書の更新は再考の仕事
データベース定義書の更新は再考の仕事データベース定義書の更新は再考の仕事
データベース定義書の更新は再考の仕事
 
I love bug
I love bugI love bug
I love bug
 
click するとどうなるのか
click するとどうなるのかclick するとどうなるのか
click するとどうなるのか
 

Recently uploaded

エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
Toru Miyahara
 
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
Yuuitirou528 default
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
Masatsugu Matsushita
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
K Kinzal
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
miyp
 

Recently uploaded (7)

エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 

コードを削除し続けるという習慣