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
120
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
44
17k
ADRを運用して3年経った僕らの現在地
onk
PRO
22
23k
1文字エイリアスのすゝめ
onk
PRO
0
71
すこやかなサービス運営のための PWG (Performance Working Group)
onk
PRO
0
1k
オブザーバビリティの Primary Signals
onk
PRO
2
6.1k
Cache Stampede
onk
PRO
1
2.2k
ORM - Object-relational mapping
onk
PRO
2
3.8k
デュアルトラックアジャイルとの向き合い方
onk
PRO
5
13k
技術記事を書く&楽しむチームの作り方
onk
PRO
0
2.1k
Other Decks in Technology
See All in Technology
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1k
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
270
AIをプライベートや業務で使ってみよう!効果的な認定資格の活かし方
fukazawashun
0
100
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
1.1k
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
230
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
190
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
560
エンジニアリングマネージャーの成長の道筋とキャリア / Developers Summit 2025 KANSAI
daiksy
2
460
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
2
260
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
260
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
290
Featured
See All Featured
Balancing Empowerment & Direction
lara
3
620
For a Future-Friendly Web
brad_frost
180
9.9k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Navigating Team Friction
lara
189
15k
The Language of Interfaces
destraynor
161
25k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
A designer walks into a library…
pauljervisheath
207
24k
Automating Front-end Workflow
addyosmani
1370
200k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
It's Worth the Effort
3n
187
28k
Raft: Consensus for Rubyists
vanstee
140
7.1k
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 ͜͜·ͰΔͱ$֦ு͕૿͑Δ͔ʁ