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
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
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
業務時間外もAIに働いてもらう話
colorful12
3
9.9k
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
リアルな遅延を測る仕様
kota_yata
1
140
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
53
34k
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
200
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
810
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
140
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
560
初めての模倣学習とVLA
natsutan
0
440
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
120
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
HDC tutorial
michielstock
2
840
Mobile First: as difficult as doing things right
swwweet
225
10k
Color Theory Basics | Prateek | Gurzu
gurzu
0
450
Between Models and Reality
mayunak
4
440
The Invisible Side of Design
smashingmag
301
52k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Building Adaptive Systems
keathley
44
3.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Embracing the Ebb and Flow
colly
88
5.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
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