ticktakclockの日記

技術ポエムを綴ったりします。GitHub idも同じです (@ticktakclock)

IntentのresolveActivityを考慮したRobolectricテスト

こんにちは、tkyです。 今日はテストの話です。 画面遷移をテストする時Robolectricを使うと比較的簡単にテストできます。 今回はRobolectric v4.3を使用して 自身のアプリの別Activityに遷移する場合 (=明示的Intent) 外部アプリに遷移する場合 (=暗黙的Int…

kotlinで別パッケージの同じクラス名の衝突を回避する

こんにちは、tkyです。 Kotlinの小ネタです。 タイトルのとおりなのですが、こういったことってほとんどないとは思うのでいざというときどうするか迷う系のやつです。 ドメインとしてのクラス名と被ってしまう 例えば イベント情報 を取り扱うドメインがあっ…

apk容量削減のためにやったこと

こんにちは、tkyです。 アプリ容量が日に日に多くなっていく中、できることを探してみました。 developer.android.com 公式に削減のための方法が乗っていて、そのうちの2つをやってみました。 効果 僕が携わっているアプリプロダクトは長い間運用されている…

minSdkVersionを19->23にする時に考慮したこと

こんにちは、tkyです。 私が業務で担当しているAndroidのアプリサポートバージョンをAPI19->23に引き上げました。 すでにリリースから数ヶ月経過しましたが、その時にやったことなどをまとめたいと思います。 OSの分布を知る 世界的なOS分布 developer.andro…

Go言語でgit checkoutを補助するコマンドを作った

Go

こんにちは、tkyです。 Go勉強してコマンドを作ってみました。 github.com git checkout をサポートする gith というコマンドです。 デモ1 こんな感じにブランチが選択式で表示されるので選べばそのブランチに移動できるようなものです。 リモートブランチ…

GitHubActionsとCircleCIを使い分ける

こんにちは、tkyです。 今私が携わっているAndroidプロジェクトのCIは基本的にCircleCIを採用しています。 そんな中、同時にGitHubActionsも採用した経緯とどんなことをしているのか、ちょっとハマったことを書き留めておこうと思います。 また、本記事は「…

Kotlin applyから理解するレシーバー付きラムダ

こんにちは、tkyです。 『レシーバー付きラムダ』という用語をご存知でしょうか。Kotlinインアクションとかで使われている表現です。 英語では Function literals with receiver と言われています。 今回は apply{} がどのように動作するのか確認しながら『…

LiveDataをどのレイヤー(Repository層)まで許容するか

こんにちは、tkyです。 先日、とあるcodelabをやっていて『Repository層でLiveDataって使っていいの?』と感じたことがあり。 この疑問からLiveDataを使用するレイヤーとそこから生じるメリット・デメリットなどを考察した内容をまとめておきます。 こういう…

ViewModelのテストを書く

こんにちは、tkyです。 テスト、書いてますか? 僕はぼちぼち書いてます。 今日はViewModelのテストを書いてみたいと思います。 サンプリリポジトリです。サンプルではGitHubのAPIにアクセスする簡単なサンプルにテストを書いてみた感じです。 github.com 本…

JetpackComposeのチュートリアルをやってみた

こんにちは、tkyです。 かねてから触ってみたかったJetpackComposeのチュートリアルをやってみました。 本稿は2020/08/09時点のAndroid Jetpack compose チュートリアルを実施するに当たり ハマらないため+これからやることをイメージできるようにすること…

Shared Elementで画面遷移にアニメーションを加える

こんにちは、tkyです。 Androidで動きのある画面遷移に挑戦してみようと思います。 画面間遷移にアニメーション 今回は画面から画面の遷移にSharedElement(これって機能名になるんですかね?)を指定して 「遷移元のUIの一部が遷移先のUIの一部になるように…

simple pollを使ってslackでアンケートを取る

こんにちは、tkyです。 N番煎じの小ネタなのですが、案外使っていない人が多いのかもしれませんね。 slackでアンケート的な何かがあるときにリアクションを使うパターンはよくありますね。 slack一般的なアンケート 実は/pollコマンドでアンケート作れます /…

KotlinプロパティとカスタムゲッターのBytecodeから見る違い

こんにちは、tkyです。 今日はKotlinのプロパティとゲッターの種類と違いを深堀りしてみようと思います。 はじめにプロパティとフィールドについておさらい程度に単語を整理します。 プロパティとフィールド Kotlinのプロパティについて復習です。 dogwood00…

BillingLibraryを1.2 -> 2.2.1にアップデートするまで(ついでにRx->Coroutinesも)

こんにちは、tkyです。 BillingLibraryのバージョンを遅ればせながら1.2 -> 2.2.1(20200603時点の最新)にアップデートしましたのでその時の作業内容をまとめておこうと思います。 バージョンアップは必要なのか? 必要です。 Google I/O'19において 毎年のGo…

Android Billing Library 2.0を使って課金フローを確認してみる

こんにちは、tkyです。 PlayConsoleに登録しないでBilling Library2.0を使ってみた所感などを書いていきます。 目的は『課金フローを理解する』ことにあります。 基本ドキュメント見たら書いてあるため公式のドキュメントを信頼するのが一番良いです。本記事…

gradleのライブラリ依存関係を出す

こんにちは、tkyです。 Android小ネタ集です。色々なブログでも書かれている内容で、ほぼ自分用として書いておきます。 Dependency treeが見たい時、ありますよね? (ライブラリを特定のバージョンに上げると何故か別の機能がバグるみたいなことがたまにあ…

EpoxyとDoNotHashとequals()

こんにちは、tkyです。 Androidネタです。epoxyの話です。 ※epoxy is 何の話はしません epoxyはデータバインディングをサポートしていて、リソースファイルからデータバインディング用のモデルクラスを自動生成してくれたりします。 github.com 上記のドキュ…

プルリクのレビュー件数をグラフにしてみた

こんにちは、tkyです。 社内でプルリクをいろいろなメンバーにレビューしてもらっているのですが、 「最近特定の人ばかりにレビュー依頼してる気がする・・・負荷溜まってないかな・・・」 という一抹の不安をいだき誰にレビュー依頼するか判断する材料にし…

WebView android.view.InflateException on Lollipop

こんにちは、tkyです。 久々にWebViewで落ちた案件です。Lollipop(5.0)です。悲しみです。 手元にLollipopがないので実機で発生するかわからないのですが、Emulatorで発生するものです。 もしかしたらPlay Storeからandroid system webveiwのバージョンを上…

Kotlinのif elseとletとalso

こんにちは、tkyです。 Kotlinにおいてnullチェックしてそのインスタンスにアクセスする場合、?.let{} を使うことがわりと多いです。 しかしnullだったときの処理も記述する場合?.let{} だとどうしてもわかりづらくなる場合があり、素直にif elseを使ったほ…

logcatが出力されなくなった時の対処

こんにちは、tkyです。 既出小ネタ集です。 AndroidStudioで開発中たまにAS上のLogcatが出てこないときがあります。 read: unexpected EOF! --------- beginning of crash 昔から対策自体はありますが、全体的に記載記事が古くなっている方に感じるので今で…

Navigation SafeArgsを使って画面遷移でパラメータを渡す

こんにちは、tkyです。 前回はBottomNavigationとNavigationをあわせた画面遷移を作りましたが、パラメータを渡せないと実務では利用しづらいケースが多いと思います。 ↓前回記事↓ ticktakclock.hatenablog.com 今回はSafe Argsの機能を使って次の画面にパラ…

Android Jetpack Navigationで画面遷移する

こんにちは、tkyです。 下タブ(BottomNavigation)とNavigationをあわせて画面遷移とアニメーションを実現するところまで実装してみようと思います。 Navigationがわからない人が AtivityとFragmentの画面遷移ができる アニメーションに必要なパラメータが…

CoordinatorLayoutでMotionLayoutアニメーションを実現する(Android)

こんにちは、tkyです。 前回はMotionLayoutを使って実践で使えそうなアニメーションを実装しました。 今回も実践で使えそうなアニメーションを実装してみようと思います。 こちら デモ 画面スクロール時にタイトルのテキストがアニメーションするようなMotio…

MotionLayoutでFAB Speed dialを実現する

こんにちはtkyです。 前回 、MotionLayoutでアニメーションさせる(Android) - ticktakclockの日記にてMotionLayoutについて学習しました。 今回はこのMotionLayoutを利用してFABメニューにおけるスピードダイアル(Speed dial)を実現してみたいと思います。 …

GitHub Actionsのワークフロー個人的逆引き

こんにちはtkyです。 GitHub Actionsを使い始めて1ヶ月位が経過したのでやったことなどを忘れないようにまとめていこうと思います。 思いつき次第更新してこうと思いますが、大体ドキュメントに書いてあるので基本ドキュメント参考にするのが良いのかと思わ…

MotionLayoutでアニメーションさせる(Android)

こんにちはtkyです。 今日はかねてから気になっていたAndroidでにおけるconstraintlayout2.0のβ3版で追加されているMotionLayoutを使ってアニメーションを試してみたいと思います。 まだベータ版(2019/12/06執筆現在)であり、2.0が正式になった時にどうなる…

Developers.IO 2019に行ってきました

こんにちは、tkyです。 本日はClassmethodさんのDevelopers.IO 2019に参加してきたレポートブログとなります。 とは言え本家ブログ側に各レポートブログがあるのでこちらではサマリと感想などを綴ることにします。 Developers.IOについてはこちら dev.classm…

Koinを使って依存解決(DI)する

こんにちは、tkyです。 今回は 今までDI(Dependency Injection)ライブラリはDagger2だけしか使ったことがなかったのですが、他のDIライブラリも使ってみたくて Koin を使ってみました。 公式見ながら作業しましたが、想像以上に簡単にDIできたのでびっくり。…

WebRTCとWebSocketで画面共有(ビデオチャット)アプリを作る

こんにちはtkyです。 表題の通り、WebRTCとWebSocketの勉強を兼ねて、webアプリを作ってみました。 作り方を記載しているわけではなく、成果物に対しての説明となるブログですので予めご了承願います。 作ったもの 画面共有(ビデオチャット)アプリを作成しま…