---
title: 推測しやすいコードを書こう
tags: 
author: [ふみふみ](https://www.docswell.com/user/2323code)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/VJP2MW9WJ8.jpg?width=480
description: 2024/12/14 に開催された Kawaii♡LT で発表した資料です。
published: February 11, 25
canonical: https://www.docswell.com/s/2323code/KL19RL-2025-02-11-210756
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/VJP2MW9WJ8.jpg)

2024-12-14 Kawaii♡LT
推測しやすいコードを書こう
自己流でコードを分けないための考え方
2024-12-14 Kawaii♡LT
ふみふみ（2323-code）
X: @2323_code
(c) @2323-code All Rights Reserved.
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/2EVD98M9EQ.jpg)

2024-12-14 Kawaii♡LT
目次
対象者
結論
なぜ自己流でコードを分けてはいけないのか
分ける基準が分からない、どうすれば？
まとめ
(c) @2323-code All Rights Reserved.
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/57GYZ5G47L.jpg)

2024-12-14 Kawaii♡LT
この LT の対象者
自分だけで実装を書いたはずなのに、どこにどの実装があるかわからなくなった
覚えのある人
修正の影響範囲が分からず、不安になったことがある人
設計とか考えてはじめからコード書けるようになりたい人
(c) @2323-code All Rights Reserved.
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4EQMLZXRJP.jpg)

2024-12-14 Kawaii♡LT
つまり
推測しづらいコードを書いた覚えがある人
を、対象者としています。
(c) @2323-code All Rights Reserved.
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/KJ4VD36QE1.jpg)

2024-12-14 Kawaii♡LT
結論：推測しやすいコードを書くためには？
自己流でコードを分けないために何ができる？
既存の概念から考えよう
三層アーキテクチャ
どの層にどのようなコードを書くかを考えて書こう
既存の概念を使うことで、自分も他人も推測しやすいコードを書くことができる
(c) @2323-code All Rights Reserved.
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LE13Z1VLJG.jpg)

2024-12-14 Kawaii♡LT
Q. なぜ自己流でコードを分けてはいけないのか
A. 推測しづらいコードになるから。
変更の影響範囲が分かりづらい
役割がはっきりしない
→ どこに何があるかが分かりづらい
(c) @2323-code All Rights Reserved.
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GEWP98LQJ2.jpg)

2024-12-14 Kawaii♡LT
自己流でコードを分けるとは？
過去の自分のやらかし
(c) @2323-code All Rights Reserved.
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/47ZK98M373.jpg)

2024-12-14 Kawaii♡LT
① 実質 main 関数に全てのロジックを書いている
&lt; 分けてる 「つもり」
# main.py
def main():
main_logic()
def main_logic():
# ロジック1
# ロジック2
# ロジック3...
(c) @2323-code All Rights Reserved.
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/YJ6QKPNZJV.jpg)

2024-12-14 Kawaii♡LT
② ロジックの一部を分ける基準が曖昧
&lt; 重複は避けたい！でも内容が若干違うので結局ベタがき...
def ロジックA():
# ロジック1
def ロジックB():
# ロジック1&#039; # ほぼ重複
(c) @2323-code All Rights Reserved.
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GJ5RPK5974.jpg)

2024-12-14 Kawaii♡LT
Q. 分ける基準が分からない、どうすれば？
A. 既存の概念から考えよう
三層アーキテクチャ
層に分けると、コードを分ける基準が見えてくる
(c) @2323-code All Rights Reserved.
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/9E2D6WN5ER.jpg)

2024-12-14 Kawaii♡LT
三層アーキテクチャとは
(c) @2323-code All Rights Reserved.
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/D7Y29LP67M.jpg)

2024-12-14 Kawaii♡LT
(c) @2323-code All Rights Reserved.
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/VEN8L4M1J8.jpg)

2024-12-14 Kawaii♡LT
① ロジックを main 関数に全て書かない
&lt; メソッドの入出力はインターフェイスで定義、詳細はアプリケーション層で記
述！
# main.py
main()
# presentation.py
def main():
main_logic()
# application.py
def main_logic(id: int) -&gt; str:
return f&quot;ID: {id}&quot;
# domain.py
def main_logic(id: int) -&gt; str:
return NotImplementedError
(c) @2323-code All Rights Reserved.
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/Y79K4QNY73.jpg)

② ロジックの一部を分ける基準を明確にする
2024-12-14 Kawaii♡LT
&lt; 内容が若干違くても、同じメソッドを呼べば済むように書く!
# main.py
main()
# presentation.py
def main(greeter: Greeter):
print(greeter.greet())
if user == &quot;A&quot;:
greeter = GreetA()
else:
greeter = GreetB()
# application.py
class GreetA(Greeter):
def greet(self) -&gt; str:
return &quot;Hello A!&quot;
class GreetB(Greeter):
def greet(self) -&gt; str:
return &quot;こんにちは B!&quot;
# domain.py
class Greeter:
def greet(self) -&gt; str:
return NotImplementedError
(c) @2323-code All Rights Reserved.
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G78RQGKKED.jpg)

2024-12-14 Kawaii♡LT
結論：推測しやすいコードを書くためには？
自己流でコードを分けないために何ができる？
既存の概念から考えよう
三層アーキテクチャ
どの層にどのようなコードを書くかを考えて書こう
既存の概念を使うことで、自分も他人も推測しやすいコードを書くことができる
(c) @2323-code All Rights Reserved.
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/L7LKXGZPER.jpg)

2024-12-14 Kawaii♡LT
参考文献
現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実
践技法
増田亨 著
技術評論社
MVC、3 層アーキテクチャから設計を学び始めるための基礎知識 #初心者 - Qiita
2024/12/13 最終閲覧
やさしいクリーンアーキテクチャ
2024/12/13 最終閲覧
(c) @2323-code All Rights Reserved.
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4EM2LQV2EW.jpg)

2024-12-14 Kawaii♡LT
ご清聴ありがとうござい
ました！
で感想をお待ちしております！
X: @2323_code
#KawaiiLT
(c) @2323-code All Rights Reserved.
17


