[obsidian] vault backup: 2025-07-25 21:06:47[
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (push) Successful in 11m19s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (push) Successful in 11m19s
				
			This commit is contained in:
		
							
								
								
									
										23
									
								
								content/Entity Component System.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								content/Entity Component System.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
#programming 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
主にゲームエンジンなどで採用されるプログラミングのパラダイム。
 | 
			
		||||
 | 
			
		||||
最近のUnityでも内部的に採用されている。
 | 
			
		||||
 | 
			
		||||
[[Rust]]だと[[Bevy]]が有名。
 | 
			
		||||
 | 
			
		||||
[[オブジェクト指向]]と比べると、データのメモリ分布が、オブジェクトごとに並ぶのではなく個別のメンバー変数ごとに並ぶことになり、CPUのメモリキャッシュに乗りやすいなどの利点がある。
 | 
			
		||||
 | 
			
		||||
[\[Rust\] ECSアーキテクチャ \[bevy\_ecs\] | DevelopersIO](https://dev.classmethod.jp/articles/ecs-rust-bevy/)
 | 
			
		||||
 | 
			
		||||
[Intro to ECS - Unofficial Bevy Cheat Book](https://bevy-cheatbook.github.io/programming/ecs-intro.html)
 | 
			
		||||
 | 
			
		||||
## データのモデリング方法としてなにがうれしいのか
 | 
			
		||||
 | 
			
		||||
オブジェクト指向と比べた時の利点が基本的にさっきのような、パフォーマンス面での利点が強調されることが多い。ただ、何かパフォーマンスのためにせっかくプログラミング言語が用意してくれたデータのモデリング技法を犠牲にしているような気がしてならず、あんまり旨味がよくわからなかった。
 | 
			
		||||
 | 
			
		||||
ただ、Bevyの設計をいろいろ読んでいると、モデリングとしての核心は、「集合の中から特定の要素を持つもの部分集合を指定して挙動を個別に操作する(依存性がない操作同士はどういう順番で実行してもいい)」ということかなと思った。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user