SlideShare a Scribd company logo
1 of 15
Download to read offline
キレイなコードについて
作り始めに少し意識することで変わること
スコープ
主にバックエンドの話をしたいなと思います。
本に書いてあるような〇〇原則ではなく、現場で出会った具体的なパターン
個別の倒し方(色々あるので)までは共有せずに、ヤバそうだなという認識を持てるように
したい
APIとフロントを分離したものではなく、フレームワークでフロントもバックエンドのコードも
持っているモノリスなサービスを前提にしようと思います。
Saas系でよく利用する動的型付け言語のフレームワーク
controller
アプリケーションが要求するデータに入力を
変換する
MVC アーキテクチャ
View
テンプレートからViewファイルを生成
する。APIにした場合
Model
データベースとの通信を担当する。
最低限のきれいなコードって
キレイな要素色々
可読性、メンテナンス性、疎結合、バグの発生率、パフォーマンス
個人的に最低限のラインは
上限ラインを話し合われずに追加される
作成時のコストの倍以上で解消しなければいけなくなる負債
Viewファイル
大きめのviewファイル
componentごとで分割されていないファイル
例えば
views
L shared
L header.blage.php
L fotter.php
L main.blade.php
mainで大きく一括りになってしまっていて1ファイル
が大きくなり過ぎてしまっているパターン
命名は色々ありますが、お知らせや特徴など要素ごとで
分割しよう
Viewからの直接のmodel呼び出し
基本的なMVCを理解できてないパターン
依存関係をフル無視して、ViewからModelを呼び出
しているパターン。
時限爆弾的にmodelの修正をリリースした瞬間にフ
ロントがぶっ壊れます。
書いた奴は誰か履歴を追いかけて特定したくなるレ
ベルです。
一部だけのView、一部だけのReact、一部だけ
これは色々議論のあるケースですが、
流行りに乗って色々入れちゃったパターンです。
私のケースではjquery,Railsのテンプレートエンジン、Vue.jsが同居してました。
JSのフロントエンドフレームワークを使う際は
どれを利用するか、バックエンドはAPIかするか、スケジュール感など話し合うことがたく
さんあるので、気軽に「技術的なチャレンジ!!」とかで気軽に導入しないようにしましょ
う。
フロントが闇鍋状態になってしまいます。
ロジックモリモリのViewファイル
bladeファイルの場合、@phpでデータの加工を行うようなパターン
テストが書きにくくなり、使い回しができなくなるし、可読性も落ちます。
やるなら別の層でやりましょう。
フロントで使うのはif文動的なデータの呼び出しだけにしましょう
Modelファイル
fat model・fat controller
メジャーな負債のパターンです。
大体どこのサービスもこの問題を抱えています。
太ったmodelとcontrollerという意味で、
データの加工、呼び出しを行ってしまうケースです。
具体的な基準はないですが、1ファイルが200~300行を超えてきたら、
知識のある人にどう分けるか一度相談した方が良いかと思います。
Model内でのmodel同士の相互参照
モデル内でモデルを読んでしまう場合
右の例だとUser Model内でOrderModelを呼
んでいる例
複雑な加工をするが必要になった場合は
Model以外の層を作ってそこから呼び出すよ
うにする
これが増えすぎるとModel同士の依存関係が
増え過ぎて、Oderをいじったのに
User Modelはぶっ壊れるみたいなことが
起こります。
User
Model
Product
Model
Order
Model
Category
Model
重要なことは
・MVCは中規模のものを早く作ることにメリットがある分、
大規模になると保守性が下がりやすい、解決方法は色々あるので正解はない
・何がどこに書いてあるか方針を説明すれば、他のメンバーがわかること
・迷ったら分けるようにする。(メソッド、ファイル、ディレクトリ)
・命名で制御する。チャットで相談してもいいので、いいのを考える
・分け方は1人で考えず、みんなで考えよう
前述のいい感じに解決するためには?
となった人はここら辺
・フレームワークと設計パターンでググる
・GPT4に聞いてみる
・本読む
Software Design (ソフトウェアデザイン) 2023年6月号 [雑誌]
Clean Architecture 達人に学ぶソフトウェアの構造と設計
ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ
・動画
なるセミさんの実践クリーンアーキテクチャとか
https://www.youtube.com/@nrslib

More Related Content

Similar to キレイなコードって.pdf

T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門normalian
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理政雄 金森
 
Power Apps term explanation
Power Apps term explanation Power Apps term explanation
Power Apps term explanation Makoto Maeda
 
Xamarinとmvvm crossとf#と
Xamarinとmvvm crossとf#とXamarinとmvvm crossとf#と
Xamarinとmvvm crossとf#とMasahiko Miyasaka
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験miso- soup3
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1Makoto Haruyama
 
こうあって欲しいIaC
こうあって欲しいIaCこうあって欲しいIaC
こうあって欲しいIaCKentaro Higashi
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugSAKURUG co.
 
20160317 ichigaya mt_cloud_handson
20160317 ichigaya mt_cloud_handson20160317 ichigaya mt_cloud_handson
20160317 ichigaya mt_cloud_handsonSix Apart
 
About rails 3
About rails 3About rails 3
About rails 3issei126
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)Sosuke Kimura
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築ryosuke matsumura
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
サーバーレスアーキテクチャで作るモバイルバックエンド
サーバーレスアーキテクチャで作るモバイルバックエンドサーバーレスアーキテクチャで作るモバイルバックエンド
サーバーレスアーキテクチャで作るモバイルバックエンドTsukasa Kato
 
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4Noriaki Sakata
 
Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"Kazuyuki Nomura
 
SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介Tadahiro Higuchi
 

Similar to キレイなコードって.pdf (20)

T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理
 
Power Apps term explanation
Power Apps term explanation Power Apps term explanation
Power Apps term explanation
 
Xamarinとmvvm crossとf#と
Xamarinとmvvm crossとf#とXamarinとmvvm crossとf#と
Xamarinとmvvm crossとf#と
 
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
 
こうあって欲しいIaC
こうあって欲しいIaCこうあって欲しいIaC
こうあって欲しいIaC
 
IaC事始め
IaC事始めIaC事始め
IaC事始め
 
[Japan Tech summit 2017] APP 001
[Japan Tech summit 2017] APP 001[Japan Tech summit 2017] APP 001
[Japan Tech summit 2017] APP 001
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
 
20160317 ichigaya mt_cloud_handson
20160317 ichigaya mt_cloud_handson20160317 ichigaya mt_cloud_handson
20160317 ichigaya mt_cloud_handson
 
About rails 3
About rails 3About rails 3
About rails 3
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
サーバーレスアーキテクチャで作るモバイルバックエンド
サーバーレスアーキテクチャで作るモバイルバックエンドサーバーレスアーキテクチャで作るモバイルバックエンド
サーバーレスアーキテクチャで作るモバイルバックエンド
 
くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4くまあず平日夜の勉強会#4
くまあず平日夜の勉強会#4
 
Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"
 
SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介SilverlightとSharePoint2010の紹介
SilverlightとSharePoint2010の紹介
 

キレイなコードって.pdf