- 1. はじめに
- 1.1. Wear OSでExerciseClientを使用して自転車の走行情報を取得する
- 1.2. Airtestの複数端末同時実行環境を整える
- 1.3. ペアプロをしてよかったこと〜ナビゲーター編〜
- 1.4. Modifier.graphicsLayerでPCの開閉を再現してみた
- 1.5. 結局Unityのモバイルアプリはどう計測したらいいんですか?(途中で力尽きたポエム)
- 1.6. AndroidのRecyclerViewについて概観を書く
- 1.7. Androidの権限周りの再整理 ~色々むず過ぎる~
- 1.8. 意外と知らないModifier.clickable
- 1.9. メモリ消費の削減を試してみた話
- 1.10. ComposeでのonGloballyPositioned modifier についての調査
- 1.11. 【自分用メモ】「intent」は「Activity」間でしか使わない。
- 1.12. Truth 1.2.0で追加されたisWithin().of()の使い方メモ
- 1.13. Flutterでマイナンバーカードを読んでみた
- 1.14. 2023年、書き初め ならぬ アプリ書き出し初め のノリでアプリ作ってみた
- 1.15. Android Graphics Shading Languageって何?
- 1.16. Compose Multiplatformで作ったQiitaリーダーにさらに機能を追加した
- 1.17. ChatGPTに頼りながらFlutterでメモアプリを自作してみた
- 1.18. 現在のAndroid開発ではライフサイクルメソッドのオーバーライドは推奨されてないけど、もっといい方法ないかな話
ComposeのCornerSizeの指定
# 初めに
[ポート株式会社 サービス開発部 Advent Calendar 2023](https://adventar.org/calendars/9156) 22日目の記事です。
![スクリーンショット 2023-12-22 10.34.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179470/535aefcf-0008-7ed2-d946-16c92c5e4cf0.png)
今回は、細かいところではありますが、[`CornerSize`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/CornerSize)の指定方法の違いと注意することについて、解説していきます。
公式ドキュメントの`androidx.compose.foundation.shape`に書かれている内容がほとんどなので、こちらを参考にしてください。
https://developer.androi
【Android】Jetpack Compose でスクラッチビューを作成する
はじめに
はじめまして、Hridoy Chandra Das(リド)(@ihridoydas)です。
#### Jetpack Compose で、Google Pay 特典のスクラッチ カードのようなスクラッチ カードを作成します。
スクラッチカードは競技用に設計されたカードで、多くの場合、PIN を隠すために薄いカードストックまたはプラスチックで作られており、1 つまたは複数の領域に隠された情報が含まれており、不透明なカバーを剥がすことで明らかになります。
ユーザーはデバイスの画面上でカードを仮想的に「スクラッチ」「指で擦る」し、その下に隠されたコンテンツを明らかにすることができます。 このコンテンツは、クーポン コード、割引、その他の特典を紹介するためによく使用されます。
Wear OSでExerciseClientを使用して自転車の走行情報を取得する
# はじめに
なんとなく思い立ったのでWear OSのアプリを作った。誰かの参考になれば良いので公開します。### 環境
– Wear OS 3 (Wear OS by Google)
– SKAGEN Falster Gen6### 要件
– ユーザーはある自転車のライドにおける総走行距離、総消費カロリー、最高速度を取得できる### 完成品
# ExerciseClientの初期設定
### ExerciseTypeを初期化
“`kotlin
val
Airtestの複数端末同時実行環境を整える
# はじめに
https://qiita.com/s_noza/items/83f905d0b44750aac9b5上記にて紹介されているテスト自動化の実行環境において
テスト用のマシンと単一の端末で運用されているため複数のテストを実行する際に時間がかかるという課題がありました。
そこでiOS,Android複数端末を繋いだ際に、それぞれの端末で同時に並列でテスト実行をできるようにするために必要な処理の検討と実装を行いました。その際に必要だった修正箇所や注意事項等をまとめていきたいと思います。# 端末IDの取得
端末が一つの場合は各種処理で省略できていた部分を、端末指定で実行する必要がでてきました。
その際に指定する端末IDの取得方法をまとめます。
### Androidの場合
“`adb devices“`を実行すると
“`
$ adb devices
List of devices attached
38241JEHN01076 device
38241JEHN08609 device
“`
この場合“`38241JEHN01076“`の部分が端末IDとなる
ペアプロをしてよかったこと〜ナビゲーター編〜
# はじめに
現在私は、全くの未経験からプログラミングを学び始めて1年が過ぎたところにいます。
今回、あるxmlファイルのCompose化をペアプロで対応させていただけることになったのですが、ドライバーではなく指示する側のナビゲーターを行うことになった際、経験が浅い私のような人がどのようにしてナビゲーターを行ったのか(教わったのか)、紹介したいと思います。# 実装する前に行ったこと
### ①設計を行う
コードを書く前に、miroのボードを使ってxmlをComposeでどのように組み立てていくか、あーだこーだ話し合いながら図に起こしました。例)
### ②ナビする側の手順を確認
上記がある程度完成したら、ナビする側の手順を確認しました。たとえば
「ComposeをかけるようにするにはまずComposable関数
Modifier.graphicsLayerでPCの開閉を再現してみた
Android Jetpack composeのModifier.graphicsLayerの紹介
https://developer.android.com/jetpack/compose/graphics/draw/modifiers?hl=ja
graphicsLayerを使うと,物体の位置や,回転,縮小などを指定することができます.
### 指定可能な主な引数
“`kotlin
graphicsLayer(
scaleX: Float,
scaleY: Float,
alpha: Float,
translationX: Float,
translationY: Float,
shadowElevation: Float,
rotationX: Float,
rotationY: Float,
rotationZ: Float,
cameraDistance: Float,
transformOrigin: TransformOrigin,
)
“`各引数を簡単に説明します
結局Unityのモバイルアプリはどう計測したらいいんですか?(途中で力尽きたポエム)
# はじめに
Unityでモバイルアプリの性能を測ることになりまして、調査しながら計測をやってみたら色々罠を踏みました。
その結果をまとめました。誰かナレッジ作って。ないですか。じゃあ一通りまとめます。
技術情報はありますが、普遍的な内容にまとめられなかったのでポエム扱いです。# ことのあらまし
– とあるUnity製のモバイルアプリがあります。
– 結構重い。
– じゃあ、アプローチとしてグラフィックを軽くしてみましょうか。
– UnityのProfilerで計測しましょうねー。
– せっかくだから実機でチェックしよう!
– Macも持ってるからiOSとAndroid両方チェックできるな!
– USAGEでGPUがどれくらい変化したか取ったらいいっしょ!# 結果
– うわー!ほしい情報が取れない…
– **PROFILERのUSAGEで出てほしいのに!**
– 結局目論見通りに軽くなったのかわからない!
– **相手に説明できない!!**# どうすればよかったか?
– まずはPCのUnityエディタ上で測ろう
– 何がボトルネックになるか、
AndroidのRecyclerViewについて概観を書く
# はじめに
授業課題でAndroid開発をしたときにRecyclerViewの使い方とかカスタマイズの仕方がよく分からないという人が多く、私もすぐに噛み砕いた説明をすることができなかったので記事にまとめます。
## 執筆時のツール・SDKのバージョン
Android Studio Flamingo | 2022.2.1 Patch 2
Android 13.0 API 33
AGP 8.0.2
Gradle Version 8.0# RecyclerViewとは?
RecyclerViewは大量のデータセットや、リスト内のアイテムを簡単に作ったり消したりすることができる動的リストを実装するためのクラスです。
実装には、リスト全体を包括する`RecyclerView`とリストのレイアウトを変更する`LayoutManager`、リストアイテムの見た目や動作を定義する`ViewHolder`、配列などに格納されているデータを`ViewHolder`と関連付ける`Adapter`の計4つのクラスを利用する必要があります。
アプリに合わせたRecyclerViewを制作するために
Androidの権限周りの再整理 ~色々むず過ぎる~
## はじめに
権限周りがTargetSDKや端末のAPIレベルやらが入り混じって毎回調べるたびに混乱していた。備忘録として残してみる。## 通知の権限
#### TargetSDKが33以上の場合
| 内容 \ 端末のAPIレベル | ~ APIレベル32 | APIレベル33 ~ |
|——|——————————–|———————————-|
| 新規インストール | デフォルトでアプリからの通知が可能 | POST_NOTIFICATIONSの許諾が必要 |
| APILevel33へのアップデート | 以前の通知権限が引き継がれる | – |#### TargetSDKが32以下の場合
| 内容 \ 端末のAPIレベル | ~ APIレベル32 | APIレベル33 ~ |
|——|——————————–|———————————-|
| 新規インストール | デフォルトでアプリからの通
意外と知らないModifier.clickable
この記事は[Android Advent Calendar 2023](https://qiita.com/advent-calendar/2023/android)の21日目の記事です。
Modifier.clickable()は、Jetpack ComposeのUIコンポーネントをクリック(タップ)可能にするAPIです。Composeでアプリを作るうえでなくてはならないModifier.clickable()ですが、引数にonClickのラムダを渡すこと以外はあまりよく知りませんでした。そこでこの記事では、Modifier.clickable()の仕様を確認して、どのように実装されているのかコードを眺めてみたいと思います。
## 環境
Compose 1.6.0-beta03で確認しています。
Compose 1.5から1.6でModifier.Node対応が進んでいるので、1.5以前のコードはこれから紹介するコードとはかなり違っている思います。また、今後の1.6.xでも変更が加わる可能性があることをご承知おきください。## Modifier.clickable()の定義
メモリ消費の削減を試してみた話
:::note info
これは [ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo) シリーズ9の21日目の記事です。
:::# はじめに
先日、[Android Dagashi](https://androiddagashi.github.io/issue/304-2023-12-03/)さんの中で[65% Smaller APKs and 70% Less Memory: How I Optimized My Android App -Part II (App Memory)](https://medium.com/@tarunanchala/65-smaller-apks-and-70-less-memory-how-i-optimized-my-android-app-part-ii-app-memory-d4e652cf2c49)という記事がリストアップされていました。ご覧になった方も多いのではないでしょうか。私も同記事を読んでみたところ、参考になるTipsが多く含まれていま
ComposeでのonGloballyPositioned modifier についての調査
:::note info
本記事は ZOZO Advent Calendar 2023 カレンダー Vol.6 の20日目の記事です。
:::
明日は[jon20さん](https://qiita.com/jon20)の記事となります。いきなりですが、Jetpack ComposeのonGloballyPositionedというmodifierを使用したことはありますでしょうか?
自分は対象となるComposableのサイズ取得時や親Composableに付随した特定の位置に配置したい場合など、何度か使用する機会がありました。ですが、実装のたびに自分が期待する動作をするまで試行錯誤をしてモヤモヤしていたので、今回は基本となる挙動をしっかりと理解することを目的に調査を行っていきたいと思います!
# onGloballyPositionedとは?
onGloballyPositionedはStableなModifierの拡張関数で、window内で要素の位置が変わるたびに呼び出されるとされています。ただ場合によっては変更された要素の画面に対する相対位置が変更しても、反応しない場
【自分用メモ】「intent」は「Activity」間でしか使わない。
【上司から教わったことのメモ】
「intent」は「Activity」間でしか使わない。
以降は追記あり次第更新。
Truth 1.2.0で追加されたisWithin().of()の使い方メモ
# 概要
[Truth 1.2.0](https://github.com/google/truth/releases/tag/v1.2.0)で新しく`isWithin().of()`が追加されたので使い方のメモです。
例えば、あるメソッドが戻り値として期待される整数値に非常に近い値を返すかをテストしたい場合、`assertThat`メソッドを使って対象の値を指定し、`isWithin`メソッドで許容範囲を設定し、`of`メソッドで期待値を指定します。
ここで、`actualValue`はテスト対象の値、`tolerance`は許容される差の範囲、`expectedValue`は期待される値を指します。
“`kotlin
assertThat(actualValue).isWithin(tolerance).of(expectedValue)
“`# 具体例
具体例だとこんな感じです。
“`kotlin
assertThat(20000).isWithin(0).of(20000) // OK 20000±0の範囲に期待される値が入る
assertThat(20
Flutterでマイナンバーカードを読んでみた
## この記事について
この記事は [SUPER STUDIO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/superstudio) の20日目の記事になります。## マイナンバーを読んでみたい
会社のアドカレなのに、弊社のプロダクトと関係ないものを作って投稿するのもどうかと思うのですが、マイナンバーカードからマイナンバーを読んでみたいのです。そう、ほら、あれだ、たとえばいつか転売対策とかでマイナンバーによるユーザー認証が必要になっちゃったりしなかったり、ECカートだってそういう需要があるかもしれないじゃないですか。なんとかしてマイナンバーカードからマイナンバーを読んでみたいのです。
…だって、**男女のマイナンバーを足して素数になるカップルをマッチングするマッチングアプリ**を作ってみたいと思ってしまったからです。
## マイナンバーカードの仕様について
マイナンバーカードのようなICチップを積んでいるICカードは、演算機能を持ったコンピューターのようなもので、単純な読み取りでもきちんとしたプロ
2023年、書き初め ならぬ アプリ書き出し初め のノリでアプリ作ってみた
## はじめに
こんにちは、@mediaboxesです。
久しぶりにReactNativeのAdvent Calendarに投稿します。ReactNativeはTypeScriptでiOSとAndroidの両方のアプリを作れるという、エコな開発でサクッとアプリを作って両OSのアプリを作るれるので、新規事業の開発で重宝しています。
最近はマネージメント層として開発から離れていたので、学びのために休日開発をやってみたので総括として投稿します。## 作ってみた
### なぜ作ったか
業務でReactNativeで開発が多いのですが、長期運用するとバージョンアップで大変苦労してきました。
+ 素のReactNativeをバージョンアップするとネイティブプロジェクトが無限パズル
+ ExpoのManaged workflowでネイティブプロジェクトを考えなくて楽だが、やりたいことが出来ないことがよくある
+ ExpoのBare workflowで結局ネイティブプロジェクトを管理しなければいけないしかし、Expo SDK 42で発表されたexpo-dev-clientを使うことで、Ma
Android Graphics Shading Languageって何?
この記事はレコチョク [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/recochoku) の20日目の記事です。
https://qiita.com/advent-calendar/2023/recochoku
# はじめに
レコチョクでAndroidアプリ開発をしている寺島です。アニメーションと一緒に聴く音楽が好きです。
手書きアニメーション風のMVを観るのが最近のマイブームです。本記事では、Android Graphics Shading Language(以下、AGSLと略します)について記事を書きます。
Android OSは、年に1度バージョンが新しくなります。それに合わせてAndroidアプリの開発者は、targetSDKを最新にする対応をします。[こちら](https://support.google.com/googleplay/android-developer/answer/11926878?hl=ja)の内容にあるように、アプリをリリースし続けるためにはAPI更新が開発者の
Compose Multiplatformで作ったQiitaリーダーにさらに機能を追加した
この記事はNTTテクノクロス [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ntt-tx) シリーズ2の20日目です。
こんにちは、NTTテクノクロスの戸部@etctaroと申します。
普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。
今年はすでに[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)を書いています。
この記事はその続きとなります。Compose Multiplatformでちょっと気になるあれこれも色々とやりましたので、
ぜひこちらもお楽しみください。# はじめに
[シリーズ1の2日目の記事](https://qiita.com/etctaro/items/5f142b0661e761756b36)のダイジェスト– Compose Multiplatformの環境が整ってきたよ。
– いつものQiitaリーダ
ChatGPTに頼りながらFlutterでメモアプリを自作してみた
僕は普段スマホのメモアプリには[Keep メモ](https://play.google.com/store/apps/details?id=com.google.android.keep&hl=ja&gl=US)を使っています。ただ、普段使わない自分にとって不要な機能もあり、もっとシンプルなメモアプリを使いたいなと思いました。Play Storeで良さげなメモアプリを探しましたが、広告がついていたり、見た目が気に入らなかったり。せっかくなので自分で作ってみることにしました。
### スキル感について
普段の仕事ではWebエンジニアをしており、ReactやNext.jsなどを主に触っています。ネイティブアプリに関してはちんぷんかんぷんな状態で、Flutterについても同じです。ChatGPT先生を頼りまくることになりそうです。
### 作るものを決める
まずどんなメモアプリを作るかを決めます。自分がメモアプリを使うことを想像しながら、とりあえず紙に書いてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.
現在のAndroid開発ではライフサイクルメソッドのオーバーライドは推奨されてないけど、もっといい方法ないかな話
# 概要
昔は当たり前であった実装方法が現在では、推奨されなくなってたりします。たとえば、`onResume()`などのライフサイクルメソッドでもオーバーライドを現在ではしなくなっています。
[公式](https://developer.android.com/topic/architecture/recommendations?hl=ja#compose_1)には以下のように「アクティビティやフラグメントのライフサイクルメソッドをオーバーライドしない」というのを強く推奨してます。
![スクリーンショット 2023-12-17 2.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10494/192be228-54cb-66b0-4ddd-2e4244466322.png)
対応方法は書いてあるのですが、ここで、`callbackFlow`を使って、ライフサイクルも`Flow`として管理すると使いやすいかもね。という話です。
# 公式の対応方法
書いてある通りです。Lifecycle