Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
秘伝のタレ.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
SatoshiN
May 28, 2019
31
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
秘伝のタレ.pdf
SatoshiN
May 28, 2019
More Decks by SatoshiN
See All by SatoshiN
開発スピード向上Tipsその2.pdf
satoshin303
0
55
担当しているiOSアプリを全部作り直す開発中に_いろいろ半自動化した事_簡易版.pdf
satoshin303
0
73
GitHub小技集.pdf
satoshin303
0
34
iOS_DC_2018_参加レポート.pdf
satoshin303
0
30
量子コンピュータ_の仕組みとQ_.pdf
satoshin303
0
220
モバイルアプリ_開発スピード向上Tips.pdf
satoshin303
0
29
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Site-Speed That Sticks
csswizardry
13
1.5k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Un-Boring Meetings
codingconduct
0
430
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
GraphQLとの向き合い方2022年版
quramy
50
15k
Product Roadmaps are Hard
iamctodd
55
13k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
490
Claude Code のすすめ
schroneko
67
230k
Paper Plane
katiecoart
PRO
4
53k
Transcript
秘伝のタレ
自己紹介 佐藤慎 (さとしん) Twitter @satoshin2071 GitHub https://github.com/SatoshiN303 最近の趣味 肩甲骨はがしなど ストレッチ全般
2019上半期 買って良かったもの
アジェンダ • はじめに • 立ちはだかる秘伝のタレを味わう • 秘伝のタレを生み出さないために • 秘伝のタレを紐解く・改善案を出す •
まとめ
はじめに 各社 新卒も入ってきたタイミングかと思いますが エンジニアならいつかは遭遇する確率の高い (実際に私が遭遇した) 秘伝のタレの話をします。
受託案件あるある 過去に実装した ソースコードを元に 「機能を追加して再リリース」 「フルスクラッチで作り直して再リリース」 Web, モバイル, インスタレーション, どんな案件でも誰しもいつかは遭遇するかと思います。
(立ちはだかる) 秘伝のタレ
秘伝のタレは会社や個人に悪循環を発生させます • 修正する場合の工数が増える • 大規模改修が許されない状況では暫定的な修正しかできなく なる • だんだん飽きてくる • だんだんその案件から離れたくなる
• だが新しい案件に関われない状況が続いたら? • テンション下がりきる • そして退職へ…
秘伝のタレを解きほぐしてみる
まずは秘伝のタレの特徴を抽出する • 非同期処理の完了通知にNSNotificationCenter • 一つのViewController や ◯◯Manager に複数の責務 • 同じ責務の処理がバラバラに管理
• MethodSwizzlingなど黒魔術の利用
まずは秘伝のタレの特徴を抽出する • 非同期処理の完了通知にNSNotificationCenter • → 可読性低下・複雑性循環 • 一つのViewController や ◯◯Manager
に複数の責務 • → 責務肥大化 • 同じ責務の処理がバラバラに管理 • → 一貫性のなさ • MethodSwizzlingなど黒魔術の利用 • → 標準的な方法からの逸脱
イメージ
ただし状況によっては最適なケースもある • 非同期処理の完了通知にNSNotificationCenter • → 小規模で設計がMVCなら有り • ViewController や ◯◯Manager
に複数の責務 • → 小規模・納期短い場合 なら有り • 同じ責務の処理がバラバラに管理 • → 逆に極端な再利用を考えると実装スピード落ちる • MethodSwizzlingなど黒魔術の利用 • → 黒魔術使ったほうがいい場合なら有り
設計選択の簡易フローチャート (フルスクラッチ版) 目的達成を 最優先で 最低限責務 (例 MVC) 小規模責務 (例 MVP)
中規模責務 (例 VIPER) 大規模責務 (例Clean Architecture) 納期の余裕 案件の規模 継続開発見込み 納期の余裕 ネガティブ ポジティブ
私が引き継いだ案件は大規模案件に該当 ↓ 設計は最低限規模〜小規模向けだった ↓ 秘伝のタレを少しずつアレンジ
秘伝のタレを紐解く・改善する • 非同期処理の完了通知にNSNotificationCenter • → 可読性低下・複雑性循環 • → 静的解析ツールをビルド毎に走らせる •
→ NSNotificationCenter による完了通知はMVC向きなの で方法を変更。Delegateパターンや closure, Promiseパ ターン, async / await を検討し利用する。
秘伝のタレを紐解く・改善する • ViewController や ◯◯Manager に複数の責務 • → 責務肥大化 •
同じ責務の処理がバラバラに管理 • → 一貫性のなさ • → 静的解析ツールをビルド毎に走らせる • → Clean Architectureを採用。設計レベルで責務を分ける ことで実装者の関心を出来る限り責務分けから離す。設計に 一貫性をもたせる。
参考
秘伝のタレを紐解く・改善する • MethodSwizzlingなど黒魔術の利用 • → 標準的な方法からの逸脱 • → 個人的興味で標準的な方法から逸脱したいときは状況を 見て楽しみましょう。(フローチャート参考)
私もこの間 脱線したあげくに結局直しました…
まとめ • 常に状況を観察して 最適な責務で分ける • 秘伝のタレが立ちはだかったときは大きな問題から一つ一つ 紐解いて 最適解を適用していく • 昨日かいたコードは既に秘伝のタレかもしれない…
参考書籍 プリンシプル オブ プログラミング
エクストリームリーディング会を 定期的に開催してます やってること • その場で全員で同じ項目を読んで疑問点を共有し合うスタイル • コードの「匂い」を嗅ぐ • 設計手法を学ぶ 次回5/31(金)
12-13