Slide 1

Slide 1 text

iOSΞϓϦΤϯδχΞͷͨΊͷ
 AndroidΞϓϦ։ൃ

Slide 2

Slide 2 text

cockscomb

Slide 3

Slide 3 text

Hiroki Kato

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

iOSΞϓϦΤϯδχΞͷͨΊͷ
 AndroidΞϓϦ։ൃ

Slide 6

Slide 6 text

iOS Android

Slide 7

Slide 7 text

։ൃ؀ڥ Xcode iOS Simulator App Store Android Studio Emulator Google Play OSS iOS Android

Slide 8

Slide 8 text

ϓϥοτϑΥʔϜ Mac (OS X) iPhone/iPad (iOS) Car Play Apple Watch (watchOS) Apple TV (tvOS) Phone/Tablet Android Wear Android TV Android Auto iOS Android

Slide 9

Slide 9 text

։ൃݴޠ Swift Objective-C Java (Kotlin) iOS Android

Slide 10

Slide 10 text

Ϗϧυ xcodebuild ґଘ؅ཧ CocoaPods Carthage gradle iOS Android

Slide 11

Slide 11 text

gradle • Ϗϧυπʔϧ • build.gradleϑΝΠϧ • Android Studio͕αϙʔτ • ίϚϯυϥΠϯ͔Β΋ར༻Ͱ͖Δ Android

Slide 12

Slide 12 text

όʔδϣχϯά iOS 9 iOS 8 Earlier 6.0 (Marshmallow) 5.1 (Lollipop) 5.0 (Lollipop) 4.4 (Kitkat) 4.3 (Jelly Bean) 4.2 (Jelly Bean) 4.1 (Jelly Bean) 4.0 (Ice Cream Sandwich) Android

Slide 13

Slide 13 text

API Level Version Version Code API Level 6.0 MARSHMALLOW 23 5.1 LOLLIPOP_MR1 22 5.0 LOLLIPOP 21 4.4W KITKAT_WATCH 20 4.4 KITKAT 19 4.3 JELLY_BEAN_MR2 18 4.2 JELLY_BEAN_MR1 17 4.1 JELLY_BEAN 16 4.0.3, 4.0.4 ICE_CREAM_SANDWICH_MR1 15 4.0, 4.0.1, 4.0.2 ICE_CREAM_SANDWICH 14 Android

Slide 14

Slide 14 text

Fragmentation Earlier 9% iOS 8 24% iOS 9 67% Earlier 4.0% Ice Cream Sandwich 3.3% Jelly Bean 29.0% Kitkat 37.8% Lollipop 25.6% Marshmallow 0.3% iOS Android

Slide 15

Slide 15 text

Fragmentation • Support Library • ࠷৽ػೳͷόοΫϙʔτ • Google Play Services • OSͱಠཱͨ͠API Android

Slide 16

Slide 16 text

ΞϓϦͷೖޱ UIApplicationMain Storyboard AndroidManifest.xml iOS Android

Slide 17

Slide 17 text

AndroidManifest 
 
 
 
 
 
 
 
 
 Android

Slide 18

Slide 18 text

ը໘ͷߏ੒୯Ґ UIViewController Activity Fragment iOS Android

Slide 19

Slide 19 text

Activity/Fragment • Activity • ը໘ʹͻͱ͚ͭͩ • Fragment • Activityʹ಺แͰ͖Δ Android

Slide 20

Slide 20 text

ϥΠϑαΠΫϧ UIViewController init viewDidLoad viewWillAppear viewDidAppear viewWillDisappear viewDidDisappear deinit Activity onCreate onStart onRestoreInstanceState onResume onPause onSaveInstanceState onStop onDestroy iOS Android

Slide 21

Slide 21 text

Activityͷ࠶ੜ੒ • Activity͸࠶ੜ੒͞ΕΔ • ը໘ͷճసͳͲͷมԽʹىҼ • ঢ়ଶΛࣦΘͳ͍Α͏ʹ࡞Δ • onSaveInstanceState • Parcelable Android

Slide 22

Slide 22 text

ը໘ભҠ showViewController UIStoryboardSegue Intent FragmentTransaction iOS Android

Slide 23

Slide 23 text

Intent • ৽͍͠ActivityΛελʔτͰ͖Δ • γϦΞϥΠζՄೳͳύϥϝʔλ • ଞͷΞϓϦͷActivity΋ελʔτ • ҉໧తͳIntent Android

Slide 24

Slide 24 text

Intent Intent intent = new Intent(this, MainActivity.class);
 intent.putExtra("extra_name_key", "cockscomb");
 startActivity(intent); Intent intent = new Intent(Intent.ACTION_VIEW,
 Uri.parse("http://example.com"));
 startActivity(intent); Android

