- 1. ComposeでNavigationを実装する
- 2. Flutterでモバイルアプリ開発着手からリリース後まで。【感想】
- 3. Androidのプロジェクトで横断的にビルド速度を集計できるようにした話
- 4. 【Jetpack Compose】簡単なGuidesスタイルのOnboarding画面を作成する
- 5. 【Android】WorkManagerでHiltを使う
- 6. ONLYOFFICEでモバイル文書処理 〜アプリにモバイルエディタを導入する方法〜
- 7. AndroidでQRコードを読み取る
- 8. about librariesでライセンスを追加する
- 9. 【Jetpack Compose】React HooksとSWRに学ぶ宣言的データフェッチのすすめ
- 10. AdbPad v1.0.0 をリリースしました
- 11. Android×Pythonで気圧計作ってみた
- 12. Jenkins Pipeline Androidプロジェクトの自動配信化をする
- 13. Android Studio・Kotlin・Jetpack ComposeでシンプルなTextfieldを作ろうとしたときに起こったエラー
- 14. Composition over Inheritance – Delegation in Kotlin
- 15. Playwrightで遠隔からAndroidデバイスをぐりぐり動かす。
- 16. Gradle Managed Devicesを使ってみた
- 17. Jetpack Composeで自動スクロールするカルーセルを実装する
- 18. AndroidでE2Eやってみる
- 19. flutter_webviewのWebViewをデバッグする
- 20. UnityIAPで課金を実装する (個人開発者向け)
ComposeでNavigationを実装する
# 初めに
[Android Advent Calendar 2022](https://qiita.com/advent-calendar/2022/android)の16日目の記事です。
今年自分が担当しているプロジェクトにJetpack Composeを導入しました!!
悪戦苦闘しながら、新規画面をComposeで書きつつも、既存の画面もComposeに置き換えてます。
そこで知見を得た、ComposeのNavigationについてお話ししています!## Navigation Compose
Composeで画面遷移をする際は、[Navigation Compose](https://developer.android.com/jetpack/compose/navigation)を使用します。
Google公式が、ComposeのNavigationのpathway(= tutorial)を公開しているので、そちらも進めていただければ、理解できるかなと思います!
https://developer.android.com/codelabs/jetpack-comp
Flutterでモバイルアプリ開発着手からリリース後まで。【感想】
この記事はリリースまでの一連のざっくりとした流れと感想を述べるにとどまり、年一回あるかないかぐらいの貴重なポエムとなっていることご了承ください。
約2年前の貴重なポエムはこちら
https://qiita.com/MasaoSasaki/items/bcdf9272437bdc6001c5
## 経緯
私はDMM WEBCAMPでRoRを学習したのち、インフラエンジニアに転職しました。
入社後の一年はインフラ系の入門的な資格を取得し、情シスなどを経てインフラ周りの業務知識を広く浅く習得しました。
インフラの知識・経験を得てゆくゆくはいつか開発エンジニアにという意志もあり、ご縁もあって今年の4月に開発職に転職しました。
入社後1ヶ月はLaravelのOJTがあり5月に入ると、上司から「スマホアプリどう?」と唐突に提案があり、少し迷いましたがその日のうちにやりますと返事をして、そこからはFlutterのOJTが始まりました。余談かつ周りにはあまり言って来ませんでしたが、スクールの卒業前後には開発職になりたいという意志の裏に、Webアプリがある程度作れるようになったらモバイルアプリ
Androidのプロジェクトで横断的にビルド速度を集計できるようにした話
# 目的
– アプリ開発において必ず発生するビルドという過程。
このビルドの状況を可視化することで、開発の現状を認識する# やったこと
– Droidkaigi2022 @komatatsuさんのセッション「[はじめようビルドメトリクス](https://www.docswell.com/s/komatatsu/ZJD91Z-getting_started_build_metrics)」を参考にgradleからビルド時間をGASで計測する仕組みを導入しています。
## 追加点
### 集計用パラメータの追加
– 追加でビルドしたプロダクトの情報を追加### シートの挿入処理
– 計測処理を他のプロダクトでも気軽に導入してもらえるよう、導入ハードルを極力下げる目的でGASのendpointは同じものを流用しています。
プロダクト名ごとにシートがなければ挿入、あればそのまま記録することで、他プロダクトで導入する際は`build.gradle`への記述追加のみで対応が可能です。“`javascript
function getSheet(name){
//同じ名前のシ
【Jetpack Compose】簡単なGuidesスタイルのOnboarding画面を作成する
この記事は、[リンクバルアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/linkbal)の14日目の記事です。
# はじめに
よくスマホを使えば、多分新しいアプリケーションをインストールして初めて起動しようとするたびに、紹介や使用方法が表示されることがよくあります。 みなさんはそれらを何と呼びますか? チュートリアル、ウォークスルー、ガイド等?
これらは、Onboardingという一般名で知られています。 この記事では、[Jetpack Compose](https://developer.android.com/jetpack/compose)を使用して簡単に作成する方法を紹介します。# Onboarding画面とは
Onboarding画面は、ユーザーがアプリケーションを起動したときに最初に目にするものです。[First User Experience (FUX)](https://www.bunkercreative.co.uk/posts/what-the-fux-is-ux-exactly.html)として知
【Android】WorkManagerでHiltを使う
# まえがき
これはWorkManagerを使って,1日に1度のバックグラウンドタスクをスケジューリングするためのアプリ作ることを目的とします.今回は,24時間分のユーザのアプリ使用履歴を取得してテキストとして記録するという機能を,1日に1度発火させるようにします.
あくまでも備忘録なモチベーションなのであしからず.
# WorkManagerとは
一応,WorkManagerについて触れておきます.以下公式ドキュメント
>WorkManager は、永続処理のための推奨ソリューションです。アプリの再起動やシステムの再起動後もスケジュール設定が維持された場合、処理は永続します。ほとんどのバックグラウンド処理は永続処理で実現することが最善であるため、WorkManager が、バックグラウンド処理に推奨される主要な API です。また,AlarmManagerも似たようなことができますが,これは絶亭に正確な時刻に発火が必要なものに対して使うものであり,WorkManagerに比べるとバッテリーに優しくないそうです.
また,デバイスがオンラインの場合,電源に接続されている場
ONLYOFFICEでモバイル文書処理 〜アプリにモバイルエディタを導入する方法〜
紙文書の必要性は、とっくに過去のものです。文書処理のほとんどはデジタル化されています。ユーザーは外出先でドキュメントを扱う必要があるため、文字通り毎日ノートパソコンやデスクトップにアクセスすることなく、モバイルデバイスで文書処理は特に大きな需要を持っているのです。
この記事では、[ONLYOFFICE](https://www.onlyoffice.com/ja/)によるモバイル文書処理を取り上げ、モバイル統合がどのように機能するかをご説明します。
## アーキテクチャと技術スタック
ONLYOFFICE Document Server の通常のアーキテクチャには、以下のコンポーネントが含まれます。
* [server](https://github.com/ONLYOFFICE/server) – バックエンドサーバーソフトウェア層で、他のすべてのコンポーネントのベースとなるもの
* [core](https://github.com/ONLYOFFICE/core) – ファイルフォーマット間の変換を可能にするサーバーコアコンポーネント
* [sdkjs](https://
AndroidでQRコードを読み取る
# QRコードを読み取るには?
最近はAndroid端末に標準でQRコードが読めるカメラアプリ、アプリ内でもQRコード読取の機能を持ったものがありますが、どうやって実現しているのでしょうか?調べてみました。
使用するライブラリが二種類あります。まずはカメラで画像を読み込むライブラリ。読み込んだ画像をQRコードとして解析するライブラリです。
## カメラライブラリ
本家 Android developer
[Choose a camera library](https://developer.android.com/training/camera/choose-camera-library?hl=ja)
ライブラリは3種類あって、よほどの理由がない限り、CameraXを使用しろと書いてあります。Cameara2はローレベルAPI(CameraXはCamera2の上に構築されている)なのでローベルのカメラの制御が必要な場合のみ使用するのがお勧めだと。* [CameraX](https://developer.android.com/training/camerax?hl=ja)
about librariesでライセンスを追加する
# 初めに
今回は`about libraries`ライブラリを使う際に自動では読み取ってもらえないライブラリのライセンス等を追加する方法を紹介していきます
### 本文
まず、プロジェクト直下に`config`という名前でフォルダを作成します。
その中に`libraries`と`licenses`という二種類のフォルダを作成します。
`libraries`には追加したいライブラリのjsonを、`licenses`には追加したいライセンスのjsonを作成します。
あとは`app`の`build.gradle`に対して以下のコードを追加します
“`kotlin
aboutLibraries { configPath = “config” }
“`
`configPath`に指定したフォルダを参照するようになるので、`config`となっている部分を自分のわかりやすい名称に変更することも可能です
### 最後に
自分が今回、ライセンス画面を作成するときに追加したいライセンスがあったのですが、一昔前の追加方法しか日本語記事が存在しなかったのでわかりやすいように備忘録として残しておきます
【Jetpack Compose】React HooksとSWRに学ぶ宣言的データフェッチのすすめ
## TL;DR
[React SWR](https://swr.vercel.app/ja)をJetpack Compose向けに移植して公開したぞ!
https://github.com/KazaKago/swr-compose
## 前置き
もし今からモダンなAndroidアプリをゼロから書こうと思ったらおそらく[Jetpack Compose](https://developer.android.com/jetpack/compose)を採用したいという人が多いかと思います、いわゆる宣言的UIと呼ばれるやつですね。
![https://developer.android.com/static/codelabs/jetpack-compose-animation/img/5bb2e531a22c7de0_1920.png?hl=ja](https://developer.android.com/static/codelabs/jetpack-compose-animation/img/5bb2e531a22c7de0_1920.png?hl=ja)
この宣言的と呼ばれるト
AdbPad v1.0.0 をリリースしました
![AdbPad v1.0.0 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/f796e140-eb0d-8b13-bf1c-9e59a7288968.png)
# はじめに
AdbPadはAndroidアプリケーションの開発・テストをサポートするGUIアプリケーションです。AdbPadは以下のGitHubリポジトリで絶賛開発中です。よろしければコントリビュート&スター登録お願いします。
https://github.com/kaleidot725/AdbPad
# AdbPadでできること
AdbPadでは以下の機能をサポートしています。
– Windows10/11, macOS対応
– ライトテーマ・ダークテーマ切り替え
– コマンド送信
– テキスト送信
– 各テーマのスクリーンショット撮影![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/ab4ca8
Android×Pythonで気圧計作ってみた
## はじめに
山形大学大学院修士1年のHagianです。この記事は[身の回りの困りごとを楽しく解決! by Works Human Intelligence Advent Calendar 2022](https://qiita.com/advent-calendar/2022/works-hi-1)の15日目となります。
突然ですが、私は頭痛を抱えています。月に1回程度来る偏頭痛のほかに、気圧変動(特に上昇時)によって緊張型頭痛がやってきます。前兆をつかむため、気圧を知りたいな〜と思うことがよくあります。
しかし気圧計が手近にある場合を除いて、気圧を知ることは意外と難しいように思います。気象庁および各地の気象台では観測が行われていて、気象庁のWebサイトから知ることができますが、毎正時かつ海面更正された値であり、実測値ではありません。そこで本稿では、**スマホで手軽に気圧の実測値を得られる**ツールを作成したので紹介します。
### 困っていること
* 知りたいときに気圧を知れない
* 自分の現在地の気圧を実測値で知りたい### 実
Jenkins Pipeline Androidプロジェクトの自動配信化をする
## はじめに
iOSを書いたらAndroidもだろうってことでAndroidの記事です
iOSの記事は[こちら](https://qiita.com/Monden_M/items/2c42137497faaeed4ed7)## この記事の内容
jenkinsのpipelineで
– 開始と終了のSlackの通知
– Gitでのソースの取得
– apkの作成
– apkの成果物の保存
– FireBaseDistributionでの配信を自動化してやってしまおうという内容です。
## 前提条件
– WORKSPACE直下にAndroidProjectがある状態
– AABバージョンで送信する場合はGooglePlayに公開済みのアプリ + FireBaseとGooglePlayを連携させる必要があります。
– 上記の問題があるためFirebaseDistributionで配信をする場合は基本apkで配信の設定までする方が現状は無難かと思います。
– FireBaseCLIを導入し、配信を行うのID,PWにてログイン済み※「Firebase Distribution」を
Android Studio・Kotlin・Jetpack ComposeでシンプルなTextfieldを作ろうとしたときに起こったエラー
# 環境
– Android Studio
– サンプルプロジェクトにあるcompose projectを選択“`build.gradle
buildscript {
ext {
compose_ui_version = ‘1.1.1’
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id ‘com.android.application’ version ‘7.3.0’ apply false
id ‘com.android.library’ version ‘7.3.0’ apply false
id ‘org.jetbrains.kotlin.android’ version ‘1.6.10’ apply false
}
“`# エラー詳細
https://developer.android.com/jetpack/compose/tex
Composition over Inheritance – Delegation in Kotlin
# Favour Composition over Inheritance
When dealing with code duplication and reusabilty issues it is good to favour Composition over Inheritance.
# Overview
– This is a universally accepted concept.
– Inheritance is not always bad.
– Composition is not suitable for or used in all circumstances.
– Kotlin encourages Composition and makes Inheritance harder.
– Design and document for Inheritance else prohitibt it.
– Composition should be the first design choice in mind.
– We sh
Playwrightで遠隔からAndroidデバイスをぐりぐり動かす。
この記事は、[ソフトウェアテスト Advent Calendar 2022](https://qiita.com/advent-calendar/2022/softwaretesting)の11日目の記事となります。
前日11日の記事は、@gremito さんによる「[Appium on Azure Pipelines](https://qiita.com/gremito/items/f2c981a05b8df1a21acb)」でした。本日の記事もアプリの自動操作関連です。https://qiita.com/advent-calendar/2022/softwaretesting
https://qiita.com/gremito/items/f2c981a05b8df1a21acb
## 概要
ChromeやWebKitを自動操作できるPlaywrightはもう皆さんご存知ですよね?
https://playwright.dev/
PlaywrightにはAndroidを自動操作する機能が実は備わっていて、AndroidネイティブアプリケーションもChromeブラウザ
Gradle Managed Devicesを使ってみた
本記事は [メグリ株式会社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mgre) の記事です。
こんにちは。メグリ株式会社でAndroidエンジニアをしている田邊です。
今回はGradle Managed Devicesを使ってみたという記事を書きたいと思います。今年10月に開催されたDroidKaigi 2022で外山さんがご発表された「[Gradle Managed Virtual Devicesで変化するエミュレータ活用術](https://speakerdeck.com/sumio/droidkaigi-2022-gradle-managed-virtual-devicesdebian-hua-suruemiyuretahuo-yong-shu)」を聴講し、個人的に試してみたいなと思っていたところ、今回のアドベントカレンダーのネタとしてちょうど良かったので実際に試してみました。
DroidKaigi 2022に参加したときの感想記事も書いていますのでよかったら御覧ください。
https:/
Jetpack Composeで自動スクロールするカルーセルを実装する
Jetpack Compose の Pager を使って自動で動くカルーセルを実装するときの例になります。
(Jetpack Compose BOM 2022.12.00 & Accompanist v0.28.0 での実装です)#### 実装例
“`kotlin
@Composable
fun rememberAutoScrollPagerState(
interval: Long,
initialPage: Int = 0,
): PagerState {
val lifecycleOwner = LocalLifecycleOwner.current
val pagerState = rememberPagerState(initialPage = initialPage
AndroidでE2Eやってみる
[Ateam Finergy Inc.× Ateam CommerceTech Inc.× Ateam Wellness Inc. Advent Calendar 2022](https://qiita.com/advent-calendar/2022/finergy-commerce-tech-wellness) の14日目は株式会社エイチームウェルネス @yothio が担当します
レガシーなAndroidアプリ/最新のアーキテクチャを上手く追従できていないAndroidアプリを保守していこうと思った時「ロジックが正しいか」といったテストを書こうとしても、Viewとロジックが分離されていないことがあるためユニットテストを書き進めるのは難しく「見た目上変更がない」「アプリケーション全体で見た時に不具合が気づけるように」という思いの元、E2Eテストから先に作ってみようと思いました
# 初めに
最近Webばっかり書いていたのもあり「AndroidでのE2Eは難しそう、あんまりイメージがつかない」と漠然に思っていましたが、実際に触ってみると簡単にできたので「難しいと思って手を出したこと
flutter_webviewのWebViewをデバッグする
# はじめに
WebViewを組み込んだアプリを開発していると、WebViewのCookieや通信内容を見ながらデバッグをしたくなることがあります。
今回は、[webview_flutter](https://pub.dev/packages/webview_flutter)を使用しているwebviewのデバッグ方法を共有します。
※あまりフロントを触ってこなかったので、一部用語等が異なる可能性があります。ご了承ください。## 対象
Flutterのアプリ内WebViewを[webview_flutter](https://pub.dev/packages/webview_flutter)で実装している人## 用語
デベロッパーツール(Chrome)、Webインスペクタ(Safari)、などと呼ばれているアレを使用します。
どうやらChromeとSafariで呼び方が異なるようです。## 環境
– Mac
– Android Studio
“`
Flutter 3.3.9
Dart 2.18.5
webview_flutter: 3.0.4
“`# Flutter
UnityIAPで課金を実装する (個人開発者向け)
# 概要
課金アイテムを実装してと言われてUnityIAPを触ることになった人に向けて備忘録として残しておきます。
# 目次
[1.前提](#1-前提)
[2.UnityIAPをプロジェクトに追加する](#2-unityiapをプロジェクトに追加する)
[3.実装](#3-実装)
[4.ストアの設定](#4-ストアの設定)
[5.おわりに](#5-おわりに)# 1. 前提
CodelessIAPは使用しません。
レシート検証はこの記事では取り上げません。# 2. UnityIAPをプロジェクトに追加する
Unityプロジェクトを開き、雲アイコンをクリックしてUnityGamingServicesを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308814/18e1c421-74ce-7d85-efc0-2fb33ef02401.png)
InAppPurchasingをクリック
![image.png](https://qiita-image-store.s3.a