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

英語文法から学ぶ、クリーンな設計の秘訣

 英語文法から学ぶ、クリーンな設計の秘訣

SOLID原則・凝集性・結合度・関心の分離・DDD・クリーンアキテクチャ...
設計を考える際、学ぶべき原理や手法が多すぎて圧倒されてしまうこともありますよね。

しかし、これら設計原則には、「英語の文法」にヒントが隠されているかも...?
英語文法の基本ルールに着目することで、設計原則を詳しく知らなくても、シンプルで明確な設計を行うための手がかりを得られるかもしれません!

このトークでは、SVO・SVOCなど基礎的な英語文法がどのようにコード設計に応用できるかを具体的に解説します。

- S(主語)やV(動詞)の明確化が単一責任原則の遵守に繋がること
- 「S(主語)がV(動詞)した」とクラス設計を考えることの恩恵
- コード上での形容詞・副詞の在り方
### 想定聴講者
- ソフトウェア設計に詳しくはないが興味を持っている方
- 設計の原理や手法が多くてなかなか手を出せずにいる方

NewNomad

March 22, 2025
Tweet

More Decks by NewNomad

Other Decks in Programming

Transcript

  1. 自己紹介 • 名前 • NobleNomad • 職場 • 株式会社ウィルゲート 24卒

    • 好きな言語・FW・ライブラリ • PHP, React • 趣味 • ゲーム制作・ドット絵制作
  2. 話 す内 容 - 英 語 の 「 S VO

    」 ル ー ル に 着 目 - 「 誰 が 何 を す る か 」 と い う 問 い に 徹 底 的 に 立 ち 返 る 。 - → 設 計 の 基 本 原 則 を 劇 的 に 実 現 で き る ! SVOを意識すればきれいな設計ができる!
  3. お こと わ り • あ く ま で 、

    筆 者 が 試 し た ら う ま く 行 っ た 、 N = 1 の 経 験 則 で す • 例 外 ・ あ て は な ら な い ケ ー ス な ど も 想 定 さ れ ま す の で ご 了 承 く だ さ い 。 M (_ _ ) M – ( 思 想 が 強 め で す )
  4. な ぜ「 英 語文 法 」な の か? 英語 •

    原則「主語→動詞→目的語」 • 語順が明確 日本語 • 「が・を」など助詞で意味を 補完 • 解釈に幅が出る
  5. な ぜ「 英 語文 法 」な の か? 英語:"The user

    saves the data." 日本語訳:『ユーザーがデータを保存する』 • 一目で「誰が」「何をする」のかが明確 – この明快さが、クラス設計にそのまま応用できる理由! S V O
  6. SVOの語順 O (Object:目的語) "the data"(データ) → 動詞の影響を受ける対象、処理の結果などを明示 V (Verb:動詞) "saves"(保存する)

    → 主語が実行する『何をするか』、クラスが持つ具体的な処理や責務 S (Subject:主語) "The user"(ユーザー) → 文章の中心となる『誰が』、クラスやエンティティそのもの
  7. 「 S V O 」 を 守 る と 何

    が い い の か 関数→動詞 • 関心の分離が保た れる! クラス →主語 • クラスの関心事が 明確→保守性向上
  8. クラス →主語 クラス名: Utility・Manager • 「とりあえず全部ここに書けばい いやろ」 • そして神クラスへ •

    クラス間依存が増大してしまいが ち クラス名: User • 「ユーザ「が ・に」できる操作」 のみ • 凝集性高、につながる
  9. クラス →主語2 Userクラス • 「クライアント?運営?全部こ こに書けばいいやろ」 • そして神クラスへ • 4000行クラスなど、肥大化につ

    ながってしまう Clientクラス・ActiveUserクラス • クラスの肥大化を防げる! • 関心事が明確→保守性向上 さらに言うと…… クラス名はある程度限定的にすると 関心事が明確→保守性向上!
  10. まとめ - 「 S VO 」 を 意 識 し

    た ク ラ ス 設 計 - コ ー ド が 読 み や す く な る - ク ラ ス の 関 心 事 が 明 確 に - 関 心 の 分 離 が 保 た れ る SVO文法は「誰が」「何をする」のかが 明確・かつ誰でも容易に理解できる明快なルール これをクラス設計に応用すると自然ときれいな設計ができる!