广çãªEMF (Eclipse Modeling Framework) ãã¹ãã®æ§ç¯ã«é¢ãã詳现ã¬ã€ããã¢ãã«ã®æŽåæ§ãšã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ã確ä¿ããããã®ææ³ãããŒã«ããã¹ããã©ã¯ãã£ã¹ã解説ããŸãã
å ç¢ãªEMFãã¹ãã®æ§ç¯ïŒéçºè åãç·åã¬ã€ã
Eclipse Modeling Framework (EMF) ã¯ãæ§é åããŒã¿ã¢ãã«ã«åºã¥ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åŒ·åãªããŒã«ã§ããããããEMFã¢ãã«ãšããã«åºã¥ããŠæ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ã®è€éãã¯ãæŽåæ§ãå®å®æ§ãæ£ç¢ºæ§ã確ä¿ããããã«å³å¯ãªãã¹ããå¿ èŠãšããŸãããã®ç·åã¬ã€ãã§ã¯ã广çãªEMFãã¹ãã®æ§ç¯ã«ã€ããŠæ·±ãæãäžãã倿§ãªãããžã§ã¯ãããã©ãããã©ãŒã ã«é©çšå¯èœãªæ¹æ³è«ãããŒã«ããã¹ããã©ã¯ãã£ã¹ãç¶²çŸ ããŸãã
ãªãEMFãã¹ãã¯éèŠãªã®ãïŒ
EMFã¯ãããŒã¿ã¢ãã«ã®å®çŸ©ãã³ãŒãã®çæãã¢ãã«ã€ã³ã¹ã¿ã³ã¹ã®æäœã®ããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸãã培åºãããã¹ãããªããã°ãããã€ãã®é倧ãªåé¡ãçºçããå¯èœæ§ããããŸãïŒ
- ã¢ãã«ã®ç ŽæïŒ ã¢ãã«ã€ã³ã¹ã¿ã³ã¹ã«å¯Ÿãã誀ã£ãæäœã¯ãããŒã¿ã®äžæŽåãç Žæã«ã€ãªãããã¢ããªã±ãŒã·ã§ã³ã®é害ãåŒãèµ·ããå¯èœæ§ããããŸãã
- ã³ãŒãçæãšã©ãŒïŒ ã³ãŒãçæãã³ãã¬ãŒããçæãããã³ãŒãèªäœã®ãã°ã¯ã远跡ãå°é£ãªãšã©ãŒãåŒãèµ·ããå¯èœæ§ããããŸãã
- æ€èšŒã®åé¡ïŒ EMFã¢ãã«ã«ã¯ãããŒã¿ã®æŽåæ§ã確ä¿ããããã«åŒ·å¶ãããªããã°ãªããªãæ€èšŒã«ãŒã«ããã°ãã°ååšããŸããäžååãªãã¹ãã¯ããããã®ã«ãŒã«ã®éåã«ã€ãªããå¯èœæ§ããããŸãã
- ããã©ãŒãã³ã¹ã®ããã«ããã¯ïŒ éå¹çãªã¢ãã«æäœã¯ãç¹ã«å€§èŠæš¡ãªã¢ãã«ãæ±ãå Žåã«ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãã©ãããã©ãŒã äºææ§ã®åé¡ïŒ EMFã¢ããªã±ãŒã·ã§ã³ã¯ãç°ãªããã©ãããã©ãŒã ãç°å¢ã§å®è¡ãããå¿ èŠããããŸãããã¹ãã«ãã£ãŠããããã®ç°å¢éã§ã¢ããªã±ãŒã·ã§ã³ãæ£ããåäœããããšãä¿èšŒãããŸãã
广çãªEMFãã¹ãã®ããã®æŠç¥
å æ¬çãªEMFãã¹ãæŠç¥ã¯ãã¢ãã«ãšã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®åŽé¢ã察象ãšãããããŸããŸãªçš®é¡ã®ãã¹ããå å«ãã¹ãã§ãã
1. ã¢ãã«æäœã®åäœãã¹ã
åäœãã¹ãã¯ãã¢ãã«ã¯ã©ã¹å ã®åã ã®ã¡ãœãããšæäœã«çŠç¹ãåœãŠãŸãããããã®ãã¹ãã¯ãåã¡ãœãããç°ãªãæ¡ä»¶äžã§æåŸ ã©ããã«åäœããããšãæ€èšŒããå¿ èŠããããŸãã
äŸïŒã¢ãã«ã¯ã©ã¹ã®ã»ãã¿ãŒã¡ãœããã®ãã¹ã
äŸãã°ã`firstName` 屿§ã®ã»ãã¿ãŒã¡ãœãããæã€ã¢ãã«ã¯ã©ã¹ `Person` ããããšããŸãããã®ã¡ãœããã®åäœãã¹ãã¯æ¬¡ã®ããã«ãªããŸãïŒJUnitã䜿çšïŒïŒ
import org.junit.Test;
import static org.junit.Assert.*;
public class PersonTest {
@Test
public void testSetFirstName() {
Person person = new Person();
person.setFirstName("John");
assertEquals("John", person.getFirstName());
}
@Test
public void testSetFirstNameWithNull() {
Person person = new Person();
person.setFirstName(null);
assertNull(person.getFirstName());
}
@Test
public void testSetFirstNameWithEmptyString() {
Person person = new Person();
person.setFirstName("");
assertEquals("", person.getFirstName());
}
}
ãã®äŸã¯ãæå¹ãªå€ãnullå€ã空æååã§ã»ãã¿ãŒã¡ãœããããã¹ãããããšã瀺ããŠããŸãããããã®ç°ãªãã·ããªãªãã«ããŒããããšã§ãã¡ãœããããã¹ãŠã®å¯èœãªæ¡ä»¶äžã§æ£ããåäœããããšãä¿èšŒãããŸãã
2. ã¢ãã«æ€èšŒãã¹ã
EMFã¯ãã¢ãã«ã«å¶çŽãå®çŸ©ã§ãã匷åãªæ€èšŒãã¬ãŒã ã¯ãŒã¯ãæäŸããŸããæ€èšŒãã¹ãã¯ããããã®å¶çŽãæ£ããé©çšãããããšãä¿èšŒããŸãã
äŸïŒæ€èšŒå¶çŽã®ãã¹ã
äŸãã°ã`Person` ãªããžã§ã¯ãã® `age` 屿§ãéè² ã§ããããšãèŠæ±ããæ€èšŒå¶çŽããããšããŸãããã®å¶çŽã®æ€èšŒãã¹ãã¯æ¬¡ã®ããã«ãªããŸãïŒ
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.util.Diagnostician;
import org.junit.Test;
import static org.junit.Assert.*;
public class PersonValidationTest {
@Test
public void testValidAge() {
Person person = new Person();
person.setAge(30);
Diagnostic diagnostic = Diagnostician.INSTANCE.validate(person);
assertTrue(diagnostic.getSeverity() == Diagnostic.OK);
}
@Test
public void testInvalidAge() {
Person person = new Person();
person.setAge(-1);
Diagnostic diagnostic = Diagnostician.INSTANCE.validate(person);
assertTrue(diagnostic.getSeverity() == Diagnostic.ERROR);
}
}
ãã®äŸã¯ãæå¹ãªå¹Žéœ¢ãšç¡å¹ãªå¹Žéœ¢ã§æ€èšŒå¶çŽããã¹ãããããšã瀺ããŠããŸãããã®ãã¹ãã¯ãæ€èšŒãã¬ãŒã ã¯ãŒã¯ãç¡å¹ãªå¹Žéœ¢ããšã©ãŒãšããŠæ£ããèå¥ããããšãæ€èšŒããŸãã
3. ã³ãŒãçæãã¹ã
EMFã®ã³ãŒãçææ©èœã䜿çšããŠããå Žåãçæãããã³ãŒããæ£ããæ©èœããããšãä¿èšŒããããã«ãã¹ãããããšãäžå¯æ¬ ã§ããããã«ã¯ãçæãããã¢ãã«ã¯ã©ã¹ããã¡ã¯ããªãã¢ããã¿ã®ãã¹ããå«ãŸããŸãã
äŸïŒçæããããã¡ã¯ããªã¡ãœããã®ãã¹ã
äŸãã°ãæ°ãã `Person` ãªããžã§ã¯ããäœæãã `createPerson()` ã¡ãœãããæã€çæããããã¡ã¯ããªã¯ã©ã¹ `MyFactory` ããããšããŸãããã®ã¡ãœããã®ãã¹ãã¯æ¬¡ã®ããã«ãªããŸãïŒ
import org.junit.Test;
import static org.junit.Assert.*;
public class MyFactoryTest {
@Test
public void testCreatePerson() {
Person person = MyFactory.eINSTANCE.createPerson();
assertNotNull(person);
}
}
ãã®äŸã¯ã`createPerson()` ã¡ãœãããnullã§ãªã `Person` ãªããžã§ã¯ããè¿ãããšãæ€èšŒããç°¡åãªãã¹ãã瀺ããŠããŸããããè€éãªãã¹ãã§ã¯ãäœæããããªããžã§ã¯ãã®åæç¶æ ãæ€èšŒããããšãã§ããŸãã
4. çµ±åãã¹ã
çµ±åãã¹ãã¯ãEMFã¢ãã«ã®ç°ãªãéšåãšã¢ããªã±ãŒã·ã§ã³éã®çžäºäœçšãæ€èšŒããŸãããããã®ãã¹ãã¯ãã·ã¹ãã å šäœãæ£ãã飿ºããŠåäœããããšãä¿èšŒããããã«éèŠã§ãã
äŸïŒ2ã€ã®ã¢ãã«ã¯ã©ã¹éã®çžäºäœçšã®ãã¹ã
äŸãã°ã`Person` ãš `Address` ãšãã2ã€ã®ã¢ãã«ã¯ã©ã¹ãããããããã®éã«ãªã¬ãŒã·ã§ã³ã·ããããããšããŸããçµ±åãã¹ãã§ã¯ã人ã«äœæã远å ãããšãã«ãªã¬ãŒã·ã§ã³ã·ãããæ£ããç¶æãããããšãæ€èšŒãããããããŸããã
import org.junit.Test;
import static org.junit.Assert.*;
public class PersonAddressIntegrationTest {
@Test
public void testAddAddressToPerson() {
Person person = new Person();
Address address = new Address();
person.setAddress(address);
assertEquals(address, person.getAddress());
}
}
ãã®äŸã¯ã`setAddress()` ã¡ãœããã人ã®äœæãæ£ããèšå®ããããšãæ€èšŒããç°¡åãªçµ±åãã¹ãã瀺ããŠããŸãã
5. ããã©ãŒãã³ã¹ãã¹ã
ããã©ãŒãã³ã¹ãã¹ãã¯ãããŸããŸãªè² è·æ¡ä»¶äžã§ã®EMFã¢ãã«ãšã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã枬å®ããŸãããããã®ãã¹ãã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããã¢ãã«ãšã¢ããªã±ãŒã·ã§ã³ãæé©åããããã«äžå¯æ¬ ã§ãã
äŸïŒå€§èŠæš¡ã¢ãã«ã®èªã¿èŸŒã¿ã«ãããæéã®æž¬å®
import org.junit.Test;
import static org.junit.Assert.*;
public class LargeModelLoadTest {
@Test
public void testLoadLargeModel() {
long startTime = System.currentTimeMillis();
// Load the large model here
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
System.out.println("Time to load large model: " + duration + " ms");
assertTrue(duration < 1000); // Example threshold
}
}
ãã®äŸã¯ãå€§èŠæš¡ã¢ãã«ã®èªã¿èŸŒã¿ã«ãããæéãæž¬å®ããç°¡åãªããã©ãŒãã³ã¹ãã¹ãã瀺ããŠããŸãããã¹ãã¯ãèªã¿èŸŒã¿æéãç¹å®ã®ãããå€ãäžåãããšãæ€èšŒããŸããç¹å®ã®ãããå€ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãšã¢ãã«ã®ãµã€ãºã«äŸåããŸãã
6. UIãã¹ãïŒè©²åœããå ŽåïŒ
EMFã¢ããªã±ãŒã·ã§ã³ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãããå ŽåãUIãæ£ããåäœãããŠãŒã¶ãŒãã¬ã³ããªãŒã§ããããšãä¿èšŒããããã«ãã¹ãããããšãéèŠã§ããSeleniumãSWTBotã®ãããªããŒã«ã䜿çšããŠãUIãã¹ããèªååã§ããŸãã
EMFãã¹ãã®ããã®ããŒã«
ããã€ãã®ããŒã«ããEMFãã¹ãã®æ§ç¯ãšå®è¡ãæ¯æŽããŸãïŒ
- JUnit: Javaã§äººæ°ã®åäœãã¹ããã¬ãŒã ã¯ãŒã¯ã§ãã
- EMF Validation Framework: æ€èšŒå¶çŽãå®çŸ©ãã匷å¶ããããã®çµã¿èŸŒã¿EMFãã¬ãŒã ã¯ãŒã¯ã§ãã
- Mockito: ãã¹ãç®çã§ã¢ãã¯ãªããžã§ã¯ããäœæã§ããã¢ããã³ã°ãã¬ãŒã ã¯ãŒã¯ã§ãã
- Selenium: Webãã©ãŠã¶ã®æäœãèªååããããŒã«ã§ãWebããŒã¹ã®EMFã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã«åœ¹ç«ã¡ãŸãã
- SWTBot: SWTããŒã¹ã®UIãã¹ããèªååããããŒã«ã§ãEclipseããŒã¹ã®EMFã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã«åœ¹ç«ã¡ãŸãã
- ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒããŒã«ïŒJenkinsãGitLab CIãTravis CIïŒïŒ ãããã®ããŒã«ã¯ãã«ãããã¹ãããããã€ã®ããã»ã¹ãèªååãããã¹ãã宿çã«å®è¡ãããåé¡ãæ©æã«æ€åºãããããšãä¿èšŒããŸãã
EMFãã¹ãã®ãã¹ããã©ã¯ãã£ã¹
ãããã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ããã广çã§ä¿å®æ§ã®é«ãEMFãã¹ããæ§ç¯ã§ããŸãïŒ
- ãã¹ãã¯æ©æã«é »ç¹ã«æžãïŒ éçºããã»ã¹ã®æåãããã¹ããçµ±åããŸããã³ãŒããæžãåã«ãã¹ããæžããŸãïŒãã¹ãé§åéçºïŒã
- ãã¹ãã¯ã·ã³ãã«ã§çŠç¹ãçµãããŠããç¶æ ã«ä¿ã€ïŒ åãã¹ãã¯ãã¢ãã«ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®åäžã®åŽé¢ã«çŠç¹ãåœãŠãã¹ãã§ãã
- æå³ã®ãããã¹ãåã䜿çšããïŒ ãã¹ãåã¯ããã¹ããäœãæ€èšŒããŠããããæç¢ºã«èšè¿°ããå¿ èŠããããŸãã
- æç¢ºãªã¢ãµãŒã·ã§ã³ãæäŸããïŒ ã¢ãµãŒã·ã§ã³ã¯ããã¹ãã®æåŸ ãããçµæãæç¢ºã«è¿°ã¹ãã¹ãã§ãã
- ã¢ãã¯ãªããžã§ã¯ããè³¢ã䜿çšããïŒ ãã¹ã察象ã®ã³ã³ããŒãã³ãããã®äŸåé¢ä¿ããåé¢ããããã«ã¢ãã¯ãªããžã§ã¯ãã䜿çšããŸãã
- ãã¹ããèªååããïŒ CIããŒã«ã䜿çšããŠããã«ãããã¹ãããããã€ã®ããã»ã¹ãèªååããŸãã
- ãã¹ãã宿çã«ã¬ãã¥ãŒããæŽæ°ããïŒ ã¢ãã«ãšã¢ããªã±ãŒã·ã§ã³ãé²åããã«ã€ããŠããã¹ããããã«å¿ããŠã¬ãã¥ãŒããæŽæ°ããããšã確èªããŠãã ããã
- ã°ããŒãã«ãªèæ ®äºé ãæ€èšããïŒ ã¢ããªã±ãŒã·ã§ã³ãåœéçãªããŒã¿ïŒæ¥ä»ãé貚ãäœæãªã©ïŒãæ±ãå Žåããã¹ããããŸããŸãªãã±ãŒã«åºæã®ã·ããªãªãã«ããŒããŠããããšã確èªããŠãã ãããäŸãã°ãç°ãªãå°åã®æ¥ä»åœ¢åŒãé貚æç®ããã¹ãããŸãã
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšEMFãã¹ã
EMFãã¹ããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒãã€ãã©ã€ã³ã«çµ±åããããšã¯ãEMFããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®ç¶ç¶çãªå質ãä¿èšŒããããã«äžå¯æ¬ ã§ããJenkinsãGitLab CIãTravis CIãªã©ã®CIããŒã«ã¯ãã³ãŒãããŒã¹ã«å€æŽãå ãããããã³ã«ãã¢ããªã±ãŒã·ã§ã³ã®ãã«ãããã¹ãããããã€ã®ããã»ã¹ãèªååã§ããŸããããã«ãããéçºãµã€ã¯ã«ã®æ©ã段éã§ãšã©ãŒãæããæ¬çªç°å¢ã«ãã°ãæ··å ¥ãããªã¹ã¯ãäœæžã§ããŸãã
以äžã¯ãEMFãã¹ããCIãã€ãã©ã€ã³ã«çµ±åããæ¹æ³ã§ãïŒ
- CIããŒã«ãèšå®ããŠEMFãããžã§ã¯ãããã«ãããŸãã ããã«ã¯éåžžãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒäŸïŒGitïŒããã³ãŒãããã§ãã¯ã¢ãŠããããã«ãããã»ã¹ïŒäŸïŒMavenãGradleã䜿çšïŒãå®è¡ããããšãå«ãŸããŸãã
- CIããŒã«ãèšå®ããŠEMFãã¹ããå®è¡ããŸãã ããã«ã¯éåžžãEMFã¢ãã«ãšã¢ããªã±ãŒã·ã§ã³çšã«äœæããJUnitãã¹ããå®è¡ããããšãå«ãŸããŸãã
- CIããŒã«ãèšå®ããŠãã¹ãçµæãå ±åããŸãã ããã«ã¯éåžžãã©ã®ãã¹ããæåããã©ã®ãã¹ãã倱æãããã瀺ãã¬ããŒããçæããããšãå«ãŸããŸãã
- CIããŒã«ãèšå®ããŠããã¹ãã®å€±æãéçºè ã«éç¥ããŸãã ããã«ã¯éåžžããã¹ã倱æã®åå ãšãªã£ã倿Žãã³ãããããéçºè ã«ã¡ãŒã«ãã¡ãã»ãŒãžãéä¿¡ããããšãå«ãŸããŸãã
ç¹å®ã®ãã¹ãã·ããªãªãšäŸ
ããã«è©³çްãªäŸãæããŠãããã€ãã®ç¹å®ã®ãã¹ãã·ããªãªãæ¢ã£ãŠã¿ãŸãããïŒ
1. ããŒã¿å倿ã®ãã¹ã
EMFã¯ãç°ãªããã©ãŒãããéã®ããŒã¿å倿ãåŠçããŸããããŒã¿ã®æŽåæ§ã確ä¿ããããã«ããããã®å€æããã¹ãããããšãéèŠã§ãã
äŸïŒæ¥ä»å€æã®ãã¹ã
æ¥ä»ã衚ã `EDataType` åã®å±æ§ããããšããŸããã¢ãã«ã®å éšè¡šçŸãšæåå衚çŸã®éã®å€æããã¹ãããå¿ èŠããããŸãã
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EcorePackage;
import org.junit.Test;
import static org.junit.Assert.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class DateConversionTest {
@Test
public void testDateToStringConversion() throws ParseException {
EDataType dateType = EcorePackage.eINSTANCE.getEString(); // Assuming date is stored as a string
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2023-10-27");
String dateString = dateFormat.format(date);
assertEquals("2023-10-27", dateString);
}
@Test
public void testStringToDateConversion() throws ParseException {
EDataType dateType = EcorePackage.eINSTANCE.getEString(); // Assuming date is stored as a string
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2023-10-27";
Date date = dateFormat.parse(dateString);
Date expectedDate = dateFormat.parse("2023-10-27");
assertEquals(expectedDate, date);
}
}
ãã®äŸã¯ãæ¥ä»ããæååãžã®å€æãšãæååããæ¥ä»ãžã®å€æã®äž¡æ¹ãã«ããŒããŠããã倿ããã»ã¹ãæ£ç¢ºã§ããããšãä¿èšŒããŸãã
2. åæåã®ãã¹ã
EMFã®åæåã¯ãåºå®ãããå€ã®ã»ããã衚ããŸãããã¹ãã«ãããæå¹ãªåæå€ã®ã¿ã䜿çšãããããšãä¿èšŒãããŸãã
äŸïŒåæå€ã®ä»£å ¥ãã¹ã
äŸãã°ã`RED`ã`GREEN`ã`BLUE`ãšããå€ãæã€åæå `Color` ããããšããŸãã`Color` åã®å±æ§ã«ã¯ãããã®å€ã®ã¿ãä»£å ¥ã§ããããšããã¹ãããå¿ èŠããããŸãã
import org.junit.Test;
import static org.junit.Assert.*;
public class ColorEnumTest {
@Test
public void testValidColorAssignment() {
MyObject obj = new MyObject(); // Assume MyObject has a color attribute
obj.setColor(Color.RED);
assertEquals(Color.RED, obj.getColor());
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidColorAssignment() {
MyObject obj = new MyObject();
obj.setColor((Color)null); // Or any invalid value
}
}
3. çžäºåç §ã®ãã¹ã
EMFã¢ãã«ã«ã¯ãç°ãªããªããžã§ã¯ãéã®çžäºåç §ããã°ãã°å«ãŸããŸãããã¹ãã«ããããããã®åç §ãæ£ããç¶æãããããšãä¿èšŒãããŸãã
äŸïŒçžäºåç §ã®è§£æ±ºãã¹ã
import org.eclipse.emf.ecore.EObject;
import org.junit.Test;
import static org.junit.Assert.*;
public class CrossReferenceTest {
@Test
public void testCrossReferenceResolution() {
MyObject obj1 = new MyObject();
MyObject obj2 = new MyObject();
obj1.setTarget(obj2); // Assume obj1 has a cross-reference to obj2
EObject resolvedObject = obj1.getTarget();
assertEquals(obj2, resolvedObject);
}
@Test
public void testCrossReferenceNullResolution() {
MyObject obj1 = new MyObject();
EObject resolvedObject = obj1.getTarget();
assertNull(resolvedObject);
}
}
é«åºŠãªãã¹ãæè¡
ããè€éãªEMFã¢ããªã±ãŒã·ã§ã³ã«ã¯ããããã®é«åºŠãªãã¹ãæè¡ãæ€èšããŠãã ããïŒ
- ãã¥ãŒããŒã·ã§ã³ãã¹ãïŒ ã³ãŒãã«å°ããªå€æŽïŒãã¥ãŒããŒã·ã§ã³ïŒãå°å ¥ãããã¹ãããããã®å€æŽãæ€åºããããšã確èªããŸããããã«ããããã¹ãããšã©ãŒãæããã®ã«å¹æçã§ããããšãä¿èšŒãããŸãã
- ããããã£ããŒã¹ããã¹ãïŒ ã³ãŒããæºããã¹ãããããã£ãå®çŸ©ãããããã®ããããã£ãæ€èšŒããããã®ãã¹ãã±ãŒã¹ãèªåçã«çæããŸããããã¯ãè€éãªã¢ã«ãŽãªãºã ãããŒã¿æ§é ã®ãã¹ãã«åœ¹ç«ã¡ãŸãã
- ã¢ãã«ããŒã¹ããã¹ãïŒ ã·ã¹ãã ã®ã¢ãã«ã䜿çšããŠãã¹ãã±ãŒã¹ãçæããŸããããã¯ãå€ãã®çžäºäœçšããã³ã³ããŒãã³ããæã€è€éãªã·ã¹ãã ã®ãã¹ãã«åœ¹ç«ã¡ãŸãã
çµè«
å ç¢ãªEMFãã¹ããæ§ç¯ããããšã¯ãEMFããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®å質ãå®å®æ§ãä¿å®æ§ã確ä¿ããããã«äžå¯æ¬ ã§ããåäœãã¹ããã¢ãã«æ€èšŒãã¹ããã³ãŒãçæãã¹ããçµ±åãã¹ããããã©ãŒãã³ã¹ãã¹ããç¶²çŸ ããå æ¬çãªãã¹ãæŠç¥ãæ¡çšããããšã§ããšã©ãŒã®ãªã¹ã¯ãå€§å¹ ã«åæžãããœãããŠã§ã¢å šäœã®å質ãåäžãããããšãã§ããŸããå©çšå¯èœãªããŒã«ã掻çšãããã®ã¬ã€ãã§æŠèª¬ããããã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠã广çã§ä¿å®æ§ã®é«ãEMFãã¹ããæ§ç¯ããããšãå¿ããªãã§ãã ãããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã¯ãèªåãã¹ããšæ©æã®ãã°æ€åºã®éµã§ãããŸããäžçã®ç°ãªãå°åã§ã¯ç°ãªãå ¥åïŒäœæåœ¢åŒãªã©ïŒãå¿ èŠã«ãªãå¯èœæ§ãããããšãèæ ®ããã°ããŒãã«ãªåŽé¢ããã¹ããšéçºã«åãå ¥ããããã«ããŠãã ããã培åºçãªEMFãã¹ãã«æè³ããããšã§ãã¢ããªã±ãŒã·ã§ã³ãä¿¡é Œæ§ãé«ããããã©ãŒãã³ã¹ã«åªãããŠãŒã¶ãŒã®ããŒãºãæºããããšãä¿èšŒã§ããŸãã