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

KKDからパターン開発へ

 KKDからパターン開発へ

2025/10/04(土)に開催された XP祭り2025( https://xpjug.connpass.com/event/364203/ ) に参加した時にランチタイム野良LTで発表した資料です。

Avatar for なかしょ

なかしょ

October 04, 2025
Tweet

More Decks by なかしょ

Other Decks in Technology

Transcript

  1. KKD

  2. 製造業における、いにしえの手法『KKD』 9 • K:経験 ➢過去の業務経験から得られた知識やスキル、ノウハウのこと • K:勘 ➢経験則に基づいて、直感的に物事の状況を判断すること • D:度胸

    ➢困難な状況でも、恐れずに決断し、行動する精神力 • 見積法として使われること有名であるが、業務全般において個人の 経験や感覚に基づいて判断や意思決定をおこなうことを指す • 熟練者がやるとそこそこ成功率する、が...
  3. パターン・ランゲージの構造 14 • パターン・ランゲージを構成する個々のパターンは、明確で一貫した 構造を持つ • 状況(Context) ➢その問題が発生する典型的な環境や条件を記述する • 問題(Problem)

    ➢その状況下で直面する課題や困難を明確にする • 解決(Solution) ➢問題を解消するための考え方や行動の「コツ」が、やや抽象的に書かれる。こ れには、具体的なアクション例が箇条書きで示されることもある • 結果(Result) ➢その解決策を適用した際に期待される良い結果や、考慮すべき影響を記述 する
  4. パターン記述の基本構造と例(1/2) 15 要素 説明 例(ソフトウェア開発:ファサードパターン) パターン名 その解決策を端的に表す、共通 言語となる名前。 ファサード(Facade) 状況

    (Context) その問題が発生する典型的な環 境や条件。 複雑なサブシステムがあり、クライアントからの利用が煩雑になって いる。 問題 (Problem) その状況下で直面する課題や困 難。 クライアントがサブシステムの詳細を知る必要があり、結合度が高く、 変更が困難 。 解決 (Solution) 問題を解消するための考え方や 行動のコツ(抽象的記述と具体 的なアクション例)。 サブシステムへの統一されたインターフェースを提供する「窓口」と なるクラスを作成する。 結果 (Result) その解決策を適用した際に期待 される良い結果、または考慮すべ き影響。 クライアント側とサブシステムの結合度が低減し、複雑な処理をシ ンプルに利用できるようになる。機能の追加も容易になる。
  5. パターン記述の基本構造と例(2/2) 16 要素 説明 アプリ パターン名 その解決策を端的に表す、共通 言語となる名前。 アラートダイアログ 状況

    (Context) その問題が発生する典型的な環 境や条件。 ユーザーがアプリを操作中、システムが通常と異なる状態(エラー、 警告、確認)を検知したり、初めて実行した重要な機能について説 明したいとき。 問題 (Problem) その状況下で直面する課題や困 難。 重要な情報を確実に伝えたいが、通常のUIでは見落とされやすい。 解決 (Solution) 問題を解消するための考え方や 行動のコツ(抽象的記述と具体 的なアクション例)。 モーダルなダイアログで情報と選択肢を提示。情報を読んだことを 確認するボタンを押下するまで、それ以外のユーザ操作を受け入 れない。 結果 (Result) その解決策を適用した際に期待 される良い結果、または考慮すべ き影響。 ユーザーは情報を認識し、適切な判断・対応で意図しない結果を 回避できる。
  6. パターン・ランゲージの価値 17 • 個人の中に存在する「経験知」や「暗黙的に共有されている価値観」 を、誰もが理解し、活用できる「形式知」へと変換し、体系化できる • 形式知化によって、新たな「ことば」が生まれ、チーム内で「対話のた めの語彙」として機能する • パターン・ランゲージは「アイデア発想の促進」にも貢献する

    ➢パターンは「絶対的な答え」を与えるものではなく、抽象的な思考の「型」を提 供する ➢この「型」を自身の状況やほかのアイデアと組み合わせることで、新たな問題 解決策や創造的な発想を生み出すことができる ➢パターン・ランゲージは知識の流動性を高め、組織全体の創造性とコラボ レーションを向上させる、「生きた言語」となる
  7. 先人のパターン・ランゲージに学ぶ重要性 21 • 「巨人の肩の上に立つ」ことができる ➢長年の経験によって磨き上げられた「良いやり方」を、効率的に学ぶことがで きる。これにより、問題解決のスピードと質が格段に向上する • 「共通言語」が手に入る ➢業界で広く知られたパターンを学ぶことで、チーム内外でのコミュニケーショ ンが円滑になる。「この問題はあのパターンで解決しよう」という一言で、認識

    を合わせられるようになる • 「自分たちのパターン」をより良くする土台になる ➢既存のパターンを学ぶことは、自分たちで考えることをやめる、ということでは ない。むしろ、学んだ知識を土台にして、それを自分たちの状況に合わせて 応用したり、さらに良いやり方(私たち独自のパターン)を生み出したりするこ とができるようになる。 • 「学ぶこと」と「自分たちで発見すること」は、対立するものではなく、お 互いを高め合う関係である。
  8. Uncle Bobの労働倫理 (Clean Coderより) 23 • あなたのキャリアの責任はあなたにある ➢あなたの市場価値を決めるのは雇用主の責任ではない ➢キャリアのための学習時間を確保するのはあなたの責任 •

    週に60時間働こう ➢40時間は雇用主のため(業務)、20時間はあなたのため(自己学習) ➢1週間は168時間。労働60時間、睡眠56時間としても、52時間自由に使える。 ➢追加した20時間は雇用主のために使ってはいけない。あなたのキャリアのために 使わなくてはならない。 ➢プロは自分の専門知識の手入れに時間をかけるものだ。 • ソフトウェア開発者となった情熱を取り戻せ ➢この20時間で燃え尽きてしまうと思うかもしれない。だけどこれは燃え尽きないよう にするためのものだ。 ➢20時間でその情熱を取り戻せ、20時間を楽しむんだ!