Slide 25

Slide 25 text

Ϗϡʔ UIView View ViewGroup iOS Android

Slide 26

Slide 26 text

View/ViewGroup • View • ViewGroup • ViewΛ಺แͰ͖Δ • ಺แͨ͠ViewΛϨΠΞ΢τ͢Δ Android

Slide 27

Slide 27 text

༷ʑͳϏϡʔ UIView View UILabel/UITextView TextView UITextField/UITextView EditText UIImageView ImageView UIButton Button/ImageButton UIScrollView ScrollView UITableView/UICollectionView RecyclerView UIWebView/WKWebView WebView iOS Android

Slide 28

Slide 28 text

ϨΠΞ΢τϑΝΠϧ Storyboard Nib (Xib) Layout XML iOS Android

Slide 29

Slide 29 text

Layout XML 
 
 
 
 Android

Slide 30

Slide 30 text

Ϗϡʔͱͷ઀ଓ Target Action @IBAction @IBOutlet android:id OnClickListener Data Binding iOS Android

Slide 31

Slide 31 text

Data Binding Library 
 
 
 
 
 
 
 
 Android

Slide 32

Slide 32 text

ϨΠΞ΢τͷํ๏ Auto Layout Resizing Mask ViewGroup iOS Android

Slide 33

Slide 33 text

ViewGroup • FrameLayout • LinearLayout • RelativeLayout • GridLayout Android

Slide 34

Slide 34 text

αΠζຖͷ࠷దԽ Size Class Display Scale User Interface Idiom ໋໊نଇ ը໘ີ౓ ີ౓ඇґଘϐΫηϧ iOS Android

Slide 35

Slide 35 text

Ϧιʔεͷ໋໊نଇ • res/layout/login.xml • σϑΥϧτ • res/layout-sw800dp/login.xml • ը໘෯͕800dpҎ্ • R.layout.login Android

Slide 36

Slide 36 text

ը໘ີ౓ • xxxhdpi — 4.0 • xxhdpi — 3.0 • xhdpi — 2.0 • hdpi — 1.5 • mdpi — 1.0 • ldpi — 0.75 Android

Slide 37

Slide 37 text

୯Ґ • dp (ີ౓ඇґଘϐΫηϧ) • 160dpi • sp (εέʔϧඇґଘϐΫηϧ) • ઃఆ͞ΕͨςΩεταΠζʹൺྫ Android

Slide 38

Slide 38 text

༷ʑͳϦιʔε Asset Catalog Strings etc. Drawable R.drawable.ic_hamburger Values R.color.darkTextColor R.string.login etc. iOS Android

Slide 39

Slide 39 text

Ϧιʔε • XML΍PNG • छྨຖͷσΟϨΫτϦʹஔ͘ • ϨΠΞ΢τ/ը૾/৭/αΠζ/Ξχϝʔ γϣϯ/ελΠϧ/จࣈྻ/ϝχϡʔ • R.xxx.yyy Android

Slide 40

Slide 40 text

Drawable • BitmapDrawable • RoundedBitmapDrawable • NinePatchDrawable • ShapeDrawable • VectorDrawable • AnimatedVectorDrawable • ColorDrawable • GradientDrawable • LayerDrawable • RippleDrawable • LevelListDrawable • StateListDrawable • AnimationDrawable • ClipDrawable • InsetDrawable • RotateDrawable • ScaleDrawable • PictureDrawable Android

Slide 41

Slide 41 text

ϑΝΠϧΞΫηε NSFileManager Context iOS Android

Slide 42

Slide 42 text

Context • ΞϓϦͱ֎෦؀ڥΛܨ͙ • Ϧιʔεͷऔಘ/ϑΝΠϧΞΫηε • Application/Activity/Service Android

Slide 43

Slide 43 text

Service • ը໘ͱಠཱͨ͠ॲཧ • όοΫάϥ΢ϯυͰಈ࡞Ͱ͖Δ • IntentService Android

Slide 44

Slide 44 text

ετϨʔδ File System Core Data SQLite Keychain Internal Storage External Storage SQLite AccountManager Key Store iOS Android

Slide 45

Slide 45 text

ݖݶ PHPhotoLibrary
 .requestAuthorization(_:) ύʔϛογϣϯ iOS Android

Slide 46

Slide 46 text

ύʔϛογϣϯ • • Runtime Permissions Android

Slide 47

Slide 47 text

ڞ༗ URL Scheme Open In Document Provider Extension Intent File System Content Provider iOS Android

Slide 48

Slide 48 text

ςετ XCTest Unit Testing UI Testing Testing Support Library AndroidJUnitRunner Espresso UI Automator iOS Android

Slide 49

Slide 49 text

iOS Android