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
Perl使いの国のRubyist
Search
Takafumi ONAKA
PRO
May 12, 2018
Technology
0
54
Perl使いの国のRubyist
2018-05-12 RejectKaigi 2018
Takafumi ONAKA
PRO
May 12, 2018
Tweet
Share
More Decks by Takafumi ONAKA
See All by Takafumi ONAKA
強いチームと開発生産性
onk
PRO
40
17k
ADRを運用して3年経った僕らの現在地
onk
PRO
21
22k
1文字エイリアスのすゝめ
onk
PRO
0
52
すこやかなサービス運営のための PWG (Performance Working Group)
onk
PRO
0
830
オブザーバビリティの Primary Signals
onk
PRO
2
5.7k
Cache Stampede
onk
PRO
1
2.1k
ORM - Object-relational mapping
onk
PRO
2
3.7k
デュアルトラックアジャイルとの向き合い方
onk
PRO
5
12k
技術記事を書く&楽しむチームの作り方
onk
PRO
0
1.8k
Other Decks in Technology
See All in Technology
大事なのは、AIの精度だけじゃない!〜1円のズレも許されない経理領域とAI〜
jun_nemoto
10
5.1k
技術書典18結果報告
mutsumix
2
180
Introduction to Bill One Development Engineer
sansan33
PRO
0
240
2025advance01
minamizaki
0
130
DevOpsDays Taipei 2025 -- Creating Awesome Change in SmartNews!
martin_lover
0
160
Digitization部 紹介資料
sansan33
PRO
1
3.8k
KMP導⼊において、マネジャーとして考えた事
sansantech
PRO
1
200
積み上げられた技術資産と向き合いながら、プロダクトの信頼性をどう守るか
plaidtech
PRO
0
810
プラットフォームとしての Datadog / Datadog as Platforms
aoto
PRO
1
330
Contract One Dev Group 紹介資料
sansan33
PRO
0
6k
面接を通過するためにやってて良かったこと3選
sansantech
PRO
0
130
令和トラベルQAのAI活用
seigaitakahiro
0
520
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
Scaling GitHub
holman
459
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
Fireside Chat
paigeccino
37
3.5k
Adopting Sorbet at Scale
ufuk
76
9.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
A designer walks into a library…
pauljervisheath
205
24k
Designing for humans not robots
tammielis
253
25k
Transcript
1FSM͍ͷࠃͷ3VCZJTU 3FKFDU,BJHJ େೳ࢙BLBJEPOL
ࣗݾհ w େೳ࢙BLBJEPOL w ݄·ͰυϦίϜͱ͍͏ձࣾͰ3BJMTΛॻ͍ ͍ͯ·ͨ͠ɻ3BJMTྺ͙Β͍ w ݄͔Βɺͯͳͱ͍͏ձࣾͰ1FSMΛॻ͍ͯ ͍·͢ɻ1FSMྺϲ݄ w
ࠓژ͔Βདྷ·ͨ͠
1FSMɻ
1FSMɻ w ʮઈରʹॻ͖ͨ͘ͳ͍ʯͱࢥ͍ͬͯΔਓ͕গͳ͘ͳ͍ͱࢥ͏ w ͦ͏Ͱͨ͠
1FSMɻ w ه߸ଟ͗͢Δ͠ ͱ͔!ͱ͔ͱ͔ w ޙ͚ͷΦϒδΣΫτࢦ͕ෆ֨ͩ͠ w Ҿ͕ແͯ͘!@͔ΒऔΓग़͞ͳ͖Ό͍͚ͳ͍͠
1FSMɻ w ਖ਼ɺژͷసډͱ͍͏ϥΠϑΠϕϯτ͕ແ͔ͬͨΒ·ͩ3VCZ ॻ͍͍ͯͨͱࢥ͍·͢ w Ͱ·͊ɺඈͼࠐΜ͔ͩΒʹຊؾͰΔΑɺͱ͍͏Θ͚Ͱɺࠓ ʮ1FSM͍ͷࠃͷ3VCZJTUʯͱ͍͏Λ͠·͢ w λΠτϧ:"1$"TJBͷ͋ΜͪΆ͘ΜΠϯεύΠΞ
ΞδΣϯμ w 3VCZ͔Β1FSM w ࠷ۙͷ1FSMͱ࠷ۙͷ3VCZ w 1FSMͱ3VCZͷܑఋؔ w 1FSMʹ׳ΕΔͨΊʹԿΛ͔ͬͨ w
։ൃ͍ͯͯ͠ϏοΫϦͨ͠ͱ͜Ζ w $1"/Ϟδϡʔϧฤ w ·ͱΊ
3VCZ͔Β1FSM w ʮ1FSM͔Β3VCZʯ͍ͬͯ͏ެࣜυΩϡϝϯτ
3VCZ͔Β1FSM w ͜ͷʮ1FSMͱͷྨࣅʯʮ1FSMͱͷҧ͍ʯ͕ʮ3VCZ͔Β1FSMʯͷ ཱͰศར w ݱͷ1FSMͰղܾ͍ͯ͠Δͱ͍͏ͷ͕ޙͰ͔ͬͨ
࠷ۙͷ1FSMͱ࠷ۙͷ3VCZ w DQBOUT IUUQTDQBOUTDQBOBVUIPSTPSH 2009 21070 2010 22227 2011
21910 2012 22647 2013 25760 2014 27272 2015 22999 2016 19982 2017 16352 2018 6052 => 17096 ϖʔε
࠷ۙͷ1FSMͱ࠷ۙͷ3VCZ w SVCZHFNTPSH IUUQTSVCZHFNTPSHQBHFTEBUB Version.group("TO_CHAR(created_at, 'YYYY')").count.sort # => [["2009",
39336], ["2010", 59267], ["2011", 82608], ["2012", 104318], ["2013", 125526], ["2014", 155369], ["2015", 132626], ["2016", 121681], ["2017", 108671], ["2018", 36498]] => 105485 ϖʔε
࠷ۙͷ1FSMͱ࠷ۙͷ3VCZ w ͲͪΒ͕ϐʔΫͰಷԽ͕ݟ͑·͢Ͷ w શظͷ͙Β͍ʁ w ଞͷݴޠௐͯͳ͍ΜͰ͕͢ɺؤு͍͖ͬͯ·͠ΐ͏
1FSMͱ3VCZͷܑఋؔ w ·ͩ8FC෦͔͠ݟͯͳ͍ͷͰଟ͘ޠΕ·ͤΜ͕
8FC։ൃͷྺ࢙ w $(*͙࣌Β͍ w ૉͷ$(* w ϦΫΤετΛड͚ΔͨͼʹQFSMΛىಈ͢Δ w "QBDIF NPE@QFSM
w QFSMࣗͷىಈίετ͕ແ͘ͳΔ
8FC։ൃͷྺ࢙ w 'BTU$(*͙࣌Β͍ w ΞϓϦέʔγϣϯΛGDHJରԠ͓͍ͯͯ͠ɺϓϩηεΛ্ཱͪ͛ଓ ͚Δ w "QBDIFͰ͋Δඞཁ͕ͳ͘ͳΓɺMJHIUUQE͕ྲྀߦΔ w 3BJMTY͙Β͍
w MJHIUUQE NPOHSFMͱ͔UIJOͱ͔ջ͔͍͠Ͱ͢Ͷ
8FC։ൃͷྺ࢙ w 84(*࣌ʙ w 3BDL։ൃ։͕࢝ W͕ w 3BJMTW͕ w 1MBDL։ൃ։͕࢝
W͕ w ʮϓϥοΫاۀʯ͕ྲྀߦޠͩͬͨͷ͕͙Β͍
3VCZπʔϧͱ1FSMQPSU w #VOEMFS w #VOEMFS w ։ൃ։͕࢝ W͕ w $BSUPO
w ։ൃ։͕࢝ W͕
3VCZπʔϧͱ1FSMQPSU w "OZFOW w SCFOW w QMFOW
3VCZπʔϧͱ1FSMQPSU w 8FC"QQMJDBUJPO4FSWFS w 6OJDPSO w 4UBSNBO 4UBSMFU w 8FC"QQMJDBUJPO4FSWFS
/PO#MPDLJOH w QVNB w 5XJHHZ
3VCZπʔϧͱ1FSMQPSU w ͷΑ͏ͳײ͡Ͱɺग़ࣗͦ͜1FSM͕3VCZͷܑ͓͞Μ ͓࢞͞Μ ͩ ͬͨͷͷɺ࠷ۙٯͷྲྀΕ͕ଟ͔ͬͨҹͰ͢
֓೦ͷมԽ͕ݮͬͨ w 3BJMT͔Β֓೦͕มΘΔΑ͏ͳେ͖ͳมߋ͕ͳ͍͠ɺ͔ͦ͜ Β8FCΞϓϦ։ൃࣗମ͕ਐԽ͕ࢭ·ͬͯΔҹ͕͋Δ w εϚϗΞϓϦ41"ੜ·Εͨ w +40/4DIFNBลΓಉ࣌ൃੜతʹʹΓ্͕ͬͯҰॹ ʹҭͬͨؾ͕͢Δ w
࠷ۙ(SBQI2-H31$͕Γ্͕͖͍ͬͯͯΔͷͰɺ։ൃ͠ ָ͍͍ͯͯ͠
ͯ͢ͷݟ͕ͦͷ··͑Δ w ͱ͍ͬͨลΓͰɺಛʹ8FC։ൃͷจ຺Ͱ·ͬͨ͘ಉ͡ݟ͕ ͑ΔͷͰۤ࿑͢Δ͜ͱແ͔ͬͨ w ڥߏங͢ΔͷʹSCFOWೖΕͯCVOEMFJOTUBMMͯ͠SBJMTTͱ͔ w ຊ൪ڥʹ8FCαʔόͱΞϓϦέʔγϣϯαʔό͕͋ͬͯɺ XPSLFSىಈͱ͔γάφϧૹͬͯ࠶ىಈͱ͔
1FSMʹ׳ΕΔͨΊʹԿΛ ͔ͬͨ
1FSMʹ׳ΕΔͨΊʹͬͨ͜ͱ w ॳΊͯͷ1FSMΛಡΜͩ w ͍ΘΏΔϦϟϚຊ w ʹୈ൛͕ग़͍ͯ·͢
1FSMʹ׳ΕΔͨΊʹͬͨ͜ͱ w )BUFOB5FYUCPPLΛಡΜͩ w ͜ΕͱʮॳΊͯͷ1FSMʯ͚ͩͰ࣮ίʔυ ͕ಡΊΔΑ͏ʹͳΔຊʹੌ͍ڭՊॻ w ಥવͷએ ࠓͷʮͯͳαϚʔΠϯλʔ ϯʯࣄલొडத
1FSMʹ׳ΕΔͨΊʹͬͨ͜ͱ w DBSUPOJOTUBMM࣌ʹย͔ͬΒHIRHFU͢Δ ϚϯΛॻ͍ͨ w HFNTSDͷQFSM൛ ޙʹDQBOHIRΛݟ ͚ͭΔʜʜ w
ϝλϑΝΠϧʹSFQPTJUPSZ͕ࡌͬͯͳ͍ $1"/Ϟδϡʔϧ͕݁ߏ͋Δ w Ұ୴ϦετΛ͚࣋ͬͨͲɺ13ͯ͠ճΒͳ ͍ͱͳ͊
1FSMʹ׳ΕΔͨΊʹͬͨ͜ͱ w BXFTPNFQFSMΛோΊͨ w )BDIJPKJQN w ࣾͷ()&͔Β৽͠Ίͷ1MBDLϓϩμΫτͷDQBOpMFΛूܭͯ͠ ோΊͨ w
3BJMT%FWFMPQFST.FFUVQͷͱ͖ͷ͚ΜͪΌΜ͘Μ͞Μͷε ΫϦϓτ͕ਆ
1FSMʹ׳ΕΔͨΊʹͬͨ͜ͱ w ͋ͱ࣮Ͱ&OVNFSBCMFͷϝιου܈Λ͍·͘Δͷͱɺςετ Λॻ͘ͷͱ w -JTU6UJM -JTU.PSF6UJMT -JTU6UJMT#Z w 5FTU
5FTU888.FDIBOJ[F14(* .PEVMF4QZ w ฏߦͯ͠ϝλϓϩάϥϛϯάͷษڧߦͬͨ w ͍ͬͯΔπʔϧͷ࣮ํ๏͕ਪଌͰ͖ΔΑ͏ʹͳΔ
։ൃ͍ͯͯ͠ϏοΫϦͨ͠ͱ ͜Ζ
@͕͋Δ w ҉తͳϒϩοΫม w ϓϩμΫτίʔυͰϒϩοΫม͕͙Β͍ෆཁʹ my $array = ["a", "b",
"c"]; for (@$array) { print $_ . "\n"; } my $array2 = [map { $_ . "foo"; } @$array];
͕͋Δ w EFpOFE͔Ͳ͏͔ͷԋࢉࢠ
͕͋Δ w Α͘ΔccͷϝϞԽ w GBMTZͳͩͱࠔΔ def foo @foo ||= heavy_method
end # heavy_method ͕ boolean Λฦ͢ͱ͖ʁ def foo return @foo if defined?(@foo) @foo = heavy_method end
͕͋Δ w MPHJDBMPSͱEFpOFEPS͕͋ΔͱεοΩϦ sub foo { shift->{_foo} //= heavy_method }
VTFͰSFRVJSFͱNJYJO w ϥΠϒϥϦଆʹGPP CBSΛ&91035͢Δͱॻ͍͓ͯ͘ͱ package Hoge; use parent 'Exporter'; our
@EXPORT = qw/foo bar/; sub foo { ... } sub bar { ... }
VTFͰSFRVJSFͱNJYJO w ͏ͱ͖ʹҙͷ͚ؔͩΛNJYJOͰ͖Δ package Fuga; use Hoge qw/foo/;
VTFͰSFRVJSFͱNJYJO w ͜Ε͓ͦΒ͘จԽతͳϞϊͰɺ1FSM3VCZͱҧͬͯؔܕ ݴޠͷॱ൪ͰݺͿͷͰʮΦϒδΣΫτʹϝιουΛੜ͢ʯͷͰ ͳ͘ɺʮϝιουΛNJYJOͯ͠͏ʯʹͳΔͷͩΖ͏ w ͦͯ͠ϝιου໊͕ॏෳ͠·͘ΔͷͰબΔΑ͏ʹͳ͍ͬͯΔ # perl reverse
uniq grep { $_ ~= /foo/ } <ARGV>; # ruby IO.read(ARGF).lines.grep {|l| l ~/foo/ }.uniq.reverse
είʔϓΛҙʹ࡞ΕΔ w ϨΩγΧϧείʔϓͱϦϑΝϨϯεΧϯτࣜ($ sub hoge { my $foo = 'foo';
my $bar = 'bar'; { my $foo = 'baz'; print $foo . $bar . "\n"; # => 'bazbar' } print $foo . $bar . "\n"; # => 'foobar' }
είʔϓΛҙʹ࡞ΕΔ w (VBSE͕͑Δ sub hoge { { # ͜ͷϒϩοΫͷதͰ͚ͩ memcached
্ཱ͕͕ͪΔ my $guard = Proc::Guard->new(command => ["memcached", "-p", "11211"]); # do something ... } # ͜͜Ͱ memcached ͕ఀࢭࡁΈ }
είʔϓΛҙʹ࡞ΕΔ w ҙʹείʔϓΛ࡞ΕΔͱ͜Μͳʹศརͳͷ͔ʔ w PQFOͨ͠ޙDMPTF͠ͳͯ͘είʔϓΛൈ͚ͨͱ͖ʹউखʹΫ ϩʔζ͞ΕΔ w 3VCZͩͱCMPDLͰݺͿ͚ͩͳͷ͚ͩΕͲʮൈ͚ͨͱ͖ʹσετ ϥΫλ͕ݺΕΔʯշײ
είʔϓΛҙʹ࡞ΕΔ w ֤ݴޠͰΈͳ͞Μؤுͬͯ·͢ w 3VCZͰείʔϓΛͣΕͨͱ͖ʹࣗಈͰԿ͔Λ͢ΔcUFDI൙ཞݪ w IUUQTMPXSFBMOFU w 5SBDF1PJOUͷɻ3VCZ,BJHJຊฤͷUBHPNPSJTKPLFSͷൃදΛָ͓͠Έʹ w
1)1Ͱ1FSMͰ͍͏ͱ͜Ζͷ(VBSEΛ͢ΔͰʂʂV[VMMB͕ϒϩά w IUUQV[VMMBIBUFCMPKQFOUSZ w 1FSMͷ4DPQF(VBSEΛ$PNNPO-JTQͰ࣮͢Δͧʂʂʂ-BNCEBΧΫςϧ w IUUQTXJOEZNFMUIBUFOBCMPHDPNFOUSZ
μΠφϛοΫείʔϓ͕͋Δ our $foo = 'foo'; sub print_foo { print $foo
. "\n"; } print_foo; # foo { local $foo = 'bar'; print_foo; # bar } print_foo; # foo
μΠφϛοΫείʔϓ͕͋Δ w είʔϓͱ͍ಓΛཧղͨ͠ͱ͖ʹ3VCZ͔Β1FSMʹΓସ Θͬͨײ͕͡͠·ͨ͠ɻΦϒδΣΫτͰͳͯ͘είʔϓΛ࿔Δͷ ͕1FSM8BZ
μΠφϛοΫείʔϓ͕͋Δ w 3VCZ,BJHJͷ࣭ίʔφʔͰEZOBNJDTDPQF ཉ͍͠ʂͬͯݴͬͨΒ.BU[ʹʮEZOBNJD TDPQFΛΘͳ͍ͨΊʹ3VCZΛ࡞͍ͬͯ Δʯͱ͑ΒΕͨͷͰϜγϟΫγϟͯͬ͠ ͨɻ w 1FSM͔Β3VCZʹདྷͨઌਓ͕ډΔͷͰʮͳΔ ΄Ͳͳ͊ʯͱͳΔ
࣮ߦ࣌ܕνΣοΫ͕ී௨ w 1FSMք࠷ۙ·ͰԾҾ͕ແ͔ͬͨͷͰɺҾΛड͚औΔํ๏Λ ͔Γ͘͢͢Δ$1"/Ϟδϡʔϧ͕։ൃ͞Εͨ sub foo { my ($num, $str)
= @_; print $num . "\n"; print $str . "\n"; } foo(1, "a");
࣮ߦ࣌ܕνΣοΫ͕ී௨ use Smart::Args::TypeTiny qw(args); sub create { args my $id
=> 'Id', my $title => 'Str', my $description => 'Maybe[Str]', my $comment => { isa => 'Str', optional => 1 }, # do something... } # ͏ͱ͖ hash Λ͢ create( id => 1, title => "title", description => undef, );
࣮ߦ࣌ܕνΣοΫ͕ී௨ w W ͰTVCGPP OVN TUS ͱॻ͚ΔΑ͏ʹͳͬͨ ͚ΕͲɺ)BTIΛͯ͠ܕνΣοΫΛߦ͏ํ͕ศརͳͷͰɺΘΕ ͳ͍ͱࢥ͏
ίϯςΫετ͕͋Δ my $a = localtime; my @b = localtime; use
Data::Dumper; print Dumper $a; # $VAR1 = 'Fri May 4 16:14:45 2018'; print Dumper @b; # $VAR1 = 45; # $VAR2 = 14; # $VAR3 = 16; # $VAR4 = 4; # $VAR5 = 4; # $VAR6 = '118'; # $VAR7 = 5; # $VAR8 = 123;
ίϯςΫετ͕͋Δ w TJ[F!BSSBZͰݸ͕औΕΔͷ͙͢׳ΕΔ͚ͲϏϏΔ w TDBMBSDPOUFYUͷதͰDPOUFYU͕͔Εɺԋࢉࢠ͕ܕΛ࣋ͭ Α͏ʹݟ͑Δ w Λ͏ͱΓ*OUʹͳΔ w
Λ͏ͱΓ͕4USʹͳΔ w +BWB4DSJQUͬΆ͍ w WBSOVN GPP w WBSTUSGPP
ίϯςΫετ͕͋Δ w WPJEDPOUFYUඇৗʹྑ͍ w ΓΛมʹೖΕ͍ͯΔ͔Ͳ͏͔͕ݺΕͨϝιου͔Β͔Δ w NBQ͡Όͳͯ͘FBDIΛ͑Έ͍ͨͳϠπ w ΓͷੜΛলུ͢Δ͜ͱͰύϑΥʔϚϯε্͕͛ΒΕΔ w
(VBSE༻ͷϝιουͰଋറΛΕ͍ͯͨΒౖΔͱ͔ w 3VCP$PQͰ-JOU7PJEDPQ͕ܯࠂग़ͯ͠·͢ w ڈ͍ͩͿݡ͘ͳͬͨͷͰ͍ͬͯͩ͘͞ɻQPDLF
TUSJDUNPEF͕͋Δ w NZΛ͚ͳ͍มએݴͷېࢭͱ͔ w ݅ࣜͰೖ͔Ͳ͏͔͕ݟ͚͍͢ w JG NZGPPCBS w
ϝλϓϩېࢭͱ͔ w Ұ෦͚ͩڐ༰͢Δ͜ͱ͕Ͱ͖Δ w ͚ͦͩ͜είʔϓΛ͚ͯڐՄͰ͖Δͷศར
TUSJDUNPEF͕͋Δ sub foo { print @_ . '\n'; } my
$method_name = 'foo'; { # ಈతʹϝιου໊Λܾఆͯ͠ݺͼग़͢ͷΛ͚ͩ͜͜ڐՄ no strict 'refs'; &{$method_name}('bar'); }
TUSJDUNPEF͕͋Δ w 3VCZʹTUSJDUNPEFΛೖΕΑ͏ͬͯఏ ҊɺਐḿͲ͏Ͱ͔͢
$1"/Ϟδϡʔϧฤ
ΩϥΩϥωʔϜ͡Όͳ͍ӕ w -81MJCXXXQFSMखڧ͔ͬͨ w 5IF4DIXBSU[.JOJPO͕+PC2VFVFͳͷ͔Δʁ w 5FTU.PSF 5FTU.PTUͱ͔ɺ-JTU 6UJMͱ͔ w
֮݁͑Ζ
5*.5085%*ແ͔ͬͨ͜ͱʹ ͍ͨ͠ w ۀίʔυ0OF8BZʹدͤΔͷ͕େਖ਼ٛ
QPE 4:/014*4 ͕ඞͣ͋Δ w ͜ΕຊʹૉΒ͍͠ɺ͕ w ࠷ۙ (JU)VCͷ͓͔͛Ͱ 3&"%.&NEʹ6TBHFΛࡌͤΔͷ͕ ී௨ʹͳͬͨ
QPE 4:/014*4 ͕ඞͣ͋Δ w 3VCZϦϑΝϨϯεϚχϡΞϧͷαϯϓϧίʔυΛίϐϖՄೳʹ͢Δ
ΔΓ·ߋ৽ͷ͖͔͚ͬ
ΔΓ·ߋ৽ͷ͖͔͚ͬ
ࠓ͙͢ࢀՃ
ࠓ͙͢ࢀՃ
.PEVMF$PSF-JTU w ߦҎ্ͷڊେ)BTIͰཧ͞Ε͍ͯΔ 5.027009 => { delta_from => 5.027008, changed
=> { 'B::Op_private' => '5.027009', ... # 140ߦ 'warnings' => '1.41', }, removed => { 'Module::CoreList::TieHashDelta'=> 1, } }, 5.027010 => { delta_from => 5.027009, changed => { 'App::Prove' => '3.42', ... # 193ߦ
NBUSJYDQBOUFTUFSTPSH͕͋Δ w IUUQNBUSJYDQBOUFTUFSTPSH EJTU:".-4ZDL w ͜Ε94Λ࡞Γ·͘ΔจԽͱܨ͕ͬͯΔͱࢥ͏
DQBONΛ͏ͱQFSMόʔδϣϯ Λऩू w IUUQDQBONFUBECQMBDLQFSMPSHWFSTJPOT
CMFBE#SFBLT$1"/͕͋Δ w উखʹͯ͢ͷ$1"/ϞδϡʔϧΛ࠷৽ͷQFSM CMFBE ͰϏϧυ ͯ͠ςετ௨ͯ͠ɺࣦഊͨ͠ΒQQʹ࿈བྷ͢Δޓॿձ w QFSMQPSUFST.-ʹྲྀΕͯ͘Δ w SVCZEFWΈ͍ͨͳϠπ
CMFBE#SFBLT$1"/͕͋Δ w ޓੑͷҡ࣋Λڧ͍͘ٻΊ͍ͯΔײ w QFSMEPDQFSMQPMJDZ w %PXOUIJTSPBEMJFTNBEOFTT ޓੑΛࣦͬͨઌڰؾͰ͢ w
XFWFIFMEPVSTFMWFTUPBGBSIJHIFSTUBOEBSEUIBO CBDLXBSEDPNQBUJCJMJUZCVHXBSEDPNQBUJCJMJUZ ޙํޓੑ ΑΓΔ͔ʹߴ͍ʮޙํʮόάʯޓੑʯΛक͖ͬͯ·ͨ͠
$1"/54 w $1"/ϞδϡʔϧͷςετΛߦͬͯ౷ܭදࣔ w IUUQTDQBOUTDQBOBVUIPSTPSH w ྑ໊͍લͰ͢Ͷ 4FF1BOUT
$1"/54 w $)"/(&-0(͕͋Δ͔ͱ͔ w ϥΠηϯε͕͋Δ͔ͱ͔ w ࣗಈΠϯετʔϧ͕Ͱ͖Δ͔ͱ͔ w .&5"ZNMʹQFSMWFSTJPO͕ॻ͍ͯ͋Δ͔ͱ͔ w
શϑΝΠϧʹVTFTUSJDU͕͋Δ͔ͱ͔
.JOJMMB w $1"/ϞδϡʔϧͷܗΛ࡞Δ$1"/Ϟδϡʔϧ w CVOEMFHFNΈ͍ͨͳϠπ w ಥવͷએ ৄ͘͠ࠓ݄ͷ8&# %#1SFTT7PM w
94ͷܗΛੜͰ͖Δ w NJOJMOFXQ94
ґଘ͕ؔಈతʹܾ·Δ w DQBOJOTUBMM࣌ʹ w .BLFpMFQMΛ࣮ߦ w ґଘؔͷղܾ w NBLF NBLFJOTUBMMΛ࣮ߦͯ͠ϑΝΠϧඋ
ґଘ͕ؔಈతʹܾ·Δ w .BLFpMFQMͰಈతʹґଘ͕ܾ·Δ ͜ͱ͕͋Δ w +40/94͕ೖ͍ͬͯͳ͍߹ͷΈ$1BOFM+40/94Λґଘʹ Ճ͢Δɺͱ͔ʜʜɻ w ਖ਼͍͠ॱͰDQBOJOTUBMM͠ͳ͍ͱ࠷ऴతͳґଘ͕มΘͬͯ͠·͏ w
όʔδϣϯ͚ͩͳΒͱ͔͘ϥΠϒϥϦ͢ΒมΘΔͷҟৗ w ࠷ۙTUBUJDJOTUBMM͕ྲྀߦ͖͍ͬͯͯ·͢
·ͱΊ
·ͱΊ w 3VCZͱ1FSMͷܑఋؔ w XFC։ൃͷ্Ͱඞཁͳಓ۩΄΅Ұॹ w 1FSMޓੑΛඇৗʹେࣄʹ͢ΔจԽ w ޓੑΛॏࢹͨ͘͠ͳͬͨΒʮͲ͏͍͏ख๏Λͱ͍ͬͯΔ͔ʯΛ ோΊʹདྷͯཉ͍͠
w ͜͜·ͰΔͱ$֦ு͕૿͑Δ͔ʁ