SlideShare a Scribd company logo
ANDROIDアプリ
の構築と実践
2019.03.05 TUE
前回のおさらい
• RailsとAndroidStudioフレームワークの差異のお話
• RailsのアーキテクチャはMVC, AndroidはMVP, MVVMなどが存在す
る。(Railsはまだあるかも?)
• ビューの描画方法も違う。htmlのテンプレートエンジン(slim, haml)
などが使えることに対して、Androidはxmlでビューを作成してい
く。
お品書き
• 実践1 ビューを作成しよう
• 実践2 APIを叩こう
• 実践3 端末差異を考慮したビューの作成
実践1 ビューを作成しよう
• htmlのように役割のタグが存在する。

-> TextView, Button, Navigation Bar …
• Viewクラスを継承して独自のViewの部品を
作成する事ができる。
• 現在AndroidのView内ではネストした親子
関係は推奨されておらず、部品単位での参
照を持って構成される

-> Constarin Layout
ACTIVITY_FIRST_VISIT.XML
アニメーションを付加す
る属性のタグ
親子関係は推奨されていないものの、
デザインの都合上カラムレイアウトを構
築。
デザインのスタイルも独自のPREFIXで指定します。
(ただし部品によって使えるスタイルは変わってきます)
Point1
Point2
ビューの設計にこだわる理由
• 端末のスペックの差異を吸収するため。

現在ユーザーが集中している端末は下記の通り
弊社の検証機
PIXEL3 6.3インチ

ユーザーが最も多いと見られるNEXUS 5X 5.2インチ
※ NEXUS5Xについては4年以上前に販売されたスマホ
で、店頭には並んでいないものになる…
ビューの設計にこだわる理由
• 会社用端末Pixel3XLと現時点で1番利用のあるNexus5Xでは、インチ
数に0.9の差がある
多様な画面サイズに対応するため、決め打ち(数値指定)
でのコーディングは避けなければならない…
• UXに係る部分はコンバージョン・離脱に大きく関係性がある 

-> UXがプロダクトの差別化を握る になる。
カラムの崩れ
フォントのサポート VIEWPORTの問題
期待通りのアニメーション
がつくか?
実践2 APIを叩こう
• 非同期で取得したデータを表示する
• ただし取得中の項目に関してはイン
ジケータを出力
• リクエスト完了時、値が取得できな
かったものに関してはアイコンを表
示する
ユーザーの健康データ表示の要件
POINT
• Activityの肥大化を防ぐ為にロジック
の切り分けが必要。
• 同じ事を繰り返す処理が多数あるが、
微妙に部品の差異がある。(APIの
パスや、データの整形処理など)
• 非同期の処理はメインスレッド内で
個々のスレッドとして開始され、失
敗成功に関わらず冪等性が担保され
なければならない。
ACTIVITY CODE
LATE INIT!
ACTIVITYで起動する
VIEWをチョイス
参照のたびに別々のイン
スタンスを生成する
GETTER
ACTIVITY CODE
取得したデータを設定する
部品と単位のテキスト
VIEWはメインスレッドでし
か参照できないため、
ACTIVITYでVIEWを作成して
ロジックの処理に渡す
REQUEST
通信の結果を変数化
VARARGは特定の修飾子をつける事で
SPLATのように受け渡しが可能
実践3 端末差異を考慮したビューの作成
背景画像を設定することも出来るが、

縦の長さで位置が変化するかもしれない
上の要素が大きくなったら、どちら
のスクロールを優先させるか?
ラウンドの表現
• Viewクラスを継承して半円を描画する。
• Canvasクラス(Viewに自由描画ができる。html
のCanvas要素に似ている印象)に四角形と楕円
を追加したものをPathクラスで描画している。
スライドカードの表現
• 使うものはRecylerView, ListAdapterとMotionLayout(or BottomSheet)
RecyclerView ListAdapter
BindingData

(表示しているタスクの1行分ListAdapter)
MotionLayout
LinearLayout
1つのViewに対して

