- 1. PWA(Progressive Web Apps)とは -Qiitaをスマホで快適に見る-
- 2. AndroidエンジニアのためのiOSライブラリ選定シート
- 3. Material Design Components調べ : FAB編
- 4. Jetpack Compose で Haptics に対応する
- 5. なぜAndroidのdpは4の倍数がいいのか
- 6. ブラウザーだけで使えるインストール不要の完全無料オンラインPDFツール、Windows/Mac/Linux/iOS/Android対応
- 7. 命名時に絶対やめてほしいこと
- 8. 【JetpackCompose】ViewModel は使う必要がない
- 9. 【Flutter】Flutterアプリでセキュリティ面で気にすべきこと
- 10. AndroidのAccessibilityを学ぶ
- 11. 【Android Wear】Watch Faceの作成
- 12. CircleCI で android-docker executor を Renovate でアップデートする
- 13. 【Termux】AndroidへDenoとCode-Serverを導入する方法
- 14. AndroidアプリでPythonライブラリを使う 【Chaquopy】
- 15. Android で Singleton を使う場合の注意点
- 16. Lottie-Androidを使用する方法
- 17. FlutterのunittestをgithubActionsにて実行してみた
- 18. 【JetpackCompose】”いい感じの”カウントアップアニメーションを作ってみた
- 19. Androidでの推論実行方法 Python編 【PyTorch】
- 20. Androidでの推論実行方法 Java編 【PyTorch】
PWA(Progressive Web Apps)とは -Qiitaをスマホで快適に見る-
## QiitaをiPhoneで快適に見たい
1. でも公式アプリってないよね?
1. とりあえずホーム画面に追加するか…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/7832dae2-6e7d-f6df-bda1-1b16d05adb48.png)
1. で、生成されたこれを押す。
![S__70516744.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/5e1e897f-ecd6-4c39-1c3a-7f789015bf0b.jpeg)
1. するとSafariで開かれず、アドレスバーも何もないネイティブアプリのような画面で表示される。
![S__70516740.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/e34c7afe-9f89-c31f-965b-2214c7
AndroidエンジニアのためのiOSライブラリ選定シート
Qiita初投稿です!:joy:
## 目的
本ページはAndroidアプリ開発経験者がiOSアプリを開発し始める上で必ず確認したくなる~~はずの~~**Androidでいうとこのライブラリなんだけど、それのiOS版は何か**をまとめたものです。主に自分で調べた備忘録として残します。
誰かの労力の削減になれば幸いです:open_hands:## 比較表(2022/9/30 時点)
| 役割 | Android(kotlin) | iOS(Swift) |
|:-:|:-:|:-:|
| ログ | [Timber](https://github.com/JakeWharton/timber) | [SwiftyBeaver](https://github.com/SwiftyBeaver/SwiftyBeaver) |
| HTTP クライアント | [Retrofit2](https://square.github.io/retrofit/) | [Moya](https://github.com/Moya/Moya)※1 |
| 画像読み込み | [coil](https://
Material Design Components調べ : FAB編
# 背景
Material Design Componentsいっぱいあるけどガイドライン的にはどんな時に使うのがいいの? 逆にどんな時には使っちゃダメなの? がわからなくなるのでまとめてみました。
まずはよく使うFABから進めて、今後他のComponentについても記事にしていこうと思っています。# floating action buttonとは
floating action buttonで通称FAB。
主に画面の右下に設置され、画面の主要なアクションを表しています。
有名なアプリではTwitterのツイート作成ボタンがこれだったりします。# どんなときに使うの? どんなときに使っちゃダメなの?
|良い例|悪い例|解説|
|—|—|—|
|Jetpack Compose で Haptics に対応する# Haptics とは
利用者に力、振動、動きなどを与えることで皮膚感覚フィードバックを得るテクノロジーのことで、ことAndroidにおいては触覚による刺激生成に貢献するハードウェアとソフトウェアの機能を指します。
https://source.android.com/docs/core/interaction/haptics
# Androidでの Haptics Framework
UX原則として以下の3パターンが推進されています。![hapticsSAC12_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223159/89f089bc-fdd4-a27c-6707-455c3cf7d187.png)
#### 1. Buzzy
ポケベルやガラケー時代に利用されていた低品質ながらも電力効率の高いERMブザーベースのバイブレーション
#### 2. Clear
非連続の状態変化(Power On/Offやプロセス中のバイナリ変化) をサポート
クリアなHapticsは1つのIn
なぜAndroidのdpは4の倍数がいいのか
# 背景
Androidは様々なスクリーンサイズ、画素数の端末が販売されています。その一つ一つに合わせてレイアウトのデザインを作り込むのは大変です。
例えば100ピクセルの画像を画面に表示するようなデザインの場合、以下のような問題が出てきます。– 端末のピクセルの画面サイズに合わせて画像を拡大縮小させる必要がある
– 端末によるピクセル密度が異なることもあるため、同じピクセルサイズの画面でも物理的なサイズが違うため、見え方も違うそのため、Androidではdp, spという画面サイズや解像度に捉われることなく扱うことを目的とした抽象的な単位を提供しています。
# ピクセル密度とそれに対応した区分
Androidではdpiという「1インチあたりどれだけのピクセルが入っているか」の大きさによって端末の種類を区分けしています
|汎用密度|倍率|説明|
|—|—|—|
|ldpi|x0.75|低密度(ldpi)画面(~120dpi)に適用するリソース|
|mdpi|x1|中密度(mdpi)の画面(~160dpi)に適用するリソース(基準密度)。|
|hdpi|x1.5|
ブラウザーだけで使えるインストール不要の完全無料オンラインPDFツール、Windows/Mac/Linux/iOS/Android対応
最近、リモートワークやペーパーレス化の拡大につれて、デジタル文書の形式であるPDFがますます重要な役割を果たしています。デスクワークが仕事の方々は誰でもPDFに関する知識やツールの使い方を学ばなければなりませんが、ほとんどのPDFソフトは高価で、無料のものは制限が多く、なかなか大変です。昔使っていたsmallpdfさんはなぜかいろいろ制限が増えて、使いづらくなりましたから、代替のものをずいぶん検索しました。それでは、見つかったOSを問わず、インストール不要、広告なしのクラウドベースのフリーオンラインPDFツールサイトである「LightPDF」を紹介します。
# LightPDFオンラインPDFツール
使用するには、お使いのデバイスのブラウザーでLightPDFのPDFツールサイト(https://lightpdf.com/jp/tools) にアクセスすれば、下記の画像のようなPDFツールの画面が表示されます。中から使いたいものを選べばいいです。
![lightpdf-online-tools-interface.jpg](https://qiita-image-store.s3.
命名時に絶対やめてほしいこと
# 初めに
今回は変数名や、`layout`の`id`などを命名する時に絶対にやめたほうがいいことを紹介していきます。
### 本文
まず初めが***別画面で同名のidを使わない***といことです。
最近は`Jetpack Compose`が出て来たのもあって今後減っていきそうではありますが、命名するのが難しいViewがある場合に汎用的すぎる名前をつけているのが時々見受けられます。
汎用的なIDをつける場合はせめてどの画面のものなのかがわかるようにしたりしましょう。—
次が***関数名をつける時は動詞を前に持ってくる***です。
初心者や新入社員の方に多くみられるのが動詞が後ろの方に来てしまってることがありますが、それだと該当の関数が何をするのかがぱっと見でわかりません。
例として`setupPageView`とかけば見る側は少なからず何かしらのセットアップをすることがわかりますが、`pageViewSetup`だとPageViewに対して何かをすることしかわかりません。
もちろん対象は大事ですが、ある程度の知見がある人の場合何をしたいのかが重要で中身のコードを見れば対象がなん
【JetpackCompose】ViewModel は使う必要がない
AAC ViewModel is a kludge for Android, I see no reason to proliferate bad patterns. If you have a properly designed data layer, you'll realize you have no use for an AAC ViewModel.https://t.co/HWvs4nSpoL
— Jim Sproch (@JimSproch) August 20, 2022
【Flutter】Flutterアプリでセキュリティ面で気にすべきこと
インドネシアの[PT.AQ Business Consulting Indonesia](https://aqi.co.id/)でFlutterのエンジニア兼アドバイザーをしております菊池と申します。
本記事はZennで出版しております[flutter chips](https://zenn.dev/tetsukick/books/06ee607e30e243)のchapter2-1の内容の一部になります。(本記事が2,000字程度、Zenn記事が50,000字程度)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5183aafc-d1d7-534f-f618-031f10790fdc.png)## センシティブな情報とは
センシティブな情報とは、具体的に、、
- Amazon Web Services(AWS)APIキー
- Facebookトークン
- GitHubトークン
- Google APIキー
- Twitter OAuthトークン
- PayPal
AndroidのAccessibilityを学ぶ
# AndroidのAccessibilityについて
この記事ではGoogleが提供しているPathwayを行いながら内容を自分のためのノートのような形式でまとめていきます。CodeLabを参考にしながらAccessibilityを考慮したアプリについても勉強していきます。https://developer.android.com/courses/pathways/make-your-android-app-accessible#codelab-
### Accessibilityとは?
> アクセシビリティ(英: accessibility)とは、障害者が他の人と同じように物理的環境、輸送機関、情報通信及びその他の施設・サービスを利用できることをいう。ウェブページにおけるアクセシビリティは、高齢者や障害者、また異なる情報端末やソフトウェアにおいても、情報を取得あるいは発信できる柔軟性に富んでいること(あるいはその度合い)を意味する。公共サービスでは、障害があっても知る権利を保障する情報保障によって重要となる。
引用:Wikipedia https://ja.wikipedia
【Android Wear】Watch Faceの作成
# はじめに
xmlを用いたWatch Faceの作成方法について紹介。
Android StudioのNew Project→Watch Faceでのプロジェクト作成だと、非推奨クラス(`CanvasWatchFaceService`)を使用することになるので1から作成した(2022/09/27時点)。# 作成方法
### 依存関係の宣言
`build.gradle(:app)`ファイルにWatchFace用の依存関係を追加
```build.gradle
dependencies {
implementation 'androidx.wear.watchface:watchface:1.1.1'
}
```### レイアウトの作成
WatchFaceに表示するレイアウトの作成
```custom_watch_face.xml
CircleCI で android-docker executor を Renovate でアップデートする ![Notes_220926_185151-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359439/6ade740f-5c92-6f8e-9885-55aec76602e9.jpeg)
CircleCI で Android の CI を行うときは 公式のブログ記事にもあるように、
たいてい謹製で用意されている `circleci/android` Orb を使用すると思います。https://circleci.com/ja/blog/building-android-on-circleci/
https://circleci.com/developer/ja/orbs/orb/circleci/android
ところで、この Orb にはバージョンが切られているわけですが、
その更新は [Renovate](https://www.mend.io/free-developer-tools/renovate/) を導入して自動化することで
忘れることもなくチェックの手間もなく楽にできます
【Termux】AndroidへDenoとCode-Serverを導入する方法
最近、久しぶりに[Termux](https://termux.dev)を触ってみたのですが、新しい発見があったので纏めてみました。
ここ半年ほど、公私ともに主な開発プラットフォームとして[Deno](https://deno.land)を据えています。
最初はTypeScriptもサーバーサイドも苦手意識がありましたが、使い込むうちに段々とそのポテンシャルと手応えを感じるようになりました。
今ではイチバンのお気に入りプラットフォームです。はたまた[Code-Server](https://code.visualstudio.com/docs/remote/vscode-server)は、VSCodeのバックエンドとフロントエンドを完全に分離し、ウェブブラウザを介してリモートから扱えるようにしたものです。
同様にウェブブラウザからVSCodeを扱える[vscode.dev](https://vscode.dev)もありますが、こちらはコマンドラインの実行などクライアントマシンに依存する処理は行えません。せっかくTermuxも触ったことだし、これらをAndroidもといTerm
AndroidアプリでPythonライブラリを使う 【Chaquopy】
# 概要
Chaquopyを使ってJava/Kotlin製Androidアプリの一部をPythonで実装し、Pythonライブラリを使う方法を紹介します。
本記事ではNumPyで乱数を生成し、Kotlin製Androidアプリの画面に表示します。# Chaquopyとは
[Chaquopy](https://chaquo.com/chaquopy/)とは、Java/Kotlin製AndroidアプリにPythonの実装を組み込むことができるSDKです。SciPyやPyTorchなど豊富なライブラリに対応しており、JavaやKotlinで扱いにくい処理をPythonで記述できます。
以前はライセンスの制約がありましたが、[2022/07/24にオープンソース化し](https://chaquo.com/chaquopy/chaquopy-is-now-open-source/)、MITライセンスとなったことで使いやすくなりました。
# 使い方
## 環境- MacBook Pro (2020年モデル / BigSur 11.6.4)
- Android Studio
Android で Singleton を使う場合の注意点
# はじめに
Singleton はとても分かりやすくて便利なデザインパターンです。ですが Android アプリの開発では他のプラットフォームにはない事情があるため、それを理解することなく Singleton を使うと痛い目を見ることがあります。その Android 特有の事情を書きたいと思います。
# Android 固有の事情とは?
Singleton を利用する上で問題になると思われる Android 特有の事情は、私が把握している限り大きく二つあります。
* クラスのアンロードで静的変数が初期化される可能性がある
* プロセス終了後もアプリの状態が維持される可能性がある前者は滅多に発生しない現象なのでほとんどの場合問題になりませんが、後者は比較的頻繁に起こります。
ですので以降では、現実的にはあまり問題にならない前者の現象について軽く説明し、その後でより影響の大きい後者の現象について掘り下げます。# クラスのアンロードで静的変数が初期化される可能性がある
Android の VM はクラスをアンロードすることがあり、その結果 static 変数に記憶している
Lottie-Androidを使用する方法
今回はLottie-Androidを使用してアニメーションの実装する方法です。
綺麗なアニメーションを簡単に実装することができます。
ただし、アニメーションファイルは別途必要です。
# Lottie for Androidの導入
[Lottie for Android](https://github.com/airbnb/lottie-android)
を導入します。``` build.gradle
dependencies {
implementation "com.airbnb.android:lottie:${latest.version}"
}
```# アニメーションファイル
res.rawフォルダにアニメーションファイルを追加する。
今回はlottie_animationと命名。# LottieAnimationView
```lottie_animation_view.xml
FlutterのunittestをgithubActionsにて実行してみた
# 結論
ymlファイルに書くのは一旦これで大丈夫そう
タイミング等は各々プロジェクト等に合わせて変更してください
githubactionsの公式ドキュメントも確認してみてくださいhttps://docs.github.com/ja/actions
```dart.yml
name: Dart
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: PubGet
run: flutte
【JetpackCompose】”いい感じの”カウントアップアニメーションを作ってみた
## やりたいこと/できること
Webサイトなどでよく見かける「加速したあと減速するカウント(下記動画を見ていただいたほうが分かりやすいと思います)」をAndroidでも実装する方法について説明します。
サンプルとして、ボタンを押すと各Interpolator(下記解説)に応じたカウントアップアニメーションを開始する内容を実装します。
![sample_resize.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78138/45ce57c7-5733-88c0-3587-52e44126f0cd.gif)### 環境
material3 : 1.0.0-beta03
Kotlin : 1.7.0
JetpackCompose : 1.2.0## ソースコードと説明
### ValueAnimationを使う
Androidには様々なアニメーションの種類がありますが、値の増減をアニメーションさせるためにはValueAnimationを使います。ValueAnimationではint、floa
Androidでの推論実行方法 Python編 【PyTorch】
# 概要
既存のJava製AndroidネイティブアプリにPyTorchベースの推論処理を実装する必要があったので、備忘として調べた結果をまとめます。
1. [PyTorch Java APIで推論処理を記述する](https://qiita.com/ta-sr/items/e9b83743d182dc2a8ed4)
2. Python(Chaquopy)で記述した推論処理を呼び出す(本記事)# 環境
ハードウェア: SHARP SH-T01
プロセッサ: Snapdragon 665 (2GHz & 1.8GHz - Octa)
メモリ: 4GB
OS: Android 12# 推論実行方法
推論処理をJavaやC++で書き直すのは大変なので、Pythonで書いた処理をそのまま使いたいという場合、ライブラリ([Chaquopy](https://chaquo.com/chaquopy/))を使ってJavaからPythonスクリプトを呼び出すことができます。
※[Kivy](https://kivy.org/#home)などAndroidアプリ全体をPythonで開発
Androidでの推論実行方法 Java編 【PyTorch】
# 概要
既存のJava製AndroidネイティブアプリにPyTorchベースの推論処理を実装する必要があったので、備忘として調べた結果をまとめます。
1. PyTorch Java APIで推論処理を記述する(本記事)
2. [Python(Chaquopy)で記述した推論処理を呼び出す](https://qiita.com/ta-sr/items/984779da293432f58ee1)# 環境
ハードウェア: SHARP SH-T01
プロセッサ: Snapdragon 665 (2GHz & 1.8GHz - Octa)
メモリ: 4GB
OS: Android 12# 推論実行方法
PyTorch Java APIを使うと、Javaクラスにそのまま推論を記述することができます。
```Java:https://github.com/pytorch/android-demo-app/blob/master/HelloWorldApp/app/src/main/java/org/pytorch/helloworld/MainActivity.java
// i