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
疎結合と認知
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kanayannet
February 05, 2022
Programming
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
疎結合と認知
kanayannet
February 05, 2022
More Decks by kanayannet
See All by kanayannet
リファクタリング ハーネス
kanayannet
1
120
厳密な定義
kanayannet
0
130
Mcp Training
kanayannet
0
260
MCP で「こいつ動くぞ」
kanayannet
0
190
無関心の谷
kanayannet
0
1.3k
生成AIの使いどころ
kanayannet
0
270
github copilot と 心理的安全性
kanayannet
0
300
FW と ライブラリ の考え方
kanayannet
0
280
TDDと今まで
kanayannet
0
740
Other Decks in Programming
See All in Programming
Security issues being discussed on Web Platforms
petamoriken
0
940
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
620
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
380
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
330
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
250
A2UI for Android: Safely Rendering AI-Generated UI with Jetpack Compose - DroidKaigi 2026
itsmedreamwalker
0
140
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
210
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
0
570
Are APIs Still Relevant in the AI Era?
soyuka
0
230
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
4
2.9k
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
550
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
YesSQL, Process and Tooling at Scale
rocio
174
15k
A better future with KSS
kneath
240
18k
Designing for Timeless Needs
cassininazir
1
480
The Art of Programming - Codeland 2020
erikaheidi
57
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Are puppies a ranking factor?
jonoalderson
2
3.9k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Between Models and Reality
mayunak
4
460
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
500
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
Optimizing for Happiness
mojombo
378
71k
Transcript
疎結合 と 認知 疎結合 と 認知 Gunma.web #44 Gunma.web #44
@kanayannet @kanayannet
近況報告 ( 前座 ) 近況報告 ( 前座 ) 今更ですが... Ruby
技術者認定試験 Silver 合格
None
次は GOLD 目指します 次は GOLD 目指します
今のネタが伝わった方は世代がバレ ry.. 今のネタが伝わった方は世代がバレ ry..
ここから本題です ここから本題です
今回の目的 今回の目的 疎結合 のアーキテクチャにすると.. 「その仕組み覚えずらい」という人が出てくる 何故、覚えずらいと感じるのか?紐解く
凄い技術の発表じゃないよ 凄い技術の発表じゃないよ でも凄く重要な事です。
今回の大前提 今回の大前提 密結合 = 悪 と断罪したい訳ではない 機能を集約化するために、やる場合もある もちろん「覚えずらい」という人が悪いという訳でもない 原因を取り除いてスムーズに物事を進めるために 自分も勉強するために
疎結合とは? 疎結合とは? 細分化された個々のコンポーネント同士の結びつきが緩やか 独立性が強い状態 個々のコンポーネント同士は連携しているが、依存している 事が少ない
もっと具体的に もっと具体的に それ単体でも動作可能である それ単体でテストが可能である
どれが一番疎でしょうか? どれが一番疎でしょうか? rubygems, cpan など 自作のモジュール群 マイクロサービス
クリーンアーキテクチャでは クリーンアーキテクチャでは
ソースレベル コンポーネント間の通信には、単純な関数呼び出しを使用 デプロイレベル あるモジュールのソースコードに対する変更が、ほかのモ ジュールに影響を与えない単位 サービスレベル 物理的な場所に依存しない、通信で繋がっている
特徴 特徴 覚えずらい人の場合
どんな時に覚えずらい? どんな時に覚えずらい? 一つの画面で ソースコードを追えなくなった ソースコードを追えなくなる 処理を追えなくなる
処理を追えなくなる 処理を追えなくなる これが「覚えずらい」の正体 ソースコードの改修一切なくリリースまで行くことはない 追えないのは致命的
という事は ... という事は ...
RDB の正規化 RDB の正規化 table を複数に分けて共通のID で管理 これも同じように覚えずらいのでは?
同じレコードに ... 同じレコードに ... 全カラムが入っている方が覚えやすい 結構あるある
class の継承 class の継承 同じ処理を様々なclass 内で使いたい 同じように覚えずらいか?
複数の class に ... 複数の class に ... 同じような method
が書いてある方が覚えやすかったりする
把握できる人と 把握できる人と 何が違うのか? 何が違うのか?
情報非対称性 情報非対称性 エンジニア組織論でも出ましたね。 「見えてるもの」が違う エンジニア同士でもあるある話 「相手」の立場になって考える
特徴 特徴 「覚えられる人」の場合
絵・図で表現している ホワイトボードに絵を描くと伝わる -> あるある
None
道具の使い方 道具の使い方 複数画面を並べて眺めている エディタの画面分割を上手く使っている そもそも一つの画面で追ってない
単純に「慣れ」 単純に「慣れ」 頭の中で通信の線が引けている
解消方法 解消方法
もちろんケースバイケース もちろんケースバイケース 人によってポイント違う場合あるある 「そのコードの書き方知らなかった」 これも「あるある」話
道具の使い方問題 道具の使い方問題 画面分割やmethod の追い方を「一緒」に探す 「解らないもの」を認め合える文化 これ大事
苦戦ポイント 苦戦ポイント エディタは人それぞれ違う 使われる事が多いエディタに集約されるかな? その場で情報交換しやすい方向 くれぐれも「vim 」は強要しない 自分が使っていても、正直おすすめしない
あ、ちなみに ... あ、ちなみに ... vim だと「:sp ファイル名」で分割できます 「:!fgrep " 検索文字列"
*/*/*.rb 」 rails とかだと検索しやすいかな?
絵や図で描く 絵や図で描く 面倒くさがると描かなくなるんだけど... ここも「重要」です。 コードを追えなくなる方が「もっと面倒」
絵や図のフォーマット 絵や図のフォーマット ゆるく決める そんなに拘らない 伝わって「頭の中で整理できる」方を優先
まとめ まとめ
処理を追えなくなるのは ... 処理を追えなくなるのは ... 追えてる人と見えてるものが違う
把握出来る人を集めれば ...? 把握出来る人を集めれば ...? 手っ取り早そうな話だが、中々集めづらかったりする 業務知識をオブジェクトにしたものだったりすると特に... 人を選ばずにどうにか出来ないか?
処理を追えない事が 処理を追えない事が 「悪い訳」じゃない 「悪い訳」じゃない
「見え方」を同じにする もしかしたら「自分が抽象化し過ぎている」かも? これも、あるある話 謙虚さ重要
良い悪い で判断しない 良い悪い で判断しない エンジニアなんで 合理的な判断をしたい 人 対 人 にしない
人々 対 課題にする
まずは「動くように」する まずは「動くように」する 仕事なんで 動かないソフトはNG その上で運用・開発しやすいように 教える事が最優先ではない
しかし ... しかし ... メンテできなくなったソフトは価値を失う プロダクトの考え方 サービスが長続きするよう、開発し続けられるように
バランス重要 バランス重要
ご清聴 ご清聴 ありがとうございまし ありがとうございまし た。 た。