はじめる前に知っておきたいAndroidアプリ開発のポイント
-
Upload
shinobu-okano -
Category
Technology
-
view
17.005 -
download
0
Transcript of はじめる前に知っておきたいAndroidアプリ開発のポイント
2
本資料で紹介しているもののリンクなどは
以下のURLにまとまっております。
https://github.com/operando/Notes/blob/master/schoo_2015_10_29/README.md
※このスライド追加したから、1ページ番号ずれてます。すいません・・・。
自己紹介
• 岡野 忍 (@operandoOS)
• 株式会社メルカリ
• Androidのコードを読む勉強会を運営
• まったりAndroid Framework Code Reading
この授業について - 対象
• これからAndroidアプリを作ってみたい、興味がある人
• Androidアプリ開発を仕事にしたい人
4
この授業について - 目的
• Androidアプリ開発はどんなことをするのか、
始めに何から取りかかればよいか、といったさまざまな疑問点、不安点をクリアにする
5
Androidアプリ開発を始めるための最初の一歩
Androidについて
• Googleが提供しているモバイル向けOS
• 最新バージョンは6.0
• アプリ開発するために使用する言語はJava
• 様々なデバイスで動く Mobile,TV,Auto,Watch…
7
Androidのバージョンの特徴
• 各バージョンごとにコードネームが付いてる
• コードネームは、菓子の名前が付いてる
• コードネームやバージョンで呼ぶかは人それぞれ
• 最新バージョン6.0はAndroid M(Marshmallow)と呼ばれる
8
Androidのバージョン別シェア率
• シェア率が一番高いバージョンは4.4(KitKat)
• 今後シェア率が増えるのは6.0(Marshmallow)
• Dashboards
• シェア率等が月一で更新される
• https://developer.android.com/about/dashboards/index.html
9
Android Studio
• Androidアプリ開発をする上での統合開発環境
• 最新の安定バージョンは1.4
• EclipseよりAndroid Studioを使うべき
• Eclipse向けのサポートは今年中で終了予定
10
Android Studio
http://gihyo.jp/dev/serial/01/android_studio
11
Android Studio最速入門~効率的にコーディングするための使い方
アプリをどこで動かすか
• エミュレータ
• 試しに開発を始める場合オススメ
• 実機 (Android 端末)
• 色んな人に使って欲しいアプリを開発したい場合オススメ
12
アプリをどこで動かすか
• エミュレータ
• 自由な解像度で動かせる
• Google APIs Emulator
• Google Map等の機能が試せるエミュレータ
• Genymotion
• 操作速度が早い13
Google APIs Emulator
14
Genymotion
15
アプリをどこで動かすか
• 実機(Android 端末)
• 実際にアプリを使う人と同じ感覚でアプリを試せる
• エミュレータではわかりづらい機種依存や操作感の違いがわかる
• 実機で動くとテンション上がる! 16
実機(Android 端末)
17
机の上にあった実機(検証機) うち3つは私物
Androidアプリ開発の初歩を学ぶ
• 入門書で学ぶ
• サンプルコード等で学ぶ
18
Androidアプリ開発の初歩を学ぶ
• 入門書で学ぶ
• サンプルコード等で学ぶ
19
入門書で学ぶ
• 正直、入門書で学ぶのは難しくなっている
• Androidの変化のスピードが早い
• Android Studio, Support Library…
• 入門書多くてどれ読んでいいかわからない
20
入門書で学ぶ
21
Android学ぶ上での書籍についてhttp://hack-it-iron.hatenablog.com/entry/2015/03/22/195939
Androidアプリ開発の初歩を学ぶ
• 入門書で学ぶ
• サンプルコード等で学ぶ
22
サンプルコード等で学ぶ
• 公式に用意されているサンプルから学ぶ
• 網羅的 + 細かい仕様部分まで書かれている
• 必要な部分だけ読むと良い
• ドキュメントの更新が早い
• 私が読んでも勉強になること書いてある23
サンプルコード等で学ぶ
• Android Training
• http://developer.android.com/training/index.html
• API Guides
• http://developer.android.com/guide/index.html
• Samples
• https://developer.android.com/samples/index.html
• Github - Google Samples
• https://github.com/googlesamples?utf8=%E2%9C%93&query=android24
サンプルコード等で学ぶ
25
• Android Studioのサンプルコード
• 一つずつ動かしてみる
サンプルコード等で学ぶ
• mixi-inc/AndroidTraining
• Javaの基礎からアプリ開発を学ぶ場合オススメ
• https://github.com/mixi-inc/AndroidTraining
26
日々どこから情報を仕入れているか• Qiita tags Android
• Androidに関するテックネタが日々投稿されている
• Android Developers Blog
• Androidの最新情報など、開発に重要な記事が投稿されている
• Android Weekly
• Androidの情報を週一でまとめてくれているサイト
• Android Developers Backstage , Fragmented
• 海外のAndroid開発者が行っているPodcast 27
Androidをより深く学ぶために
• Android セキュアコーディングガイド
• The Android Arsenal
• OS標準の開発者オプション
• Github上で公開されているアプリのソースコード
28
質問
Androidのアプリと聞いて どんなアプリを思い浮かべますか?
29
Androidアプリ開発の 種類・特徴と大まかな開発の流れ
Androidアプリ開発の種類
• アプリケーション開発
• 自社アプリ、受託アプリ、個人アプリ
• アプリケーション開発以外もある
• Android OSそのものの開発
31
Androidアプリ開発の特徴
• 少人数での開発が多い(経験則)
• 幅広い端末に対応したアプリ開発が求められる
• OSバージョン、解像度、ハードウェア
• リリースサイクルが早い
• アプリの審査期間が短いため32
Androidアプリ開発の大まかな開発の流れ
例) メルカリの開発フロー
33
2 ~ 3週間の間隔でこのフローを継続的に行う
企画・デザイン
• 新機能や機能改善を企画する
• デザインも並行して進める
• 受託開発の場合、この部分の作業は別の会社が行う場合もある
34
開発
• アプリの機能を実装する
• 複数解像度の端末で確認する(スマホ、タブレット)
• デバッグメニューを使って開発を効率化
• Github上でコードレビューする
• 開発したものを社内に配信する
• DeployGate35
デバッグメニューを使って開発を効率化
36
• デバッグメニュー
• Activityの情報を見る
• APIのURLを変更
• 入力を楽にする
etc.
テスト
• 開発したアプリのテストを行う
• 基本的にはテスト専門のエンジニアがテストを行う
• 専門の会社にテスト作業をお願いするケースもある
• Androidは端末が多く、自社にテストしたい端末がない場合等...
37
リリース
• 開発したアプリをGoogle Playにリリースする
• 段階的公開を利用するケースもある
• 大きな変更を行った場合に致命的な問題が全ユーザに影響しないため
• 段階的に新しい機能の利用率を見る
• Google Playにアプリのアップデートが反映されたか監視する
• tonkotus38
tonkotus
39
アプリがアップデートをされたことをSlackに通知
分析
• リリース後に致命的な問題が発生していないか
• Crashlytics
• 次の企画に活かすため様々なログを分析する
• アクセス解析のサービス
• Google Analytics, Mixpanel40
Androidのアプリを作るとしたらどんなアプリを作りたいですか?
41
質問
時代に合ったAndroidアプリを開発する方法
Material Design
• Googleが発表したデザインガイドライン
• あらゆるスクリーンサイズ・プラットフォームで統一したデザイン
• ビジュアル、モーション、インタラクション
43
Material Design
44
Material Design
45
Material Design 時代の最新アプリ UI/UX デザイン ~ マルチデバイス対応とウェアラブル体験のために
https://www.youtube.com/watch?v=xKrtTlCvB-Q&feature=youtu.be&t=3h59m34s
Material Design - いいところ
• 複数のプラットフォームで同じユーザー体験を提供できる
• ガイドラインがしっかり書かれている
• Material Designに適したiconが提供されている
• Material Designを採用するアプリが増えている46
Material icons
47
https://www.google.com/design/icons/
Material Design - Sample
48
Topeka for Androidhttps://github.com/googlesamples/android-topeka
Material Design - 悩むところ
• 必ずアプリのデザインをMaterial Designにしないといけないと思わせてしまう
• 作るアプリにあったデザインを重視するべき
• 古いOS バージョンでMaterial Designを再現するのは難しい
• 無理せずできるところから適用していく49
Android開発者のカンファレンスに参加する
• 開発の様々な事例・ナレッジを知ることができる
• 日々開発で疑問に思っていることなど、色んなエンジニアと情報交換ができる
• 定期的に開催している勉強会にも参加してみる
• shibuya.apk, Roppongi.aar, potatotips…
50
Android開発者のカンファレンス - 日本
• ABC (Android Bazaar and Conference)
• DroidKaigi 2015 , 2016
51
Android開発者のカンファレンス - Global
• Droidcon
• Google IO
• 近年Androidの関することが多い
52
Android 6.0 / M(Marshmallow)
• 大きな変更が加わっているAndroidの最新バージョン
• よりユーザ目線でアプリを作る必要がある
• セキュリティ、省電力、Backup & Sync
• 特に新しく導入されたRuntime Permissionsはとても大きな変更
53
Runtime Permissions
• 今まではインストール時にPermission(権限)の許可を得ていた
• MからはユーザがPermissionを必要とする操作をした際に許可を求める
• 開発の初期からこの仕様があることを意識した方がよい
54
Android 6.0 / M(Marshmallow)
55
M以下(インストール時) M以上(ユーザ操作時)
まとめ
まとめ
• Androidの基礎を学ぶ方法・情報収集の方法を 知り、継続的に知識を身に付ける
• Android開発の種類・特徴を理解し、自分に あった開発をする
• 時代に合ったAndroidアプリを開発ために 新しい情報を積極的学ぶ
57
メルカリはAndroidエンジニア積極採用中です!
https://www.wantedly.com/projects/1196958