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
Laravelを使った既存WebサービスのAPI化
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Futoshi Endo
September 13, 2018
Programming
3.8k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Laravelを使った既存WebサービスのAPI化
Laravel MeetUpTokyo #11で発表した内容になります。
https://laravel-meetup-tokyo.connpass.com/event/93838/
Futoshi Endo
September 13, 2018
More Decks by Futoshi Endo
See All by Futoshi Endo
【PHPカンファレンス小田原2026】Webアプリケーションエンジニアにも知ってほしい オブザーバビリティ の本質
fendo181
0
1.6k
【PHPerKaigi2026】OpenTelemetry SDKを使ってPHPでAPMを自作する
fendo181
2
450
AI時代におけるドメイン駆動設計 入門 / Introduction to Domain-Driven Design in the AI Era
fendo181
0
1.4k
【PHPカンファレンス小田原2025】New RelicのAPMを活用したECサービスにおけるメール遅延解消の舞台裏
fendo181
1
4.4k
PHP8の機能を使って堅牢にコードを書く
fendo181
7
8.4k
Introduction to Typing Practice
fendo181
0
1.2k
PsySHを使った効率的なデバッグ方法について / How debug efficiently using PsySH
fendo181
1
2.7k
PHP8によるデザインパターン入門 / Introduction to Design Patterns with PHP8
fendo181
2
5k
PHPerがGoに入門してみた/PHPer introduction to Go.
fendo181
0
6k
Other Decks in Programming
See All in Programming
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
280
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
130
AIの中の人になってみる
htkym
0
150
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
270
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
570
T3DD26: From RAGs to Riches
martinhelmich
0
130
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
480
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
190
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
230
[DroidKaigi 26] How We Moved from Android Studio to Slack
thisaay
0
150
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
280
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
160
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
800
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Talk to Developers About Accessibility
jct
2
530
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
180
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
The Pragmatic Product Professional
lauravandoore
37
7.4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
460
Transcript
ԕ౻ଠಙ(.01FQBCP *OD -BSBWFM.FFU6Q5PLZP -BSBWFMΛͬͨ طଘ8FCαʔϏεͷ"1*Խ
ԕ౻ଠಙ ͑ΜͲ͎ʔ !'FOEP 4)ࣄۀ෦(PPQFάϧʔϓ8FCΤϯδχΞ @Fendo181 @Fendo181
ɾ؆୯ʹࣗͷϗʔϜϖʔδ͕࡞Ͱ͖Δ ɾࠓͰαʔϏεՔಇͯ͠
-VNFOͰݎ࿚ͳ"1*Λઃܭ͢Δɻ ʲ༁ʳLaravelΛ5.6͔Β5.6.30ʹΞοϓάϨʔυ͢Δ(Security Release) ͜Ε·Ͱ͖ͬͯͨࣄ
ࠓ͓͍ͨ͠ࣄ
طଘͷ༷ʹ߹Θͤͨ3&45GVM"1*Λ ৽نͰ։ൃ͢Δ ࠓ͓͍ͨ͠ࣄ طଘͷ8FCαʔϏεΛ"1*Խͤ͞Δ ৽͘͠"1*Λ࡞Δ 8FC"QQ ˞ҎԼ"1*ͱ͍͏දه3&45GVM"1*ͱ͠·͢ɻ
എܠ
͋Δ৽ػೳͷ։ൃͷҝ ৽نͰ"1*Λ։ൃ͢Δࣄʹͳͬͨɻ എܠ
࣌ؒ Δ͖ࣄ Ϧιʔεఆٛ ΤϯυϙΠϯτఆٛ Ϩεϙϯεͷఆٛ ΤϯυϙΠϯτͷ࣮ ࣮͢Δલ എܠ
εςʔλείʔυ Ͳ͏͢Δͷ͔ ΤϥʔϨεϙϯε Կ͕ฦͬͯ͘Δͷ ͲΜͳΤϯυϙΠϯ τ͕ඞཁͳͷ ϦιʔεԿ͕͋Δͷ ઃܭஈ֊ ࣌ؒ Δ͖ࣄ
Ϧιʔεఆٛ ΤϯυϙΠϯτఆٛ Ϩεϙϯεͷఆٛ ΤϯυϙΠϯτͷ࣮ എܠ
εςʔλείʔυ Ͳ͏͢Δͷ͔ ͲΜͳΤϯυϙΠϯ τ͕ඞཁͳͷ σΟϨΫτϦߏͲ͏͢Δͷ ςετ ࣮ஈ֊ طଘͷ%#ʹͲ͏ͬͯ߹ΘͤΔͷ ϦιʔεԿ͕͋Δͷ ΤϥʔϨεϙϯε
Կ͕ฦͬͯ͘Δͷ ࣌ؒ Δ͖ࣄ Ϧιʔεఆٛ ΤϯυϙΠϯτఆٛ Ϩεϙϯεͷఆٛ ΤϯυϙΠϯτͷ࣮ എܠ
։ൃཁ݅ ɾ%#طଘͷͷΛѻ͏ ɾಠࣗͷςʔϒϧن ɾѻ͏%#͕ͭଘࡏ͢Δ എܠ ɾ3&45GVMͳ"1*Λ৽نͰ։ൃ ۀͰ։ൃະܦݧ
"1*։ൃߟ͑ΔࣄɺΔࣄଟ͗͢ʜ എܠ
͜ͷΑ͏ͳঢ়گͰ ཁ݅Λຬͨͯ͠"1*Λ։ൃ͍ͨ͠ എܠ
എܠ
എܠ ͳͥ-BSBWFMͳͷ͔ ɾυΩϡϝϯτͷใྔ͕ଟ͍ɻ3FBE%PVCMFΛݟΕղܾ͢Δɻ ࣾͰ૬ஊͰ͖Δਓ͍Δɻ ɾೝূͱೝՄɾϩάͷಋೖඞਢͰ͋Γɺͦ͜Ͱ᪴͘ͷࠔΔ -BSBWFMʹඪ४ೝূϥΠϒϥϦͷ1BTTQPSU͕͑Δ ɾڧྗͳσʔλϕʔεΫΤϦʔϏϧμʔ͕͋ΔͷͰɺෳࡶͳ ςʔϒϧεΩʔϚͰରॲͰ͖Δɻ
എܠ ࣌ؒ Δ͖ࣄ Ϧιʔεఆٛ ΤϯυϙΠϯτઃܭ Ϩεϙϯεͷઃܭ ΤϯυϙΠϯτͷ࣮ ఆٛ ࣮
ఆٛɾ࣮ͷ྆໘͔Β طଘ8FCαʔϏεΛ-BSBWFMͰ "1*Խ͢Δ͓͠·͢ɻ എܠ
ΞδΣϯμ
ΞδΣϯμ ɾ4XBHHFSͰ"1*ͷυΩϡϝϯτԽ ɾσΟϨΫτϦͷߏΛʹ͚ͯΤϯυϙΠϯτΛ࣮͢Δɻ ɾطଘʹ%#ͷ༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ5JQT ɾ·ͱΊ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ ɾ3&45GVM"1*Λߏங͢ΔͨΊͷΦʔϓϯιʔεͷϑϨʔϜϫʔΫ ɾ+40/͘͠:".-ܗࣜͰهड़͕Ͱ͖Δ ɾϩʔΧϧͰϞοΫαʔόΛ্ཱͪ͛ΔࣄՄೳ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ 4XBHHFS4QFD 4XBHHFS6*
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ ͳͥ4XBHHFSΛ࠾༻ͨ͠ͷ͔ ɾҰ൪ͷཧ༝ͱͯ͠ɺΫϥΠΞϯτͱαʔόαΠυͷೝࣝΛ߹ΘͤΔҝ ɾ"1*ଆͰఆٛ͢ΔΑΓΫϥΠΞϯτଆ ͍ਓ ͕ఆٛͨ͠ํ͕ྑ͍ 4XBHHFS BQJWIPHF Λୟ͍ͨΒ ˓˓ͳϨεϙϯε
͕ཉ͍͠ ΫϥΠΞϯτଆ ɾ:".-ڞ௨ͰಡΊΔҝɺ͓ޓ͍ʹมߋमਖ਼͕͍͢͠ αʔόଆ ˓˓ͳϨεϙϯε ͕ฦͬͯ͘ΔΑ͏ ʹϨεϙϯεΛ ΈཱͯΑ͏
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ ɾΤϯυϙΠϯτΛՃ͢Δʹίʔυ͕ੌ·͘͡ݟͮΒ͘ͳΔ ɾมߋ͠Α͏ʹɺߦ͙Β͍͑ͯ͘ΔͱͰͬͯमਖ਼Ͱ͖ͳ͘ͳΔʜ ɾ4XBHHFS1)1-4XBHHFSߟ͕͑ͨίʔυͷՄಡੑ͕Լ͕Δ ͦͦΫϥΠΞϯτଆ͕͍͡Εͳ͍ 4XBHHFSͱݴ͑ʜ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ JOEFYZNM SFGΛ༷ͯ͠EFpOJUJPOTͱQBUITΛׂͯ͠ཧ͢Δ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ $ tree -I node_modules . ├── definitions │ ├──author.yml
├── index.yml ├── paths │ ├── account │ │ └── authors.yml └── resolve.js ɾEFpOJUJPOTσΟϨΫτϦҎԼʹ.PEFMΛఆٛ͢Δ ɾQBUITσΟϨΫτϦҎԼͷϑΝΠϧʹΤϯυϙΠϯτͷ༷Λఆٛ͢Δ SFGΛ༷ͯ͠EFpOJUJPOTͱQBUITΛׂͯ͠ཧ͢Δ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ SFGΛ༷ͯ͠EFpOJUJPOTͱQBUITΛׂͯ͠ཧ͢Δ JOEFYZNM BVUIPSTZNM QBUITσΟϨΫτϦ BVUIPSZNM EFpOJUJPOTσΟϨΫτϦ
4XBHHFSΛͬͨ"1*ͷυΩϡϝϯτԽ ͜ΕΒΛ݁߹ͤͯ͞JOEFYZNMΛ࡞͢Δ const resolve = require('json-refs').resolveRefs; const YAML = require('js-yaml');
const fs = require('fs'); const root = YAML.load(fs.readFileSync('index.yml').toString()); const options = { loaderOptions : { processContent : function (res, callback) { callback(undefined, YAML.safeLoad(res.text)); } } }; resolve(root, options).then(function (results) { console.log(YAML.dump(results.resolved)); }); node resolve.js > index_all.yml # ϑΝΠϧ໊ҙ SFTPMWFKT ৄࡉ4XBHHFS༻ϑΝΠϧΛׂͯ͠هड़͠Α͏ ׂ͞ΕͨϑΝΠϧ͕౷߹͞Εͯग़ྗ͞ΕΔ
Λ͚ͨσΟϨΫτϦߏ
3PVUFS ᶃ(&5BQJWIPHF .JEEMFXBSF 3FRVFTU $POUSPMMFS 3FTQPOTF .PEFM ᶄೝূ ᶅόϦσʔγϣϯ ᶆ
%#ૢ࡞ ϨεϙϯεΛ࡞ ϨεϙϯεΛฦ͢ ɾͭͷΤϯυϙΠϯτʹରͯ͠ɺͭͷ$POUSPMMFSͰରԠΛߦ͏ ɾ(&5BQJWIPHF )PHF$POUSPMMFS ˞ఏڙ͢ΔαʔϏεͷڥʹΑͬͯมΘΔҝɺ͋͘·ͰͭͷྫͰ͢ʂ ɾ1045BQJWIPHF Λ͚ͨσΟϨΫτϦߏ #FGPSF
├── app ├── Http │ ├── Controllers │ │ └──
HogeController.php └── Requests │ └── HogeRequest.php └── Hoge.php ├── routes ├── api.php Λ͚ͨσΟϨΫτϦߏ
SPVUFTBQJQIQ BQQ)UUQ)PHF$POUSPMMFSQIQ Λ͚ͨσΟϨΫτϦߏ Route::prefix('api/v1')->group(function () { Route::get('/hoges', 'Hoge@index'); Route::get(‘/hoges/1', 'Hoge@show');
Route::post(‘/hoges', 'Hoge@store'); Route::put(‘/hoges/1', 'Hoge@update'); Route::delete(‘/hoges/1', 'Hoge@delete'); });
3PVUFS ᶃ(&5IPHF .JEEMFXBSF 3FRVFTU $POUSPMMFS 3FTQPOTF .PEFM ᶄೝূ ᶅόϦσʔγϣϯ ᶆ
%#ૢ࡞ ϨεϙϯεΛ࡞ ϨεϙϯεΛฦ͢ ɾஈʑͱ$POUSPMMFS͕ංେԽͯ͘͠Δͷ͕ݟ͑ͯ͘Δʜ Λ͚ͨσΟϨΫτϦߏ
Λ͚ͨσΟϨΫτϦߏ Ͳ͏ͨ͠ͷ͔ʜ
3PVUFS ᶃ(&5BQJWIPHF .JEEMFXBSF 3FRVFTU $POUSPMMFS 3FTQPOTF .PEFM ᶄೝূ ᶅόϦσʔγϣϯ ᶇ
ϨεϙϯεΛฦ͢ 4FSWJDF ɾϏδωεϩδοΫΛ"QQ4FSWJDFΓग़͢ ɾ(&5BQJWIPHF )PHF$POUSPMMFS!JOEFY ᶆ %#ૢ࡞ ϨεϙϯεΛ࡞ ɾ$POUSPMMFSʹϏδωεϩδοΫΛॻ͔ͣʹ)551ͷؔ৺ࣄʹूதͤ͞Δɻ ɾϧʔςΟϯάαʔϏεΫϥε -JTU4FSWJDFQIQ ɾ1045BQJWIPHF )PHF$POUSPMMFS!TUPSF $SFBUF4FSWJDFQIQ Λ͚ͨσΟϨΫτϦߏ "GUFS
├── app ├── Http │ ├── Controllers │ │ └──
HogeController.php └── Requests │ └── HogeRequest.php └── Hoge.php ├── Servicies └── Hoge │ └── ListService.php #GET Ұཡ │ └── ShowService.php #GET ৄࡉ │ └── CreateService.php #POST │ └── DeleteService.php #DELET ├── routes ├── api.php Λ͚ͨσΟϨΫτϦߏ
BQQ4FSWJDFT)PHF-JTU4FSWJDFQIQ Λ͚ͨσΟϨΫτϦߏ ɾ"QQ4FSWJDFͰΤϯυϙΠϯτΛୟ͍ͨࡍͷϏδωεϩδοΫͷॲཧΛ٧ΊΔ
Λ͚ͨσΟϨΫτϦߏ ɾ$POUSPMMFSͰ͋͘·ͰϨεϙϯεΛKTPOͰฦ͚ͩ͢ʹప͢Δ
%#ͷ༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ
wѻ͏%#͕ෳଘࡏ͢Δɻ w&MPRVFOUͰΞΫηαΛఆٛͯ͠ΫΤϦʔύϥϝʔ λ͔ΒडऔͬͨΛࣗಈతʹม͢Δɻ %#ͷ༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ ѻ͏%#͕ෳଘࡏ͢Δ߹ FOWͰઃఆΛՃ͢Δ # 1ͭΊͷDB DB_CONNECTION=mysql1 DB_HOST=database DB_PORT=3306 DB_DATABASE=database_1 DB_USERNAME=hoge
DB_PASSWORD=secret # 2ͭΊͷDB DB_CONNECTION_2=mysql2 DB_HOST_2=database DB_PORT_2=3306 DB_DATABASE_2=database_2 DB_USERNAME_2=fuga DB_PASSWORD_2=secret FOW
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ DPOpHaEBUBCBTFQIQʹઃఆΛՃ͢Δ # 2ͭΊͷDBͷઃఆΛՃ͢Δ 'mysql2' => [ 'driver' => 'mysql',
'host' => env(‘DB_HOST_2‘, '127.0.0.1'), 'port' => env(‘DB_ACC_PORT_2', '3306'), 'database' => env(‘DB_DATABASE_2', 'forge'), 'username' => env(‘DB_USERNAME_2', 'forge'), 'password' => env(‘DB_PASSWORD_2', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], DPOpHaEBUBCBTFQIQ ѻ͏%#͕ෳଘࡏ͢Δ߹
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ $date = DB::connection(env(‘DB_CONNECTION_2’)) ->table(’t_name’) ->get() NZTRMͷઃఆͰ%#ʹଓͨ͠ঢ়ଶͰσʔλΛऔಘ͢Δࣄ͕ՄೳͱͳΔ FOW ѻ͏%#͕ෳଘࡏ͢Δ߹
˞FOW Λݺͼग़͢ࡍͷҙ %#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ ѻ͏%#͕ෳଘࡏ͢Δ߹ ৄࡉ:Laravelͷ .env ͷconfig()ܦ༝Ͱ͏ɻ <?php class HogeController extends Controller
{ public function getHoge() { dd( env('MY_ENV'), config('my-app.my-env') ); } } ˞։ൃڥͰྑ͍͕DPOpHDBDIFͨ͠ঢ়ଶͰͷຊ൪ڥʹ͓͍ͯFOW ͕Λฦ͞ͳ͍ɻ
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ ˞։ൃڥͰྑ͍͕DPOpHDBDIFͨ͠ঢ়ଶͰͷຊ൪ڥʹ͓͍ͯFOW ͕Λฦ͞ͳ͍ɻ ѻ͏%#͕ෳଘࡏ͢Δ߹ ৄࡉ:Laravelͷ .env ͷconfig()ܦ༝Ͱ͏ɻ null "Full" php
artisan config:cache FOW Ͱݺͼग़͢ͱOVMM͕ฦͬͯ͘Δɻ
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ DPOpH Λͬͯݺͼग़͢Α͏ʹ͢Δ ѻ͏%#͕ෳଘࡏ͢Δ߹ Psy Shell v0.9.8 (PHP 7.2.1 —
cli) by Justin Hileman >>> dump(config('database.connections.mysql2')) array:12 [ "driver" => "mysql" "host" => "database" "port" => "3306" "database" => "database_2" "username" => "fuga" "password" => "secret" "unix_socket" => "" "charset" => "utf8" "collation" => "utf8_general_ci" "prefix" => "" "strict" => true "engine" => null ]
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ DPOpH Λͬͯݺͼग़͢Α͏ʹ͢Δ ѻ͏%#͕ෳଘࡏ͢Δ߹ $date = DB::connection(config(‘database.connections.mysql2’)) ->table(’t_name’) ->get()
wѻ͏%#͕ෳଘࡏ͢Δɻ w&MPRVFOUͰΞΫηαΛఆٛͯ͠ΫΤϦʔύϥϝʔ λ͔ΒडऔͬͨΛࣗಈతʹม͢Δɻ %#ͷ༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ +------------------------+--------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key
| Default | Extra | +------------------------+--------------+------+-----+-------------------+-----------------------------+ | user_id | int(20) | NO | PRI | NULL | auto_increment | | name | varchar(32) | YES | MUL | NULL | | | email | varchar(255) | YES | MUL | NULL | | | state | tinyint(4) | YES | MUL | NULL | | | make_date | datetime | YES | MUL | NULL | | | update_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +------------------+--------------+------+-----+-------------------+-----------------------------------+ U@VTFSςʔϒϧ TUBUF༗ޮ TUBUFແޮ (&5BQJVTST TUBUFFOBCMFE (&5BQJVTST TUBUFEJTBCMFE TUBUFFOBCMFEͳ͍Αʂ (&5BQJVTST TUBUFBMM "1* ΫϥΠΞϯτ
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ ΞΫηαΛͬͯ&MPRVFOUͰѻ͑Δܗʹ͢Δɻ ৄࡉ-BSBWFM&MPRVFOUɿϛϡʔςλ
ΞΫηαΛͬͯ&MPRVFOUͰѻ͑Δܗʹ͢Δɻ %#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ (&5BQJVTST TUBUFFOBCMFE TUBUFFOBCMFE ΫϥΠΞϯτ "1* TUBUF %# ࠓճͷέʔεͰTUBUFΛม͍ͨ͠ͷͰΞΫηαΛ࡞Δ
HFU4UBUF"UUSJCVUF $user = App\User::all(); # state=1ͷuserΛऔಘ͢ΔΑ͏ʹࣗಈͰม͢Δ $firstName = $user->state(’enabled’)->get()
%#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ ΞΫηαΛͬͯ&MPRVFOUͰѻ͑Δܗʹ͢Δɻ
$users = User::where('user_id', $this->request->userId) ->state(User::toStateKey($state)) ->limit($limit) ->offset($offset) ->get(); %#༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ ΞΫηαɾϛϡʔςʔλΛ͏ࣄͰΫΤϦʔύϥϝʔλͰडऔͬͨΛ
ࣗಈͰ&MPRVFOͰ͑ΔΑ͏ʹͯ͠σʔλΛऔಘ͢Δࣄ͕Ͱ͖Δɻ TUBUFFOBCMFE͕ૹΒΕͯ͘ΔͱTUBUFʹม͞ΕΔ TUBUFEJTBCMFE͕ૹΒΕͯ͘ΔͱTUBUFʹม͞ΕΔ TUBUFBMM͕ૹΒΕͯ͘ΔͱɺԿ͠ͳ͍ͷͰࣗಈͰ TUBUFPSTUBUFͷσʔλΛऔಘ͢Δɻ ΞΫηαΛͬͯ&MPRVFOUͰѻ͑Δܗʹ͢Δɻ
wѻ͏%#͕ෳଘࡏ͢Δɻ w&MPRVFOUͰΞΫηαΛఆٛͯ͠ΫΤϦʔύϥϝʔ λ͔ΒडऔͬͨΛࣗಈతʹม͢Δɻ %#ͷ༷ʹ߹Θͤͯ-BSBWFMଆͰௐ͢Δ
·ͱΊ
·ͱΊ ɾ3&45GVM"1*Λ͔Β࡞͢ΔͷେมͳͷͰɺ·ͣ ΫϥΠΞϯτଆͱ૬ஊ͠ͳ͕ΒϨεϙϯεΛ͔ͬ͠Γઃܭ͢Δɻ ɾطଘͷ%#ͷ༷ʹରͯ͠-BSBWFMͳΒɺඋΘͬͯΔػೳΛ͍͜ͳ͢ ɹ͚ͩͰ͋ΔఔͷࣄͰ͖Δɻ ɾͪΐͬͱ͍͠ࣄΛΔ߹ΛΘ͚ΔΑ͏ʹ͢Δɻ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ϓϩϑΟʔϧGFOEP1SPpMF