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
73
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
60
すこやかなサービス運営のための PWG (Performance Working Group)
onk
PRO
0
930
オブザーバビリティの Primary Signals
onk
PRO
2
5.9k
Cache Stampede
onk
PRO
1
2.2k
ORM - Object-relational mapping
onk
PRO
2
3.7k
デュアルトラックアジャイルとの向き合い方
onk
PRO
5
12k
技術記事を書く&楽しむチームの作り方
onk
PRO
0
2k
Other Decks in Technology
See All in Technology
Building GoReleaser - from shell script to paid product
caarlos0
0
200
ClaudeCode_vs_GeminiCLI_Terraformで比較してみた
tkikuchi
1
3.9k
今日からあなたもGeminiを好きになる
subaruhello
1
310
ロールが細分化された組織でSREは何をするか?
tgidgd
1
470
SREを知らずに SREマネージャーになった話 / How I Became an SRE Manager Without Knowing What SRE Is
moneyforward
0
190
Webの技術とガジェットで那須の子ども達にワクワクを! / IoTLT_20250720
you
PRO
0
120
Four Keysから始める信頼性の改善 - SRE NEXT 2025
ozakikota
0
460
ゼロから始めるSREの事業貢献 - 生成AI時代のSRE成長戦略と実践 / Starting SRE from Day One
shinyorke
PRO
0
200
手動からの解放!!Strands Agents で実現する総合テスト自動化
ideaws
2
120
Maintainer Meetupで「生の声」を聞く ~講演だけじゃないKubeCon
logica0419
0
140
Deep Security Conference 2025:生成AI時代のセキュリティ監視 /dsc2025-genai-secmon
mizutani
5
3.7k
QAを早期に巻き込む”って どうやるの? モヤモヤから抜け出す実践知
moritamasami
2
150
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.7k
4 Signs Your Business is Dying
shpigford
184
22k
Statistics for Hackers
jakevdp
799
220k
Why Our Code Smells
bkeepers
PRO
337
57k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Making Projects Easy
brettharned
116
6.3k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Unsuck your backbone
ammeep
671
58k
Adopting Sorbet at Scale
ufuk
77
9.5k
Writing Fast Ruby
sferik
628
62k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
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 ͜͜·ͰΔͱ$֦ு͕૿͑Δ͔ʁ