Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Perl MongerのためのGoの始め方
Search
karupanerura
March 30, 2016
Technology
2
2.2k
Perl MongerのためのGoの始め方
Gotanda.pm #8
(2016-03-31 16:30) 37ページがおもいっきり間違っているので修正したものを後ほどUPします
karupanerura
March 30, 2016
Tweet
Share
More Decks by karupanerura
See All by karupanerura
Perl Meets \w+ あるいは開発を支えるPerl活用の実例集
karupanerura
0
35
log
karupanerura
1
80
Use Perl as Better Shell Script
karupanerura
0
820
GoでParserを書く
karupanerura
4
980
マイ隙間家具OSSたちのご紹介
karupanerura
2
270
Mustache Template 話 2024
karupanerura
0
44
1つの言語を原点に色々な言語を学ぶということ
karupanerura
4
2.9k
Javaの実装をPerlでテストする
karupanerura
0
1.3k
Go Generics Overview
karupanerura
0
1.3k
Other Decks in Technology
See All in Technology
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
0
150
21st ACRi Webinar - Univ of Tokyo Presentation Slide (Shinya Takamaeda)
nao_sumikawa
0
120
ガバメントクラウド利用システムのライフサイクルについて
techniczna
0
180
直接メモリアクセス
koba789
0
280
【pmconf2025】PdMの「責任感」がチームを弱くする?「分業型」から全員がユーザー価値に本気で向き合う「共創型開発チーム」への変遷
toshimasa012345
0
260
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
pmconf2025 - 他社事例を"自社仕様化"する技術_iRAFT法
daichi_yamashita
0
780
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
200
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
210
日本Rubyの会の構造と実行とあと何か / hokurikurk01
takahashim
4
890
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
250
著者と読み解くAIエージェント現場導入の勘所 Lancers TechBook#2
smiyawaki0820
12
5.8k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Statistics for Hackers
jakevdp
799
230k
Documentation Writing (for coders)
carmenintech
76
5.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Speed Design
sergeychernyshev
33
1.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
KATA
mclloyd
PRO
32
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Transcript
Perl MongerͷͨΊͷ Goͷ࢝Ίํ id:karupanerura Gotanda.pm #8
About me • Kenta SATO (id:karupanerura) • Perl/Go/Swift/Kotlin/Java/Crystal/C99/etc.. • Gotanda.pm
Author • Senior Engineer at Mobile Factory, Inc. • WebApp/iOS/Android/Operation/etc..
͓͜ͱΘΓ • ͝Γ͝Γॻ͍͍ͯΔਓ͚Ͱ͋Γ·ͤΜ • ஆ͔͍ϚαΧϦΛ͓ئ͍͠·͢ • PerlͱPerl6Ͱͳ͘Perl5Λࢦ͠·͢ • Perl6ͱPerl5ผͷݴޠͰ͢ʢຊʹʣ
͓͜ͱΘΓ • ݪཧతͷઆ໌Λ͢ΔͨΊʹϕετϓϥΫςΟ ε͔Β֎Εͨઆ໌Λ͢Δ߹͕͋Γ·͢ • ӏವΈʹ۪ͯ͠ʹॻ͔ͳ͍Ͱ͍ͩ͘͞ • ͜ͷʹϚαΧϦΛ͛ͳ͍Ͱ͍ͩ͘͞ • ΒΕͨΒٽ͖·͢ʢٽ͖·ͤΜʣ
ݟͨͷҧ͍
Perl
Go
※ஊͰ͢
ֶͿ
PerlΛֶͿ • ެࣜͷυΩϡϝϯτ: perldoc perlintro • ఆ൪ͷॻ੶: ॳΊͯͷPerlɺխͳPerlೖ • WEB+DB
PRESS: Perl Hackers Hub • ษڧձ: Perlೖֶࣜ
GoΛֶͿ • ެࣜͷυΩϡϝϯτ: A Tour of Go • ఆ൪ͷॻ੶: ϓϩάϥϛϯάݴޠGo
(ະൃച) • WEB+DB PRESS: Vol.82 ͡ΊͯͷGo • ษڧձ: (ఆظ։࠵͞Ε͍ͯΔͷͳͦ͞͏)
υΩϡϝϯτ
PerlͷυΩϡϝϯτ(ಡΈํ) • perldocίϚϯυ͔ΒͥΜͿಡΊΔ • perldocͷυΩϡϝϯτ: perldoc perldoc • perlͷυΩϡϝϯτ: perldoc
perl (࣍) • metacpan.org perldoc.jp ͳͲͰಡΊΔ
GoͷυΩϡϝϯτ(ಡΈํ) • ݴޠͷυΩϡϝϯτ: https://golang.org/doc/ • ϞδϡʔϧͷυΩϡϝϯτ: godoc.org • godocίϚϯυͰಡΊΔ
PerlͷυΩϡϝϯτ(ܗࣜ) • ׂͱࣗ༝ɺDESCRIPTION/SYNOPSISॏཁ • DESCRIPTION: Ϟδϡʔϧͷઆ໌ • SYNOPSIS: Ұ؏తͳαϯϓϧίʔυ •
PODܗࣜͰॻ͔ΕΔ
GoͷυΩϡϝϯτ(ܗࣜ) • ߏମ/ΠϯλʔϑΣʔε/ؔຖʹॻ͔ΕΔ • publicͳؔͳͲʹυΩϡϝϯτ͕ॻ͔Εͯ ͍ͳ͍ͱܯࠂ͕ग़Δ • ؔ͝ͱʹαϯϓϧίʔυ(Example)͕͋Δ • ίϝϯτͱͯ͠ιʔείʔυʹॻ͔ΕΔ
ڥ
Perlͷڥ • ॲཧܥperlͷΈ • ϚϧνOSαϙʔτ • ࣮ߦڥʹڧ͘ґଘ͢Δ • plenvCatronͳͲͰόʔδϣϯΛݻఆ͢Δ
Goͷڥ • ॲཧܥgoͷΈ • ϚϧνOSαϙʔτ (ΫϩείϯύΠϧ༰қ) • Ϗϧυڥʹڧ͘ґଘ͢Δ • Ϗϧυڥͷόʔδϣϯ͕static
link͞Εͨ όΠφϦ͕ੜ͞ΕΔ
Πϯετʔϧ
Perl ॲཧܥͷΠϯετʔϧ • anyenv install plenv • plenv install -l
# όʔδϣϯ֬ೝ • plenv install 5.22.1 • plenv global 5.22.1 • plenv install-cpanm
Perl ϞδϡʔϧͷΠϯετʔϧ • cpanm App::revealup • ςετ͕ϩʔΧϧͰ࣮ߦ͞ΕΔ • cpanm -n
App::revealup • ςετͳ͠ • cpanm —install-deps . • ΧϨϯτͷґଘϞδϡʔϧΛΠϯετʔϧ
Perl ڥͷצॴ • ࣮ߦڥʹ߹Θͤͯॊೈʹ։ൃڥΛม͑Δ • OSʹΠϯετʔϧ͢ΔͱrootݖݶͰϞδϡʔ ϧΛΠϯετʔϧ͢Δඞཁ͕͋Δ • ύεͷࢦఆՄೳ •
Cartonlocal::libͱซ༻͢Δख͋Δ
Go ॲཧܥͷΠϯετʔϧ • OS X: brew install go • Debian/Ubuntu:
apt-get install golang • binary: https://golang.org/dl/ • /usr/bin ͱ͔ʹී௨ʹΠϯετʔϧͰे
Go ϞδϡʔϧͷΠϯετʔϧ • go get github.com/karupanerura/gostress • ΠϯετʔϧͷΈ • go
get -t github.com/karupanerura/gostress • ςετͭͭ͠Πϯετʔϧ • go get -d . • ґଘϞδϡʔϧΛΠϯετʔϧ
Go ڥͷצॴ • ଟ༷ͳ࣮ߦڥΛߟ͑ͳͯ͘ྑ͍ • ࣮ߦڥͷόʔδϣϯΛؾʹ͠ͳͯ͘ྑ͍ • ඞཁ͕ग़ͨΒgoenvͳͲΛ͏ͱྑ͍ • ϞδϡʔϧGOPATHҎԼʹΠϯετʔϧ
• $HOME/go ͱ͔ʹ͠ͱ͚rootݖݶෆཁ
ΤσΟλ
PerlͷΤσΟλࣄ • emacs • cperl-mode + flycheck + perl-completion •
vim • vim-perl + quickrun + perlomni • ͘Θ͘͠ͳ͍
GoͷΤσΟλࣄ • emacs • go-mode + + flycheck + gocode
• vim • vim-go + vim-godef + gocode • ͘Θ͘͠ͳ͍
_ਓਓਓਓਓਓਓਓ_ > Γ͍ͨ < ʉY^Y^Y^Y^Y^Y^Yʉ
ݴޠ༷
໊લۭؒ
Perl ໊લۭؒ • package = ໊લۭؒ = Ϋϥε • private/publicͱ͍͏֓೦ແ͍
• ໊લۭؒͷϨΩγΧϧείʔϓ࡞ΕΔ • privateͱͯ͠ѻ͍͍ͨαϒϧʔνϯͷ߹ ΞϯμʔείΞΛ໊લͷprefixʹ͢Δͷ͕׳श
Perl ໊લۭؒ • ϑΝΠϧύεͱpackageʹڧ͍͕ؔ͋Δ • Foo::Bar = Foo/Bar.pm • ϩʔυ͢Δͱ͖use·ͨrequireΛ͏
• use Foo::Bar;
Perl ໊લۭؒ • ଞͷύοέʔδʹϑϧωʔϜͰΞΫηε • Foo::Bar::baz() # Foo::Barͷbuz()Λ࣮ߦ • σʔλ(ϦϑΝϨϯε)ͱpackageΛඥ͚Δ͜
ͱ͕Ͱ͖Δ(ޙड़)
Go ໊લۭؒ • package = ύοέʔδ • ໊લͰউखʹΞΫηε੍ޚֻ͕͔Δ • খจࣈͰ࢝·Δͷpackage
• େจࣈͰ࢝·Δͷpublic
Go ໊લۭؒ • ϑΝΠϧύεͱpackageʹڧ͍͕ؔ͋Δ • = Foo/Bar.pm • ଞͷύοέʔδʹϑϧωʔϜͰΞΫηε •
Foo::Bar::baz() # Foo::Barͷbuz()Λ࣮ߦ
ܕ
Perlͱܕ • ಈతܕ͚ݴޠʢίϯςΩετʹΑΔܕ͚ʣ • Scalar/Array/Hash ٴͼͦΕΒͷϦϑΝϨϯε • ଞͷಈతܕ͚ݴޠͱ͘Βͯಛघ • ৄ͘͠ޠΔͱ60͘Β͍Εͯ͠·͏ͷͰ
ࠓճৄ͍͠ݴٴΛ߇͑Δ(GoϝΠϯͳͷͰ)
Perlͷσʔλܕ (Scalar) • ୯ҰͷΛද͢σʔλܕ • /࣮/จࣈྻ/ϦϑΝϨϯε͕ೖΔ • ਓؒʹͱͬͯ $age ͕จࣈྻ͔Ͳ͏͔ؔ৺֎
• ίϯςΩετʹΑܾͬͯΊ͔͔ͯΓ͍ͨ • $age > 20 # ageΛͰѻ͏ίϯςΩετ
Perlͷσʔλܕ (Array/Hash) • ྻ • ॱংΛ࣋ͭσʔλͷू߹ • ϋογϡ • ໊લΛ࣋ͭσʔλͷू߹
Perlͷσʔλ (ϦϑΝϨϯε) • σʔλͷ࣮ମͷࢀর(CͷϙΠϯλʹ͍ۙ) • ϑΝΠϧγεςϜͰ͍͏ͱ͜ΖͷγϣʔτΧο τγϯϘϦοΫϦϯΫ • ϦϑΝϨϯεɾΧϯτGC •
࣮ମͷࢀর͕ͳ͘ͳΔͱ࣮ମΛഁغ
Goͱܕ • ڧ͍੩తܕ͚ݴޠ • มؔ(Ҿ/ฦΓ)ɺσʔλ͕ܕΛ࣋ͭ • มͱσʔλͷܕ͕Ұக͢Δඞཁ͕͋Δ • มͱؔͷܕ͕Ұக͢Δඞཁ͕͋Δ •
ͱʹ͔͘ܕ͕Ұக͢Δඞཁ͕͋Δ
Goͷσʔλܕ (جຊ) • : int, int32, int64 • ࣮: float,
float32, float64 • จࣈྻ: string
Goͷσʔλܕ (array) • ॱংΛ࣋ͬͨσʔλͷू߹ • αΠζ10ͷจࣈྻͷྻ: [10]string • Ұ࡞ͬͨΒ֦ு͢Δ͜ͱͰ͖ͳ͍
Goͷσʔλܕ (slice) • ྻͷҰ෦ΛεϥΠεͨ͠ࢀর • ͔Βͳ͍ਓϙΠϯλͷཧղ͕Γͳ͍ • ҎԼͷεϥΠυͷ39ϖʔδҎ߱Λࢀর͢͠ • http://www.slideshare.net/yasi_life/
go-14075425
Goͷσʔλܕ (map) • ໊લΛ࣋ͬͨσʔλͷू߹ • stringΛΩʔʹͨ͠ͷmap: map[string]int • αΠζؾʹ͠ͳͯ͘Α͠ͳʹͯ͘͠ΕΔ
Goͷσʔλܕ (struct) • ୯ҰͷσʔλΛදݱ͢Δσʔλͷू߹ • Point{X: 1, Y: 1} Έ͍ͨͳϊϦͷΞϨ
• ࣗ༝ʹఆٛͰ͖Δ • C++ͷstruct/classʹ͍ۙ (ޙड़)
Goͷσʔλܕ (pointer) • σʔλͷ࣮ମͷࢀর(CͷϙΠϯλʹ͍ۙ) • PerlͷϦϑΝϨϯεͱಉ͡ • શͯͷσʔλܕϙΠϯλΛ࡞ΕΔ
Goͷܕ (interface) • ಛఆͷؔΛݺͼग़ͤΔܕΛࣔ͢ • duck typingΛࢧԉ͢Δ • ࣗ༝ʹఆٛͰ͖Δ •
Javaͷinterfaceʹ͍͕ۙimplements͢Δඞཁ ͳ͍
ϝϞϦཧ
PerlͷϝϞϦཧ • શ෦ώʔϓྖҬʹ࣋ͭ • ϝϞϦϓʔϧΛ࣋ͬͯಈతʹׂΓͯΔ • શͯͷσʔλGCͰഁغ͞ΕΔ • ϦϑΝϨϯεΧϯτͳͷͰ॥ࢀরʹऑ͍
GoͷϝϞϦཧ • ͚ؔͩͰΘΕΔ: ελοΫྖҬ • ؔ֎ͰΘΕΔ: ώʔϓྖҬ • ώʔϓྖҬͷσʔλGCͰཧ͞ΕΔ •
Mark & Sweep ͳͷͰ॥ࢀরʹڧ͍͕GC͞ ΕΔͷ͕ଟ͍ͱGC͕ॏ͘ͳΔ
ؔ
Perl ؔ • αϒϧʔνϯ͕ସ • ԾҾແ͍ • @_Λదʹೖͯ͠͏ • ෳͷΛฦ͢͜ͱ͕Ͱ͖Δ
Go ؔ • ԾҾͱฦΓͷܕΛ໌ࣔ͢Δඞཁ͕͋Δ • @_ Έ͍ͨͳ൮ͳ͜ͱͰ͖ͳ͍ • ෳͷΛฦ͢͜ͱ͕Ͱ͖Δ •
ผʑͷมͰશͯͷฦΓΛड͚औΔ
ϝιου
Perl ϝιου • package(Ϋϥε)packageʹbless(ͻ͚) ͞ΕͨϦϑΝϨϯε(=Πϯελϯε)͔Βαϒ ϧʔνϯΛϝιουݺͼग़͠Ͱ͖Δ • ϝιουݺͼग़͢͠ΔͱαϒϧʔνϯͷୈҰ ҾʹίϯςΩετͱͯ͠ΫϥεΠϯελϯ ε͕͞ΕΔ
Perl ϝιου • @PackageName::ISA ͕ܧঝύοέʔδ • ݟͨͷ௨Γଟॏܧঝ͕Մೳ • ϝιουݺͼग़͠ͰܧঝΛḷͬͯ͘ΕΔ •
͜ͷ͔Β͘ΓΛblessͱΈ߹ΘͤΔ͜ͱͰ OOP͕ՄೳʹͳΔ
Perl ϝιου (ऄ) • AUTOLOAD • rubyͰ͍͏ͱ͜Ζͷmethod_missing • UNIVERSAL •
rubyͰ͍͏ͱ͜ΖͷObjectΫϥε
Go ϝιου • ࣗͷpackageͷσʔλܕʹϝιουͷΑ ͏ͳͷΛੜ͢͜ͱ͕Ͱ͖Δ • structͦͷϙΠϯλʹੜ͢ͷ͕Ұൠత • ଞͷݴޠͷΫϥεͷΠϯελϯεϝιουͬ Ά͘ͳΔ
Go ϝιου (ऄ) • structͷmixinՄೳ͕࣮ͩଶͨͩͷҕৡ • ܧঝͰͳ͍ͷͰʹϝιουݺͳ͍ • ҕৡͳͷͰcontext object͕ҟͳΔ͜ͱʹ
• ܕใisaͷؔʹͳΒͳ͍
Go ϝιου (ऄ) • ੩తܕ͚ݴޠͳͷͰAUTOLOADͰ͖·ͤΜ • ͪͳΈʹCrystalͩͱmacroͰ࣮ݱ͍ͯ͠Δ • UNIVERSALΈ͍ͨͳͭͳ͍ͷʔʁ •
ܧঝ͕ແ͍ͷͰ͓͍ͩ͘͠͞ͳ
લஔ͖ऴΘΓ
࣮༻తͳ
จࣈྻૢ࡞
Perl ͷจࣈྻૢ࡞ • ਖ਼نදݱ·͡࠷ߴ·͡ศར!! • جຊతʹshell script༝དྷͷจԽͳͷͰ… • tr///ͱs///ͱ͔͋Ε͍͍ͩͨͳΜͱ͔ͳΔ •
ͳΜͱ͔ͳΒͳ͍ͱ͜ΖͰuc/lcͱ͔Λ͏
Go ͷจࣈྻૢ࡞ • ίΞ͕αϙʔτ͢Δػೳ࠷খݶ • stringsύοέʔδͰ͍͍ͩͨͳΜͱ͔ͳΔ • ࠔͬͨΒ·ͣ͜͜ΛௐΑ • ਖ਼نදݱΛؾܰʹ͏ͱՄಡੑΛଛͳ͏
• ਖ਼نදݱͷίʔυ͕Perlͱ͘Βͯ
ܕม
Perl ͷܕม • ίϯςΩετͰܕΛ໌ࣔ͢ΔͷͰσʔλͷܕ ม͕ͦͦෆཁ • ڧ͍ͯݴ͑ίϯςΩετຖʹ҉తʹܕ ม͕ى͍ͬͯ͜Δͷʹ͍͕ۙ͜Εݫີʹ ਖ਼֬ͳදݱͰͳ͍
Go ͷܕม • ܕ͕ݫີͳͷͰܕม͍ͨ͜͠ͱ͕ଟ͍ • strconvύοέʔδͰ͍͍ͩͨͳΜͱ͔ͳΔ • ܕΩϟετ࠷ऴखஈͱ৺ಘΑ • interfaceΛ͏·͘׆༻͢Δͱଟ͘ͷ߹Ͱ
ܕΩϟετͷඞཁੑ͕ͳ͘ͳΔ
Τϥʔॲཧ
Perl ͷΤϥʔॲཧ • ྫ֎ • eval BLOCK ͷதͰdie͢Δ • $@
ʹdieʹͨ͠Scalar͕ೖΔ • ී௨
Go ͷΤϥʔॲཧ • ฦΓͰerrorܕΛฦ͢ͷ͕෩श • result, err := strconv.Atoi(“unko”) •
if err != nil { … } Ͱશ෦ͳΜͱ͔͢Δ • ذॻ͖ΕͯίϯύΠϥॿ͚ͯ͘ΕΜ
Go ͷΤϥʔॲཧ • ະ༻ͷม͕͋ΔͱίϯύΠϧΤϥʔ • ୯ҰͷείʔϓͰ୯ҰͷΤϥʔΛॲཧ͢Δ • ͢ΔͱerrorܕͷΛΘͳ͍ͱίϯύΠϧ Τϥʔ͕ൃੜ͢Δ •
catch࿙Ε͕͋ΔͱίϯύΠϧΤϥʔ͢Δੈք
ߏઃܭ ※ݸਓͷݟղͰ͢
Perl ͷߏઃܭ • খ͍͞ͷखଓ͖ͬΆ͘ΰϦΰϦͬͱॻ͘ • େ͖ͳͷOOPΒ͚ͯ͘͠ॻ͘ • Webͱ͔ͩͱAmon2ͱ͔ͬͯMVCͨ͠Γ • package(Ϋϥε)Ͱ͔ͬ͠ΓείʔϓΛΔ
Go ͷߏઃܭ • interfaceΛத৺ʹઃܭ͢Δ • ৼΔ͍Λड͚͍ͯ͘͠Πϝʔδ • ϙϦϞʔϑΟζϜతͳߟ͑ํ • ελοΫྖҬΛ͏·͘͏Α͏ʹॻ͘ͱߴ
Go ͷߏઃܭ • େ͖ͳͷΛ࡞Δͱ͖෦తʹpackageΛ ͚ΔͱΑͦ͞͏ • ૬ରύεͰύοέʔδΛϩʔυͰ͖ΔͷͰ ͦΕΛ͏·͘׆༻͢Δ • https://github.com/builderscon/octav
ฒྻॲཧ ※ݸਓͷݟղͰ͢
Perl ͷฒྻॲཧ • forkҰ • threadͷΑ͏ͳͷͳ͘ͳ͍͕ΰϛ • ͬͯͳΒͳ͍ • ಉظϑΝΠϧΛͬͨΓPIPEΛͬͨΓ
Perl ͷฒྻॲཧ • ͳΔ͘ϓϩηε͕͍·ΘͤΔΑ͏ʹ͢Δ • ͭ·Γ͍ΘΏΔpre-forkࣜ • ϓϩηεؒͷಉظ͕ඞཁʹͳͬͨΒෛ͚ • Ͳ͏ͯ͠ඞཁͳΒPerlʹ͍ͯͳ͍ͱׂ
ΓΔ͔AnyEventͳͲΛซ༻͢Δ
Go ͷฒྻॲཧ • goroutineͱ͍͏εϨουͷΑ͏ͳͷ͕͋Δ • ʮฒྻͰಈ͍ͯྑ͍ͷʯΛ࡞ΔΠϝʔδ • Go͕͍͍͔Μ͡ʹεέδϡʔϦϯά͢Δ • جຊతʹchannelͰಉظΛऔΔ
Go ͷฒྻॲཧ • ಉظͷίετΑΓฒྻԽͷϝϦοτ͕ߴ͚Ε ͕Μ͕ΜgoroutineΛ࡞Δͱྑͦ͞͏ • ಉظ͕සൟʹඞཁʹͳΔͳΒߟ͑ํΛม͑ ͯΈΔ • ϓϩηεͱҧͬͯؾܰʹࡴͤͳ͍ʹҙ
·ͱΊ
·ͱΊ • GoͱPerlࣅ͍ͯΔʂ • ͱ·Ͱݴ͑ͳ͍͚Ͳͱ͖͍ͬͭ͢ͱࢥ͏ • GoPerlదࡐదॴͰ͍͚ͬͯΔͱΑͦ͞͏ Ͱ͢Ͷ
͓ΘΓ
࣭·ͩ͋ΕͲ͏ͧ