- ãŠããããã¹ãã
- çµ±åãã¹ãã
- ã€ã³ã¿ãŒãã§ã€ã¹ãã¹ã
- Androidããã³ããã€ã¹æ§æã®ããŸããŸãªããŒãžã§ã³ã§ãããã®ã¿ã€ãã®ãã¹ãããã¹ãããŸãã
- ãã«ããå£ããå Žåã®ã¡ãŒã«éä¿¡;
- èªåãªãªãŒã¹ãã«ãã§ãåé¡ã¯ãããŸããã
ã»ãšãã©ããã«ããµã€ãtestdroid.comãèŠã€ãããŸãããã»ãšãã©ãã¹ãŠãåãã§ãããã«å€ãïŒå®éã®ããã€ã¹ã§ã®ãã¹ãïŒãæäŸããŸããããã¡ããdenyuzhkuåãã§ãã
ãã®ç¹ã§ã2é±éã®èª¿æ»ã®åŸãAntäžã®Jenkins + buildã¹ã¯ãªããïŒWindowsã®å ŽåïŒã®éžæã忢ãããŸããã
ããã§ãã©ãããŠããããã¹ãŠäžããããšãã§ããŸããïŒïŒ
åææ¡ä»¶ïŒ
- äœããã®æ¹æ³ã§MyProjectãããžã§ã¯ãããã§ã«äœæããŠãããšããŸãã ãããŠåœŒã«ã¯MyProjectTestããã¹ãããããã®ãããžã§ã¯ãããããŸãïŒãã¹ããããžã§ã¯ãã«ã¯å°ãªããšã1ã€ã®ãã¹ãããããŸãïŒã ãããŠããããžã§ã¯ãã®ãããã©ã«ããŒãdïŒ\ projects \ MyProject \ trunk \ãã£ã¬ã¯ããªã«çœ®ããŸãã ãããžã§ã¯ãã®ãœãŒã¹ã³ãŒãã¯SVNã«ä¿åãããŸãã
- ãã®ããã¥ã¢ã«ã¯ãAndroid SDKããŒãžã§ã³16ïŒhttp://developer.android.com/sdk/index.htmlïŒã䜿çšããŠäœæãããŸããã å¥ã®ããŒãžã§ã³ã䜿çšããŠããå Žåã¯ãäœãå¥ã®æ¹æ³ã§äœæ¥ããå¿ èŠããããŸãã
æé 1.ç°å¢å€æ°ã®èšå®ïŒãªãã·ã§ã³ããã ãç°¡åïŒã
ã·ã¹ãã ç°å¢ïŒã·ã¹ãã 倿°ïŒã«ANDROID_HOME倿°ãäœæãããã®å€ã«Android SDKãã©ã«ããŒãžã®ãã¹ãæå®ããŸãã ç§ã¯ãã®ãã¹Dãæã£ãŠããŸãïŒ\ android \ android-sdk-windowsã
ãŸããå€;ïŒ ANDROID_HOMEïŒ \ platform-toolsã Path倿°ã«è¿œå ããŸãã
ã¹ããã2. Antã®ã€ã³ã¹ããŒã«
http://ant.apache.org/bindownload.cgiããzipã¢ãŒã«ã€ããããŠã³ããŒãããŠãããã€ãã®ãã©ã«ããŒïŒããšãã°ãdïŒ\ server \ android \ antïŒã«è§£åããŸãã ant \ binãã©ã«ããŒãPathã·ã¹ãã ç°å¢å€æ°ã«è¿œå ããå¿ èŠããããŸãã
ã¹ããã3. antçšã®ãã«ãã¹ã¯ãªãããæºåããŸãã
Googleã¯ãAndroid SDKã§ããããžã§ã¯ãããã«ãããããã®Antã¹ã¯ãªãããçæã§ããããã«ããŸããããã®ããã«ãã³ãã³ããå®è¡ããããã«å¿ èŠãªãããžã§ã¯ãã®ãã©ã³ã¯ãã©ã«ããŒã«ïŒ
- ã¡ã€ã³ãããžã§ã¯ãã®ãã«ãã¹ã¯ãªãããäœæããã«ã¯ïŒ
-
android update project -p MyProject
-
- ãã¹ããããžã§ã¯ãã®ãã«ãã¹ã¯ãªãããäœæããã«ã¯ïŒ
- android update test-project -m .. \ MyProject -p MyProjectTest
Android SDK <14ããŒãžã§ã³ã®ãªãã·ã§ã³ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
æé 4.ãããžã§ã¯ãã®ã¢ã»ã³ããªã確èªããŸãïŒããããªãã·ã§ã³ã§ãïŒã
- trunk \ MyProject \ãã©ã«ããŒã«ç§»åããŠãã³ãã³ããå®è¡ããŸãã
å®è¡ã®çµããã«äœãã®ãããª- ant cleanãããã°
ããã¯ããããžã§ã¯ããæ£åžžã«çµã¿ç«ãŠãããããšãæå³ããŸãã- æåãã
- åèšæéïŒ 5ç§
- Androidãšãã¥ã¬ãŒã¿ãŒãå®è¡ããtrunk \ MyProjectTestãã©ã«ããŒã§
ãã«ãã¯å°ãé·ããªããŸãããç§ã®å Žåã¯35ç§ã§ããã ãã®ããã»ã¹ã§ã¯ããããã°ã¢ã»ã³ããªMyProjestãšMyProjectTestãã¢ã»ã³ãã«ãããå®è¡äžã®ãšãã¥ã¬ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããããã¹ããå®è¡ãããŸãã- ant all clean emma debug install test
ã¹ããã5. Jenkinsãã€ã³ã¹ããŒã«ããŸãã
http://jenkins-ci.org/ã«ã¢ã¯ã»ã¹ãããšãå³åŽã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãžã®ãªã³ã¯ããããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ã§ããŸãã ããã©ã«ãã§ã¯ãhttpïŒ//127.0.0.1ïŒ8080 /ã«ã€ã³ã¹ããŒã«ãããWebã€ã³ã¿ãŒãã§ãŒã¹ãæäŸãããŸãã
å°ããªåé¡ããããŸãã ããã©ã«ãã§ã¯ãJenkinsãµãŒãã¹ã¯SystemãŠãŒã¶ãŒã¢ã«ãŠã³ãããéå§ããŸããããã«ããããšãã¥ã¬ãŒã¿ãŒãå¶åŸ¡ãããã©ã°ã€ã³ãã¢ã«ãŠã³ãã®ããŒã ãã©ã«ããŒã«AVDãäœæã§ããªããªããŸãã ãŠãŒã¶ãŒãã¢ã«ãŠã³ãã«äº€æããããJenkinsçšã®ç¹å¥ãªã¢ã«ãŠã³ããäœæããå¿ èŠããããŸãã
誰ããçªç¶ããããªãå Žåã¯ãã³ã³ãã¥ãŒã¿ãŒã®ç®¡çïŒæãç°¡åãªæ¹æ³ïŒã¹ã¿ãŒã>ã³ã³ãã¥ãŒã¿ãŒïŒå³ã¯ãªãã¯ïŒ>管çïŒç®¡çïŒïŒã«ç§»åããå¿ èŠããããŸããããã§ããµãŒãã¹ãšã¢ããªã±ãŒã·ã§ã³>ãµãŒãã¹ãéžæããJenkinsãµãŒãã¹>ããããã£>ãã°ãªã³ã¿ããèŠã€ããŸãã ã¢ã«ãŠã³ãã倿ŽããåŸããµãŒãã¹ãåèµ·åããå¿ èŠããããŸãã
æé 6. Jenkinsãæ§æããŸãã
ãã®ãããhttpïŒ//127.0.0.1ïŒ8080 /ã«ç§»åãã [Jenkins㮠管ç]ãéžæããŠã [ãã©ã°ã€ã³ã®ç®¡ç]ãéžæããŸãã [ å©çšå¯èœãªãã©ã°ã€ã³ ]ã¿ããã¯ãªãã¯ããŸãã 空ã®å Žåããã°ããåŸ ã£ãŠãã ããããžã§ã³ãã³ã¹ã¯ãŸã ããŒãããŠããŸããã
次ã®ãã®ãå¿ èŠã§ãã
- Jenkins emmaãã©ã°ã€ã³
- Android Emulatorãã©ã°ã€ã³
- ãããœã³ããŒãã¢ãã±ãŒã¿ãŒãã©ã°ã€ã³
- ã¢ãª
ãããããããã®ããã€ãã¯ããã§ã«æåã«ã€ã³ã¹ããŒã«ãããŸãã
ç§ã®å Žåãç§ã®ãããžã§ã¯ãã¯SVNã«ãã£ããããSubversionãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããã ãããžã§ã¯ããå¥ã®SCMã®äžã«ããå Žåã¯ããã®ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããããšãå¿ããªãã§ãã ããã
次ã«ãäžéšã«ããã åèµ·åããã«ã€ã³ã¹ããŒã« ããã¿ã³ãã¯ãªãã¯ããŸãããã®ããã»ã¹ã§ã¯ã ãã€ã³ã¹ããŒã«ãå®äºãããžã§ããå®è¡ãããŠããªããšãã«Jenkinsãåèµ·åãããããã¯ã¹ããªã³ã«ããŠãJenkinsãèªåçã«åèµ·åãããã©ã°ã€ã³ãæ©èœããããã«ããŸãã
次ã«ã Jenkinsã®ç®¡ç>ã·ã¹ãã ã®æ§æã«é²ã¿ãŸã ã ããã«
- Androidã»ã¯ã·ã§ã³ã§ãAndroid SDKã«ãŒããç»é²ããå¿ èŠããããŸãïŒåè¿°ã®ãšããããã®å Žåã¯DïŒ\ android \ android-sdk-windowsã§ãïŒ
- ãã«ããäžæãããšãã«é»åã¡ãŒã«ãéä¿¡ããã«ã¯ããé»åã¡ãŒã«éç¥ãã»ã¯ã·ã§ã³ã«èšå ¥ãã䟡å€ããããŸãã
次ã«ãJenkinsã®ãžã§ããäœæããŸãã ã¡ã€ã³ããŒãžã§ã[ æ°ãããžã§ã ]ãã¯ãªãã¯ããååãå ¥åããŠã ãžã§ãã®çš®é¡ãéžæããŸãããªãŒã¹ã¿ã€ã«ãœãããŠã§ã¢ãããžã§ã¯ããæ§ç¯ããŸãã
ããã§ã¯ã次ã®ã»ã¯ã·ã§ã³ã«èšå ¥ããå¿ èŠããããŸãã
- ãœãŒã¹ã³ãŒã管ç -ããŒãžã§ã³ç®¡çã·ã¹ãã ã®ã¿ã€ããéžæããå¿ èŠãªãã©ã¡ãŒã¿ãŒãå ¥åããŸãã æ³šæïŒ ãã©ã³ã¯ãã©ã«ããŒã®ã¿ããªããžããªãããã«ããå¿ èŠããããŸããããããªããšãJenkinsã®ãžã§ãèšå®ã«è¿œå ããããã¹ãŠã®ãã¹ãä¿®æ£ããå¿ èŠããããŸãã
- ããªã¬ãŒã®äœæ-SCMã®ããŒãªã³ã°ãéžæãã* * * * *ãšæžããŠãã ããã ããã¯ãJenknsã1åããšã«ãªããžããªããã§ãã¯ããæ°ããã³ããããããå Žåã¯ãã«ããå®è¡ããããšãæå³ããŸãã 5åããšã®ã¢ã»ã³ããªã®å Žåã* / 5 * * * *ãæå®ã§ããŸãã
- ãã«ãç°å¢ -ããã§ã¯ãè¡çªãé²ãããã«äžæã®TCPããŒããå²ãåœãŠããã§ãã¯ããã¯ã¹ããªã³ã«ããããšããå§ãããŸãã
- ãã«ãäžã«Androidãšãã¥ã¬ãŒã¿ãŒãå®è¡ããŸã ã ãšãã¥ã¬ãŒã¿ã®ãã©ã¡ãŒã¿ãå
¥åããŸããããšãã°
- Android OSããŒãžã§ã³ïŒ2.1ïŒãã®ããŒãžã§ã³ãSDKããããŠã³ããŒããããŠããããšã確èªããŠãã ããïŒ
- ç»é¢å¯åºŠïŒ240
- ç»é¢è§£å床ïŒWVGA
- ããã€ã¹ãã±ãŒã«ïŒen_US
- SDã«ãŒãã®ãµã€ãºïŒ16M
- ãã«ãã»ã¯ã·ã§ã³ãInvoke Antã®è¿œå ããã
- ã¿ãŒã²ããïŒãã¹ãŠã®ã¯ãªãŒã³ãšããããã°ã€ã³ã¹ããŒã«ãã¹ã
- ãã«ããã¡ã€ã«ïŒQuickMeetingTest \ build.xml
- ããããã£ïŒsdk.dir = DïŒ\\ android \\ android-sdk-windowsïŒæ£ç¢ºã«ãäºéã¹ã©ãã·ã¥ã䜿çšïŒ
- ãã«ãåŸã®ã¢ã¯ã·ã§ã³ã»ã¯ã·ã§ã³
- ã¢ãŒãã£ãã¡ã¯ããã¢ãŒã«ã€ãããŸãïŒ** / * test-TEST.xml
- JUnitãã¹ãçµæã¬ããŒãã®å ¬éïŒ** / * test-TEST.xml
- ã¬ã³ãŒããšãã«ãã¬ããžã¬ããŒãïŒ** / coverage.xml
- ãã¡ã€ã«ã®ãã£ã³ã¬ãŒããªã³ããèšé²ããŠäœ¿çšç¶æ³ã远跡ããŸãïŒ** / * test-TEST.xml
- é»åã¡ãŒã«éç¥-ã奜ã¿ã«åãããŠã«ã¹ã¿ãã€ãºããŸãã
å®éããžã§ã³ãã³ã¹ã®ã»ããã¢ããã¯ã»ãŒå®äºããŸããããæºåãæŽããŸã§æ¥ããªãã§ãã ããã
2ã€ã®åé¡ããããŸãã
åé¡1ã
Standard InstrumentationTestRunnerã¯ããã¹ãçµæãå«ãXMLãçæããŸããã ãããã£ãŠãMyProjectTestãå°ã匷åããå¿ èŠããããŸãã
- http://code.google.com/p/the-missing-android-xml-junit-test-runner/ã«ã¢ã¯ã»ã¹ããããããpolidea_test_runner_1.1.jarãããŠã³ããŒãããtrunk \ MyProjectTest \ libsã«å ¥ããŠãJava Build Path \ Librariesã远å ããŸããããžã§ã¯ãã®ããããã£ã§ã
- AndroidManifest.xmlã§ã<instrumetation>ãæ¬¡ã®ããã«å€æŽããŸãã
- <èšè£
- androidïŒname = "pl.polidea.instrumentation.PolideaInstrumentationTestRunner"
- androidïŒtargetPackage = "com.example.MyProject" />
- project.propertiesãã¡ã€ã«ã«æ¬¡ã®è¡ã远å ããŸã
- test.runner = pl.polidea.instrumentation.PolideaInstrumentationTestRunner
- ãããŠäžŠãã§
1ãã«ã¹ã¿ã ã«å€æŽããŸãïŒãã®ãã¡ã€ã«ã®å€æŽã¯ã次åã®AndroidæŽæ°äžã«ã»ã€ããªãããã«ããå¿ èŠããããŸãïŒã- <ïŒ-ããŒãžã§ã³ã¿ã°ïŒ1->
åé¡2
ãã¹ãå®è¡ã®çµæãå«ãxmlãã¡ã€ã«ãšã«ãã¬ããžãã¹ãã®çµæãå«ããã¡ã€ã«ãããã€ã¹äžã«çæãããŸãã ãžã§ã³ãã³ãºãããããæŸãã«ã¯ãããããåºããŠè¡ãå¿ èŠããããŸãã
ãããžã§ã¯ããå®éã«ãã«ãããã¡ã€ã³antã¹ã¯ãªããã¯$ {sdk.dir} /tools/ant/build.xmlã«ãããæ¬¡ã®è¡ã§ãããžã§ã¯ããã«ãã¹ã¯ãªããã«ã€ã³ããŒããããŸãã
- <ã€ã³ããŒã ãã¡ã€ã« = "$ {sdk.dir} /tools/ant/build.xml" />
- $ {sdk.dir} /tools/ant/build.xmlã«ç§»åããã»ã¯ã·ã§ã³<target name = "test" ../>å
šäœãååŸããŠãäžèšã®ã¡ã€ã³ã¹ã¯ãªããã®ã€ã³ããŒãã®åã«ãã¹ããããžã§ã¯ãã®build.xmlã«è²Œãä»ããŸãã
ããã«ããããã¹ãã¿ãŒã²ãããžã®åŒã³åºãããªãŒããŒã©ã€ãããã倿Žãããšã倿Žãæ©èœããŸãã
- build.xmlã®<target name = "test" ../>ã§
- <html outfile = "coverage / coverage.html" />
次ã远å
- <xml outfile = "coverage / coverage.xml" />
- æåŸã«ã </ target>ã®åã«ããšãã¥ã¬ãŒã¿ãããã¹ãçµæãååŸããã³ãŒããæ¿å
¥ããŸãã
- <mkdir dir = "$ {basedir} / junit-results" />
- <exec å®è¡å¯èœãã¡ã€ã« = "$ {adb}" failonerror = "true" dir = "$ {basedir} / junit-results" >
- <arg line = "$ {adb.device.arg}" />
- <arg value = "pull" />
- <arg å€ = "/data/data/${tested.manifest.packageasket/files/" />
- </ exec >
ã¹ããã7. UIãã¹ãã远å ããŸãã
ãã®ããã«ã䟿å©ãªããŒã«RobotiumããããŸãã code.google.com/p/robotiumããå ¥æã§ããŸã ã
ã»ããã¢ããïŒ
- robotium-solo-3.1.jarïŒçŸåšã®ææ°ããŒãžã§ã³ïŒãããŠã³ããŒãããtrunk \ MyProjectTest \ libsã«å ¥ããŸãã
- Java Build Path \ Librariesã®ãããžã§ã¯ãããããã£ã«è¿œå ããŸãã
- ãã¹ãã¯ã©ã¹ãäœæããActivityInstrumentationTestCase2 <MyActivity>ããç¶æ¿ããŸããã³ã³ã¹ãã©ã¯ã¿ãŒã§ã¯ã次ã®åœ¢åŒã®åŒã³åºããå¿
èŠã§ãã
- super ïŒ "com.example.myproject" ãMyActivityãclass ïŒ ;
ããã§ããcom.example.myprojectãã¯ãã¹ãæžã¿ãããžã§ã¯ãã®ããã±ãŒãžãMyActivityã¯ãã¹ãæžã¿ã¢ã¯ãã£ããã£ã§ãã - ã¯ã©ã¹ã«è¡ã远å ããŸãã
- ãã©ã€ããŒããœããœã;
- @Override
- public void setUp ïŒ ïŒ throws Exception {
- solo = new Solo ïŒ getInstrumentation ïŒ ïŒ ãgetActivity ïŒ ïŒ ïŒ ;
- }
- @Override
- public void tearDown ïŒ ïŒ throws Exception {
- ãœãã finishOpenedActivities ïŒ ïŒ ;
- }
ãããŠããã©ãŒã ã®ãã¹ããæžãããšãã§ããŸã
- public void testPreferenceIsSaved ïŒ ïŒ throws Exception {
- ãœãã sendKey ïŒãœãã¡ãã¥ãŒ ïŒ ;
- ãœãã clickOnText ïŒ "More" ïŒ ;
- ãœãã clickOnText ïŒ "Preferences" ïŒ ;
- ãœãã clickOnText ïŒ "ãã¡ã€ã«æ¡åŒµåã®ç·šé" ïŒ ;
- ã¢ãµãŒãããŸãã assertTrue ïŒ soloãsearchText ïŒ "rtf" ïŒ ïŒ ;
- ãœãã clickOnText ïŒ "txt" ïŒ ;
- ãœãã clearEditText ïŒ 2 ïŒ ;
- ãœãã enterText ïŒ 2 ã "robotium" ïŒ ;
- ãœãã clickOnButton ïŒ "ä¿å" ïŒ ;
- ãœãã goBack ïŒ ïŒ ;
- ãœãã clickOnText ïŒ "ãã¡ã€ã«æ¡åŒµåã®ç·šé" ïŒ ;
- ã¢ãµãŒãããŸãã assertTrue ïŒ soloãsearchText ïŒ "application / robotium" ïŒ ïŒ ;
- }
詳现ã«ã€ããŠã¯code.google.com/p/robotium/w/listãã芧ãã ãã ã
ã¹ããã8.è€æ°ã®ãšãã¥ã¬ãŒã¿ãŒã§ãã¹ãããŸãã
- Jenkinsã®ãžã§ããäœæãããšãã«ãBuild multi-configurationãããžã§ã¯ãã®ãžã§ãã¿ã€ããéžæã§ããŸãã
- [æ§æãããªãã¯ã¹]ã»ã¯ã·ã§ã³ã§ãå倿Žãã©ã¡ãŒã¿ãŒïŒããšãã°ãAndroidã®è§£å床ãšããŒãžã§ã³ïŒã®è»žãäœæããRun emulatorã$ {resolution}ã®åœ¢åŒã®ããããã£ã«çœ®ãæããŸãã äžèšã®ãªã³ã¯ã®åçãèŠããšããã¹ãŠãæç¢ºã«ãªããŸãã
- æ®ãã®ãã©ã¡ãŒã¿ãŒã¯ãéåžžã®ã¿ã¹ã¯ãšåæ§ã«æå®ãããŸãã
詳现ã¯ãã¡ã ã
ã¹ããã9.ãªãªãŒã¹ãã«ãã®æºåã
ãªãªãŒã¹ãã«ãã®æ§ç¯ã¯ããã¹ãã®å®è¡ãããç°¡åã§ãã
- Jenkinsã§MyProjectReleaseã¿ã¹ã¯ãäœæããŸãïŒããªãŒã¹ã¿ã€ã«ã®ãœãããŠã§ã¢ãããžã§ã¯ãã®ãã«ãã¿ã€ãïŒã
- æé 6ãšåæ§ã«ããœãŒã¹ã®ãœãŒã¹ãæå®ããŸãã
- ãã©ã¡ãŒã¿ãŒã䜿çšããŠãInvoke Antãã«ãã¹ããããäœæããŸãã
- 察象ïŒ
- è§£æŸãã
- ãã«ããã¡ã€ã«ïŒ
- MyProject \ build.xml
- ããããã£ïŒ
- sdk.dir = DïŒ\\ android \\ android-sdk-windows
- key.store = .. \\ myproject.keystoreïŒããŒã¹ãã¬ãŒãžãã¡ã€ã«ãžã®çžå¯Ÿãã¹ããã©ã³ã¯ã«ããŒã眮ããŸã\ïŒ
- key.alias = <ãšã€ãªã¢ã¹>
- key.store.password = <pass>
- key.alias.password = <pass>
- ã¢ãŒã«ã€ããããã¡ã€ã«ã䜿çšããŠã¢ãŒãã£ãã¡ã¯ããã¢ãŒã«ã€ããã= ** \ *-release.apkãæ§æããããšãã§ããŸãïŒãã¹ãŠã®ãªãªãŒã¹ãæ³šææ·±ãä¿åããJenkins Webã€ã³ã¿ãŒãã§ãŒã¹ããããŠã³ããŒãã§ããããã«ããå ŽåïŒã
- ProGuardã䜿çšããŠãªãªãŒã¹ãé£èªåããã«ã¯ãproguard.config = proguard.cfgã®è¡ãproject.propertiesïŒãŸãã¯Jenkinsã®InvokeAntã¿ã¹ã¯ã®ããããã£ïŒã«è¿œå ããã ãã§ãã
- proguard.config-倿°ã®ååãProGuardã®èšå®ãã¡ã€ã«ã®ååãå«ãŸããŠããå¿ èŠããããŸãã
- ãŸããproguard.cfgãã¡ã€ã«ã¯ããããžã§ã¯ãã®äœææã«Eclipseã«ãã£ãŠèªåçã«äœæãããŸãã
ãæž èŽããããšãããããŸããããã®æçš¿ãããã°ã©ã ã®æ¹åã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
Artezioã®çµå¶è ã«ãæè¬ããŸããArtezioã¯ç§ã®ã€ãã·ã¢ãããæ¯æãããã®ç ç©¶ã«æéãå²ãåœãŠãŸããã