HelloïŒ
HabrauserïŒ
ã
æåãšã¯ç°ãªãããã®äž»ãªæ¬ ç¹ããªããajaxãã¯ãããžãŒã®ã¢ããã°ã®ã¢ã€ãã¢/å®è£
ãå
±æããããšæããŸãã ajax
wikiãã
ãæ¬¡ã®ããšãããã
ãŸã ã
ã¡ãªãã
- ãã©ãã£ãã¯ã®ç¯çŽã
- ãµãŒããŒã®è² è·ã軜æžããŸãã
- ã€ã³ã¿ãŒãã§ãŒã¹ã®åå¿ã®å éã
æ¬ ç¹
- æšæºãã©ãŠã¶ããŒã«ãšã®çµ±åã®æ¬ åŠã
- åçã«ããŒããããã³ã³ãã³ãã¯æ€çŽ¢ãšã³ãžã³ã§ã¯å©çšã§ããŸããã
- ãµã€ãçµ±èšã®å€ãäŒè𿹿³ã¯ç¡é¢ä¿ã«ãªããŸãã
- ãããžã§ã¯ãã®è€éãã
ãã³ãã¬ãŒãã¯ã©ã€ã¢ã³ããã£ãã·ã¥ïŒä»¥åŸTCCïŒã®çºæã®ã¢ã€ãã¢ã«ã¯ãajaxãšåãå©ç¹ããããŸããããã®æ¬ ç¹ã¯ãŸã£ãããããŸããã
ã¢ã€ãã¢
ajaxã®å Žåãäž»ãªãããªãã¯ãã¯åã
ã®ãããã¯ãããŒãããããšã§ãããããã«ãããã©ãã£ãã¯ã倧å¹
ã«ç¯çŽãããŸãã ããããajaxã®å€§ããªåé¡ã¯ãå€ããã©ãŠã¶ãŒãšæ€çŽ¢ãšã³ãžã³ã®äž¡æ¹ãšã®åŒ·ãéäºææ§ãããã³æ¢åã®ãããžã§ã¯ããžã®è€éãªçµ±åã§ãã ãããã¯äžã®æ¬¡ã®ãµã€ããajaxã§æžãçŽããŠããºã«ãè§£ããšãçŸä»£ã®ãã¯ãããžãŒã®å©ããåããŠãåæ§ã®çµæãéæããããšã¯å®éã«ã¯äžå¯èœã§ãããå®è£
ãšäºææ§ã®ã³ã¹ãã¯äœããªããŸããïŒ ã ãã...æ°Žãæ³šãçµããŸããã...ã¢ã€ãã¢ã¯éåžžã«åçŽã§ãïŒæŽæ°ããå¿
èŠããããã®ã ããããŒãããŸãïŒå®éã«ã¯ãajaxã®ã¢ã€ãã¢ã«ãã䌌ãŠããŸãïŒã å
šäœã®åé¡ã¯å®è£
ã§ãã åºç€ã¯ãJSã®ããŒãºïŒlocalStorageãªã©ïŒã®ããã«ããçš®ã®ã¹ãã¬ãŒãžããµããŒãããããã®ææ°ã®æšæºãšããµãŒããŒåŽã§ãã³ãã¬ãŒãããã£ãã·ã¥ãããšããã¢ã€ãã¢ã§ããã ããããæšªæããŠãTCCãååŸããŸããã ã€ãŸãããµãŒããŒäžã®ãã³ãã¬ãŒãã®å Žåã®ããã«ãããŒãžå
šäœã¯éåžžãå¥ã
ã®ãã¡ã€ã«ïŒã³ãŒãïŒã«ãã£ãŠåŠçããã³åœ¢æãããéšåã«åå²ããããŠãŒã¶ãŒã«ãã£ãŠçµåããã³ç Žæ£ãããŸãã å€ãã®å Žåãäžéšã®æçã¯ãã£ãã·ã¥ããããã°ããã®éåæ§æãããŸããã ã¢ã€ãã¢ã¯ããã®ãã£ãã·ã¥ã®äžéšãã¯ã©ã€ã¢ã³ãåŽã«è»¢éããã¯ã©ã€ã¢ã³ããããµãŒããŒã«æ
å ±ã転éãããã£ãã·ã¥ããªãããç¶æ
ã«ç¶æããããã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæããããšã§ãã ã€ãŸã ããŒãžãããŒããããšããéåžžéãããµãŒããŒåŽã§ãã©ãŒã ãäœæããããã€ãã®ãããã¯ãã¹ãããããŸããããµãŒããŒãã£ãã·ã¥ããããããååŸãããåã«ç©ºã®ãŸãŸã«ããŸãããã®åœ¢åŒã§ã¯ãã¯ã©ã€ã¢ã³ãã«è»¢éããŸããæ¢åã®ãã£ãã·ã¥ã䜿çšããŠãçµæã®ããŒãžããŠãŒã¶ãŒã«è¡šç€ºããŸãã 説æãããæ¬¡ã®ããšãæããã§ãã
- +äžèŠãªãããã¯ã圢æããããµãŒããŒåŽã§ãããã«æéãè²»ãããŸããïŒãããã®ãããã¯ããã£ãã·ã¥ããã³ã¹ããå«ãããã©ãŒãã³ã¹ã«å ããŠïŒã
- +äžèŠãªïŒéââè€ããïŒæ
å ±ããµãŒããŒããã¯ã©ã€ã¢ã³ãã«éä¿¡ããŸããïŒããŠã³ããŒãé床ãšãã©ãã£ãã¯ã®åæžïŒã
- +åºæ¬çã«ãããã¥ã¡ã³ãã®æ§é ãšæ¹æ³ã倿ŽããŸããïŒå ããŠãæ¢åã®ãšã³ãžã³/ãµã€ããžã®çµ±åã®å®¹æããããã³æ€çŽ¢ãšã³ãžã³ãšå€ããã©ãŠã¶ã®åé¡ããªãããšã¯ãTCCãµããŒãããªãå Žåãåžžã«ãã«ããŒãžã§ã³ã®ããŒãžãåãåãããã§ãïŒãã¹ãŠã®ãããã¯ïŒ;

