Android関連のことを調べてみた

Android関連のことを調べてみた

AndroidStudioのlogcatを見やすくする方法

# 概要
AndroidStuioを最新版にアップグレードしたところ、logcatが見にくくなった。
![スクリーンショット 2023-12-03 10.57.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183689/bd1c86e5-152c-bece-09c9-5fcf652b195b.png)
「com…ew.rebuildingsagaanotherstory」の表示などが出るようになり、元々表示したいログが改行されてしまう。(元々のlogcat設定が消えてしまったからかも)
# 解決方法
Logcatの以下のアイコンをクリックする。

![スクリーンショット 2023-12-03 11.00.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183689/e4c35a19-c107-5917-5c36-fede4a9d6547.png)

デフォルトで「StandardView」にチェックが入って

元記事を表示

無関心な ViewModel

この記事は [Android Advent Calendar 2023](https://qiita.com/advent-calendar/2023/android) 3日目の記事です。

Android Developers ガイドの下記の図で示されるように UI Layer である ViewModel から直接 Data Layer への関心をなくしたいです。 ViewModel から Data Layer へのアクセスは Domain Layer に任せます。

UI layer cannot access data layer directly, it must go through the Domain layer

https://developer.android.com/topic/architec

元記事を表示

【体験記】私がモバイルエンジニアを続ける理由

こちらはアドベントカレンダーの2日目です。
まだ1日目の内容を見てない方はこちらを先にご確認いただけると幸いです!
https://qiita.com/minomusi/items/2e256e441654889bbbbd

それでは始めます:smiley:

## エンジニアを続けるか悩んだ数年とそこから
1日目の記事の最後に記載しましたが、私が新人の時は全く役に立たない新人だったなぁ〜と今考えると思います。

そんなこんなで1年、2年とエンジニアの仕事をし続けていた毎日ですが、常に「自分はエンジニアでずっと食べていくのだろうか?」、「向いてないのではないか?」ということを考えていた日々でした。
しかし、面白いことに最初は全くわからなかったモバイルアプリの開発ですが、2年もほぼ毎日してると少しずつですがわかるようになり思っていることを実現もできるようになって行きました。
(上司、先輩、同期などの支えが多くあったのは事実です。私一人の力では絶対に無理でした。)

そして3年目で初めて、携わっていたAndroidアプリの技術責任者をすることになります。

## モバイルアプリ超楽し〜
3

元記事を表示

スマホアプリ開発を始めたい自分がMacBook Pro 14インチ(M3 PRO)を選んだ理由

初投稿です。

これまで組み込みやWindows開発を経験してきましたが、ふと副業でスマホアプリ開発をやってみたい!と思い立ち開発用にMacを購入することになりました。

この記事では
* なぜMacなのか?
* なぜBookなのか?
* なぜM3 PROなのか?

について私なりに考えたことをご紹介します。
ベンチマークやレビューは既にたくさん記事があると思うので、この記事では初心者の視点で選ぶ際に考えたことを書いてみます。

似たような境遇の方がいらっしゃれば少しでも参考になれば幸いです。

## 購入したモデル
私が購入したのはMacBook Pro 14インチ(Late 2023, M3 PRO)です。

* プロセッサ: M3 PRO(11コアCPU, 14コアGPU)
* RAM: 18GB
* SSD: 1TB

プロセッサ、RAMはM3 PROとしては最低構成、SSDは最低構成の512GBからアップグレードしました。

M2世代と比べるとM3とM3 MAXの進化が目覚ましかったため、やや影の薄い感のあるM3 PROですが、個人的にはコスパは決して悪くないように思っていま

元記事を表示

恥ずかしがり屋の ViewModel

この記事は [Android Advent Calendar 2023](https://qiita.com/advent-calendar/2023/android) 2日目の記事です。

恥ずかしがり屋の ViewModel ということで property を公開しすぎないようにしたいです。

[1日目](https://qiita.com/ykws/items/a418572adffc8192ef30)に続き Android Developers でガイドで示されているサンプルからコードを抜粋して紹介します。

https://developer.android.com/topic/architecture/ui-layer#samples

## Good

`StateFlow` を公開するのがシンプルでわかりやすいです。

“`kotlin
private val _state = MutableStateFlow(HomeViewState())

val state: StateFlow
g

元記事を表示

Pixel6のNativeカーネル上でdockerを動かす(Androidのカスタムカーネル)

## はじめに
Android上でdcokerが動けば便利じゃないかな〜と思いつつ、ズバリそれなページがあったのでチャレンジしてみました。

**Docker on Android(こっちがメイン)**
https://gist.github.com/FreddieOliveira/efe850df7ff3951cb62d74bd770dce27

**Docker-native-on-Termux-on-Android(上記ページの補足的な情報として)**

https://github.com/Morakhiyasaiyam/Docker-native-on-Termux-on-Android

セルラー通信(4G / 5G)ができるスマホ端末をホストに、docker絡みの開発やら動作環境が作れるので便利かな〜と。色々な

元記事を表示

Compose MultiplatformでいつものQiitaビューアを作ってみた

この記事は[NTTテクノクロス Advent Calendar 2023 シリーズ1](https://qiita.com/advent-calendar/2023/ntt-tx)の2日目です。

こんにちは、NTTテクノクロスの戸部@etctaroと申します。

普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。

毎年恒例のアドカレですが、今年も私はComposeで記事を一本を書きました。

今回のお題は「Compose Multiplatform」です。

★ところで、記事の前に宣伝です。

先日まで開催されていた技術書典15では当社の仲間と書籍を出しています。
今回私が執筆した本は以下の通り。

– [ゼロから始めるFlutterアプリ開発入門 2023.11版](https://techbookfest.org/product/5925951072370688)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

ExoPlayer供養

# ごあいさつ
この記事は[Globeeアドベントカレンダー](https://qiita.com/advent-calendar/2023/globee)2日目の記事です。

この度はExoPlayer供養にご列席下さりありがとうございます。
ExoPlayerがDeprecatedになったことで、出す機会を失ったナレッジを記事化し、ExoPlayerの供養としたいと思います。

# この記事で書きたいこと
* ExoPlayerを使用して、俺俺HLSのマニフェストをパースして再生する
* ExoPlayerを使用して、DRMコンテンツを再生する
* 複数のフォーマットのコンテンツ保護を共存させる

# この記事でやらないこと
* コンテンツ保護の意義や解説
* 一般的な使い方

# ExoPlayerで俺俺HLSのマニフェストをパースする
HLSはDRMに比べると弱いと言われていますが、逆を言えば融通が聞くということでもあります。
マニフェストファイルを独自フォーマットに変更すれば鍵の取得など、コンテンツ管理に融通を利かすことができます。

## 1. パサーを実装する
HLSのP

元記事を表示

【体験記】私がモバイルエンジニアになった経緯

## はじめに
初の一人アドベントカレンダーの記念すべき1日目となります。(うっかりしていて、日付を超えてしまったのは内緒:innocent:)

1日目ということで、少し自分の過去について考えてみようと思います。
もしよければ最後までお付き合いいただけると幸いです!:writing_hand:

## 情報系の学校に入学した経緯
私は幼い頃から、PCと触れ合っていて機械大好き!!という人間ではありません。
初めて自分のPCを持ったのは専門学生になる際に学校から言われた時です。
それまで家庭ではPCに触れ合う機会は全くなく、中学や高校での情報の授業で触るくらいのレベルでした。

ですので、ローマ字入力もまともにできない。そんな状態で情報系の専門学校に行きました。
(正直いうと第一志望校に落ちてしまい、家庭事情などからその専門学校しか行ける学校がなかった:rolling_eyes:)

では入ってみてどうだったかというと。。。
– 周りはPCに詳しい連中が多い。
– 既にプログラミングを齧ってきている人が半数以上。
– タイピングの実力テストでは**ダントツの最下位**。

と中々のハー

元記事を表示

Androidのアニメーションオフ設定が地味だけど結構インパクトでかかった話(Composeでボイボ劇場も作ったよ)

# 導入

発覚など結構リアルに近いシナリオのボイボ劇場をComposeだけで作ってみましたのでもしよければご覧になってください!こちらの記事で同様のノリで書くと抵抗ある方もいると思ったため、こちらでは動画で触れていないコード部分について中心にいつも通り書いていきます。

## 意外と見落としがちな「ユーザー補助」

動画でも触れているのですが開発者オプションで昔からある、アニメーションスケールを一律オフにするかなり強めのオプションと

元記事を表示

Android 階層型アーキテクチャ データレイヤについて

# はじめに
Android Developersで紹介されている階層型アーキテクチャの中にはデータレイヤという層が存在するので、簡単にまとめてみる。

# データレイヤの構造
データレイヤにはアプリに必要なデータとビジネスロジックが含まれる。UI関連の状態やUIロジックに関してはUIレイヤの責任範囲になる。
また、データレイヤはRepositoriesとDataSourcesによって構成される。

## Repositories

命名規則は

データの種類 + Repository

例:NewsRepositoryなど

### リポジトリの持つ役割

– アプリの他の部分にデータを公開する。
– データの変更を一元管理する。
– 複数のデータソース間の競合を解決する。
– アプリの他の部分からデータソースを抽象化する。
– ビジネス ロジックを格納する。

### リポジトリはコンストラクタでデータソースを受け取る

“`kotlin
class ContentRepository(
private val contentRemoteDataSource: Con

元記事を表示

300 contribution から毎月Qiita投稿して6ヶ月で 1000 contribution 到達した話

# アドベントカレンダーの季節ですね^-^
こんにちは!
STORES 株式会社で STORES 決済 のAndroidエンジニアをしています、[みっちゃん](https://twitter.com/mimimi_engineer)です!

今日は12月1日!

エンジニアのみなさんはそろそろ会社のテックブログやQiitaなどのアドベントカレンダーに参加するぞと意気込んでいることかと思います。

実は私、2023年の目標に「毎月1記事書く」というのを掲げておりました。

![スクリーンショット 2023-10-20 14.25.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/8dbbe723-f1fc-4df8-63db-3e9b0a4cb0d5.png)

:::note warn
急にこんなものを見せられて困っている方もいるかと存じますが、私は目標厨なので毎年一年の初めに目標を設定し、年末に振り返ります。
:::

2022年12月時点では300 contributionもないく

元記事を表示

【Jetpack Compose】特定の文字だけ色を変える

# はじめに

この記事は[and factory.inc Advent Calendar 2023](https://qiita.com/advent-calendar/2023/andfactory) 1日目の記事です。

and factoryでandroidエンジニアをやっていますが、
今年学んだ小さいチップスを共有したいと思います。

# 特定の文字だけ色を変えるComposable

Jetpack Composeネタです。
こういうことしたいケースは稀ですが検索候補でヒットした文字列だけ色を変えるとかで使えそうですね。

![スクリーンショット 2023-07-06 10.54.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193770/617c6dff-918b-cbf0-459b-2c72cfe5633d.png)

# とりあえずコピペしよう

サンプルは赤色ですが、上記のプレビュー画像はオレンジ色の独自のカラーを指定しています。

“`kotlin
// 指定文字列を指定色

元記事を表示

テスト自動化の実行環境について考えてみた

# はじめに :xmas-tree:
Airtestを使用したE2Eテストの自動化を行なっています。最近はiOSとAndroid環境でデイリーのビルドに対して自動テストの実行を行い、ブロッカーチェックとして活用しています。
元々検証用のPC環境を順次増やしていった経緯から、iOSとAndroidで実行するPCが分かれていました。最近、この環境を統合する必要が出てきたため、その作業を行う中でいくつかの課題と今後の構成を考える機会があったので、その内容についてまとめてみたいと思います。

# 統合前の環境
図のようにキューを使用したシーケンシャルな実行環境になっています。スマートフォン端末も1台だけなのでとてもシンプルな構成です。

![スクリーンショット 2023-11-28 10.49.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/6c01ec0e-570d-e4af-0094-c496bf399cf4.png)

– tirgger.py:ビルドが作成されるとSlackメッセージ

元記事を表示

[Delphi] Android のダークモードに対応する方法

# Delphi はダークモードに対応していない

Delphi はスタイルで見た目をコントロールしているので、ダーク系のスタイルにすればダークモードになるよ、などと一部の記事に書いてありますが、それは残念ながら嘘です。
スタイルでダーク系の色になるのと、ダークモードの対応は全く別の話です。

↓下記の画像はダークモードが有効な端末でダーク系のスタイルにした所です。
ナビゲーションバーが白背景になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/e445746f-c169-2cae-f031-65a51b52d081.png)

↓これはデフォルトのカメラのナビゲーションバーです
ちゃんとダークモードの色(黒背景)になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/a3f90e61-1c17-8626-ba65-15c3e4c1232a.p

元記事を表示

Jetpack ComposeでViewModelに任意のパラメータを渡したい

この記事は[ZOZO Advent Calendar 2023 シリーズ 3](https://qiita.com/advent-calendar/2023/zozo)の1日目の記事です。

# 概要

Android Architecture Componentsの[ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel?hl=ja)を利用する機会は多いかと思います。[Hilt](https://developer.android.com/training/dependency-injection/hilt-android?hl=ja)と一緒に使用すると次のようになります。

“`kotlin
@HiltViewModel
class SampleViewModel @Inject constructor() : ViewModel() {
// ViewModelの実装
}
“`

この時、次のようにコンストラクタにパラメータを持たせ、ViewModelのインスタンス

元記事を表示

ViewModel に依存しない Composable を書こう

この記事は [Android Advent Calendar 2023](https://qiita.com/advent-calendar/2023/android) 1日目の記事です。

Composable が ViewModel に依存すると Preview を書くのが難しくなったり、 ViewModel を Composable から触れすぎてしまうのでコードが複雑になりやすいので避けたいです。

Android Develpers のガイドで示されているサンプルからコードを抜粋して紹介します。

https://developer.android.com/topic/architecture/ui-layer#samples

## Good
次のような ViewModel に依存していない Composable を書きたいです。

“`kotlin
@Composable
fun HomeContent(
featuredPodcasts: PersistentList,
isRefreshing: Boole

元記事を表示

[チュートリアル4]compose multiplarformのサンプルコードを変更して勉強する

# はじめに
[公式ドキュメント](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-modify-project.html)の和訳と要約+αです。
前回は[これ](https://qiita.com/shunk0616/items/38177619d4d771685d7e)

# ライブラリを導入する
Kotlin Multiplatformのライブラリを導入する場合には、composeApp/build.gradle.ktsをいじります。
そういうライブラリがないときにはそれぞれのプラットフォーム固有のライブラリを使わないといけないらしい。(難しそう)

ちなみにKotlin Multiplatformのライブラリ一覧をまとめてくれているサイトもあります。
[Kotlin Multiplatform libraries](https://libs.kmp.icerock.dev/)

## 手順
1. composeApp/build.gradle.ktsを開く
2. comm

元記事を表示

[チュートリアル3]compose multiplatformのサンプルコードを解説する

# はじめに
[公式ドキュメント](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-explore-composables.html)の和訳+αです。
[前回はこれ](https://qiita.com/shunk0616/items/0ee8f513f953fed468fd)

そしてjetpack composeの基本的な解説になるので、compose multiplatformの解説って感じじゃないですね。知ってる方は飛ばしてください。

一応コードを貼っておきます
“`
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
impor

元記事を表示

[チュートリアル2]compose multiplatformでアプリを作るとき最初にやること[Compose multiplatform]

# はじめに
[公式チュートリアル](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html)の和訳と要約+αです。
前回は[環境構築](https://qiita.com/shunk0616/items/747d651f2a94f6a6ec9c)

# 手順

## Android Studioで開くまで
1. [kotlin multiplatform wizard](https://kmp.jetbrains.com/?_gl=1*rxwzv*_ga*NDQ4NjkzNTk5LjE2OTY2NTYwODQ.*_ga_9J976DJZ68*MTY5OTI3MjEyMC4xMC4xLjE2OTkyNzI4MjYuNTEuMC4w&_ga=2.179882465.432039280.1699264914-448693599.1696656084)に行く
2. project nameに自分の作りたいアプリの名前を入力
3. androidとde

元記事を表示

OTHERカテゴリの最新記事