動きの演出をする。
出典・引用
• スマートデバイススペック 

https://www.gsmarena.com/google_pixel_3_xl-9257.php

https://www.ymobile.jp/lineup/nexus5x/
• 半円の描画

https://stackoverflow.com/questions/31705870/how-to-draw-a-
half-circle-in-android

More Related Content

What's hot

( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
Yuki Ishikawa
 
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackA 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
GoAzure
 
AngularJS 概説
AngularJS 概説AngularJS 概説
AngularJS 概説
Kenichi Kanai
 
Angular1&2
Angular1&2Angular1&2
Angular1&2
Kenichi Kanai
 
MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
jz5 MATSUE
 
Reactつかってみた
ReactつかってみたReactつかってみた
Reactつかってみた
Minori Tokuda
 
Angular2
Angular2Angular2
Angular2
Kenichi Kanai
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
一希 大田
 
国産オープンソースCMS「ZOMEKI」の紹介
国産オープンソースCMS「ZOMEKI」の紹介国産オープンソースCMS「ZOMEKI」の紹介
国産オープンソースCMS「ZOMEKI」の紹介
Masaki Ozawa
 
AngularJSを浅めに紹介します
AngularJSを浅めに紹介しますAngularJSを浅めに紹介します
AngularJSを浅めに紹介します
nkazuki
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
Narami Kiyokura
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
 
AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話
kumatch kumatch
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
Muyuu Fujita
 
Angular#Kanazawa
Angular#KanazawaAngular#Kanazawa
Angular#Kanazawa
Kenichi Kanai
 
開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS
Mizuho Sakamaki
 
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
一希 大田
 

What's hot (18)

( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackA 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
 
AngularJS 概説
AngularJS 概説AngularJS 概説
AngularJS 概説
 
Angular1&2
Angular1&2Angular1&2
Angular1&2
 
MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
 
Reactつかってみた
ReactつかってみたReactつかってみた
Reactつかってみた
 
Angular2
Angular2Angular2
Angular2
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
 
国産オープンソースCMS「ZOMEKI」の紹介
国産オープンソースCMS「ZOMEKI」の紹介国産オープンソースCMS「ZOMEKI」の紹介
国産オープンソースCMS「ZOMEKI」の紹介
 
AngularJSを浅めに紹介します
AngularJSを浅めに紹介しますAngularJSを浅めに紹介します
AngularJSを浅めに紹介します
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
 
AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
 
Angular#Kanazawa
Angular#KanazawaAngular#Kanazawa
Angular#Kanazawa
 
開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS開発ライフサイクルから見たAngularJS
開発ライフサイクルから見たAngularJS
 
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
 

Similar to Androidアプリの構築と実践

2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
OCHI Shuji
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
 
About rails 3
About rails 3About rails 3
About rails 3
issei126
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解Monaca
 
Djangoとは
DjangoとはDjangoとは
Djangoとは
Gomamatsu
 
Net core3.0とWPF
Net core3.0とWPFNet core3.0とWPF
Net core3.0とWPF
AyumaKaminosono
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
minazou67
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
スマ研第2回レポート
スマ研第2回レポートスマ研第2回レポート
スマ研第2回レポートShinpei Niiyama
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
Sosuke Kimura
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
xyz corporation
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
Daizen Ikehara
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
Hiroshi Okunushi
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)Yoshiki Ushida
 

Similar to Androidアプリの構築と実践 (20)

2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
About rails 3
About rails 3About rails 3
About rails 3
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
 
Djangoとは
DjangoとはDjangoとは
Djangoとは
 
Net core3.0とWPF
Net core3.0とWPFNet core3.0とWPF
Net core3.0とWPF
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
スマ研第2回レポート
スマ研第2回レポートスマ研第2回レポート
スマ研第2回レポート
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
 
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
Web担当者Forumミーティング2013 Autumn 「マルチデバイス、HTML5がとりまくWebサイト制作とCMSの現在」
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)
 

Androidアプリの構築と実践