å
šäœãšããŠãTCCã®äžé£ã®äœæ¥ã¯æ¬¡ã®ããã«è¡šãããšãã§ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ããŒãžãèŠæ±ããŸãã
- ãµãŒããŒã¯ãç¹å¥ãªãããã¯ããŒã«ãŒã§è«çãããã¯ã«åå²ããhtmlãçæããŸãã
- ãã®ããŒãžãåãåã£ãã¯ã©ã€ã¢ã³ãã¯ãããŒã«ãŒã§ããŒãžãåå²ãããã£ãã·ã¥ã«å
¥ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãåããµã€ãã®å¥ã®ããŒãžãžã®ãªã³ã¯ããã©ããŸãã
- ãµãŒã㌠ã©ã®ãããã¯ããã£ãã·ã¥ãããããç¥ããšããã£ãã·ã¥ã«é¢ä¿ã®ãªããããã¯ã«ã€ããŠã®ã¿ã空ã®ãããã¯ããŒã«ãŒãšå¡ãã€ã¶ããããããã¯ããŒã«ãŒã§æ§æãããããŒãžã圢æããŸãïŒã€ãŸããæ¬è³ªçã«å€ãããŒãžãšæ°ããããŒãžã®å·®åã圢æããŸãïŒã
- ãã®ãããªå·®åãåä¿¡ããã¯ã©ã€ã¢ã³ãã¯ããã£ãã·ã¥ããå¿
èŠãªãããã¯ãæœåºããŠããŒãžãåããŸãã
- å©ç
å®è£
ãã¢ã®ãµã³ãã«ãçæéã§åéããããšã¯æããã§ãããããã£ãŠãå€ãã®ããšã«ç®ãã€ã¶ããŸãïŒhtmlã®è§£æã«jQueryã䜿çšãããªã©ãè¿
éãªçµæãåŸãããã®è»œãïŒã
以äžã«ç€ºãããã«ãæ¹åã§ãããã®ã®ãªã¹ãã§ãã®ã§ããã¢ã®äŸïŒæ¬çªç°å¢ã§ã®ã¢ããªã±ãŒã·ã§ã³ã®èгç¹ããïŒãæ¹å€ããªãã§ãã ããã
ãŸãããã£ãã·ã¥çšã«ãããã¯ãããŒã¯ããæ¹æ³ã決å®ããå¿
èŠããããŸãã ç°¡åã«ããããã«ãæšæºã®html spanèŠçŽ ã䜿çšããŸãããããã¯ãå«ãŸãããããã¯ã«ã»ãšãã©åœ±é¿ãäžããªãããã§ãïŒã€ãŸãããã¹ãããããããŒãã£ã³ã°ãããã¯ããã³ã€ã³ã©ã€ã³ã³ã³ããã¹ãã§éåžžåäœããŸãïŒã ãããããŒã«ãŒã§ããããšã瀺ãããã«ã次ã®ååã«ãã£ãŠåŒã³åºãããç¹å¥ãªã¯ã©ã¹ãéžæãããŸããã
tcc_ <ID> _ <MODE> [_ <TTL>];
ã©ãã§ïŒ
<ID>-äžæã®ãããã¯çªå·ã
<MODE>-ãã£ãã·ã³ã°ã¢ãŒãïŒä»¥äžã«ã€ããŠïŒã
<TTL>-ãã£ãã·ã¥ã®æå¹æéã
ãã£ãã·ã³ã°ã¢ãŒãã¯ãã¯ã©ã€ã¢ã³ããåŠçããŠãããããã¯ãã¯ã©ã€ã¢ã³ãã«ç€ºãããšãç®çãšããŠããŸãã 3ã€ã®ãã£ãã·ã¥ã¢ãŒããå²ãåœãŠãããŸããã
rïŒãªã¢ã«ã¿ã€ã ïŒ-ãã£ãã·ã¥ã®å¯Ÿè±¡ã§ã¯ãªããããã¯ïŒããŒãžããªããŒãããããã³ã«æŽæ°ãããŸãïŒ;
sïŒãµãŒããŒïŒ-ãµãŒããŒäžã«åœ¢æããããã£ãã·ã¥ã®å¯Ÿè±¡ãšãªããããã¯ïŒãã£ãã·ã¥å
ã®ãããã¯ã圢æãŸãã¯çœ®æããå¿
èŠãããå Žåã«äœæãããŸãïŒ;
cïŒã¯ã©ã€ã¢ã³ãïŒ-ã¯ã©ã€ã¢ã³ãããã£ãã·ã¥ãããããŒã¿ãé
眮ãã空ã®ãµãŒããŒäžã«åœ¢æããããããã¯ã
å®è£
ã«ç§»ããŸãããïŒãµãŒããŒã³ãŒãã¯PHPã«ãããŸãããäœã«ã§ãæžãæããããšã¯é£ãããªããšæããŸãïŒã ãŸãããããã¯ã®å
é ã圢æããåçŽãªé¢æ°ãäœæããŸãïŒå®éããã®é¢æ°ã¯ãããã€ãã®å
¥åããŒã¿ã«åºã¥ããŠãç¹å¥ãªã¯ã©ã¹ã§æšæºã¹ãã³ã圢æããå¿
èŠããããŸãïŒã
function blockStart($id, $ttl = false)
{
global $curTime;
global $tcc;
if (!$ttl)
{
echo '<span class="tcc_' . $id . '_r">';
return true;
}
else if (isset($tcc[$id]) && ($tcc[$id] > $curTime))
{
echo '<span class="tcc_' . $id . '_c_' . $tcc[$id] . '">';
return false;
}
else
{
echo '<span class="tcc_' . $id . '_s_' . $ttl . '">';
return true;
}
}
ã芧ã®ãšããããã®é¢æ°ã¯2ã€ã®å€éšå€æ°ã$ curTimeïŒå¿
èŠãªåœ¢åŒã®çŸåšæå»ïŒãããã³$ tccïŒã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã¥ã®ãªã¹ãã以äžã®ã¯ã©ã€ã¢ã³ããããµãŒããŒã§åä¿¡ããããšã«ã€ããŠèª¬æããŸãïŒã䜿çšããŸãã 颿°ã®æ®ãã®ããžãã¯ã¯éåžžã«ã·ã³ãã«ã§ç°¡åã§ãã
次ã«ãã¹ãã¬ãŒãžïŒãã®å Žåã¯localStorageïŒãæäœããããã®ç¹å®ã®ãµãŒãã¹é¢æ°ã»ãããã¯ã©ã€ã¢ã³ãåŽïŒã€ãŸããJSåŽïŒã§èšè¿°ããå¿
èŠããããŸãã
function storSet(id, ttl, value)
{
localStorage.setItem('tcc_' + id, ttl + ':' + value);
}
function storGet(id, ttl)
{
var data = localStorage.getItem('tcc_' + id);
if (data == null) return null;
var data_ttl = data.substr(0, 12).split(':', 1)[0];
if ((data_ttl != ttl) || (data_ttl <= curTime)) return null;
return data.substr(data_ttl.length + 1);
}
ããã§ããã¹ãŠãç°¡åã§ã... storSetã§ã¯ããããã¯ã®æå¹æ§ããã§ãã¯ããããã«idãæå®ããŠttlãä¿åããããšãå¿ããã«ããŒã¿ãä¿åããŸãã storGetã§ã¯ããã®IDã§ãããã¯ãååŸããttlã®æå¹æ§ã確èªããæåããå Žåããã£ãã·ã¥ããããããã¯ãè¿ããŸãã
次ã«ããµãŒããŒããåä¿¡ãããã¹ãŠãè§£æããã¡ã¬ããŒãµãŒãå¿
èŠã§ãã
function tcc()
{
var item;
while ((item = $('[class^=tcc_]:first')) && (item.length != 0))
{
var cn = item.attr('class').split('_');
if (cn[2] == 's')
{
var nItem = item.clone();
var cItem;
while ((cItem = nItem.find('[class^=tcc_]:first')) && (cItem.length != 0))
{
cItem.replaceWith('<span class="cache_' + cItem.attr('class') + '"></span>');
}
storSet(cn[1], cn[3], nItem.html());
}
else if (cn[2] == 'c')
{
var data = storGet(cn[1], cn[3])
if (data == null)
{
alert('critical error');
}
else
{
var nItem = $('<span>' + data + '</span>');
var cItem;
while ((cItem = nItem.find('[class^=cache_tcc_]:first')) && (cItem.length != 0))
{
var ncn = cItem.attr('class').split('_');
var rItem = item.find('[class^=tcc_' + ncn[2] + '_]');
if (rItem.length != 0)
{
cItem.replaceWith('<span class="' + rItem.attr('class') + '">' + rItem.html() + '</span>');
}
else
{
cItem.remove();
}
}
item.replaceWith(nItem.html());
}
}
if (cn[2] != 'c')
{
item.replaceWith(item.html());
}
}
...
}
ã³ãŒãã¯éåžžã«ééçã§ãããããããã§èª¬æããããšã¯ããŸããããŸããã ãããã¯ãèŠã€ãã->ãããããã£ã->å¿
èŠãªã¢ã¯ã·ã§ã³ãçæããã
ãã®çµæãã¯ã©ã€ã¢ã³ãåŽã§è¡ãã¹ãããšã¯ããµãŒããŒããã£ãã·ã¥ãæã£ãŠããããšããµãŒããŒã«ç¥ãããããšã ãã§ããããã«ããããµãŒããŒã¯åŸç¶ã®ããŒãžãæ£ãã圢æã§ããŸãã ãã©ã³ã¹ããŒãã®åœ¢åŒã§ã¯ãã·ã³ãã«ã§åºæ¬çãªCookieãéžæãããŸããã
function tcc()
{
...
var storage = '';
for (var i = localStorage.length - 1; i >= 0; i--)
{
var key = localStorage.key(i);
var prefix = key.split('_', 1)[0];
var key = key.substr(prefix.length + 1);
if (prefix != 'tcc') continue;
var ttl = storExist(key);
if (ttl != null)
{
if (storage.length != 0) storage += ',';
storage += key + '_' + ttl;
}
else
{
localStorage.removeItem('tcc_' + key);
}
}
var cookie = 'tcc=' + escape(storage) + ';path=/';
if (storage == '') cookie += ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
document.cookie = cookie;
}
Cookieã¯éåžžã«ééçã«åœ¢æãããå庫ãééããŠãããã¯ãæ¢ããCookieã®ãªã¹ãã«åãããã¯ã®IDãšTTLãèšå
¥ããŸãã æå®ãããã³ãŒãã§ã¯ãå¥ã®ãµãŒãã¹é¢æ°storExistã䜿çšãããŸããããã¯ããããã¯ãæå¹ãªå Žåã«ãããã¯ã®TTLãè¿ãããšãé€ããŠãstorGetãšã»ãŒåãã§ãã
function storExist(key)
{
var data = localStorage.getItem('tcc_' + key);
if (data == null) return false;
var data_ttl = data.substr(0, 12).split(':', 1)[0];
if (data_ttl <= curTime) return null;
return data_ttl;
}
ããŠãã¯ã©ã€ã¢ã³ãåŽã§ã¯ãåºæ¬çã«ãã¹ãŠãå®è¡ãããµãŒããŒã«æ»ããŸããã åé ã§ãç¹å®ã®$ tccé
åïŒããŒã«ãŒãããã¯ã®åœ¢ææ©èœçšïŒã«èšåããŸãããããã¯ã圢æããå¿
èŠããããŸãã
if (isset($_COOKIE['tcc']))
{
$list = explode(',', $_COOKIE['tcc']);
for ($i = 0; $i < count($list); $i++)
{
$item = explode('_', $list[$i]);
if (count($item) == 2)
{
$tcc[$item[0]] = $item[1];
}
}
}
ãã¹ãŠãåºæ¬ã§ãã
ãŸãšã
ç§ã¯å®éšã®çµæã«éåžžã«æºè¶³ããŠãããšèšããªããã°ãªããŸããã æåŸã®ã¹ã¯ãªããã§ã¯ããã£ãã·ã¥ãèªåçã«åŠçããå¯èœãªéãå°ãªããã©ãã£ãã¯ãããŒãžããŠéä¿¡ããåçŽãªã·ã¹ãã ãåŸãŸããã æçµçãªJSã¹ã¯ãªããïŒçè«çã«ã¯åžžã«ã¯ã©ã€ã¢ã³ããããµãŒããŒã«éä¿¡ããå¿
èŠããããŸãïŒã¯ã2kã®å§çž®YUVãã©ãã£ãã¯ãåãåããŸãããéå§çž®ã®GZipãã©ãã£ãã¯ã¯ãç§ã«ãšã£ãŠã¯ããªã蚱容ç¯å²ã§ãã ãŸããå€ããã©ãŠã¶ãŒãŸãã¯æ€çŽ¢ãšã³ãžã³ã®å Žåãã¯ã©ã€ã¢ã³ãåŽã¯JSãlocalStorageãŸãã¯CookieããµããŒãããªãããããµãŒããŒã¯åžžã«ã¯ã©ã€ã¢ã³ãåŽã«ãã£ãã·ã¥ããªããšå€æããåžžã«ãã«ããŒãžã圢æããŸãïŒã€ãŸããé«éœ¢è
ãšã®äºææ§ãåããèªåã·ã¹ãã ãæã«å
¥ããŸãããããã¯ç§ã«ãšã£ãŠãšãŠãã¯ãŒã«ã§ãïŒã ãŸãããã³ãã¬ãŒããšã³ãžã³ãšç°¡åã«çµã¿åãããŠãããã¯ãããŒã¯ããããã°ã©ããŒãäžå¿
èŠãªhemoã䜿ããã«ã¯ã©ã€ã¢ã³ãåŽãšãµãŒããŒã®äž¡æ¹ã«ãã£ãã·ã¥ã§ãããããªãåçŽãªãµãŒããŒå®è£
ãæ³šç®ã«å€ããŸãã ãŸãããªãã·ã§ã³ã§ããã®æ¹æ³ã§JSãšCSSãããã¥ã¡ã³ãã®æ¬æã«çŽæ¥ãã£ãã·ã¥ããããšãã§ããŸãïŒã¡ãªã¿ã«ããã®å Žåãå¿
èŠãªã¹ã¯ãªãããšã¹ã¿ã€ã«ããã¹ãŠå«ããããšãã§ããŸãïŒã ãã®å ŽåãåJSãŸãã¯CSSãåå¥ã®ãããã¯ã«åé¢ããã³åé¢ããããšã«ãããå¿
èŠãªJSããã³CSSã³ãŒãã®ã¿ãããŒããã䟿å©ã§åºæ¬çãªã·ã¹ãã ãååŸãããµãŒããŒãªã¯ãšã¹ããæå°éã«æããŸãïŒãã®ãªã¯ãšã¹ããåãªããã£ãã·ã¥æ€èšŒã§ãã£ãŠãïŒã
çæïŒãŸãã¯å¥ã®æ¹æ³ã§ã§ããããšïŒ
æããã«ãjQueryãåãé€ãå¿
èŠããããŸãïŒããã¯çè§£ã§ããŸãïŒã
ãããã¯ã®ããŒãã³ã°ã<ïŒ-cc_ <ID> _ <MODE> [_ <TTL>]->ã®ãããªãã®ã«å€æŽããŸãããã®å Žåãæšæºãšã®äºææ§ãå
±æhtmlã®æŽåæ§ãå¿é
ããã«ãããã¯ãããŒã¯ã§ããŸãïŒãã ããã¹ãã³ãããã¯ã§ã¯ã宿ããhtmlãããã¯ã®ã¿ãã«ããããå¿
èŠããããŸããããããªããšãTCCãã©ãŠã¶ãŒãããµããŒããããŠããªãå Žåããã¹ãŠããã©ãã©ã«ãªããŸãïŒã
ã¢ã€ãã¢èªäœã®äž»ãªæ¬ ç¹ã¯æ¬¡ã®ãšããã§ãã
- åã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã¥ã®é¢é£æ§ãç£èŠãããµãŒããŒåŽã®å¿
èŠæ§ïŒããšãã°ããªã³ã©ã€ã³ã¹ãã¢ã§ååã®ãã¹ã±ããã®å Žåããã¹ã±ããã倿ŽãããŠã¯ã©ã€ã¢ã³ãã«åºæã§ããå Žåã倿Žããå¿
èŠããããŸããã€ãŸããã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã¥ãå€ããªã£ãŠããããšãçè§£ããå¿
èŠããããŸãïŒã
- Cookieã®æœåšçãªå¢å ã¯ãã¯ã©ã€ã¢ã³ããããµãŒããŒãžã®ãã©ãã£ãã¯ã®å¢å ã«ã€ãªãããŸãïŒãã ããæçµçã«éžæãããTTLãããã¯ãšãã®æ°ã«ãã¹ãŠäŸåãããããããã¯ãŸãã«æœåšçãªåé¡ã§ãã
ãŸããããããã¹ãŠã§ã...
æé©åã®ããã®åççãªæ¹å€ãšã¢ã€ãã¢ãèãããã§ãã ãã¹ãŠã®è³ªåã«åãã§ãçãããŸãã
PSæ®å¿µãªããã誰ããç§ã«1ã€ã®phpãã¡ã€ã«ã®å ŽæãæããŠãããããç§ã¯æè¬ããã§ããããäœæ¥ã¹ã¯ãªããã®äŸãã¬ã€ã¢ãŠãããããšã¯ã§ããŸãããUPDã PSå®äŸãžã®ãªã³ã¯ïŒ
catsmile.heliohost.org/Mear/tcc.php ïŒå Žæã«ã€ããŠã¯
catsmileã«æè¬ïŒ
UPD.2 PPSãã®ãããã¯ã®ç®çãçè§£ãããããŸãããæé€ããããã«ãæç¢ºã«ããŸãã æ¬åœã®æå³ã§ã®ajaxã®çœ®ãæãã¯ææ¡ããŸããã ç¹å®ã®å®è£
ã§ã¯ãã¯ã©ã€ã¢ã³ããã£ãã·ã³ã°ã®ãªãã·ã§ã³ã®ã¿ãæ€èšããããšãææ¡ããŸãã ãŸããå®èšŒãããã³ãŒãã¯å®å
šã§ãããšäž»åŒµãããã¢ãããŒããå®èšŒããç®çã§ã®ã¿äœæãããŸããã ãã®ãããã¯ã®äž»ãªç®æšã¯ãã¯ã©ã€ã¢ã³ãåŽã§ããã€ãã®ãããã¯ããã£ãã·ã¥ããã¢ã€ãã¢ãšããããã®ãããã¯ãæäœããæ¹æ³ã«é¢ããã¢ã€ãã¢ãšã³ã¡ã³ããåéããããšã§ãã