Android関連のことを調べてみた2019年12月25日

Android関連のことを調べてみた2019年12月25日

【DI】Dagger2+Retrofit2(+OkHttp3)+ViewModelのDIの最小構成[その2]

# はじめに
この記事は[【DI】Dagger2+Retrofit2(+OkHttp3)+ViewModelのDIの最小構成[その1]](https://qiita.com/m-coder/items/267abba3f059c4c9ed4a)の続きです。
今回はRetrofitとViewModelをDIしていきます。

## 4. Retrofitの依存性注入
ApiクラスとApiModuleを追加します。
ベースURLはGitHubのAPIに指定してます。

“`kotlin:Api.kt
interface Api
“`

“`kotlin:ApiModule.kt

@Module
class ApiModule {
companion object {
const val API_READ_TIMEOUT: Long = 10
const val API_CONNECT_TIMEOUT: Long = 10
}

private val gson =
GsonBuilder().setFieldNa

元記事を表示

【DI】Dagger2+Retrofit2(+OkHttp3)+ViewModelのDIの最小構成[その1]

# はじめに
DIでDagger2を使っていると、いつも「おんやあ?」となるので自分用にメモっておきます。

Dagger2の構成は初心者にはハードルが高いです。
しかも`Retrofit2`をDIでInjectしようとしたり、引数付きの`ViewModel`を作ろうとするとますます混乱します。
そこで`Dagger2`+`Retrofit2(+OkHttp3)`+`ViewModel`(+レイヤードアーキテクチャ)という、よく使う組み合わせのDIの最小構成(たぶん)をこちらに記載しておきます。

※当方DI初心者ですのでおかしいところがあったらガンガン指摘ください。喜びます(マゾ)。

# リポジトリ
https://github.com/nanaten/DaggerRetrofitViewModel
こちらに全体のソースコードを置いておきます。
DIが機能している事を示すために、GitHubのAPI(repos/octocat/Hello-World)にアクセスして結果をトースト表示してます。
※APIへのアクセスに`RxJava`も使っていますがそちらは解説しない予定です。

元記事を表示

アプリ開発着手からリリースまでにやっておきたいこと10選

メリークリスマス?
こちらは [GLOBIS Advent Calendar 2019](https://qiita.com/advent-calendar/2019/globis) 25日目の記事です。

# 自己紹介
こんにちは、@mshrwtnbです。1ヶ月ほど前にGLOBISに入社し、現在、[GLOBIS学び放題](https://hodai.globis.co.jp/)のアプリ開発を担当しています。iOS版GLOBIS学び放題を使いやすくすべく、チームメンバーとともにゴリゴリ書き直しています。ご期待ください?
直近まではソシャゲを主力とする企業で、複数サービスのアプリ開発、マネジメントをしておりました。

# 記事の目的
これまでのアプリ開発・運用の経験をもとに、**アプリ開発着手からリリースまでにやっておくと後々役立つこと**をご紹介します。想定読者は**サービス運用の経験が少ないアプリエンジニア[^1]**とします(経験を積まれている方に既視感強めの内容かと思います)。チョイスは独断と偏見です。他にやっておくと、便利そうなことがあればコメントいただけると幸いです。

元記事を表示

アプリのアイコンを作成する方法:ルールと方法

モバイルアプリケーションの開発は、チャンスの宝庫です。 2020年までに、この事業分野の収益は1,890億ドルを超えると予想されています。 平均的なスマートフォン所有者がデバイスで月に約30種類のアプリを起動するので、それは理にかなっています。 Apple App Storeには220万個、Google Playには280万個のアプリがあります。 何という選択であり、同時に、何と激しい競争でしょう。
## 良いモバイルアプリアイコンが必要な理由とは?
ブラウジング中にアプリを試す理由は何ですしょうか? それはアイコンです。 これは、アプリページを開くという一瞬の決定を促すメインドライブです。 アプリのアイコンはユーザーの関心を呼び起こし、モバイルアプリが信頼できるものであり、インストールする価値があるとユーザーに確信させる必要があります。

![image4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249438/532dc0e1-bd24-c500-15cc-5607f9f3aea9.png)

元記事を表示

大規模なAndroidアプリコードを読み解く技術

# はじめに ~`XXXFragment`に飛びたいだけなのに~
コードが大規模化すると,どこに何が書いてあるのかを追うのが難しくなる傾向にあります.Androidでは

– `.java`と`.kt`が混ざっていたり,([JNI](https://docs.oracle.com/javase/jp/8/docs/technotes/guides/jni/spec/jniTOC.html)等によってNativeなコードが呼び出されていたり)
– 画面を構築するためのxmlファイル等の`res/`以下にあるようなリソースファイルがあったり,
– [databinding](https://developer.android.com/topic/libraries/data-binding?hl=ja)や[Dagger2](https://dagger.dev/)等のリフレクションによるコードの自動生成に依存する箇所があったり

と,考慮することが少々多いような気もします(気がするだけかもしれません)

この画面を作成している`XXXFragment`に飛びたいだけなのに….どこにそ

元記事を表示

Androidでいい感じにREST APIを扱う(Kotlin Coroutine, Okhttp3, Retrofit2, Moshi)

多くのアプリが実装しているであろうAPI通信ですが、Androidではライブラリやライフサイクルの知識を持っていないと戸惑うところが多いと思います。ということで自分なりにいい感じだなと思う実装をまとめてみました。

## やること

QiitaApi:userを呼び出し
https://qiita.com/api/v2/users
レスポンスを表示する。(ログです・・・)
アーキテクチャというほどではないですがMVVM + Repositoryを意識しています。
MVVMについてはこちらが非常にわかりやすいです。
https://developer.android.com/jetpack/docs/guide?hl=ja#drive-ui-from-model

##### 使用するライブラリ
“`build.gradle
def retrofitVersion = ‘2.6.0’
implementation “com.squareup.retrofit2:retrofit:$retrofitVersion”
implementation “com.squ

元記事を表示

ColumnとRowで理解するJetpack Composeのレイアウト基礎

# はじめに

Cloud NextでJetpack Composeは発表され、先日Android Dev Summitでは、大幅なアップデート行われました。

Jetpack Composeのレイアウトを制御するコンポーネントは以下のような階層構造になっています。
下位の階層ほど汎用的なコンポーネントになっています。
上位のコンポーネントは、下位のコンポーネントをラッパーしたものになっており、指定できる機能が限定されています。

![jc1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54186/5d322977-0140-117c-9c2e-1f29d94de47c.png)

これらの階層構造から実際にそれぞれの役割がどのように異なるのかを理解していきたいと思いますが、今回はまずColumnとRowの実際の挙動を確認することで、ColumnとRowの役割を明確にすることでFlexとの違いを理解する第一歩としたいと思います。

## Column基本
縦に内部の要素が並びます。

“`kotl

元記事を表示

RecyclerView上のボタンを押した時の処理をリストごとに変化させる

#はじめに
Androidアプリ開発でリスト表示を作るためにRecyclerViewを利用しますよね。
RecyclerView上にボタンを設置して、リストから他の画面に遷移する時、**何番目のリストのボタンが押されたか**を知りたい時ありますよね。
RecyclerView.Adapter上で「何番目のボタンが押されたか」は割とすぐ取得できるのですが、それをMainActivityで使う時に少しハマったのでメモ。

#RecyclerViewについて
概要についてはこちらの記事が分かりやすかったのでこちらを参照ください。
[RecyclerViewの基本](https://qiita.com/naoi/items/f8a19d6278147e98bbc2)

#やりたいこと
– RecyclerView上にボタンを配置し、ボタンを押した時に画面遷移させたい。
– ボタンを押したリストの行数によって遷移先での挙動を変化させたい。

画面遷移する時のボタンを押した時の処理のイメージはこんな感じ。
遷移先の画面に対して、何番目のリストのボタンが押されたかを教えてあげたい

ちなみにRecy

元記事を表示

Camera Xを試す

# Camera Xとは
>CameraX は、カメラアプリの開発を簡単に行うための Jetpack サポート ライブラリです。ほとんどの Android デバイスで機能する、使いやすく一貫性のある API サーフェスを提供するほか、Android 5.0(API レベル 21)への下位互換性も備えています。

これまでの[camera2](https://developer.android.com/reference/kotlin/android/hardware/camera2/package-summary.html)よりもシンプルに実装でき、Android 5.0でも使用することができるので嬉しいですね。
また、拡張機能を利用することでポートレート、HDR、夜景などの効果も利用することができるようです :camera_with_flash:
https://developer.android.com/training/camerax

公式でCodelabが用意されているので、今回はそれを進めていきたいと思います。
https://codelabs.developers.go

元記事を表示

【Kotlin】初心者によるAndroid開発 〜導入編〜

# 概要
プログラミングなんて無縁の金融機関で働いている私による初心者向け導入方法をまとめたものです。
私自身まだまだ初心者なので、***これから始めようとしている人、やってみたいと思っている人***でも分かりやすいように心がけてまとめて行きます。
今回はずっと興味があったAndroidアプリの開発を目指してやっていきます。
~~初心者の私が書くものなので、微妙かも…でも、気にしない!!~~

# 開発環境の実装
開発は***統合開発環境(IDE)***を利用します。
色々調べてみると、Androidの開発環境といえば【***Android Studio***】一択らしいので、ここは素直に従って使っていきます。公式にインストール方法がまとめてあるのでこちらを参考に導入しましょう。
【https://developer.android.com/studio/install?hl=ja】

ちなみに、システム要求(PCの推奨スペック)ですが、最初はメモリ8Gあれば問題ないと思います。
実際のシステム要求については、公式を参考にしてください。ページ下部に記載されています。
【https

元記事を表示

【Kotlin】初心者によるAndroid開発 〜困った編〜

# はじめに
初心者(プログラミング初学者)あるあるかもしれませんが、
私の失敗談だったり、困った出来事を簡単にまとめて行きます。
「初心者のとき、そんなこともあったなー」と、共感してくれる方がいると幸いです。
~~それだけで私が救われます~~

# 恐怖のJava
一番悩まされ、幾度となく机ドンする羽目になった~~私殺しの~~Java。
Kotlinがプログラミング初学の私にとっては強敵でした…

まず、私はJavaとKotlinで書かれているコードの違いがわかりませんでした。
その結果『Kotlin Android Listview』とかで調べた良い感じのコードを当てはめてもうまく動かない事がありました。

悩みました。正直。Kotlinで検索してもJavaのコードが紛れ込んでいるからです。
ただ、よくよく見ていくと、決定的な違いが有りました。それは…

***Javaは、命令文の終わりに『;』が付いている***

これですよ!!気づいてからはJavaのコードをすぐに見破れるので本当によかったです。
~~ちなみに初めて買った参考書はKotlinのつもりが、Javaだったよ.

元記事を表示

Google Play Playtime 2019 潜入レポと今後やりたくなったこと

#はじめに

初めまして!NewsPicksのPMをしています、片山と申します。
私は10月にNewsPicksに入社しその前は10代女性向けメディアのWEBディレクターをやっておりました。その中でも主に担当していたことはADNWによるマネタイズでしたが、媒体のユーザーインタビュー、数千人規模の定量調査、媒体売りの営業、オウンドメディアの運営を少し、オウンドメディアから派生した商品開発コンサルタント、新作映画の取材など、、かなり浅いですがwいろんな経験をさせていただいておりました。

10月に入社して最初にUIリニューアルプロジェクトに携わり、現在はそれに伴ったアプリストアの掲載情報のアップデートに取り組んでいます。

さて、今回書くテーマは12/6にGoogleの主催で開催された「Google Playtime 2019」に行ってきた体験記です。
今まで私は、Googleの主催するイベントには数多く出席させていただきましたが、毎度「参加してよかった」と思える事ばかりだったので今回もきっと期待以上の情報が得られるのではないか?と思った事もあり参加を強く希望しました。

参加の前にGoo

元記事を表示

Bitriseからアプリをチームにテスト配布するための設定

この記事はBitriseアドベントカレンダーの23日目の記事です。

どうも!ハムカツおじさんという名前でtwitterやってます([@hmktsu](https://twitter.com/hmktsu))?
自分でだったり弊社でだったりなどでBitriseを使ってサービスをビルドしています。

ちなみに先日Bitrise User Group Meetup #3にて以下のスライドを発表させていただいたので、興味ある人はご覧になってください!
[XcodeやAndroid Studioを弄らないアイコン管理](https://speakerdeck.com/watanabeyu/xcodeyaandroid-studiowonong-ranaiaikonguan-li)

## はじめに
Bitriseはアプリ開発をするにあたって外せないサービスになっていると思っています。
対抗馬としてCircleCIなどの他サービスもありますが、iOSやAndroidのビルドをするためにブラウザ上でぽちぽちするだけでworkflowを組め、さらにはBetaみたいにBitriseを使ってのAdhoc

元記事を表示

【Android】Firebaseにユーザデータを保存する

# はじめに

僕が個人開発しているAndroidアプリに『[メモアプリ](https://play.google.com/store/apps/details?id=jp.hituzi.android.statusbarmemo&hl=ja)』というメモ帳アプリがあります。基本的にはオフラインで使えるシンプルなメモ帳アプリなのですが、機種変時のデータ移行を楽にしたいという要望もあり、Firebaseを使ってユーザデータのバックアップ作成/復元ができるようになっています。

Firebaseの**Auth**, **Firestore**, **Storage**を使うことで比較的容易にこの機能を組み込むことができましたが、それでも実装量はそれなりにあるため、本記事では、この機能の実装例を簡単にではありますが紹介します。

# 1. AndroidプロジェクトにFirebaseを追加する

以下の公式ドキュメントを参考にAndroidプロジェクトにFirebaseを追加します。
[Android プロジェクトに Firebase を追加する](https://firebase.goog

元記事を表示

Androidアプリでのエラー処理について

この記事は[CAM Advent Calendar 2019](https://qiita.com/advent-calendar/2019/cam-inc) の24日目の記事です。:golf:
昨日は@takehziさんの[トランザクションとロックと二重課金](https://qiita.com/takehzi/items/7dc5bf66f684ceae83b8)でした。

# :warning: エラー処理って何?
Androidに限らず、クライアントアプリ全般的に言えることですが、よく***「エラーが発生しました。もう一度やり直してください。」***みたいなポップアップを見かけると思うのですが、それを表示するまでに行う処理のことをここでの**エラー処理**とします。

ここで紹介するのはあくまで一つの手法です。

# :thinking: やること

**1. エラーを受け取る**
**2. 受け取ったエラーに対してそれぞれ処理を分ける**

… 以上

と言っても、これだけだとさっぱりなので順を追って説明できればと思います。

## 1. エラーを受け取る

この受

元記事を表示

人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話

#はじめに
先にタイトルのオチを書いてしまいましょう!

人種も育ってきた環境も違う二人がともに生活を始め、価値観の違いを埋めながら成長し、まだ見ぬ未来に希望をつなげる話

OSもこれまでの保守会社も違うiOSとAndroidアプリを一つの会社がまとめて受け持つことになり、過去の実装方針や思想の違いを感じながら保守を行い、いつ行われるかわからない次のリニューアルに向けで準備をすすめる話です。

弊社では現在デイリーアクティブユーザー120万人超えのモバイルアプリの保守をしています。
2011年から8年間iOSの保守のみを受け持って来たのですが、その実績から今年の5月末にAndroidもやってほしいと言われ、是非にということで、そのお話をお受けしました。
私自身がiOSよりもAndroid寄りのエンジニアなので、いつかAndroidの保守もやれればと思っていたことが、ついに現実になったのです!!

###ところが、そんなに甘い話ではなかった
Androidは今まで保守していた会社が複数あり、内部の構造はかなり煩雑
クラスの命名規則が意味不明、変数はキャメルケースとスネークケースが入り

元記事を表示

複数の要素をAppBarLayoutを使ってスクロール時に収納する

この記事は Goodpatch Advent Calender 2019 の 20日目です

Androidのアプリでたまに見かけるモダンなスクロールを作っており、
少し苦労したので、その知見を共有したいと思い書きました

# やったもの

スクロールすると上にタイトルが固定表示されるような画面で、
1つの要素ではなく複数の要素で構成したい場合に以下の方法を使って実現しました。

# 実装方法
この実装にはレイアウトで対応するのが難しく、コードで制御するようにしました。

## レイアウトの構成
“`
Android Navigation を使った引数の渡し方

# はじめに
この記事は Goodpatch Advent Calendar 2019 13日目の記事です

今年を振り返り私自身Android開発に大きな目玉機能だなと思ったのは2019年4月に正式リリースされたNavigation機能だと思っています。
Navigation機能を簡単に説明するとGUI上でAndroidの画面表示機能の1つFragmentを管理しやすくなった機能です。

以前だと、Fragmentを管理するためにはコードを記述してそのなかで管理する必要がありました。
そのため画面管理するのに設計したり、テストしたりとコードを書く以外に時間をかける必要がありました。

しかし Navigationの登場のおかげでFragmentの管理がコードから視覚的にわかるGUIに変更されたため
急な画面変更が発生し、遷移の仕方が変わったとしてもカジュアルに変更することができるようになりました。

Navigationを使いブイブイ画面を作ることはらくらくできたのですが、Fragmentで引数を渡すところで私自身結構つまづいてしまったので
今回はそのNavigationの引数の渡し

元記事を表示

【Android】はじめてのRoom

[【Android】分かった気になれる!アーキテクチャ・MVVM概説](https://qiita.com/iTakahiro/items/6b1b22efa69e55cea3fa) ではアーキテクチャ・MVVMの概要をコードを記述せずに概念のみ説明してみました。
その後の投稿では、実践編として各ライブラリを実際にコードを記述し記事にしています。
**これまでの記事** :

– [【Android】分かった気になれる!アーキテクチャ・MVVM概説](https://qiita.com/iTakahiro/items/6b1b22efa69e55cea3fa)
– [【Android】はじめてのDataBinding](https://qiita.com/iTakahiro/items/b5fe2b186750c6e774e5)

MVVMシリーズ実践編第二回目のテーマは、[Room](https://developer.android.com/training/data-storage/room/index.html)です。
DBの一つであるSQLiteを容易に扱うことのできるRo

元記事を表示

アプリを見比べたいじゃない

# アプリを見比べたい

アプリもリリースしてから年月が経つと

「今のアプリの動きってどんなだっけ。。。」

「あれ?改修後はどうなるんだっけ??」

といった具合で改修前、改修後のアプリを見比べたい時なんかが発生してきます

ですが普通にアプリを端末にインストールするとPackege(ApplicationID)が一緒なもんだからアプリを上書きインストールしてしまうんですよね。。。

あーこまった。。

##そんな時にFlavor

そう、そんな時に役立つのがFlavorなんです

前回[こちらの記事](https://qiita.com/ga_ga_chickin/items/2226f334ced1b4de2fa3)でConstファイルとか切り替えられるよっていう話をしたんですけど、Flavorさんが変えられるのはファイルだけじゃなかった

##接頭詞をつけちゃうよ

今回Flavorにやってもらう仕事はApplicationIDに接頭詞をつけることです
開発APIサーバに向いているFlavorにはdev
スクリーンショット 2019</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Android</div>
<div class='tag-cloud-link'>Kotlin</div>
<div class='tag-cloud-link'>AndroidStudio</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/ga_ga_chickin/items/1b65ca5dcd5b785b4010'>元記事を表示</a></div>
</div>
      </section>
	        
      
      
      
	        <!-- 記事下シェアボタン -->
        <aside>
<ul class=

  • OTHERカテゴリの最新記事