Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Droidkaigi 2017
Search
kazy1991
March 09, 2017
Technology
13k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Droidkaigi 2017
kazy1991
March 09, 2017
More Decks by kazy1991
See All by kazy1991
基本のAndroid View開発ドキュメント
kazy1991
0
2.9k
Cookpad.apk#1-ReactNativeについて
kazy1991
1
6.7k
いつか使ってみたいOperatorたち
kazy1991
0
520
Cookpad TechKitchen#6-android-with-ml-and-scheduler
kazy1991
0
750
RxJava Droidkaigi
kazy1991
1
120
rx.pdf
kazy1991
0
150
はじめてのvimscipt
kazy1991
1
470
Other Decks in Technology
See All in Technology
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
Claude Code本って、 読む必要あるの?
oikon48
2
460
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
740
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.9k
What the customer really needed
kawaguti
PRO
2
190
beyond jj: config & tools ecosystem
indirect
0
450
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
22
14k
LLMに渡さなかった仕事
nanaism
0
220
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
900
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.7k
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
2
2.1k
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
570
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Odyssey Design
rkendrick25
PRO
2
810
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
What's in a price? How to price your products and services
michaelherold
247
13k
YesSQL, Process and Tooling at Scale
rocio
174
15k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Transcript
"OESPJEఆظ࣮ߦॲཧೖ LB[Z LB[VLJZPTIJEB
ࣗݾհ ࢯ໊٢ాສً ॴଐDPPLQBE*OD 5XJUUFS!LB[ HJUIVCLB[Z %SPJELBJHJͷൃදࢿྉ
ఆظ࣮ߦॲཧͱʜ Ϣʔβʔͷૢ࡞ͱؔͳ͘ɺ ҰఆͷִؒͰॲཧΛ࣮ߦ͢Δ ఆظ࣮ߦॲཧͷྫ ϑΟʔυͷߋ৽ ϩʔΧϧ͔Βͷ௨
ఆظ࣮ߦॲཧͷࣄྫ ʮྉཧ͖Ζ͘ʯ ྉཧࣸਅ͚ͩ͋ͭΊͯه͢Δ
ྉཧ͖Ζ͘ͷΈ ʹࣸਅ͕Ճ͞ΕΔ ҰఆִؒͰ৽نࣸਅΛ୳͢ ࣸਅΛྉཧఆ͢Δ ࣸਅΛΞοϓϩʔυ͢Δ ͜͜ʹఆظ࣮ߦॲཧ
༨ஊ #SPBEDBTU3FDFJWFSͰ/&8@1*$563&ΠϕϯτΛ ड͚औΕ͍͍ͷͰʁ w ॳظͷϓϩτλΠϓͰ͜ͷํͰ࣮͍ͯͨ͠ w ఆظ࣮ߦॲཧ͕ෆཁͳͷͰ࣮͕γϯϓϧͰྑ͔ͬͨ w શͯͷΧϝϥΞϓϦ͕/&8@1*$563&ΠϕϯτΛૹͬͯ
͘ΕΔΘ͚Ͱͳ͍ w %FQSFDBUFEJO"1*MFWFMͳͷͰ࠾༻͠ʹ͍͘
ఆظ࣮ߦॲཧΛ͍ͨ͠߹ɺ Έͳ͞ΜͲ͏ͯ͠·͔͢ʁ "MBSN.BOBHFS
"MBSN.BOBHFS "QJ-FWFM͔Βར༻Ͱ͖Δ ݹ͔͘Βར༻͞Ε͍ͯΔ"1*Ͱωοτ্ʹݟଟ͍ ΠϯλʔϑΣʔε͕γϯϓϧͰखܰʹ͑Δ ʮ˓˓ͷ࣌ؒʹͳͬͨΒ˚˚Λىͯ͘͜͠Εʯ
"MBSN.BOBHFSαϯϓϧ #SPBEDBTU3FDFJWFS public class AlarmReceiver extends BroadcastReceiver {
private static Intent createIntent(Context context) { return new Intent(context, AlarmReceiver.class); } public static PendingIntent createPendingIntent(Context context) { return PendingIntent.getBroadcast(context, 0, createIntent(context), 0); } @Override public void onReceive(Context context, Intent intent) { // ͜͜ͰServiceΛىಈ͢ΔͳͲ.. } } # AndroidManifest.xml <receiver android:name=".AlarmReceiver" android:exported="false" />
"MBSN.BOBHFSαϯϓϧ εέδϡʔϧ public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) { //.. PendingIntent intent = AlarmReceiver.createPendingIntent(this); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, fiveSecondsLater(), intent); } } 1FOEJOH*OUFOUͱىಈ࣌ؒΛ"MBSN.BOBHFSʹ͢
"MBSN.BOBHFS ͪΐͬͱඍົͳ! 04ʹΑͬͯڍಈ͕ҧ͏ ࠶ىಈ͢Δͱεέδϡʔϧ͕ফ͑ΔͷͰରԠ͕ඞཁ ࣌ؒҎ֎ͷ੍ʹରԠͰ͖ͳ͍
ωοτϫʔΫ͕ܨ͕͍ͬͯͳ͍࣌ όοςϦʔ͕ܨ͕͍ͬͯΔ࣌ ࣦഊ࣌ͷϦτϥΠॲཧ͕ͳ͍
"MBSN.BOBHFSͷ͍ॴ ͍ͯΔέʔε ࣌ؒʹݫີͳλεΫͷ࣮ ͍͍ͯͳ͍έʔε ࠶ىಈ࣌ͷαϙʔτ ϦτϥΠػߏ͕΄͍͠߹
ిྗޮΛҙࣝͨ͠ϋΠύϑΥʔϚϯεͳॲཧ
ύϑΥʔϚϯεΛҙࣝͨ͠ ϞμϯͳδϣϒཧͷΈ +PC4DIFEVMFS
+PC4DIFEVMFS -PMMJQPQͰొͨ͠ൺֱత৽͍͠"1* 4FSWJDFΛҙͷλΠϛϯάͰɺىಈ͢Δ͜ͱ͕ग़དྷΔ δϣϒεέδϡʔϥʔ DPPLQBEΞϓϦ ྉཧ͖Ζ͘ Ͱ+PC4DIFEVMFSΛ࠾༻ͨ͠
+PC4DIFEVMFSαϯϓϧ 4FSWJDFଆ public class MyJobService extends JobService { @Override
public boolean onStartJob(JobParameters job) { // ͜͜ʹॲཧΛهड़͢Δ return false; } @Override public boolean onStopJob(JobParameters job) { return false; } } <service android:name=".MyJobService" android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" />
+PC4DIFEVMFSαϯϓϧ 4FSWJDFଆ public class MyJobService extends JobService { @Override public
boolean onStartJob(JobParameters params) { // ͜͜ϝΠϯεϨου tooHeavyJob() .subscribeOn(Schedulers.io()) .subscribe(result -> { // Կ͔ߋ৽ॲཧͳͲΛߦ͏ jobFinished(params, false); // δϣϒ͕ࣦഊͨ͠߹trueΛ͢ͱ࠶εέδϡʔϧ }); // ಉظॲཧͷ߹false/ඇಉظॲཧͷ߹trueΛฦ͢ return true; } @Override public boolean onStopJob(JobParameters params) { // δϣϒ͕ྃ͢ΔલʹγεςϜ͕Ωϟϯηϧ͢ΔͱݺΕΔ return false; } }
+PC4DIFEVMFSαϯϓϧ εέδϡʔϧॲཧ public class MyJobService extends JobService {
private static final int PERIODIC_JOB_ID = 1; public static void setPeriodicSchedule(Context context) { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); JobInfo jobInfo = new JobInfo.Builder(PERIODIC_JOB_ID, new ComponentName(context, MyJobService.class)) .setPeriodic(TimeUnit.MINUTES.toMillis(30)) .setPersisted(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build(); scheduler.schedule(jobInfo); } public static void cancelPeriodicSchedule(Context context) { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); scheduler.cancel(PERIODIC_JOB_ID); } }
+PC4DIFEVMFSͰεέδϡʔϧʹར༻Ͱ͖Δ݅ ࠷େకΊΓ࣌ؒ TFU0WFSSJEF%FBEMJOF ࠷Ԇ࣌ؒ TFU.JOJNVN-BUFODZ
όοΫΦϑϦτϥΠํ TFU#BDLPGG$SJUFSJB ௨৴ڥͷ੍ TFU3FRVJSFE/FUXPSL5ZQF ॆిڥͷ੍ TFU3FRVJSFT$IBSHJOH ΞΠυϧঢ়ଶͷ੍ TFU3FRVJSFT%FWJDF*EMF ܁Γฦ͠ͷεέδϡʔϦϯά TFU1FSJPEJD ࠶ىಈ࣌ͷӬଓԽ TFU1FSTJTUFE
+PC4DIFEVMFSʹύϥϝʔλΛ͢ +PC*OGP#VJMEFSTFU&YUSBT 1FSTJTUBCMF#VOEMFFYUSBT PersistableBundle bundle = new PersistableBundle();
JobInfo jobInfo = new JobInfo.Builder(JOB_TAG, new ComponentName(this, MyJobService.class)) .setExtras(bundle) .build(); public class MyJobService extends JobService { @Override public boolean onStartJob(JobParameters params) { PersistableBundle bundle = params.getExtras(); // PersistableBundleεέδϡʔϧ࣌ʹӬଓԽ͞ΕΔͷͰɺ // ͜͜Ͱॻ͖͑ͯ࣍ճͷjobʹө͞Εͳ͍ return false; } } +PC1BSBNFUFSTHFU&YUSBT
εέδϡʔϧঢ়گΛίʔυͰ֬ೝ͢Δ +PC4DIFEVMFSHFU"MM1FEJOH+PCT εέδϡʔϧ͞Ε͍ͯΔKPC*OGPϦετ͕ड͚औΕΔ εέδϡʔϧͨ͠ࡍʹͨ͠*%Λൺֱ͢Δ public static
boolean isPending(Context context, int serviceId) { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); List<JobInfo> pendingJobList = scheduler.getAllPendingJobs(); for (JobInfo jobInfo : pendingJobList) { if (serviceId == jobInfo.getId()) { return true; } } return false; }
BECίϚϯυͰ+PC4DIFEVMFSͷঢ়ଶΛ֬ೝ͢Δ δϣϒεέδϡʔϥʔʹొ͞ΕͯΔλεΫҰཡ ࣮ߦͪͷλεΫҰཡ ࣮ߦ͞ΕͨλεΫͷώετϦʔҰཡ 04όʔδϣϯʹΑͬͯද͕ࣔҧ͏
adb shell dumpsys jobscheduler
EVNQTZTKPCTDIFEVMFS 04ͷ߹ Settings: <ͷઃఆ> Started users: [0] Registered 48
jobs: JOB #1000/800 : com.android.server.pm.BackgroundDexOptService <JobInfoʹͨ͠εέδϡʔϧ݅> JOB #1000/20536: com.android.server.backup.FullBackupJob <JobInfoʹͨ͠εέδϡʔϧ݅> [த൫লུ] Job history: -5m54s389ms STOP: u0a69 com.example.BackgroundService -5m51s543ms STOP: u0a83 com.example.AuthService -21s184ms START: u0a15 com.example.ServiceName -20s940ms STOP: u0a15 com.example.ServiceName
+PC4DIFEVMFS ྑ͍" 04ඪ४ͳͷͰ৴པߴ͍ ࡉ͔͍εέδϡʔϧ͕݅ࢦఆͰ͖Δ ࠶ىಈͯ͠ӬଓԽ͞ΕΔΈ͕͋Δ
ϚϧνϢʔβʔʹରԠ ϖϯσΟϯάதͷ+PCҰཡ͕औಘͰ͖Δ ࠷ߴ
+PC4DIFEVMFS ඍົͳ! ཁٻ͞ΕΔ"QJϨϕϧ Ҏ্ ͕ߴ͍ ϓϩμΫγϣϯͰͷར༻࣮͕গͳ͍
ଟগͷ᠘͕͋Δ ޙड़
+PC4DIEVMFS։ൃͰ ؾΛ͚͍ͭͨ᠘ͷ
ҙਤͤͣεέδϡʔϧ͕ফ͍͑ͯΔ ݱ ઃఆͨ͠εέδϡʔϧ͕ಥવফ͍͑ͯΔ ࠶ݱ݅ ܥͷͰΞϓϦΛߋ৽͢ΔͱϦηοτ͞ΕΔ
ରԠࡦ ύοέʔδͷߋ৽Λݕͯ͠࠶ઃఆ͢Δ
ύοέʔδߋ৽ΠϕϯτΛϋϯυϦϯά͢Δ <receiver android:name=".receiver.PackageReplacedBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> </intent-filter> </receiver> @Override
public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); String action = intent.getAction(); if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(action)) { // εέδϡʔϧ͞Ε͍ͯΔ͔֬ೝ͢Δɻ } }
͗͢Δ%FBE-JOF ݱ %FBE-JOFͷ੍͕ҙਤ௨Γಈ͔ͳ͍ ࠶ݱ݅ %FBE-JOFʹͱ͍ͯ࣌ؒΛઃఆ͢Δ T͘Β͍
Ұ෦ͷͰKPCͷىಈʹ͔͔Δ ରࡦ +PC4DIFEVMFSΛଈ࣌ੑΛٻΊ͍͚ͯͬͯͳ͍#
Ұ͖Γͷδϣϒ͕ճىಈ͢Δ ݱ Ұ͖Γͷεέδϡʔϧͷ͕ͣෳճىಈ͢Δ ࠶ݱ݅ /ະຬͷશͯͷ
+PCͷ࣮ߦ࣌ؒΑΓ%FBEMJOF͕͍ͱෳճىಈ͢Δ ରԠࡦ %FBEMJOFΛ৳͢ɺνΣοΫػߏΛ༻ҙ͢Δ IUUQTUBDLPWFSGMPXDPNRVFTUJPOTKPCTDIFEVMFSQPTUJOHKPCTUXJDFOPUFYQFDUFE
աʹαʔϏεΛىಈ͢Δ ݱ Ұ෦ͷͰఆͷेഒͷδϣϒىಈ͢Δ ࠶ݱ݅ ෆ໌ 04
ػछͳͲʹภΓ͕ͳ͍ ରԠࡦ νΣοΫػߏ༻ҙ͢ΔPS͖ͳ࣮Λҙࣝ͢Δ
ΠέͯΔΈ͕ཉ͍͕͠ɺ ະຬʹରԠ͍ͨ͠ (DN/FUXPSL.BOBHFS
(DN/FUXPSL.BOBHFS (PPHMF1MBZTFSWJDFTͰՃ͞Εͨ +PC4DIFEVMFSʹඇৗʹΑ͘ࣅͨεέδϡʔϥʔ ࣮͕ผBQL ։ൃऀαʔϏε ʹ͋ΔͨΊɺδϣϒͷొ ΩϟϯηϧJOUFOUΛ௨্ͯ͡ख͍ͬͯ͘Δ
IUUQTBOESPJEEFWFMPQFSTHPPHMFCMPHDPNBDMPTFSMPPLBUHPPHMFQMBZTFSWJDFTIUNM
($./FUXPSL.BOBHFSαϯϓϧ αʔϏεଆ public class MyTaskService extends GcmTaskService { @Override public
void onInitializeTasks() { // ΞϓϦ͕আ͞ΕͨΓɺߋ৽͞Εͨ߹εέδϡʔϧ͕আ͞ΕΔͷͰɺ // ͜͜ʹ࠶εέδϡʔϧ͢ΔίʔυΛॻ͘(ॳճݺΕͳ͍) } @Override public int onRunTask(TaskParams taskParams) { // ͜͜ʹॲཧΛهड़͢Δ(ϫʔΧʔεϨου) return GcmNetworkManager.RESULT_SUCCESS; } } <service android:name=".MyTaskService" android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> <intent-filter> <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" /> </intent-filter> </service>
($./FUXPSL.BOBHFSαϯϓϧ εέδϡʔϧ public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) { // do something.. GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(this); OneoffTask task = new OneoffTask.Builder() .setService(MyTaskService.class) .setTag(TASK_TAG) .setExecutionWindow(0L, 3600L) .setPersisted(true) .build(); gcmNetworkManager.schedule(task); } } 0OFPGG5BTL 1FSJPEJD5BTLͷ#VJMEFSΛͬͯ5BTLΛ࡞͠ɺ (DN/FUXPSL.BOBHFSʹεέδϡʔϧ͢Δ
($./FUXPSL.BOBHFS ྑ͍" (PPHMF1MBZTFSWJDFT ͔Βར༻Ͱ͖Δ ࠶ىಈͯ͠εέδϡʔϧ͕อ࣋͞ΕΔ ࡉ͔͍εέδϡʔϧ͕݅ࢦఆͰ͖Δ
-PMMJQPQҎ߱Ͱ+PC4DIFEVMFSΛར༻͢Δ Β͍͠
($./FUXPSL.BOBHFS ඍົͳ! ؔੑͷബ͍QMBZTFSWJDFTHDN͕ґଘʹඞཁ QMBZTFSWJDFT͕ೖ͍ͬͯͳ͍Ͱར༻Ͱ͖ͳ͍ ຊࠃࢢͰͦ͜·Ͱؾʹ͢Δඞཁແͦ͞͏
কདྷੑ͕Α͘Θ͔Βͳ͍
($./FUXPSL.BOBHFSͷ ସϥΠϒϥϦ 'JSFCBTF+PC%JTQBUDIFS
'JSFCBTF+PC%JTQBUDIFS GJSFCBTFGJSFCBTFKPCEJTQBUDIFSBOESPJE (PPHMF*0ͷলిྗলϝϞϦԽͷηογϣϯͰ +PC4DIFEVMFSͱڞʹհ͞Εͨ ($./FUXPSL.BOBHFSͷସͱͯ͠ར༻Ͱ͖Δ
'JSFCBTF+PC%JTQBUDIFSαϯϓϧ αʔϏεଆ public class MyJobService extends JobService { @Override
public boolean onStartJob(JobParameters job) { Log.d("MyJobService", "onStartJob"); return false; } @Override public boolean onStopJob(JobParameters job) { return false; } } <service android:name=".MyJobService" android:exported="false"> <intent-filter> <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE" /> </intent-filter> </service>
͂ 'JSFCBTF+PC%JTQBUDIFSαϯϓϧ εέδϡʔϧ public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this)); Job myJob = dispatcher.newJobBuilder() .addConstraint(Constraint.ON_ANY_NETWORK) .setService(MyJobService.class) .setTag("my-unique-tag") .setLifetime(Lifetime.FOREVER) .build(); dispatcher.mustSchedule(myJob); } } 'JSFCBTF+PC%JTQBUDIFSOFX+PC#VJMEFSͰɺ+PCΛ࡞͠ NVTU4DIFEVMFPSTDIFEVMFͰεέδϡʔϧ͢Δ
'JSFCBTF+PC%JTQBUDIFS ྑ͍" 04Ҏ্ͷͰར༻Մೳ ࠶ىಈͯ͠εέδϡʔϧ͕อ࣋͞ΕΔ ࡉ͔͍εέδϡʔϧ͕݅ࢦఆͰ͖Δ
044Ͱެ։͞Ε͍ͯͯɺίʔυ͕ಡΊΔ
'JSFCBTF+PC%JTQBUDIFS ඍົͳ! ϝϯςφϯεੑ͕ͪΐͬͱո͍͠ JTTVF͕์ஔ͞Ε͕ͪ ͬͱ࠷ۙNBWFOϨϙδτϦʹެ։͞Εͨ
࣮࣭1MBZ4FSWJDFT͕ඞਢͳঢ়ଶ ޙड़ ίʔυಡΊΔ͕શ༰ΛѲͰ͖ΔΘ͚Ͱͳ͍
+PC%JTQBUDIFSͱ /FUXPSL.BOBHFS ͲͪΒΛ͏͖͔
($./FUXPSL.BOBHFSͷߏ ΞϓϦଆ QMBZTFSWJDFT DPNHPPHMFBOESPJEHNTHDN"$5*0/@5"4,@3&"%: JOUFOUGJMUFSΛ௨ͯ͡ݺͼग़͢ +PCͷىಈ݅Λ*OUFOUʹ٧ΊͯૹΔ
'JSFCBTF+PC%JTQBUDIFSͷߏ ΞϓϦଆ JOUFOUGJMUFSΛ௨ͯ͡ݺͼग़͢ +PCͷىಈ݅Λ%SJWFSʹ͑Δ DPNGJSFCBTFKPCEJTQBUDIFS"$5*0/@&9&$65& %SJWFS
(PPHMF1MBZ%SJWFSͷߏ ΞϓϦଆ (PPHMF1MBZ%SJWFS QMBZTFSWJDFT
(PPHMF1MBZ%SJWFSͷߏ QMBZTFSWJDFT JOUFOUGJMUFSΛ௨ͯ͡ݺͼग़͢ +PCͷىಈ݅Λ*OUFOUʹ٧ΊͯૹΔ (PPHMF1MBZ%SJWFS DPNHPPHMFBOESPJEHNTHDN"$5*0/@5"4,@3&"%:
'JSFCBTF+PC%JTQBUDIFSͷॴײ %SJWFSͱ͍͏நߏ͕͋ΓɺόοΫΤϯυͷΈ ҙͷͷʹஔ͖͑Δ͜ͱ͕Մೳ" ݱࡏ Ͱɺ(PPMF1MBZ%SJWFSͷΈΛఏڙ "MBSN.BOBHFSɺ+PC4DIFEVMFSϕʔεͷόοΫΤϯυ
Λ࣮͢Δܭը͋ΔΒ͍͠ IUUQTHJUIVCDPNGJSFCBTFGJSFCBTFKPCEJTQBUDIFSBOESPJEJTTVFT
($./FUXPSL.BOBHFSΛ͏ͷ͕͓͢͢Ί ެࣜυΩϡϝϯτͰ͍όʔδϣϯͷαϙʔτ͕ ඞཁͳ߹ɺ(DN/FUXPSL.BOBHFS͕ਪ͞Ε͍ͯΔ ࣌Ͱ໎͍ͬͯΔͳΒ IUUQTEFWFMPQFSBOESPJEDPNUPQJDQFSGPSNBODFCBDLHSPVOEPQUJNJ[BUJPOIUNM
͜ͷηογϣϯͷ·ͱΊ "MBSN.BOBHFS Ћ ࣌ؒʹݫີͳεέδϡʔϦϯά͕͍ͨ͠ +PC4DIFEVMFS όοςϦʔύϑΥʔϚϯεΛҙ͍ࣝͨ͠
ଟগΕͯͳ͍όονॲཧ ($.OFUXPSL.BOBHFS 04ҎԼαϙʔτ͍ͨ͠ 1MBZ4FSWJDFT͕ೖ͍ͬͯΔ͚ͩαϙʔτͰ͖ΕΑ͍
ͦͷଞͷબࢶ &WFSOPUFBOESPJEKPC 4ZOD"EBQUFS
&WFSOPUFBOESPJEKPCͱ͍͏બࢶ &WFSOPUF͕ͯ͢ͷҋΛٵऩͯ͠࡞ͬͯ͘Εͨ࠷ڧͷδϣϒ εέδϡʔϥʔ$ 04Ҏ্Ͱར༻Մೳ "MBSN.BOBHFS ($./FUXPSL.BOHFS +PC4DIFEVMFSΛ
όοΫΤϯυͱͯ͠ར༻͍ͯ͠Δ ϥΠϒϥϦଆ͕࠷దͳόοΫΤϯυΛબ͢ΔͷͰ։ൃऀ͕ Կ͕ΘΕΔ͔ҙࣝ͢Δඞཁ͕ͳ͍ IUUQTCMPHFWFSOPUFDPNUFDIVOJGJFEKPCMJCSBSZBOESPJE
ͦͷଞࢀߟʹ͍͍ͤͯͨͩͨ͞هࣄ 4DIFEVMJOH3FQFBUJOH"MBSNT EFWFMPQFSBOESPJEDPNUSBJOJOHTDIFEVMJOHBMBSNTIUNM 4DIFEVMJOHKPCTMJLFBQSPXJUI+PC4DIFEVMFS NFEJVNDPNHPPHMFEFWFMPQFSTFG
4BNQMFT+PC4DIFEVMFS EFWFMPQFSBOESPJEDPNTBNQMFT+PC4DIFEVMFSJOEFYIUNM *NQMFNFOUJOH($./FUXPSL.BOBHFSPO"OESPJE EFWFMPQFSTHPPHMFDPNDMPVENFTTBHJOHOFUXPSLNBOBHFS
͋Γ͕ͱ͏͍͟͝·ͨ͠
None