Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
僕たちがすべきことは
リファクタリングなのか
【Excite × iXIT】Tech Talk #1 前に進むため新しい取り組み
2021/10/18
伊藤 匠
自己紹介
伊藤 匠
2020年入社
エキサイト株式会社 Life&Communication事業部ヘルスケア部門
2
プロダクトを触り始めると様々な不満が出る
再利用の構造が貧弱で同じ関数を何回も書く
リファレンス以外の情報が少ないフレームワーク
使われていないページ/機能/コード
意味をなさない変数名
神クラス
古いバージョン
3
テストが存在しない
伝統主義者と急進主義者の中間を目指す[1]
壊れていないなら直す
な。危ない。
汚いコードが許せない。
リライトだ。
伝統主義的 急進主義的
[1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリ...
本当にプロダクトの実装は酷いのか?
感情的に癒着した問題は「一般化」する傾向にあります[5]
-- エンジニアリング組織論への招待
“
コードベース全体を大々的に書き直すのではなく, コードの変更を容
易にするために, 目標を絞った緻密なアプロ...
アンガードリブンは基本的に有害
レガシーソフトウェアに対していくらかネガティブな気持ちを抱
くのは自然なことだけど, そういう気分はとても有害なものだ。
我々の判断を曇らせ, 改善の仕事を効率よく進めることを妨げるか
らだ。[1]
-- レガシ...
そもそも
汚いコードを書きたい人も
面倒な運用をしたい人も
どこにもいないはず
何かコードを綺麗に保てない理由がある
7
醜悪なコードではなく複雑な仕様だった[1]
<?php
namespace Example¥Kireina¥Code;
use Kireina¥Code¥A;
class KireinaClass
{
private $a;
public fu...
僕たちがすべきことはリファクタリングなのか
人々の思考や癖, 人間関係, ビジネス環境の中で生まれてくる不合
理が, 形を変えてコードの中に漏れ出ているように思えました[5]
-- エンジニアリング組織論への招待
“
綺麗なコード
テストがなく...
本当に必要なのは環境/文化への戦略のはず
コード
エンジニア
環境/文化
テスト運用[2]
- エンジニアの改修による心理的負担を少なくする
協力し合う[2]
- ペアプロなどによる知識の共有
継続的統合[2]
- 統合が遅れるほど修正が困難に...
コードを綺麗に保つには綺麗にした後が重要
自信過剰による再設計は, 元のプロジェクトと同じように崩壊する[4]
-- Clean Architecture
“
一度コードを綺麗にしたらその状態を自分なら保てる前提で
リファクタリングをしようとし...
リファクタリングの効果はわかりづらい
リファクタリングによって違いが出ていることを, 我々に知らせて
くれる手段が必要だ。
-- レガシーソフトウェア改善ガイド
“
簡単に答えるとなんでも測っておけ, ということになる
-- レガシーソフトウェ...
まとめ
僕たちがすべきことはリファクタリングなのか? => No
まずやるべきは
- 環境/文化に自分がアプローチできないか考えてみよう
- リファクタリングの効果を他者に示せる準備ができているか考えてみよう
13
参考文献
[1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリケーション時代に即した開発・保守技法, 翔泳社,
2016
[2] David Scott Bernstein著, 吉羽 龍太郎・永...
Upcoming SlideShare
Loading in …5
×

of

僕たちがすべきことはリファクタリングなのか Slide 1 僕たちがすべきことはリファクタリングなのか Slide 2 僕たちがすべきことはリファクタリングなのか Slide 3 僕たちがすべきことはリファクタリングなのか Slide 4 僕たちがすべきことはリファクタリングなのか Slide 5 僕たちがすべきことはリファクタリングなのか Slide 6 僕たちがすべきことはリファクタリングなのか Slide 7 僕たちがすべきことはリファクタリングなのか Slide 8 僕たちがすべきことはリファクタリングなのか Slide 9 僕たちがすべきことはリファクタリングなのか Slide 10 僕たちがすべきことはリファクタリングなのか Slide 11 僕たちがすべきことはリファクタリングなのか Slide 12 僕たちがすべきことはリファクタリングなのか Slide 13 僕たちがすべきことはリファクタリングなのか Slide 14
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

僕たちがすべきことはリファクタリングなのか

Download to read offline

【excite × iXIT】Tech Talk #1 : 前へ進むための新しい取り組み』の発表資料です。
https://excite.connpass.com/event/223563/

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

僕たちがすべきことはリファクタリングなのか

  1. 1. 僕たちがすべきことは リファクタリングなのか 【Excite × iXIT】Tech Talk #1 前に進むため新しい取り組み 2021/10/18 伊藤 匠
  2. 2. 自己紹介 伊藤 匠 2020年入社 エキサイト株式会社 Life&Communication事業部ヘルスケア部門 2
  3. 3. プロダクトを触り始めると様々な不満が出る 再利用の構造が貧弱で同じ関数を何回も書く リファレンス以外の情報が少ないフレームワーク 使われていないページ/機能/コード 意味をなさない変数名 神クラス 古いバージョン 3 テストが存在しない
  4. 4. 伝統主義者と急進主義者の中間を目指す[1] 壊れていないなら直す な。危ない。 汚いコードが許せない。 リライトだ。 伝統主義的 急進主義的 [1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリケーション時代に即した開発・保守技法, 翔泳社, 2016 価値とリスクのバランス で決める 4
  5. 5. 本当にプロダクトの実装は酷いのか? 感情的に癒着した問題は「一般化」する傾向にあります[5] -- エンジニアリング組織論への招待 “ コードベース全体を大々的に書き直すのではなく, コードの変更を容 易にするために, 目標を絞った緻密なアプローチを心がけるのです[1] -- 達人プログラマー “ [5] 広木大地, エンジニアリング組織論への招待 不確実性に向き合う思考と組織のリファクタリング, 技術評論社, 2018 [3] David Thomas・Andrew Hunt著, 村上 雅章訳, 達人プログラマー 熟達に向けたあなたの旅 第2版, オーム社, 2020 5
  6. 6. アンガードリブンは基本的に有害 レガシーソフトウェアに対していくらかネガティブな気持ちを抱 くのは自然なことだけど, そういう気分はとても有害なものだ。 我々の判断を曇らせ, 改善の仕事を効率よく進めることを妨げるか らだ。[1] -- レガシーソフトウェア改善ガイド “ 違和感を覚えてアンガードリブンで直してしまう人はいます。[6] -- Engineers in Voyage “ [1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリケーション時代に即した開発・保守技法, 翔泳社, 2016 [6] 和田卓人編, Engineers in Voyage 事業をエンジニアリングする技術者たち, ランダムノート, 2020 6
  7. 7. そもそも 汚いコードを書きたい人も 面倒な運用をしたい人も どこにもいないはず 何かコードを綺麗に保てない理由がある 7
  8. 8. 醜悪なコードではなく複雑な仕様だった[1] <?php namespace Example¥Kireina¥Code; use Kireina¥Code¥A; class KireinaClass { private $a; public function __construct(A $KireinaArg1) { $this->a = $KireinaArg1; } public function KireinaMethodA() { return $this->a; } } <?php namespace Example¥Kitanai¥Code; use Kitanai¥Code¥A; use Kitanai¥Code¥B; use Kitanai¥Code¥C; class KitanaiClass { private $a; private $b; private $c; public function __construct(A $kitanaiArg1, B $kitanaiArg2, C $kitanaiArg3) { $this->a = $kitanaiArg1; $this->b = $kitanaiArg2; $this->c = $kitanaiArg3; } public function KitanaiMethodA() { return $this->a; } public function KitanaiMethodB() { return $this->b; } public function KitanaiMethodC() { return $this->c; } } <?php namespace Example¥Kireina¥Code; use Kireina¥Code¥A; class KireinaClass { private $a; public function __construct(A $KireinaArg1) { $this->a = $KireinaArg1; } public function KireinaMethodA() { return $this->a; } } 機能の復元 ヘルパーコード データチェック <?php namespace Example¥Kireina¥Code; use Kireina¥Code¥A; class KireinaClass { private $a; public function __construct(A $KireinaArg1) { $this->a = $KireinaArg1; } public function KireinaMethodA() { return $this->a; } public function TuikanoHelperCode() { return; } public function TuikanoKinouCode() { return; } public function TuikanoDataCheck() { return; } } ≒ [1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリケーション時代に即した開発・保守技法, 翔泳社, 2016 <?php namespace Example¥Kitanai¥Code; use Kitanai¥Code¥A; use Kitanai¥Code¥B; use Kitanai¥Code¥C; class KitanaiClass { private $a; private $b; private $c; public function __construct(A $kitanaiArg1, B $kitanaiArg2, C $kitanaiArg3) { $this->a = $kitanaiArg1; $this->b = $kitanaiArg2; $this->c = $kitanaiArg3; } public function KitanaiMethodA() { return $this->a; } public function KitanaiMethodB() { return $this->b; } public function KitanaiMethodC() { return $this->c; } } 8
  9. 9. 僕たちがすべきことはリファクタリングなのか 人々の思考や癖, 人間関係, ビジネス環境の中で生まれてくる不合 理が, 形を変えてコードの中に漏れ出ているように思えました[5] -- エンジニアリング組織論への招待 “ 綺麗なコード テストがなくバージョンアップが至難で過去の書き方が残る 設計の破壊やフレームワークの誤用部分のコードを参考にする ビジネスサイドとのコミュニケーション不足による不統一な命名 現プロダクトで例えると [5] 広木大地, エンジニアリング組織論への招待 不確実性に向き合う思考と組織のリファクタリング, 技術評論社, 2018 9
  10. 10. 本当に必要なのは環境/文化への戦略のはず コード エンジニア 環境/文化 テスト運用[2] - エンジニアの改修による心理的負担を少なくする 協力し合う[2] - ペアプロなどによる知識の共有 継続的統合[2] - 統合が遅れるほど修正が困難になる 設計 勉強会 ・ ・ ・ [2] David Scott Bernstein著, 吉羽 龍太郎・永瀬 美穂・原田騎郎・有野 雅士訳, レガシーコードからの脱却 ソフトウェアの寿命を伸ばし価 値を高める9つのプラクティス, O’REILLY, 2019 10
  11. 11. コードを綺麗に保つには綺麗にした後が重要 自信過剰による再設計は, 元のプロジェクトと同じように崩壊する[4] -- Clean Architecture “ 一度コードを綺麗にしたらその状態を自分なら保てる前提で リファクタリングをしようとしていませんか? コードを綺麗に保つ術を知らないと同じ歴史を繰り返して, せっかくリファクタしたプロダクトも 自分が嫌悪していたコードと同じように扱われてしまう。 [4] Robert C. Martin著, 角 征典・高木 正弘訳, Clean Archetecture 達人に学ぶソフトウェアの構造と設計, 株式会社ドワンゴ, 2018 11
  12. 12. リファクタリングの効果はわかりづらい リファクタリングによって違いが出ていることを, 我々に知らせて くれる手段が必要だ。 -- レガシーソフトウェア改善ガイド “ 簡単に答えるとなんでも測っておけ, ということになる -- レガシーソフトウェア改善ガイド “ [1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリケーション時代に即した開発・保守技法, 翔泳社, 2016 12
  13. 13. まとめ 僕たちがすべきことはリファクタリングなのか? => No まずやるべきは - 環境/文化に自分がアプローチできないか考えてみよう - リファクタリングの効果を他者に示せる準備ができているか考えてみよう 13
  14. 14. 参考文献 [1] Chris Birchall著, 吉川 邦夫訳, レガシーソフトウェア改善ガイド 複合型アプリケーション時代に即した開発・保守技法, 翔泳社, 2016 [2] David Scott Bernstein著, 吉羽 龍太郎・永瀬 美穂・原田騎郎・有野 雅士訳, レガシーコードからの脱却 ソフトウェアの寿命を伸ば し価値を高める9つのプラクティス, O’REILLY, 2019 [3] David Thomas・Andrew Hunt著, 村上 雅章訳, 達人プログラマー 熟達に向けたあなたの旅 第2版, オーム社, 2020 [4] Robert C. Martin著, 角 征典・高木 正弘訳, Clean Archetecture 達人に学ぶソフトウェアの構造と設計, 株式会社ドワンゴ, 2018 [5] 広木大地, エンジニアリング組織論への招待 不確実性に向き合う思考と組織のリファクタリング, 技術評論社, 2018 [6] 和田卓人編, Engineers in Voyage 事業をエンジニアリングする技術者たち, ランダムノート, 2020 14

【excite × iXIT】Tech Talk #1 : 前へ進むための新しい取り組み』の発表資料です。 https://excite.connpass.com/event/223563/

Views

Total views

231

On Slideshare

0

From embeds

0

Number of embeds

129

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×