- 1. 店舗BGMアプリ『Simple BGM』課金ユーザーの非自発的解約防止のためプッシュ通知を実装した件
- 2. DELETE APIにBodyが必要な時の実装方法
- 3. AppsFlyerとそのアトリビューションの仕組み
- 4. 『Relay』Figmaを用いてAndroidUIを作成する方法 [JetpackCompose]
- 5. Unity初心者向け3Dキャラを動かす方法(おまけでAR化)
- 6. Unrecognized Android Studioから始まった連続エラー解決への道
- 7. Androidのラジオボタンも名前と値のペアで定義する方法
- 8. FlowRowを利用したGridViewのようなUIについて
- 9. Androidの「CDD」と「CTS」を理解する
- 10. Android互換のOSを雑多に理解する
- 11. ion-searchbarでcloseボタンのアクションをユーザフレンドリーにする方法
- 12. Jetpack Compose + MVVM + Hilt で高田健志の伝説アプリを作りたい
- 13. コード上でConstraintLayoutのMATCH_CONSTRAINTを指定する
- 14. 昨今の厳しいセキュリティ要件を満たすドキュメントキャプチャアプリを作った
- 15. Androidで「ロジックとデータの一体化」を実践してみた
- 16. Androidでアプリ外のスクリーンショットを撮る
- 17. スマホアプリのUIデザイン指示書のすゝめ
- 18. ?Processing for AndroidでARお寿司爆弾を実装する
- 19. suspend関数ってなに?
- 20. 【Android】ライフサイクルのオーバーライドが非推奨になっていた話
店舗BGMアプリ『Simple BGM』課金ユーザーの非自発的解約防止のためプッシュ通知を実装した件
# 概要
こんにちは![株式会社ワールドスケープ](https://world-scape.net/)のWakacchiと申します。
弊社は「実力あるアーティストが、公正に、経済的に評価される世界を作る」というミッションのもとに、[Frekul](https://frekul.com/)というアーティストの音楽活動をサポートするプラットフォームを中心としたWEB・スマートフォンアプリの自社サービス開発や受託開発を主な事業としています。今回、自社サービスの[Simple BGM](https://bgm.world-scape.net/)というアプリの、課金ユーザーの非自発的解約を防止するためのプッシュ通知を実装した件を紹介します。
まず”非自発的解約”について補足します。
Androidアプリの定期購読解約には自発的解約と非自発的解約の2パターンあります。自発的解約とは、ユーザーが自ら解約の意思をもってGooglePlayストアから解約したもの。
非自発的解約とは、ユーザーの支払いが完了しなかったために解約されたものです。(例:クレカの有効期限が切れていた、残高不足により決済
DELETE APIにBodyが必要な時の実装方法
# 初めに
今回、自分が地味に詰まったDELETE APIを叩く時にBodyが必要な時の実装方法を紹介していこうと思います
### 本文
早速ですが、実装方法は下記の通りになります
“`kotlin
@HTTP(method = “DELETE”, path = “api_path”, hasBody = true)
“`
DELETEオプションはリクエストの本文が存在しないため、URLのみで識別できる必要があります
そのため普段の@DELETEのみでは実装ができなくなってしまっているのです### 最後に
調べれば意外と出てきますが、日本語での記事がなく初心者エンジニア等が気付かない可能性があるので今回書かせていただきました
何かのお役に立てれば幸いです
AppsFlyerとそのアトリビューションの仕組み
この記事ではAppsFlyerと、その基本的な機能であるアトリビューションについて解説しています。
## AppsFlyerを一言で言うと・・・
[AppsFlyer](https://www.appsflyer.com/ja)はモバイルアプリのデータを収集・整理し、「アトリビューション」を行うことで、広告の効果を統一的に評価するためのプラットフォームを提供するサービスです。
このようなサービスは、モバイル計測パートナー(MMP; Mobile Measurement Patner)という名前でも知られていて、AppsFlyer以外の類似のサービスとしては adjust, branch, Kochava, singular, tenjin 等が挙げられます。
この中で、グローバルシェアがNo.1のサービスがAppsFlyerになります。![AF-logo_Horizontal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73759/eeb0ed79-45cd-6ea0-b1d6-000645
『Relay』Figmaを用いてAndroidUIを作成する方法 [JetpackCompose]
# すみません、まだ完成していません。
# はじめに
アドベントカレンダー7日目を担当します、愛知工業大学一年の牧野遥斗です。よろしくお願いします。
ずっと書く内容を考えていて、投稿が遅れてしまいました。すみません。ではみなさんは、Googleの新しいUiフレームJetpackComposeはご存知でしょうか?
>Jetpack Compose は、ネイティブ UI をビルドする際に推奨される Android の最新ツールキットです。Android での UI 開発を簡素化し、加速します。少ないコード、パワフルなツール、直感的な Kotlin API を使用してアプリをすぐに動かすことができます。
引用文献:https://developer.android.com/jetpack/compose?hl=jaということで、今までより便利にUIを作れるものです。
![スクリーンショット 2022-12-07 7.09.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1209385/705
Unity初心者向け3Dキャラを動かす方法(おまけでAR化)
この記事は、NTTテクノクロス Advent Calendar 2022 の7日目です。
初めまして。NTTテクノクロス田中です。
入社して2年、映像系の開発に携わってきました。
今回はUnity上での3Dモデルのアニメーション編集方法を調べてみました。
おまけで編集したアニメーションをARアプリで表示させてみようと思います。以下の手順で作ってみました。
1.Unityインストール
2.新しいプロジェクトの作成
3.3Dモデルインポート(ユニティちゃん)
4.アニメーションの編集
おまけ.ARアプリ作成
# 1.Unityインストール
・”Unity Hub”をインストール(バージョン:Unity Hub 3.3.0)https://unity.com/download
・インストールが完了したら”Unity Hub”を起動
・”Unityエディターをインストール”をクリック(バージョン:2021.3.14f1)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981449/
Unrecognized Android Studioから始まった連続エラー解決への道
# はじめに
Androidアプリをビルドできなくなり、そこから「1つ解決するとまだ別のエラーが発生」するような状態になってしまいました。。。その過程をせっかくなんでまとめてみました。
# Android Studioをアップグレード
久々にAndroidアプリをビルドしてみると?のようなエラーに遭遇しました。“`console
Unrecognized Android Studio (or Android Support plugin for IntelliJ IDEA) version ‘202.7660.26.42.7486908’, please retry with version 2021.2.1 or newer.
“`Android Studioのバージョンを下げるか最新にしろという事ですね。
https://developer.android.com/studio/intro/update?hl=ja
なぜか` [Android Studio]>[Preferences]>[Appearance & Behavior]>[System Sett
Androidのラジオボタンも名前と値のペアで定義する方法
# え・・・Androidってラジオボタンも名前と値をペアで持っていないの?
[AndroidでHTMLのと、いうことでHTMLのラジオボタンと同じようなことを実現するにはどうするか?考えてみました。
# ラジオボタンの値を取得する
## 取り敢えず、ラジオボタンの名称でやってみる?
とりあえず、こんな画面を考えてみます。ボタンを押した時にラジオボタンのどっちが選択されているかを取得して、
ラジオ1だったら → 1
ラジオ2だったら → 2
をDBに更新するとか、HTTPでサーバに送るとか・・・そんな
FlowRowを利用したGridViewのようなUIについて
### はじめに
FlowLayoutとはGoogleのAccompanistが提供している中の一つのライブラリです。
画面幅に対して折り返していくようなUIを提供しています。`FlowRow`と`FlowColumn`というComposableが提供されております。この記事では水平方向に折り返していく`FlowRow`を使ったGirdViewのようなUIを表現してみたいと思います。### やりたいこと
ComposeでGridView的な表現をしたい場合、`LazyVerticalGrid`がありますが、リストの長さが可変の場合や、スクロールの中でリスト表示以外のUIを差し込みたい場合、`LazyVerticalGrid`だと簡単ではなさそうだなと思い、`FlowRow`をつかってみました。イメージとしては以下のような2列の可変長リストとそれ以外のUIが混ざったようなスクロールできるUIを実装してみたいと思います。
![sankou2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218011/9
Androidの「CDD」と「CTS」を理解する
Androidが広く普及してきました。
今やスマートフォンだけでなく、
様々な製品に搭載されていますが、
その中にはAndroidの互換性の承認を受けている物と
そうでない物があります。**例)**
**Amazon :Fire OS(互換性の承認なし)**
**SAMSUNG:One UI(互換性の承認あり)**今回はAndroidの互換性の承認があるデバイスについて記載したいと思います。
## Android互換性の承認
Android互換性を承認されたデバイスを作成するには、
「CDD」に準拠し「CTS」に合格する必要があります。それ以外のデバイスは「Fire OS」の様に非互換のOSという事になります。
## CDD
「CDD」という言葉が出てきましたが、「CDD」とは何でしょう?「CDD」(Compatibility Definition Document)
日本語で言うと「互換性定義ドキュメント」ですね。#### Androidの互換性を証明する内容は「CDD」にて記載されています
「CDD」は、正規のAndroidと互換性を満たす為
Android互換のOSを雑多に理解する
世に広くAndroidが普及してきました。
スマートフォンのOSとしてだけではなく、テレビ、冷蔵庫、自動車・カーナビ等
(他にもありますが多すぎるので割愛)
さまざまな製品に搭載されています。それらの製品に搭載されているのは
Android OSなのですが、純粋なAndroid OSではありません。それぞれの製品用にカスタマイズされたAndroid互換OSになります。
## Android互換OS
スマートフォン用にカスタマイズされた一部の互換OSでは、
GooglePlayが使えたりして、通常のAndroid OSとほぼ変わらなかったりします。##### しかし、
TVやプロジェクタ等用にカスタマイズされたOSでは、
動画系のアプリを使用する事に特化し、GooglePlayも使用できません。それらのカスタマイズされたOS達と
純粋なAndroid OSの差は何処にあるのかを見て行きます。## ■Androidの構造
Android互換の有無の差を理解するために、まずはAndroidの構造を紹介したいと思います。
Androidの構造は大きく5層構造に
ion-searchbarでcloseボタンのアクションをユーザフレンドリーにする方法
Ionic Frameworkを使っていると、 `ion-searchbar` を利用する場面も多いでしょう。多くのリストから絞り込む用途に使われることがほとんどなのですが、実際ユーザとして使っているとひとつの問題があります。それは、closeボタンを押下しても、 `ion-searchbar` にフォーカスされたままの状態になることです。
![49f09cc0f0d654254dcda801df5f32aa.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100460/b32ff1ba-d2cf-be8c-1bac-2e22a7d9ad41.gif)
closeボタンを押下しても、カーソルが残っていることがわかるかと思います。これは外部キーボードを利用している時は問題になりませんが、モバイルデバイスでオンスクリーンキーボードを利用してる時は問題になります。
__closeボタンを押下してもオンスクリーンキーボードは立ち上がったままです。__
もちろんこれにはシナリオが2つあります。
– 入力内
Jetpack Compose + MVVM + Hilt で高田健志の伝説アプリを作りたい
はじめまして。
ひっそり未来大でM1やってます。ゆめと申します([Twitter](https://twitter.com/YkOxc), [Instagram](https://www.instagram.com/yume.223/))。
本記事は、[FUN Advent Calendar 2022 part2](https://adventar.org/calendars/7426)の5日目の記事です。アドカレに便乗して、初めての技術ブログを書きたいなと思い、参加させていただきました。最近触った技術の備忘録を書こうと思います()。
ブログを書くの初めて+Androidよわよわの人なので、不備や間違い等がありましたらご指摘いただけると喜びます。
# 1.はじめに
筆者は最近Jetpack Composeの勉強を始めました。
Composeで〜、MVVMで〜、API叩いて〜、それをRoomに保存して〜、なアプリを作ろうと手を動かしていると、「composeの場合、引数があるViewModelはどう実装するのだろう」と、悩んでしまいました。
色々なサイトを参照したのですが、**み
コード上でConstraintLayoutのMATCH_CONSTRAINTを指定する
こういうやつをConstraintSetで指定したい
“`.xml
“``constrainWidth`と`constrainHeight`を使う↓
“`.kt
val constraintSet = ConstraintSet()
constraintSet.clone(layout)
constraintSet.constrainWidth(view.id, ConstraintSet.MATCH_CONSTRAINT)
constraintSet.constrainHeight(view.id, ConstraintSet.MATCH_CONSTRAINT)
constraintSet.applyTo(layout)
“`
昨今の厳しいセキュリティ要件を満たすドキュメントキャプチャアプリを作った
[クソアプリアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/kuso-app) 6日目です。
セキュリティインシデント怖いですよね。そんな昨今のセキュリティ事情を考慮に入れたドキュメントキャプチャアプリ「[SecDocCap](https://play.google.com/store/apps/details?id=com.gonsuna.documentcapture)」を作成しました。
Androidアプリです。iPhoneユーザーの皆様すみません。デモだけでも見ていってください。デモがこちらになります。
![Screen_Recording_20221205-120153_Sec_Doc_Cap_AdobeExpress (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259118/c2087510-1961-895b-8ce7-422abf9e2fcb.gif)
1. ドキュメントを撮影します。
1. 斜めから撮影し
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