Upgrade to Pro — share decks privately, control downloads, hide ads and more …

疎結合と認知

kanayannet
February 05, 2022

 疎結合と認知

kanayannet

February 05, 2022
Tweet

More Decks by kanayannet

Other Decks in Programming

Transcript

  1. 疎結合 と 認知
    疎結合 と 認知
    Gunma.web #44
    Gunma.web #44
    @kanayannet
    @kanayannet

    View full-size slide

  2. 近況報告
    (
    前座
    )
    近況報告
    (
    前座
    )
    今更ですが...
    Ruby
    技術者認定試験 Silver
    合格

    View full-size slide

  3. 次は
    GOLD
    目指します
    次は
    GOLD
    目指します

    View full-size slide

  4. 今のネタが伝わった方は世代がバレ
    ry..
    今のネタが伝わった方は世代がバレ
    ry..

    View full-size slide

  5. ここから本題です
    ここから本題です

    View full-size slide

  6. 今回の目的
    今回の目的
    疎結合 のアーキテクチャにすると..
    「その仕組み覚えずらい」という人が出てくる
    何故、覚えずらいと感じるのか?紐解く

    View full-size slide

  7. 凄い技術の発表じゃないよ
    凄い技術の発表じゃないよ
    でも凄く重要な事です。

    View full-size slide

  8. 今回の大前提
    今回の大前提
    密結合 =
    悪 と断罪したい訳ではない
    機能を集約化するために、やる場合もある
    もちろん「覚えずらい」という人が悪いという訳でもない
    原因を取り除いてスムーズに物事を進めるために
    自分も勉強するために

    View full-size slide

  9. 疎結合とは?
    疎結合とは?
    細分化された個々のコンポーネント同士の結びつきが緩やか
    独立性が強い状態
    個々のコンポーネント同士は連携しているが、依存している
    事が少ない

    View full-size slide

  10. もっと具体的に
    もっと具体的に
    それ単体でも動作可能である
    それ単体でテストが可能である

    View full-size slide

  11. どれが一番疎でしょうか?
    どれが一番疎でしょうか?
    rubygems, cpan
    など
    自作のモジュール群
    マイクロサービス

    View full-size slide

  12. クリーンアーキテクチャでは
    クリーンアーキテクチャでは

    View full-size slide

  13. ソースレベル
    コンポーネント間の通信には、単純な関数呼び出しを使用
    デプロイレベル
    あるモジュールのソースコードに対する変更が、ほかのモ
    ジュールに影響を与えない単位
    サービスレベル
    物理的な場所に依存しない、通信で繋がっている

    View full-size slide

  14. 特徴
    特徴
    覚えずらい人の場合

    View full-size slide

  15. どんな時に覚えずらい?
    どんな時に覚えずらい?
    一つの画面で
    ソースコードを追えなくなった
    ソースコードを追えなくなる
    処理を追えなくなる

    View full-size slide

  16. 処理を追えなくなる
    処理を追えなくなる
    これが「覚えずらい」の正体
    ソースコードの改修一切なくリリースまで行くことはない
    追えないのは致命的

    View full-size slide

  17. という事は
    ...
    という事は
    ...

    View full-size slide

  18. RDB
    の正規化
    RDB
    の正規化
    table
    を複数に分けて共通のID
    で管理
    これも同じように覚えずらいのでは?

    View full-size slide

  19. 同じレコードに
    ...
    同じレコードに
    ...
    全カラムが入っている方が覚えやすい
    結構あるある

    View full-size slide

  20. class
    の継承
    class
    の継承
    同じ処理を様々なclass
    内で使いたい
    同じように覚えずらいか?

    View full-size slide

  21. 複数の
    class

    ...
    複数の
    class

    ...
    同じような method
    が書いてある方が覚えやすかったりする

    View full-size slide

  22. 把握できる人と
    把握できる人と




    何が違うのか?
    何が違うのか?

    View full-size slide

  23. 情報非対称性
    情報非対称性
    エンジニア組織論でも出ましたね。
    「見えてるもの」が違う
    エンジニア同士でもあるある話
    「相手」の立場になって考える

    View full-size slide

  24. 特徴
    特徴
    「覚えられる人」の場合

    View full-size slide

  25. 絵・図で表現している
    ホワイトボードに絵を描くと伝わる ->
    あるある

    View full-size slide

  26. 道具の使い方
    道具の使い方
    複数画面を並べて眺めている
    エディタの画面分割を上手く使っている
    そもそも一つの画面で追ってない

    View full-size slide

  27. 単純に「慣れ」
    単純に「慣れ」
    頭の中で通信の線が引けている

    View full-size slide

  28. 解消方法
    解消方法

    View full-size slide

  29. もちろんケースバイケース
    もちろんケースバイケース
    人によってポイント違う場合あるある
    「そのコードの書き方知らなかった」
    これも「あるある」話

    View full-size slide

  30. 道具の使い方問題
    道具の使い方問題
    画面分割やmethod
    の追い方を「一緒」に探す
    「解らないもの」を認め合える文化
    これ大事

    View full-size slide

  31. 苦戦ポイント
    苦戦ポイント
    エディタは人それぞれ違う
    使われる事が多いエディタに集約されるかな?
    その場で情報交換しやすい方向
    くれぐれも「vim
    」は強要しない
    自分が使っていても、正直おすすめしない

    View full-size slide

  32. あ、ちなみに
    ...
    あ、ちなみに
    ...
    vim
    だと「:sp
    ファイル名」で分割できます
    「:!fgrep "
    検索文字列" */*/*.rb

    rails
    とかだと検索しやすいかな?

    View full-size slide

  33. 絵や図で描く
    絵や図で描く
    面倒くさがると描かなくなるんだけど...
    ここも「重要」です。
    コードを追えなくなる方が「もっと面倒」

    View full-size slide

  34. 絵や図のフォーマット
    絵や図のフォーマット
    ゆるく決める
    そんなに拘らない
    伝わって「頭の中で整理できる」方を優先

    View full-size slide

  35. まとめ
    まとめ

    View full-size slide

  36. 処理を追えなくなるのは
    ...
    処理を追えなくなるのは
    ...
    追えてる人と見えてるものが違う

    View full-size slide

  37. 把握出来る人を集めれば
    ...?
    把握出来る人を集めれば
    ...?
    手っ取り早そうな話だが、中々集めづらかったりする
    業務知識をオブジェクトにしたものだったりすると特に...
    人を選ばずにどうにか出来ないか?

    View full-size slide

  38. 処理を追えない事が
    処理を追えない事が




    「悪い訳」じゃない
    「悪い訳」じゃない

    View full-size slide

  39. 「見え方」を同じにする
    もしかしたら「自分が抽象化し過ぎている」かも?
    これも、あるある話
    謙虚さ重要

    View full-size slide

  40. 良い悪い で判断しない
    良い悪い で判断しない
    エンジニアなんで
    合理的な判断をしたい
    人 対 人 にしない
    人々 対 課題にする

    View full-size slide

  41. まずは「動くように」する
    まずは「動くように」する
    仕事なんで
    動かないソフトはNG
    その上で運用・開発しやすいように
    教える事が最優先ではない

    View full-size slide

  42. しかし
    ...
    しかし
    ...
    メンテできなくなったソフトは価値を失う
    プロダクトの考え方
    サービスが長続きするよう、開発し続けられるように

    View full-size slide

  43. バランス重要
    バランス重要

    View full-size slide

  44. ご清聴
    ご清聴




    ありがとうございまし
    ありがとうございまし
    た。
    た。

    View full-size slide