Slide 1

Slide 1 text

Android։ൃ ॳ৺ऀʹ͋Γ͕ͪͳ͜ͱ

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લɿ੺৓ ࢙࠸ • ॴଐɿגࣜձࣾΞΠϦοδ • ৬छɿAndroidΤϯδχΞ • LIKE : ԻָʢΞΧϖϥʣɺࣸਅ

Slide 3

Slide 3 text

֓ཁ Android։ൃ࢝Ίͨͯͷ࣌ʹ • ࠔ͍ͬͯͨࣄ • ͦͷղܾࡦ Λ঺հ

Slide 4

Slide 4 text

Կ΋ͯ͠ͳ͍ͷʹ Ϋϥογϡ͢Δ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

5ISFBE͕ݪҼɾɾɾʁ

Slide 7

Slide 7 text

ݪҼ public class MainActivity extends Activity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); mTextView = findViewById(R.id.textView); // ボタン1クリック時 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { mTextView.setText("hoge"); } }).start(); } });

Slide 8

Slide 8 text

ݪҼ public class MainActivity extends Activity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); mTextView = findViewById(R.id.textView); // ボタン1クリック時 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { mTextView.setText("hoge"); } }).start(); } });

Slide 9

Slide 9 text

ؾΛ͚ͭΔࣄ • ݪҼɿ • UiThreadҎ֎͔ΒUIʢςΩετͳͲʣΛॻ͖ ׵͑Δࣄ͕ग़དྷͳ͍ • ରࡦɿ • UIThreadҎ֎͔Β͸Handler.post(), ΋͘͠͸ runOnUiThread༻͍ͯUIΛૢ࡞͢Δɻ

Slide 10

Slide 10 text

ೖ໳ॻͱݱ࣮ͷΪϟοϓ

Slide 11

Slide 11 text

νϡʔτϦΞϧͷґଘϥΠϒϥϦ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.google.android.gms:play-services-maps:15.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }

Slide 12

Slide 12 text

νϡʔτϦΞϧͷίʔυ public class MainActivity extends Activity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = findViewById(R.id.button1); Button button2 = findViewById(R.id.button2); mTextView = findViewById(R.id.textView); // ボタン1クリック時 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { button1Clicked(); } });

Slide 13

Slide 13 text

࣮ࡍͷґଘϥΠϒϥϦ dependencies { // App's dependencies, including test compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion" compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion" compile "com.android.support:design:$rootProject.supportLibraryVersion" compile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion" compile "com.android.support:support-v4:$rootProject.supportLibraryVersion" compile "com.android.support.test.espresso:espresso-idling-resource:$rootProject.espressoVersion" compile "com.google.guava:guava:$rootProject.guavaVersion" compile "android.arch.persistence.room:runtime:$rootProject.roomVersion" annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion" // Dagger dependencies annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion" compile "com.google.dagger:dagger:$rootProject.daggerVersion" compile "com.google.dagger:dagger-android:$rootProject.daggerVersion" compile "com.google.dagger:dagger-android-support:$rootProject.daggerVersion" annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.daggerVersion" // Dependencies for local unit tests testCompile "junit:junit:$rootProject.ext.junitVersion" testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion" testCompile "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion" // Android Testing Support Library's runner and rules androidTestCompile "com.android.support.test:runner:$rootProject.ext.runnerVersion" androidTestCompile "com.android.support.test:rules:$rootProject.ext.rulesVersion" androidTestCompile "android.arch.persistence.room:testing:$rootProject.roomVersion" // Dependencies for Android unit tests androidTestCompile "junit:junit:$rootProject.ext.junitVersion" androidTestCompile "org.mockito:mockito-core:$rootProject.ext.mockitoVersion" androidTestCompile "com.google.dexmaker:dexmaker:$rootProject.ext.dexmakerVersion" androidTestCompile "com.google.dexmaker:dexmaker-mockito:$rootProject.ext.dexmakerVersion"

Slide 14

Slide 14 text

ViewModel…? public class TaskDetailViewModel extends TaskViewModel { @Nullable private TaskDetailNavigator mTaskDetailNavigator; public TaskDetailViewModel(Context context, TasksRepository tasksRepository) { super(context, tasksRepository); } public void setNavigator(TaskDetailNavigator taskDetailNavigator) { mTaskDetailNavigator = taskDetailNavigator; } public void onActivityDestroyed() { // Clear references to avoid potential memory leaks. mTaskDetailNavigator = null; }

Slide 15

Slide 15 text

ֶशͷ༏ઌ౓ 1. ΞʔΩςΫνϟ, databindingͷ࢖͍ํ • MVVM, MVPͳͲɻMVVMͰ͸Databinding͕؊ͱͳΔͷͰ߹ Θͤͯ 2. ػೳ௥Ճʹ΄΅ඞਢͳϥΠϒϥϦ • Retrofit, OkHttpͳͲ 3. Ϟμϯͳઃܭ or هड़͕ՄೳͳϥΠϒϥϦ • RxJava, AAC, dagger2, Kotlin etc…

Slide 16

Slide 16 text

ͳ͔ͥToast͕දࣔ͞Εͳ͍

Slide 17

Slide 17 text

ͳ͔ͥToast͕දࣔ͞Εͳ͍ @Override public void showToast() { Toast.makeText(HogeActivity.this, “Hoge”, Toast.LENGTH_SHORT); }

Slide 18

Slide 18 text

ͳ͔ͥToast͕දࣔ͞Εͳ͍ @Override public void showToast() { Toast.makeText(HogeActivity.this, “Hoge”, Toast.LENGTH_SHORT).show(); }

Slide 19

Slide 19 text

KotlinΛ࢖͏ͱ… // 拡張関数を定義 fun Activity.toast(msg : String) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() } // Activityを継承するクラスでtoast関数を呼ぶことが可能に fun showToast() { [email protected]("hoge") }

Slide 20

Slide 20 text

ςετ͕೉͍͠

Slide 21

Slide 21 text

Context͕औಘͰ͖ͳ͍ʂ Ͱ΋࣮ػςετ͸ͨ͘͠ͳ͍

Slide 22

Slide 22 text

ରࡦ • ϥΠϒϥϦΛ࢖͏ • Robolectric • Android Test ( Android Jetpack ) • ຊ౰ʹContextඞཁʁ • ઃܭΛݟ௚͢

Slide 23

Slide 23 text

Thank you for listening!