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
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
120
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
250
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
380
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
180
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
290
Futexes the good, the bad, the ugly
ennael
PRO
0
110
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
670
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
820
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
220
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
130
今こそ知りたいAmplifyGen2
mkdev10
2
140
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
2
560
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
970
How to train your dragon (web standard)
notwaldorf
97
6.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
440
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
エンジニアに許された特別な時間の終わり
watany
109
250k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
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