- 1. Androidで「ロジックとデータの一体化」を実践してみた
- 2. Androidでアプリ外のスクリーンショットを撮る
- 3. スマホアプリのUIデザイン指示書のすゝめ
- 4. ?Processing for AndroidでARお寿司爆弾を実装する
- 5. suspend関数ってなに?
- 6. 【Android】ライフサイクルのオーバーライドが非推奨になっていた話
- 7. Minecraft Education Edition の個別ライセンス活用について
- 8. AAudioの実力を測る
- 9. MutableStateFlowのupdate()とvalueの違いについて
- 10. 急遽Androidエンジニアになった時にインプットすべき内容について
- 11. Github Actions + PythonでGoogle Playの段階リリース状態をチェックする
- 12. アクセシビリティに配慮したモバイルアプリの作り方(開発視点)
- 13. 今話題のChatGPTと一緒にAndroidアプリを作ろう!
- 14. [Android][ADB] adb devices unauthorized の修正法
- 15. Androidのレイアウト、バリア(barrier)の使い方
- 16. 5G対応アプリをつくろうZ!
- 17. 【Jetpack Compose】特定の条件のときだけModifierを追加したい
- 18. 言葉はまるで雪の結晶、溶けていって消えてしまう、Androidチャットアプリ
- 19. JetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装方法
- 20. 【Jetpack Compose】Composeとxml形式のレイアウトを共存させる
Androidで「ロジックとデータの一体化」を実践してみた
# 「ロジックとデータの一体化」とは
以前、私が所属するコミュニティでプリンシプルオブプログラミング輪読会を行なっていました。
プリンシプルオブプログラミングとはその名の通り、プログラミングをする上で原理原則となるような概念や知識が書かれている名著です。
その本の3.7章(p74)に「ロジックとデータの一体化」というテーマがあります。
その章の内容を要約すると以下の通りです。– データとその操作は近くに
– ロジックとデータをコード上で近くに配置する
– データと操作は修正タイミングが同じだから# 当時の私
この章を読みたての頃は、自分の経験に落とし込めていなかったので、あまりよく理解できていなかったです。
具体的にはこのような疑問が頭に浮かんでいました。– この文脈でいうデータってなに?
– ロジックって例えば?
– 近くに置くってどういうこと?# Androidで言うとこういうこと!
最近個人開発をしていて、やっと経験に落とし込めたので共有します!
結論から言うと、「ロジックとデータの一体化」はUIStateを適切に実装する上で必要な考え
Androidでアプリ外のスクリーンショットを撮る
# はじめに
Androidアプリで他のアプリやホーム画面などのスクリーンショットを撮りたい事案が発生したので、やり方を記しておきます。# 動作環境
Kotlin 1.6.21
AndroidStudio Bumblebee(2021.1.1)
CompileSdkVersion 32# 注意点
設定アプリでは画面上にViewを出せないので、この記事の方法ではスクリーンショットを撮れません。# サンプルアプリ
記事内では説明のため省略している箇所がたくさんありますので、実際に試す場合はぜひサンプルアプリを見てみてください。
[ScreenshotOutsideApp](https://github.com/mizu9855/ScreenshotOutsideApp)# 実装
## Permission設定
AndroidManifestに以下のPermissionを追加しておきます。
“`AndroidManifest.xml
スマホアプリのUIデザイン指示書のすゝめ
:::note info
この記事は [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) のカレンダー4の5日目です。
:::# はじめに
こんにちは、今年の4月にZOZOに中途入社した@inokinnです。
会社やチームといった環境によって仕事の進め方は千差万別ですが、デザイナーさんからエンジニア向けのデザイン指示のやり方も例外ではなく、手法は多数あるかと思います。
本記事では、これまでの私のスマホアプリの開発経験から、実装する側から見たデザイン指定について分かりやすく、議論や実装を進めやすいと感じたやり方について本記事にて紹介していきます。
ここで挙げる内容はデザイナーだけではなく、エンジニアや企画も含めて案件の進め方として検討すべきことだと思っています。人によっては「そんなの当たり前じゃん」と感じるような内容も多く含まれるかもしれませんが、お付き合いいただけると幸いです!
# 1. アプリ内で利用するカラーがすべて定義され、命名されているとうれしい
私が担当したとある新規
?Processing for AndroidでARお寿司爆弾を実装する
# はじめに
この記事は[クソアプリ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kuso-app) の3日目の記事です。
投稿が遅れてすみません(土下座)今回はProcessing for AndroidのAR機能を使ってお寿司爆弾を作りました。
具体的には、**「スマホカメラから取り込んだ現実世界の映像にARでお寿司の3Dモデルを重ねて配置して、一定時間が経過するとお寿司のネタが吹っ飛ぶ」** というAndroidアプリを作成しました。
「作る目的は?」とか「どんな役に立つの?」とか、そんな問いはクソアプリ開発には無用でしょう!
考えすぎて我に返る前に完成させられるかが勝負です。では参りましょう!# 完成品?
とりあえず完成品をご覧ください。
![osushi_single_low_2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/828745/196c6878-55ca-448c-ca4f-31325d9fa22
suspend関数ってなに?
# はじめに
今回はKotlinを使っていて自然と目にしていたsuspend関数について記事にします# suspend関数
suspend関数とは コルーチンを使用する中で非同期の処理を書き込む関数です
ですが、suspendを関数の修飾誌子としてつけられた関数内の処理が自動的に非同期になるわけではないので、非同期で実行したい場合は**明示的に**非同期処理を指定する必要があるようです。
では、suspend関数では何ができるのかというと
**別のsuspend関数を呼び出すことができる**非同期処理の仕組みをもった関数の事です。# 参考
[Kotlin の Coroutine で suspend 関数を理解する](https://qiita.com/duke105/items/b5be074c79c6bed4d560)
[Kotlin v1.7.21](https://kotlinlang.org/docs/flow.html#suspending-functions)
[KotlinによるAndroidの非同期処理](https://codezine.jp/arti
【Android】ライフサイクルのオーバーライドが非推奨になっていた話
# はじめに
長いことFragmentやActivity上でonResumeやonPauseなどのライフサイクル関数をオーバーライドするというのが習慣となっていましたが、こちらが非推奨になったようです。
こちらに関して簡単にまとめたいと思います。# ライフサイクルのオーバーライドが非推奨になった
[公式](https://developer.android.com/topic/architecture/recommendations#lifecycle)のベストプラクティスには、以下記載があります。
![スクリーンショット 2022-12-04 17.07.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354522/3cd199b0-5da6-d354-43b8-c25860f6aba9.png)
上記には**強く推奨**とあり、少々圧を感じますね、、、
実装的には以下のように変わる形となります。Before
“`
override fun onPause() {
super.o
Minecraft Education Edition の個別ライセンス活用について
# Minecraft Education Edition について
Minecraft Education Edition (以降、Minecraft EE) は、教育目的に提供されているマインクラフトで、Windows、macOS, iPad OS, Androidなど複数OSでアプリが提供されています。
Minecraft EEについて、まずはどんなものか知りたい人は以下のMinecraft Learnで無料で学習できます。
https://learn.microsoft.com/ja-jp/training/paths/minecraft-teacher-academy/
https://learn.microsoft.com/ja-jp/training/paths/microsoft-esports-teacher-academy/
## Minecraft Education Edition で個別ライセンスが購入できるようになりました
Minecraft EEが通常のMinecraftと異なる点は、ライセンス体系です。アプリストアから課金するのではなくて、M
AAudioの実力を測る
Googleが開示しているAndroid開発ガイドによれば、AAudioの章で、「GitHubで入手可能なオープンソースoboeライブラリの使用」を推奨?していたので、oboeを下敷きにして音声アプリを作った。その結果、以前に使用したことのある「AudioRecord/AudioTrack」というAPIと比較して格段にレイテンシが改善されていることを確認した。下図に示す通り、マイク入力→イヤホン出力までの時間を計測すると、一桁改善していることがわかる。
当方のアプリは、音声をトランペットの音に変換するものであり、演奏時の応答性の観点では、「まあメロディ系なら及第点はあげられるかな」という感触である。しかし、ドラムやピアノなどのリズムセクション系の楽音は、数msecオーダーに改善する必要があるだろう。
![AAudioの実力.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659855/21183a0e-bdb0-a280-a783-5a43c7653fcd.png)
MutableStateFlowのupdate()とvalueの違いについて
こんにちは。
[bitFlyerのAdvent Calendar](https://qiita.com/advent-calendar/2022/bitflyer) 4日目の記事です。当日に締め切りに気付いて大慌てでKMMについて書こうとしたのですが、iOSの環境構築(M1へのpodの導入、実機デバイスへのインストールなど)でどハマりしてしまい・・・
なんとか解決したのですが気付いた頃には現在21時、題材変更を決めました。今回は __MutableStateFlowのupdate()とvalueの違いについて__ 書きたいと思います。
皆さんはStateFlowを使ったことはありますでしょうか。
実は私はずっとLiveDataを使っていて、初めて使ったのは一年半前だったりします。ところで、LiveDataの値を書き換えるときは
“`kotlin
_liveData.value = “updated value”
“`
こんな風に書きますよね。
でもメインスレッド以外でこれをやると落ちるので
“`kotlin
_liveData.postValue(“updated
急遽Androidエンジニアになった時にインプットすべき内容について
[ディップ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/dip-dev) 4日目の記事です。
# はじめに
筆者は現在Androidエンジニアです。
なった経緯は前職でiOSエンジニアとして採用されたが、入社4日目に
「Androidエンジニアとして働いてくれないか」
と言われ、言語含め全く未経験の状態から転向したというものになります。
当時はキャッチアップの時間やフォローの体制がない中プロダクトのソースコードと作業指示を与えられ、どう進めて行けば良いのかわからず困り果てていた記憶があります。「今の自分なら喰らいついて生き残るには、何をどうキャッチアップするだろうか」を記事にします。
# ターゲット
– 実務独学問わず別分野の開発経験はあるが、Androidは全くの未経験の人。
会社により環境が異なりますが、ここでは
「キャッチアップの時間をほとんど与えられておらず、自分でなんとかしないといけない」
状況を想定。– (サブターゲット)モバイルエンジニア未経験者として実務で何をインプットすれば良いか
Github Actions + PythonでGoogle Playの段階リリース状態をチェックする
この記事はand factory.inc Advent Calendar 2022 4日目の記事です。
昨日は @ticktakclock さんの [【Jetpack Compose】特定の条件のときだけModifierを追加したい](https://qiita.com/ticktakclock/items/9998a94e92c7c13df70a) でした。# 背景
AndroidアプリのアップデートをGoogle Playへ公開する際、[段階的な公開](https://support.google.com/googleplay/android-developer/answer/6346149?hl=ja)を利用して一定の割合のユーザーにのみアップデートを提供し、その割合を徐々に上げていくリリース方法をとるプロダクトは少なくないと思います。
Google Playの段階的な公開の割合は手動で変更する必要があるため、短いサイクルで頻繁にリリースを行っていると割合の変更をつい忘れてしまうことがありました。現在公開されているアプリの状態は[Google Play Andr
アクセシビリティに配慮したモバイルアプリの作り方(開発視点)
# 初めに
**アクセシビリティは開発で無視されがち**ですが、やり方がわかれば、アクセシビリティに配慮するのはそこまで難しいことではありません。
この記事ではアクセシビリティに配慮したアプリの作り方を例を交えながら説明します。
# アクセシビリティに関して
## アクセシビリティの定義
この記事で言うアクセシビリティに配慮するというのは、**スクリーンリーダー(TalkBack / VoiceOver)による読み上げと操作**に対応することを指します。
正確に言えば、認識しやすい色の使い方や小さすぎない文字サイズなどもアクセシビリティに含まれますが、デザインに関わる部分はここでは取り上げません。
## アクセシビリティの基本原則
### 1. 説明の文字がないかつ意味を持つ要素に対しては説明ラベルを指定する
説明の文字がないですが、その要素自体は意味を持つ場合は説明ラベル
– Android: contentDescription
– iOS: label / accessibilityLabelを指定すべきです。
注意する必要があるのは、要素自体が意味を
今話題のChatGPTと一緒にAndroidアプリを作ろう!
これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.2 の 4 日目の記事です。
昨日の投稿は @ssssota さんの「[JSON SchemaのanyOfをTypeScriptの型で表現する](https://qiita.com/ssssota/items/7e05f05b57e71dfe1cf9)」でした。[ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) をご覧のみなのもの〜!
おはこんハロチャオ~!ZOZOでAndroidアプリ開発を担当しております。 @umsys です。お察しの通り最近はポケットモンスタースカーレット・バイオレットにハマっています。
ナンジャモさんかわいいですね。さて、今回は今話題の[ChatGPT](https://openai.com/blog/chatgpt/)と一緒にAndroidアプリを作ってみました!
AIによる仕事の
[Android][ADB] adb devices unauthorized の修正法
# 概要
Android 実機をmacに繋ぎ 実機debugしようとしたが
adb に認識されない ( 以下“`
$ adb devices
List of devices attached
R58NC0HZ64J unauthorized
“`# 原因
一般にAndroid実機に繋ぐと `USB接続を許可しますか` dialogが出る
が
(なんらかの理由で) 今回はそれが出てない# 解決法
とりあえず以下をやってみる:
“`
rm ~/.android/adbkey
adb kill-server
adb start-server
“`でUSB繋ぎ直してみる…
->
Android実機のSettings -> developer optionsで `allow USB debug` を許可済み 確認をし
`Revoke USB debugging authorization`
でrevoke もしてみるそれでもだめなら
`Developer options` 自体をoff
にする私(今回)の場合、
onにしたところ再度許諾のd
Androidのレイアウト、バリア(barrier)の使い方
# barrierとは?
今回はAndroidのレイアウトの編集でバリア(barrier)の使い方について説明します。
例えばこんなレイアウトがあったとします。
![Screenshot_20221203_210115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933408/5f7f41d3-3a0b-9f3c-0f6d-3ea6d3523b95.png)
タイトル1に対して、なんかの値1
タイトル2に対して、なんかの値2
があって、これらを全部DBや設定ファイル、あるいはHTTPで他から取ってきて表示するとします。
今上の画面はタイトル1がタイトル2より長いので、タイトル1に合わせて、その右側のなんかの値1、なんかの値2の位置を決めています。しかし、状況によってはタイトル1とタイトル2の長さが逆転する場合があります。こんな風に・・・
![Screenshot_20221203_210200.png](https://qiita-image-store.s3.ap-northeast-1.ama
5G対応アプリをつくろうZ!
この投稿は、私が所属するKDDIテクノロジーで行っているアドベントカレンダーの3日目の記事となります。
モバイル通信の第五世代目の通信規格「5G」。対応エリアも広がり、5G端末を使っていれば、アンテナ横の「5G」のマークが点いていることも事も多くなりました。しかし、まだまだ5Gは進化中です。
私の本日のアトレベントカレンダーでは、この5Gの現在を読み物として紹介します。# 5GアプリつくろうZ
「今のアプリを5G対応にしましょう」
「5Gのアプリを開発しましょう」
このようなコトバを発したとしたら「いやいやいや、アプリ関係ないでしょ、何もしなくても5Gで通信できているし」という声が聞こえてきそうです。That’s 正しいです。5G通信を行うために、アプリが開発時に対応しなくてはならない開発項目はありません。スマートフォンが5G対応であり、かつ5Gの電波のエリア内にいれば、自動的に5Gの通信が開始してくれます。
普通にアプリを作れば5G通信ができる「5G対応アプリ」となっているわけで、5G対応できないアプリなんてものは無いのです。そういう意味でも「5G対応アプリ」という言葉を聞
【Jetpack Compose】特定の条件のときだけModifierを追加したい
# はじめに
この記事はand factory.inc Advent Calendar 2022 2日目の記事です。
昨日は @doihei さんの [GitHub Apps + Dangerをやってみる](https://qiita.com/doihei/items/6dd338f2e55665cdaf28) でした。# 特定の条件のときだけModifierを追加したい
jetpack compose で開発しているとちょいちょい
– hasRead(既読)のときだけ背景をグレーにしたい
– isRecommend(オススメ)のときだけ文字色を青にしたいということをしたいケースがあったりします。
“`kotlin
if (hasRead) {
Box(
modifier = Modifier.background(Color.Gray)
){
// 既読用のコンポーザブル
}
} else {
Box(
modifier = Modifier.background(Color.Gray)
){
// 未読用のコンポー
言葉はまるで雪の結晶、溶けていって消えてしまう、Androidチャットアプリ
[クソアプリ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kuso-app) 4日目の記事です。
Official髭男dismの「Subtitle」という曲が心にとても沁みます。
歌詞の一部を引用します。>言葉はまるで雪の結晶
君にプレゼントしたとして
時間が経ってしまえば大抵
記憶から溢れ落ちて溶けていって
消えてしまううっかりしたことが、フジテレビ系ドラマ「silent」を見逃してしまったこと。なんでも「泣けるドラマ」だそうで話題ですね。このドラマの主題歌でもあります。
何度も聴いているうちに、思い付いたのがこんなAndroidアプリです。
![animation (2)-min.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100612/c41a0beb-dca4-9681-7ec2-15df14caacdc.gif)
相手のメッセージが溶けて消えるチャット
JetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装方法
今回はJetpackComposeでFloatingActionButtonの中央にアイコンを表示する実装を行いたいと思います。
単純なFloatingActionButtonでアイコンだけ表示させたい時に、中心ではなく左寄せで表示されてしまっていたので、中央にアイコンだけ表示させたい場合の実装方法です。
# 実装方法
こちらはそのまま`icon`に設定した場合です
“`ExtendedFloatingActionButtonView.kt
@Composable
fun ExtendedFloatingActionButtonView() {
Column {
ExtendedFloatingActionButton(
icon = { Icon(Icons.Filled.Favorite, “Favorite”) },
text = { Text(“”) },
onClick = { /*今回は説明に必要ないので省略します。*/ },
elevation
【Jetpack Compose】Composeとxml形式のレイアウトを共存させる
## 概要
xml で作成したレイアウトの一部を Compose に置き換える方法と、反対に Compose で作成した View に xml 形式のレイアウトを組み込む方法をご紹介します。## 環境
Android Studio verion: Android Studio Dolphin | 2021.3.1 Patch 1
kotlin version: 1.7.10
compose version: 1.3.1## xml の一部を Compose に置き換える
Compose をレイアウトの一部にだけ導入したい場合は、xml の “`ComposeView“` タグを使います。
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた