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
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.6k
いつか使ってみたいOperatorたち
kazy1991
0
510
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
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
130
現場回帰したデータエンジニアが考える AI 時代のキャリア開発 / Career Development in the Age of AI Perspectives from a Hands-on Data Engineer
medley
0
290
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
290
FDEの心得
noriakioji
5
6.4k
2027年のMetricKit
kantacky
0
130
SmartHR Engineering Team Deck
smarthr
1
3.1k
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
140
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
320
強化学習「理論」入門
enakai00
3
3.6k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
360
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
440
Evolving SEO for Evolving Search Engines
ryanjones
0
260
Amusing Abliteration
ianozsvald
1
260
We Have a Design System, Now What?
morganepeng
55
8.3k
New Earth Scene 8
popppiees
3
2.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
Building a Scalable Design System with Sketch
lauravandoore
463
34k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
250
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
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