Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ASCII art oneliner
Search
MSR
October 29, 2016
Technology
0
2k
ASCII art oneliner
アスキーアート(突然の死、slコマンド、端末画面ぐちゃぐちゃ)をワンライナーでやってみた
※完全版
MSR
October 29, 2016
Tweet
Share
More Decks by MSR
See All by MSR
horizon
msr_i386
0
1.2k
fujiaire by shell
msr_i386
0
920
colaboratory
msr_i386
0
140
yes command faster
msr_i386
0
360
Amazon Dash Hack
msr_i386
0
1.4k
cgroup
msr_i386
0
1.4k
discover fork-bomb
msr_i386
0
1.9k
kanji banner
msr_i386
0
1.8k
QR Code Shell
msr_i386
0
2.2k
Other Decks in Technology
See All in Technology
プロダクト開発におけるAI時代の開発生産性
shnjtk
2
240
Running JavaScript within Ruby
hmsk
3
350
更新系と状態
uhyo
7
1.7k
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
280
Would you THINK such a demonstration interesting ?
shumpei3
1
230
意思決定を支える検索体験を目指してやってきたこと
hinatades
PRO
0
220
読んで学ぶ Amplify Gen2 / Amplify と CDK の関係を紐解く #jawsug_tokyo
tacck
PRO
1
220
バックオフィス向け toB SaaS バクラクにおけるレコメンド技術活用 / recommender-systems-in-layerx-bakuraku
yuya4
6
550
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
260
Linuxのパッケージ管理とアップデート基礎知識
go_nishimoto
0
390
PagerDuty×ポストモーテムで築く障害対応文化/Building a culture of incident response with PagerDuty and postmortems
aeonpeople
2
340
日経電子版 for Android の技術的課題と取り組み(令和最新版)/android-20250423
nikkei_engineer_recruiting
0
420
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
670
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
The Invisible Side of Design
smashingmag
299
50k
RailsConf 2023
tenderlove
30
1.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Rails Girls Zürich Keynote
gr2m
94
13k
GitHub's CSS Performance
jonrohan
1030
460k
Producing Creativity
orderedlist
PRO
344
40k
Docker and Python
trallard
44
3.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.5k
Transcript
ΞεΩʔΞʔτ ϫϯϥΠφʔ @ୈ25ճγΣϧܳษڧձ େࡕαςϥΠτ (2016.10.29) MSR (@msr386)
࣍ ➤ ࣗݾհ ➤ ࠓ·Ͱͷল ➤ ΞεΩʔΞʔτͳγΣϧܳ (όφʔܳ) ➤ ಥવͷࢮ
➤ slίϚϯυ ➤ λʔϛφϧը໘Λ͙ͪΌ͙ͪΌʹ͢Δ ➤ ·ͱΊ
ࣗݾհ ➤ ϋϯυϧωʔϜ: MSR (@msr386) ➤ C++ϓϩάϥϛϯάɺαʔόʔӡ༻͕ಘҙ ➤ ٻ৬த ➤
Chromium Contributor (1ճ͚ͩ) ➤ Webϒϥβ࡞͍ͬͯ·͢ (http://app.tungsten-start.net/)
ࠓ·Ͱͷল
͜Ε·Ͱͷࣗͷओͳ LTൃදΛৼΓฦΔͱ
(1)Χφμͷങ͍ΓVPSͷհ ӡ༻ʹ͑ͳ͍͚ͲγΣϧܳ࿉ʹͽͬͨΓ?
(2) QRίʔυγΣϧܳ? QRةݥγΣϧܳ / QRίʔυγΣϧܳͷՄೳੑΛࡧ
΄ͱΜͲγΣϧܳͱ ؔͳ͍͡ΌΜ (ΨνͷγΣϧܳΖ͏ͥ)
࠷ۙͷόφʔܳͱ͍͏ ྲྀߦʹΓ
ΞεΩʔΞʔτγΣϧ ܳΛΓ·͢
1. ಥવͷࢮ
?P? ɹɹc ɹɹ
ʘ ?P? ɹʘc ɹɹɹʼ
ʻ ?P? ʼ ɹࡾ ࡾ ʻʉʉʼ
Є ?P? ɹʻ ʼάΩο ʻʉʉʼ
ʊਓਓਓਓʊ ʼಥવͷࢮʻ ʉ:?:?:?:ʉ
ಥવͷࢮ ➤ 2012ࠒɺͱ͋Δܝࣔ൘ʹॻ͖ࠐ·Εͨͷ͕ݩωλͱݴΘΕ͍ͯΔ ➤ ࠷ޙͷғΈจࣈͷΞεΩʔΞʔτ͚͕ͩΑ͘ΘΕ͍ͯΔ ➤ 2013ʹTwitterͰվߦίʔυ͕ରԠ͔ͯ͠Βڻҟతʹ֦ࢄ ➤ ओͳಛ ➤
൚༻ੑͷߴ͞ ➤ ΞεΩʔΞʔτͷ୯७͞ ➤ ݟͨͷྗڧ͞ ➤ ʮಥવͷࢮδΣωϨʔλʔʯͱ͍͏໊લͰWebαʔϏεԽɺiOSAndroid͚ʹΞϓ ϦԽ͞Ε͍ͯΔ
ಥવͷࢮɹγΣϧεΫϦϓτ൛͕ଘࡏ ➤ γΣϧεΫϦϓτ͋Δ (https://fumiyas.github.io/2013/12/25/echo-sd.sh-advent-calendar.html) $ echo -e "crontab -r\n突然の危険シェル芸" |
echo-sd -s --center _人人人人人人人人人人人_ > crontab -r < > 突然の危険シェル芸 < ‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^‾ $ $ echo-sd -v 縦書き _人人_ > 縦 < > 書 < > き < ‾Y^Y^‾ $
ಥવͷࢮɹγΣϧεΫϦϓτ൛͕ଘࡏ ➤ ॎॻ͖ɺɺετϨεൃੜաఔϞʔυɺπΠʔτػೳͳͲػೳ͕๛ $ echo-sd --stress "crontab: no crontab for
root" あれ?中身消えてる "(historyの結果) 334 sudo crontab -r" "eとr押し間違い!バック アップない!!" 危険シェル芸 crontab: no crontab for root ↘ あれ?中身消えてる ⾫ (historyの結果) 334 sudo crontab -r ↘ eとr押し間違い!バックアップない!! ⾫ _人人人人人人人人_ > 危険シェル芸 < ‾Y^Y^Y^Y^Y^Y^Y^Y^‾ $ echo-sd --tanzaku ":(){ :|:& };:" ┏-┷-┓ ┃ ‥ ┃ ┃ ⏜ ┃ ┃ ⏝ ┃ ┃ ⏞ ┃ ┃ ┃ ┃ ‥ ┃ ┃ | ┃ ┃ ‥ ┃ ┃ & ┃ ┃ ┃ ┃ ⏟ ┃ ┃ ; ┃ ┃ ‥ ┃ ┗━━┛
ϫϯϥΠϯ࣮ɺ։࢝
࢝ΊΔલʹ ୯७ԽͷͨΊʹɺҎԼͷΑ͏ͳखൈ͖Λ͠·͢ ➤ ෯ϑΥϯτʹಛԽ ➤ 1ߦ͚ͩରԠ ෳߦͰߟྀ͖͢͜ͱ͕૿͑ΔͨΊ ➤ શ֯จࣈ͚ͩରԠ ֯จࣈͱΓ͋͑ͣແࢹ͢Δ
➤ LANG=ja_JP .UTF-8 લఏ LANGʹΑΓจࣈܭࢉ͕͓͔͘͠ͳΒͳ͍Α͏ʹ͢ΔͨΊ
੍࡞աఔ 1. ಛΛଊ͑Δ _人人人人人人_ > 突然の死 < ‾Y^Y^Y^Y^Y^Y^‾ ಥવͷࢮɺจࣈʹԠ্ͯ͡෦ɺԼ෦ͷจࣈ͕มԽ͢Δ →্෦ʮਓʯͱԼ෦ʮY^ʯΛશ֯1จࣈʹରͯ͠1ݸͣͭ૿ͤΑ͍
੍࡞աఔ 2. จࣈΛௐΔʹ? awkͷlength()Λ༻͢Δ for (i=0; i<length()+2; i++) { up=up
"ਓ"; dn=dn "Y^" } ※+2ࠨӈͷه߸ͱ༨ന 3. printfͰܗ͢Δ printf("ʊ%sʊ\nʼɹ%sɹʻ\nʉ%sʉ\n", up, $0, dn)
ಥવͷϫϯϥΠφʔ୯७൛ $ echo 突然の死 | awk \ '{for(i=0;i<length()+2;i++) \ {up=up
"人"; dn=dn "Y^"} printf( \ "_%s_\n> %s <\n‾%s‾\n", \ up, $0, dn)}'
ಥવͷϫϯϥΠφʔ୯७൛ɹ࣮ߦྫ $ echo 突然の死 | awk '{for(i=0;i<length()+2;i++){up=up "人"; dn=dn "Y^"}
printf("_%s_\n> %s <\n‾%s‾\n", up, $0, dn)}' _人人人人人人_ > 突然の死 < ‾Y^Y^Y^Y^Y^Y^‾ $ $ echo Hankakuだとずれる | awk '{for(i=0;i<length()+2;i++){up=up "人"; dn=dn "Y^"} printf("_%s_\n> %s <\n‾%s‾\n", up, $0, dn)}' _人人人人人人人人人人人人人人_ > Hankakuだとずれる < ‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^‾ $
ಥવͷϫϯϥΠφʔ୯७൛ͷಛͱ ಛ ➤ awkҰൃܳ ➤ πΠʔτՄೳ(112จࣈ) ➤ ֯จࣈࠞ͟ΔͱͣΕΔͷखൈ͖͠ա͗͡Όͳ͍? ֯จࣈͰͣΕΔݪҼɺawkͷlength()ͷ༷
➤ LANGڥมʹґଘ ➤ ja_JP .UTF-8ͷ߹ɺશ֯֯1Λฦ͢ ➤ ͳΒɺશ֯2ɺ֯1ΛฦͤͣΕͳ͍ΑͶ?
ಥવͷϫϯϥΠφʔվྑ൛ $ echo 突然の死 | awk \ '{for(i=1;i<=length();i++){ \ len+=(substr($0,i,1)~/[\x01-\x7E]/)?1:2}
\ for(i=0;i<len/2+2;i++){ \ up=up "人";dn=dn "Y^"} \ printf("_%s_\n> %s <\n‾%s‾\n", \ up,$0,dn)}'
ಥવͷϫϯϥΠφʔվྑ൛ɹ࣮ߦྫ $ echo 突然のワンライナーEx | awk '{for(i=1;i<=length();i++){len +=(substr($0,i,1)~/[\x01-\x7E]/)?1:2}for(i=0;i<len/2+2;i++){up=up "人";dn=dn "Y^"}printf("_%s_\n> %s <\n‾%s‾\n",up,$0,dn)}'
_人人人人人人人人人人人人_ > 突然のワンライナーEx < ‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^‾ $ $ echo Hankakuでもずれは最小限 | awk '{for(i=1;i<=length();i++){len +=(substr($0,i,1)~/[\x01-\x7E]/)?1:2}for(i=0;i<len/2+2;i++){up=up "人";dn=dn "Y^"}printf("_%s_\n> %s <\n‾%s‾\n",up,$0,dn)}' _人人人人人人人人人人人人人人_ > Hankakuでもずれは最小限 < ‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^‾ $
ಥવͷϫϯϥΠφʔվྑ൛ͷಛ ➤ վળ ➤ ͕֯ࠞͬͯͣ͟Εͳ͍ ➤ վѱ ➤ πΠʔτෆՄ
վྑ൛ͷղઆ ➤ awkΛܗ͢Δͱ͜ͷΑ͏ʹͳΔ { for(i = 1; i <= length();
i++) { len += ( substr($0,i,1) ~/[\x01-\x7E]/ ) ? 1 : 2 } for(i = 0; i < len / 2 + 2; i++) { up = up "ਓ"; dn = dn "Y^" } printf("ʊ%sʊ\nʼɹ%sɹʻ\nʉ%sʉ\n", up, $0, dn) }
վྑ൛ͷղઆ (1.) for(i = 1; i <= length(); i++) {
len += (substr($0,i,1)~/[\x01-\x7E]/) ? 1 : 2 } (2.) for(i = 0; i < len / 2 + 2; i++) { up = up "ਓ"; dn = dn "Y^" } (3.) printf("ʊ%sʊ\nʼɹ%sɹʻ\nʉ%sʉ\n", up, $0, dn) 1. จࣈΛऔಘ 1จࣈͣͭऔΓग़͠ɺจࣈ͕UTF-8Ͱ1όΠτ จࣈͰ͋Δ߹1ɺͦΕҎ֎2ͱ͢Δɻ UTF-8ͷ1όΠτจࣈɺ0x01ʙ0x7eؚ͕· Ε͍ͯΔ͔Ͳ͏͔Ͱఆ͢Δɻ 2. ্෦ʮਓʯɺԼ෦ʮY^ʯΛจࣈʹԠͯ͡ ૿͢ ૿͢શ֯ج४Ͱ͋Δ͜ͱʹҙ 3. printfͰܗ
͞ΒͳΔվྑͷಓ ➤ ෳߦରԠ ➤ ϧʔϓճΛݮΒ͢ͳͲͷ࠷దԽ ➤ awkΛΘͳ͍ํ๏ ➤ etc. ➤
ͬͱ͍͍ํ๏͋ΔͣͳͷͰɺՋͳͱ͖ʹνϟϨϯδ͠·͠ΐ͏
൪֎ฤ _人人人人人人人_ > 突然のSEGV < ‾Y^Y^Y^Y^Y^Y^Y^‾
൪֎ฤ ➤ SEGVͰམͪͨɾɾɾ༷? $ awk --version GNU Awk 4.1.3, API:
1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0) <ҎԼུ> $ echo ಥવͷSEGV | awk '{print $0~/[\x00-\x7F]/}' 1 $ echo ಥવͷSEGV | awk '{print $0~/[\x00-\x80]/}' awk: ίϚϯυϥΠϯ:1: க໋తΤϥʔ: ෦Τϥʔ: ηάϝϯςʔγϣϯҧ Aborted (core dumped) $
2. SLίϚϯυ
LSͷ͋Δ͋Δ ➤ lsͱೖΕΑ͏ͱͯ͠ $ sl -l sl: command not found
$ ➤ lʮ͔ͯ͠͠ʯ sʮΘͨͨͪ͠ʯ ҎԼུ ➤ lsͱؒҧ͑ͯslͬͯೖΕͪΌͬͨʂͱ͍͏͋Δ͋Δ͔Βɺslͱ͍͏δϣʔΫίϚϯ υ͕ੜͨ͠
SLίϚϯυͷ͍ྺ࢙ ➤ 1987ɺUNIXχϡʔεάϧʔϓfj.sourceʹॳొ(࡞ऀՎਖ਼͞Μ) ➤ 1993ɺ๛ాਖ਼࢙͞Μ(ݱࡏɺ।ڭत)͕slίϚϯυΛϦϦʔε ͨͩͷδϣʔΫίϚϯυ͔ΒΩʔλΠϓڲਖ਼ίϚϯυʹਐԽ ➤ 1990ޙʙ LinuxσΟετϦϏϡʔγϣϯʹࡌ͞ΕΔΑ͏ʹͳΔ ➤
2000ɺslͷվ൛͕ొ ➤ དྷͰ30प!
SLίϚϯυͷಛ ➤ Ctrl+C (SIGINT) Λԡͯ͠தஅ͠ͳ͍ ΩʔλΠϓڲਖ਼͕త͔ͩΒ ➤ lsΑΓ࣮ߦ͕࣌ؒΔ͔ʹ͍ ΩʔλΠϓڲਖ਼͕త͔ͩΒ ➤
Φϓγϣϯ͕lsʹࣅ͍ͯΔ Ωʔt δϣʔΫίϚϯυ͔ͩΒ
SLίϚϯυΛγΣϧܳͰ
݅ ➤ ݩωλͷΞεΩʔΞʔτΛϕʔεͱ͢Δ o o o ____ --
|OO| _||__| | | | /-O=O O=O-- ➤ ंྠճΒͳ͍ ➤ ৠؾݻఆ͔ͭग़ͬͺͳ͠ ➤ ӈ͔Βࠨಈ͕͘ɺؿंશମৗʹදࣔͤ͞Δ ➤ Ctrl+C༗ޮ (ΩʔλΠϓڲਖ਼͕తͰͳ͍͔Β)
γΣϧܳखॱ̍ AAΛ1ߦʹ $ echo -e " o \n o \n
o ____\n -- |OO|\n _||__| |\n | |\n/-O=O O=O--" o o o ____ -- |OO| _||__| | | | /-O=O O=O-- $
γΣϧܳखॱ̎ ӈ٧Ί͢Δ ڥʹԠͯ͡ tput colsɺBSDܥͳΒ tput coɺBashͳΒecho $COLUMNS Ͱͷ෯͕ औಘͰ͖Δ
$ echo $COLUMNS 120 awkͷ-vΦϓγϣϯͰγΣϧมΛ͠ɺεΫϦϓτͷprintfͰӈ٧Ίͤ͞Δ $ echo -e " o \n o \n o ____\n -- |OO|\n _||__| |\n | |\n/-O=O O=O--" | awk -v col=$COLUMNS '{printf("%" col "s\n", $0)}'
γΣϧܳखॱ̏ ӈ٧Ίͷ෯ΛݮΒ͍͖ͯ͠ɺ for ; do ; doneΛ༻͢Δ $ for ((i=$COLUMNS;
i>=11; i--)); do clear; echo -e " o \n o \n o ____\n -- |OO|\n _||__| |\n | |\n/-O=O O=O--" | awk -v col=$i '{printf("%" col "s\n", $0)}'; sleep 0.06; done
͞ΒͳΔվྑͷಓ ➤ ͍͖ͳΓݱΕ͍͖ͯͳΓࢭ·ΔͷͰɺྻंࣄނͷΑ͏ʹݟ͑Δ ˞ݩωλΓڈΔ ➤ ʹΑͬͯͪΒͭ͘͜ͱ͕͋Δ ➤ Ctrl-CΛແޮʹ͢ΔʹͲ͏ͨ͠Β͍͍? ➤ etc.
➤ ͬͱ͍͍ํ๏͋ΔͣͳͷͰɺՋͳͱ͖ʹνϟϨϯδ͠·͠ΐ͏(2ճ)
SLίϚϯυ൪֎ฤ(1) lsʹࣅͨΦϓγϣϯଘࡏ͢Δ ➤ $ sl -a HELP! ➤ $ sl
-F ඈΜͩʂ ➤ $ sl -l ͪͬ͞ʂ ➤ $ sl -c C51ͩʂ(Α͘Βͳ͍) ➤ $ sl -aFlc શ෦ͤʂ
SLίϚϯυ൪֎ฤ(2) ➤ slίϚϯυͷιʔείʔυgithubʹɻϓϧϦΫͰ͞ΒʹਐԽ ➤ վ൛ͬͱ͍͢͝ ʮSL վܭըʯhttp://www.izumix.xyz/sl/ ʢύονద༻ࡁʣhttp://qiita.com/gm_kou/items/2840a6670dc2e733d00a ٬ं૿ͨ͠Γɺ౿ग़͖ͯͨΓɺSL͕ԟ෮ͨ͠Γɺ͕όϥόϥͩͬͨΓ͍Ζ͍Ζ δϣʔΫίϚϯυͷྖҬΛ͑ͨ࡞
➤ GistʹژٸԽύον͕͋Δ https://gist.github.com/poochin/1423262 # SL͡Όͳ͍͡ΌΜʂͱ͍͏ͳಥࠐΈ͝ԕྀ͍ͩ͘͞
3.λʔϛφϧը໘Λ ͙ͪΌ͙ͪΌʹ
λʔϛφϧը໘Λ͙ͪΌ͙ͪΌʹ ➤ ANSIΤεέʔϓγʔέϯεΛ͏͜ͱͰɺจࣈʹ৭Λ͚ͭͨΓɺഎܠ৭Λม͑ͨΓ ͕Ͱ͖Δ ➤ ͜ΕΛར༻ͯ͠ɺը໘Λ͙ͪΌ͙ͪΌʹ͢Δ͜ͱ͕Մೳ
എܠ৭Λม͑ΔANSIΤεέʔϓγʔέϯε ➤ എܠ৭Λม͑ΔΤεέʔϓγʔέϯε(جຊ8৭) ESC[ʻ40ʙ47ʼm 40: ࠇ, 41: , 42: ,
43: ԫ, 44: ੨, 45: Ϛθϯλ, 46: γΞϯ, 47: ന ※ʹΑΓ৭ඍົʹҟͳΔ ➤ എܠ৭Λม͑ΔΤεέʔϓγʔέϯε(256৭) ESC[48;5;ʻ৭൪߸ʼm 48: ֦ுഎܠ৭; 5: 256৭ΠϯσοΫεΧϥʔ; ৭൪߸: 0ʙ255Λࢦఆ ➤ ΤεέʔϓγʔέϯεͷϦηοτίʔυ (͜Ε͕ͳ͍ͱ৭͕Ϧηοτ͞Εͳ͍) ESC[0m
➤ echoίϚϯυͰ"\e"Λ͏ ※"\e"Λೝࣝ͠ͳ͍ڥ͋Δ ➤ printfίϚϯυͰ"\033"Λ͏ $ printf
"\033[45m%s\033[0m\n" Ϛθϯλ ANSIΤεέʔϓγʔέϯε͖Ͱදࣔ Ϛθϯλ $ echo -e “\e[46mγΞϯ\e[0m] γΞϯ
λʔϛφϧը໘͙ͪΌ͙ͪΌɹ˞ $ clear; while :; do c=`expr $RANDOM % 256`;
echo -en "\e[48;5;$ {c}m \e[0m"; done
λʔϛφϧը໘͙ͪΌ͙ͪΌɹվྑ൛ ➤ echo ➤ printf
※ൈ͚Δʹsleep 500Λফ͔͢Ctrl+CͰ $ clear; for color in `od -vAn -tu1 -N $(($COLUMNS*$LINES)) < /dev/urandom` ; do echo -en "\e[48;5;${color}m \e[0m"; done; sleep 500 $ clear; for color in `od -vAn -tu1 -N $(($COLUMNS*$LINES)) < /dev/urandom` ; do printf "\033[48;5;${color}m \033[0m"; done; sleep 500
ղઆ 1. 0ʙ255·ͰͷཚΛऔಘ odͱ/dev/urandomΛ༻͢Δ $ od -vAn -tu1 -N 1
< /dev/urandom 15 2. ͷը໘͍ͬͺ͍ʹͳΔΑ͏ʹɺܻ * ߦճ͚ͩཚΛऔಘ͢Δ $ od -vAn -tu1 -N $(($COLUMNS*$LINES)) < /dev/urandom 241 178 43 211 3 255 29 178 181 247 234 112 157 18 152 29 3. ΤεέʔϓγʔέϯεͰ৭Λม͑ͤ͞Δ $ echo -en “\e[48;5;${color}m \e[0m” $ printf “\033[48;5;${color}m \033[0m” 4. 2.ͰٻΊͨ݁ՌΛforͰճͤ
·ͱΊ ➤ ಥવͷࢮδΣωϨʔλʔͱslίϚϯυͳͲΛϫϯϥΠφʔͰ࣮ݱ ➤ awkͷ൚༻ੑΕͳ͍ ➤ δϣʔΫίϚϯυΛγΣϧܳͰ࣮ݱͤ͞Δͷָ͍͠ ➤ ͬͱ͍͍ํ๏͋ΔͣͳͷͰɺՋͳͱ͖ʹνϟϨϯδ͢ΔͷΑ͍ͱࢥ͍·͢