ããã«ã¡ã¯ãã¨ã ã¹ãªã¼ã¨ã³ã¸ãã¢ãªã³ã°ã°ã«ã¼ãã®ç¦æ (@fukubaya) ã§ãã
ä»åã¯ãæ°åã³ããã¯ã¯ãã³ä½å°éç¥ã·ã¹ãã ãã®å®è£ ãæ§ç¯ãAIã»æ©æ¢°å¦ç¿ãã¼ã ã®ä¸¸å°¾ (@snowhork)ã¨æ å½ããã®ã§ç´¹ä»ãã¾ãã ãããããã£ã¦ä»ã®ã¨ãããªãªã¼ã¹ã®äºå®ã¯ããã¾ãããããã£ããä½ã£ã¦è¨äºãç¨æãã¦ããã®ã§å ¬éãããã¨ã«ãã¾ããã
- ã©ããªãµã¼ãã¹ãªã®ãï¼
- éçºã¾ã§ã®ãããã¤
- æ§æ
- æè¡çãªãã£ã¬ã³ã¸
- å¦ã³ã¨åç
- We are hiring!
ã©ããªãµã¼ãã¹ãªã®ãï¼
æ¥ãªäºç´ã®ãã£ã³ã»ã«ãªã©ã«ããä½å°ãçºçãã¦ãã¾ã£ãæ°åã³ããã¦ã¤ã«ã¹ã®ã¯ã¯ãã³ãæ¥ç¨®ä¼å ´ã®è¿é£ã§æ¥ç¨®ãå¸æãã人ã¨ãããã³ã°ããããµã¼ãã¹ã§ããèªæ²»ä½ã§ãå»é¢ã§ãè·åæ¥ç¨®ã§ãã£ã¦ãä½å°ã®æ±ãã¯èª²é¡ã«ãªã£ã¦ããã®ã§ããã®ãµã¼ãã¹ã§å°ãã§ã課é¡ã®è§£æ¶ã«è²¢ç®ã§ããã°ã¨æããªããæ§ç¯ãã¾ããã主ãªæµãã¯å³ã®ã¨ããã§ãã
(1)æ¥ç¨®ãå¸æããã¦ã¼ã¶ã¯äºåã«ãçå¹´ææ¥ãæºå¸¯é»è©±çªå·ãå± ä½å°ãå¤åå ãªã©ã®éµä¾¿çªå·(2ã¤ã¾ã§)ãç»é²ãã¾ãã
(2)æ¥ç¨®ä¼å ´ã§ã¯ã¯ãã³ã«ä½å°ãçºçããå ´åã¯ãä¼å ´ã«è¿ãå¸æè ãé¸ãã§SMSã§éç¥ãã¾ããéç¥æã«ã¯æ¥å ´æéãæå®ãã¾ãããªãããã®æ®µéã§æ¥ç¨®ä¼å ´å´ãè¦ãããã®ã¯å¸æè ã®å¹´é½¢ã¨å¸åºçºæã ãã§ãã
(3)éç¥ãåããã¦ã¼ã¶ã¯ãä¼å ´ã®å ´æãæ¥å ´æéãã¯ã¯ãã³ã®ç¨®é¡ãè¦ã¦è¡ããå ´åã¯æ¥å ´å¯è½ã§ãããã¨ãåçãã¾ãããªãæ¥å ´å¯è½ã®åçããã¦ãå¿ ãããé£çµ¡ãæ¥ã訳ã§ã¯ããã¾ããã
(4)æ¥ç¨®ä¼å ´ã¯æ¥å ´å¯è½ã®åçããã£ãã¦ã¼ã¶ã«ç´æ¥é»è©±ã§é£çµ¡ããæ¬å½ã«æ¥å ´å¯è½ããäºåã®æ³¨æäºé ãªã©ç¢ºèªãã¦ããæ¥å ´ãã¦ããããå®éã«æ¥ç¨®ãå®æ½ãã¾ãã
ãã¶ã¤ãã¼ããã«ãã£ããä½ã£ã¦ããã£ãã®ã§ããããã¼ã¸ã®ãã£ããã£ãè²¼ã£ã¦ããã¾ãã
éçºã¾ã§ã®ãããã¤
è¨ç»ãèããã®ã2021å¹´06æ10æ¥ãããã§ãããããããããã¾ããªä»æ§ãè°è«ãã¦ã2021å¹´06æ16æ¥ããéçºãã¹ã¿ã¼ããã¾ãããå®è£ ã¯ç¦æã¨ä¸¸å°¾ã®2人ã ããªã®ã§ãå ±æããDBã¨SQSã®ä»æ§ã ãå ã«æ±ºãã¦ããã¨ã¯ããããã§å®è£ ãé²ãã¾ãããã¤ã³ãã©æ§ç¯ã¯AWSã¸ã®ã¯ã©ã¦ã移è¡ã®çµé¨ä¸ãããã»ã©é£ãããªãã¨æã£ãã®ã§ç¦æã1人ã§æ å½ãã¾ããã7æä¸æ¬ã«ã¯å®è£ ãQAãå®äºãã¦ãªãªã¼ã¹ã§ããç¶æ ã«ãªãã¾ããã
æ§æ
æ©è½ãã¨ã«åå²ãã3ã¤ã®ECSã³ã³ãããFargateã§å®è¡ãã¦ãã¾ããæ¥ç¨®å¸æè åãã®ã¢ããªã±ã¼ã·ã§ã³ãæ¥ç¨®æ½è¨åãã®ã¢ããªã±ã¼ã·ã§ã³ãSMSéç¥ãå¦çããã¢ããªã±ã¼ã·ã§ã³ã®3ã¤ã§ããDBã¯Aurora(PostgreSQL)ãSMSéç¥ã®ã¸ã§ããã¥ã¼ã«SQSã使ãã¾ãããSMSéç¥ã«ã¯twilioã使ã£ã¦ãã¾ãã
å¸æè åãã®ã¢ããªã±ã¼ã·ã§ã³ã¯ä¸¸å°¾ãæ å½ãã¾ãããããã¯ã¨ã³ãã¯Railsã§ãããã³ãã¯Vue.jsã§ããæ½è¨åãã®ã¢ããªã±ã¼ã·ã§ã³ã¯ç¦æãæ å½ãã¾ããã以åæ å½ããDocpediaã®è³ç£ãæµç¨ããã®ãæ©ãã£ãã®ã§ãSpringBoot(Kotlin)ã¨Vue.jsã®çµã¿åããã§ããSMSéç¥ãç¦æãæ å½ãã¾ãããããã¯ãqueueãå¦çãã¦Twilioã®APIãå©ãã ãã§ç»é¢ã¯ãªãã®ã¨ãå¦çæ°ãå¢ããæã«ä¸¦è¡å®è¡ãããããæ¹ãããã£ãã®ã§Goã§ä½ãã¾ããã
ä»åã®å ´åã¯ãé·æçãªä¿å®ãæ¹ä¿®ã®ããããããããçæéã§å®æããããã¨ã®æ¹ã大äºãªã®ã§ãå®è£ æ å½è ãä¸çªãããããè¨èªããã¬ã¼ã ã¯ã¼ã¯ãé¸æãã¦ãã¾ããã¨è¨ã£ã¦ãå人æ å ±ãæ±ãã®ã§ãå質ãç ç²ã«ãã¦ãã訳ã§ã¯ããã¾ããããã¹ããQAã¯é常éãå®æ½ãã¦ãã¾ãã
æè¡çãªãã£ã¬ã³ã¸
ã¨ã«ããæ©ãå®æãããå¿ è¦ããããµã¼ãã¹ã§ãããããã§ãæ¢ç¥ã®ããæ¹ã§æ¼«ç¶ã¨ä½ãã®ã¯æè¡è ã¨ãã¦æ¥½ããããã¾ãããéçºã¹ãã¼ããè½ã¨ããªãç¯å²ã§ãã£ã¦ã¿ãããã¨ãå ¥ãã¦ã¿ã¾ããã以ä¸ã¯ç¦æã®æ å½ç¯å²ã§ãã£ã¦ã¿ããã¨ãç´¹ä»ãã¾ãã
ã©ããã£ã¦æ¥ç¨®æ½è¨ããè¿ãé ã«å¸æè ãã½ã¼ãããã
æ¥ç¨®ä¼å ´å´ã®ç»é¢ã§ã¯ãã©ã®å¸æè ã«éç¥ãããé¸æãããããæ¥ç¨®ä¼å ´ã«è¿ãé ã«å¸æè ãã½ã¼ããã¦è¡¨ç¤ºããå¿ è¦ãããã¾ããæåã«ãµã¼ãã¹ã®æ¦è¦ãèããæã«ãä»ã®é¨åã¯ã ãããå ·ä½çãªå®è£ ã¾ã§ã¤ã¡ã¼ã¸ã§ãã¾ãããããã®ã½ã¼ãé¨åãã©ãå®è£ ãããã§æ©ã¿ã¾ãããæ¥æ¬éµæ¿ã®éµä¾¿çªå·ãã¼ã¿ã ãã§ã¯ãä½ç½®æ å ±ã¾ã§ã¯åãããªãã®ã§ãé½éåºçãå¸åºçºæãåããã©ãããããããå¤æã§ãã¾ãããç¥å¥å·çå·å´å¸ã¨æ±äº¬é½å¤§ç°åºãé£æ¥ãã¦ãããã¨ã¯ãããããã®ãã¼ã¿ã§ã¯åããã¾ããã
ä»®ã«éµä¾¿çªå·ãã¨ã«è©³ç´°ãªä½ç½®æ å ±ããã£ãã¨ãã¦ããå ¨ã¦ã®ç»é²å¸æè ã®å± ä½å°ã¨æ½è¨ã®è·é¢ãè¨ç®ãã¦è¿ãé ã«ä¸¦ã¹ãã®ã¯è¨ç®éãå¤ããã¦å®ç¨çãªæéå ã«çµæãå¾ãããªãã¨æãã¾ãããå°ç¨ã®ã½ããããµã¼ãã¹ã使ãã°è§£æ±ºã§ããã®ããããã¾ãããããããã調æ»ãã¦å°å ¥ããæéã¯ãã£ãããªãã®ã§ãã§ããããªç¯å²ã§å®è£ ãèãã¾ãã*1ã
調ã¹ã¦ã¿ãã¨å½å交éçãä½ç½®åç §æ å ±ãæä¾ãã¦ãããã¨ãåãã£ãã®ã§ããã使ããã¨ã«ãã¾ããã
ãã ãããã®ãã¼ã¿ã§ã¯å¤§åã»çºä¸ç®ã¬ãã«ã§ç·¯åº¦ã»çµåº¦ãå¾ããã¾ãããéµä¾¿çªå·ãã¼ã¿1ã¤ãã¤ã¨çµåãããã®ã¯é£ããã§ããããã§ãå¸åºçºæ(å ¨å½å°æ¹å ¬å ±å£ä½ã³ã¼ã(JIS X0401ãX0402))ãåããã¼ã¿ãã¾ã¨ãã¦å¹³åããçµæãããã®å¸åºçºæã®ç·¯åº¦ã»çµåº¦ã¨ãã¾ãããããã«ããå ¨å½ã®å¸åºçºæã®ä½ç½®ãã¼ã¿ãå¾ããã¾ãã*2ãéµä¾¿çªå·ãã¼ã¿ã«ãå ¨å½å°æ¹å ¬å ±å£ä½ã³ã¼ããä»ä¸ããã¦ããã®ã§ãããã§éµä¾¿çªå·ããä½ç½®æ å ±ãåå¾ã§ãã¾ãã
ããã«ãæ¥ç¨®å¸æè ãSQLã§åå¾ãã¦ã½ã¼ãããéã«æ¯åè·é¢ãè¨ç®ãããã®ã¯ã³ã¹ãããããã®ã§ãäºãä»»æã®2ç¹ã®å¸åºçºæéã®è·é¢ãè¨ç®ãããã¼ãã«ãç¨æãã¾ãããããã§è·é¢è¨ç®ã®ã³ã¹ãã¯O(1)ã«ãªãã¾ããã¡ãªã¿ã«ä¸çªé ãã®ã¯åæµ·éç¾ è¼çº(01694)ã¨æ²ç¸çä¸é£å½çº(47382)ã§2968kmã§ããã
db=# SELECT lgcode1, lgcode2, distance FROM lg_distance ORDER BY distance DESC LIMIT 2; lgcode1 | lgcode2 | distance ---------+---------+----------- 01694 | 47382 | 2968.9326 47382 | 01694 | 2968.9326 (2 rows)
ä»åã®è¦ä»¶ã§ã¯ãã ãããã§ã½ã¼ãã§ããã°ãããè·é¢èªä½ã¯ä¸è¦ãªã®ã§ç·¯åº¦ã»çµåº¦ã§ã¦ã¼ã¯ãªããè·é¢ãç®åºãã¦ãæ¯éã¯ãªãã£ãã®ã§ãããGeoPyã§ç°¡åã«è¨ç®ã§ãããã ã£ãã®ã§ããã§ç®åºãã¾ããã
ãã®ãã¼ã¿ã使ã£ã¦ãã¨ã ã¹ãªã¼ãããæ±äº¬é½æ¸¯åº(13103)ã¨ã®è·é¢ã®è¿ãé ã§éµä¾¿çªå·ã並ã¹ã¦ã¿ã¾ããã
db=# SELECT z.zipcode, z.prefecture, z.city, d.distance FROM zipcode z JOIN lg_distance d ON z.lgcode = d.lgcode1 WHERE d.lgcode2 = '13103' ORDER BY distance ASC, z.zipcode ASC; zipcode | prefecture | city | distance ---------+------------+------------------+------------ 1008602 | æ±äº¬é½ | æ¸¯åº | 0 ... 1500000 | æ±äº¬é½ | æ¸è°·åº | 3.9983912 ... 1008606 | æ±äº¬é½ | ä¸å¤®åº | 4.0966954 ... 9071800 | æ²ç¸ç | å «éå±±é¡ä¸é£å½çº | 2032.125
SQLã ãã§å¸æè ãè¿ãé ã«ã½ã¼ããããã¼ã¿ãæºåã§ãã¾ããã
Vue3ã®å°å ¥
Docpediaã®é ã¯ã¾ã Vue2ã§ããããVue3ãåºã¦ããããç¨åº¦çµã£ã¦ãã¦ã©ããã§å®è·µæå ¥ãããã¨æã£ã¦ããã®ã§ãããã§ãã£ã¦ã¿ããã¨ã«ãã¾ããã
å½åã¯ã¡ã¸ã£ã¼ãã¼ã¸ã§ã³ã¢ããã¨è¨ã£ã¦ããè¤éãªãã¨ã¯ãã£ã¦ãªããã微修æ£ã§ãããã ããã¨æã£ã¦ãã¾ããããããã»ã©æ¥½ãããªãã¦ã¡ãã£ã¨ç¦ãã¾ããã
æ¥ãã§ä½ããªãã¨ãããªãã®ã«Vue3ã«ææ¦ãã¦ã¿ãããã¦æéãããã¦ãã¾ã£ãã
— Yuichiro Fukubayashi (@fukubaya) June 17, 2021
Composition APIã«åããã¦æ¢åå®è£ ãç´ãã¦ããã®ãã¡ãã£ã¨å¤§å¤ã§ããããæ £ããã°æ©æ¢°çã«ç´ãã¦ãããã¨æãã¾ãã
PCã¨ã¹ããã§å ±éã³ã³ãã¼ãã³ããå®ç¾ãããã©ã°ã¤ã³
以åè¨äºã§æ¸ããPCã¨ã¹ããã§å ±éã³ã³ãã¼ãã³ããå®ç¾ãããã©ã°ã¤ã³ãçããã¦ã¿ããã¦ãå®è£ ãã¦ã¿ã¾ããã
ãã ãVue3ã§ãã©ã°ã¤ã³ã®æ¸ãæ¹ãã¡ãã£ã¨å¤ãã£ã¦ãã¦ããã®ã¾ã¾ã§ã¯åããªãã¦ããã¥ã¡ã³ããè¦ãªããä¿®æ£ãå¿ è¦ã§ããã
以åæ¸ãããã®ã¯ä»¥ä¸ã®ããã«å¤æ´ãã¾ããã
/** * ãã©ã°ã¤ã³æ¬ä½ */ export const AppModePlugin = { install(app: any, options?: AppModeOptions) { // eslint-disable-line const mode: AppMode = options ? options.mode : AppMode.PC; app.config.globalProperties.$appMode = mode; app.provide("$appMode", mode); app.config.globalProperties.$isPc = mode === AppMode.PC; app.provide("$isPc", mode === AppMode.PC); app.config.globalProperties.$isSp = mode === AppMode.SP; app.provide("$isSp", mode === AppMode.SP); app.mixin(generateMixin(mode)); }, };
ãªããæéããã¦ããã°ã£ã¦ãã¾ãã¾ããããæ¥ç¨®æ½è¨å´ã¯ä»ã®ã¨ããPCããæ³å®ãã¦ããªãã®ã§ãå¿ é ã§ã¯ãªãå¤æ´ã§ãããæ½è¨ããå¸æè ã«å¯¾ãã¦ãæçµçã«ã¯é»è©±ããããå¿ è¦ããããã¹ãã対å¿ããå¯è½æ§ãããã®ã§å®å ¨ã«ã¯ç¡é§ã§ã¯ãªãã¨æã£ã¦ãã¾ãã
å¦ã³ã¨åç
MVP(Minimum Viable Product)ã¯ã¿ããªã§ä½ã
æ¬ããã¸ã§ã¯ãã¯ã社ä¼è²¢ç®ã®å´é¢ãå¼·ããé«ãå©çãæå¾ ã§ãããã®ã§ã¯ããã¾ããããããã£ã¦ãå°ãªã人æ°ã§ãçãæéã§ä½ãå¿ è¦ãããã¾ãããããã§ãªãã£ãã¨ãã¦ãã価å¤ã®ãããµã¼ãã¹ãå°ãªãã³ã¹ãã§çæéã«ãªãªã¼ã¹ããããã«ã¯ããµã¼ãã¹ã®ä¾¡å¤ãè¦æ¥µãã¦ä»æ§ã決ããå¿ è¦ãããã¾ãã
æåã®æ³å®ã§ã¯ãå¸æè ããçå¹´ææ¥(å¹´é½¢)ã®ä»ã«æ§å¥ãæ¢å¾çãåçãã¦ããã£ã¦ãã¯ã¯ãã³ãä½ã£ãæ½è¨å´ã対象è ã決ããåèæ å ±ã¨ãã¦å©ç¨ãããä»æ§ã§ãã*3ãããããå¹´é½¢ã¨å± ä½å°ã«æ¯ã¹ã¦æ§å¥ã¯æ½è¨å´ã®å¤æè¦å ã¨ãã¦ã¯å½±é¿ãã»ã¼ãªãã ããã¨èããæ§å¥ã¯åå¾ããªããã¨ã«ãã¾ãããããã«ãæ¢å¾çãé大ãªå人æ å ±ã§ããå²ã«ã¯ãåãå± ä½å°ã§åå¹´é½¢ã2人ãã¦ã©ã£ã¡ãé¸ãã ããããï¼ãã¨ãã£ãç¶æ³ã¯ããå¤ãã¯çã¾ããªãã ããã¨å¤æãããã¯ãåå¾ããªããã¨ã«ãªãã¾ããã
é£çµ¡å ã«é¢ãã¦ããå½åã¯SMS以å¤ã«LINEãé¸æè¢ã¨ãã¦æãã£ã¦ãã¾ããããæçµçã«æ½è¨å´ããå¸æè ã«å¯¾ãã¦ç¢ºèªã®é»è©±é£çµ¡ãå¿ è¦*4ã§ãç»é²ã®æç¹ã§æå¹ãªé»è©±çªå·ã®åå¾ã¯å¿ é ã ã£ãã®ã§éç¥ãSMSã§å®æ½ãããã¨ã«ãã¾ãããtwilioã®SMSéç¥ã®å®è£ ãããã§ãããã ã£ãã®ãçç±ã®ã²ã¨ã¤ã§ãã
ãã®ãããªä»æ§ã決å®ã«ã¯ãæ°åã³ããã®éçåè¦å ããå人æ å ±ã«å¯¾ãããªã¹ã¯ã®å¤§å°ããLINEãSMSã§éç¥å®è£ ã®é£æ度ãèããªããã°ãªãããPdMãã¨ã³ã¸ãã¢ãã²ã¨ãã§ã¯æé©ãªæ§æãèãåºãã®ã¯å°é£ã§ããç¥èãããã¯ã°ã©ã¦ã³ããéãã¡ã³ãã¼(å¼ç¤¾ã«ã¯å»å¸«ã®ç¤¾å¡ããã¾ã)ãä¸ç·ã«èãããã¨ãæé©ãªMVPãä½ãåºãã®ã«ã¯å¿ è¦ã ã¨æãã¾ããã
UIé¨åã®ã³ã³ãã¼ãã³ãå
m3.comã§ã¯ãã©ã¼ã ã®ã³ã³ãã¼ãã³ããå«ããã¹ã¿ã¤ã«ãå®ç¾©ãããCSSãç¨æããã¦ã¯ããã®ã§ãããããã¾ã§CSSãªã®ã§Vue.jsã«çµè¾¼ãããã«ã¯ãæ¯åãã¿ã³ãªã©ã®ã³ã³ãã¼ãã³ãã¯å®è£ ããªããã°ããã¾ããããã£ã¨ãããã¿ã¤ãéçºã®é度ãä¸ããããã«ã¯ãã³ã³ãã¼ãã³ãã¨ãã¦ä½¿ãããã®ãæºåãã¦ããããã¸ãã¯ã®å®è£ ã«éä¸ã§ããããã«ãã¦ããå¿ è¦ãããã¨æãã¾ãããæãè¦ã¤ãã¦ã³ã³ãã¼ãã³ãåããã£ã¦ããããã§ããã
OpenAPIã®æ´»ç¨ã¨ã¯ãªã¼ã³ã¢ã¼ããã¯ãã£
æ½è¨å´ã®ããã¯ã¨ã³ãã®å®è£ ã§ã¯ãOpenAPIã¨ã¯ãªã¼ã³ã¢ã¼ããã¯ãã£ãéãå®è£ ãå¯è½ã«ãã¦ããã¾ããã
yamlãããµã¼ãã¨ã¯ã©ã¤ã¢ã³ãå´ã®ã³ã¼ããèªåã§çæã§ããä»çµã¿ãããã¨ãä»æ§ã®å¤æ´ã«ãyamlãå¤æ´ããã ãã§ã³ã¼ãã«åæ ã§ãã¦ãã¾ãã®ã§ãä»æ§ãä½ããªããå®è£ ãé²ãããããªãµã¼ãã¹ã®ç«ã¡ä¸ãæã«ã¯ã¨ã¦ãå½¹ç«ã¡ã¾ãã
ã¯ãªã¼ã³ã¢ã¼ããã¯ãã£ã«é¢ãã¦ã¯ãã³ã¼ãä¸ã®å½¹å²ãåæ ããã¿ã¼ã³åãããã®ã§ãæ©è½è¿½å ãå¤æ´æã«ãè¨è¨ä¸ã§è¿·ã£ããèãããããå¿ è¦ãã»ã¼ãªããOpenAPIã¨åããå¤æ´ã¸ã®å¼·ããå®è¨¼ã§ããã¨æãã¾ããããªããGoã§æ¸ããSMSéç¥å¦çãã¯ãªã¼ã³ã¢ã¼ããã¯ãã£ãæ¡ç¨ãã¾ããã
We are hiring!
ä»åã®ãµã¼ãã¹ã®ããã«ãå¼ç¤¾ã§ã¯å»çåéã§ç¤¾ä¼ã«è²¢ç®ã§ãããã£ã³ã¹ãããããããã¾ããä¸ç·ã«åå ãã¦ããã仲éãåéä¸ã§ãããæ°è»½ã«ãåãåãããã ããã
*1:PostGISã¨ã使ãããã§ãããä¸ãã調ã¹ããAuroraã«çµè¾¼ãã ãããã®ã«æéããããããã ã£ãã®ã§ããã¾ããã
*2:å®éã«ã¯æ±äº¬é½å©å³¶æ(13362)ã¨é·éçä¸ä¼é£é¡åç®è¼ªæ(20385)ã¨çæ¬çç磨é¡æ¹¯åçº(43506)ã®ãã¼ã¿ããªãã£ãã®ã§Google Mapsã§èª¿ã¹ã¦æåã§è¿½å ãã¾ãã
*3:å¹´é½¢ã»ã©ã§ã¯ãªãã§ããæ§å¥ãéçåå ·åã«å½±é¿ãããããã§ã https://news.yahoo.co.jp/byline/kutsunasatoshi/20210516-00236991
*4:å¸æè ããæ½è¨ã¸ã®é»è©±é£çµ¡ã殺å°ããªãããã«ãããããå¸æè å´ã«ã¯æ½è¨ã®é£çµ¡å ã¯æ示ãã¾ãã