- 1. Node.jsを用いてTODOリストを管理するAPIを作ってみた(初学者向け)
- 2. Androidの単一選択UI、こんな方法もあるかも?
- 3. Wear OS by Google 搭載スマートウォッチで心拍数を表示する
- 4. KotlinでAndroidとMQTTを連携
- 5. [Android]マイナンバーカードの読み込みでjava.lang.SecurityException: Permission Denial: Tag ( ID: XX XX XX XX ) is out of date
- 6. Android開発 FirebaseCrashlyticsの実装に少しつまづいた話 備忘録
- 7. Dagger-Hiltとは?
- 8. Android 13でOpen SSTP Clientを使ってSoftEther VPNサーバにSSTP接続する
- 9. Androidダークモード対応方法
- 10. ReactNativeでTODOアプリ作ってみた
- 11. Retrofit使ってみた
- 12. Bitriseのキャッシュ機構(最新)
- 13. WEBからAPKをダウンロードすると拡張子が.zipになる問題
- 14. 【Android] Jetpack Compose を使って OSSライセンス一覧を表示する
- 15. 【Android】Mathクラスについてpart3【Kotlin】
- 16. Androidでタップすると選択肢が展開し、選択するとその項目だけに折りたたまれるメニューを作る
- 17. RecyclerViewのdividerを最初・最後に描画させない方法
- 18. 【Android】スプラッシュ画面を簡単に実装
- 19. Androidの通知でアニメーションアイコンを表示する方法
- 20. androidAPI返却物受け口のススメ
Node.jsを用いてTODOリストを管理するAPIを作ってみた(初学者向け)
# はじめに
私はAPIを作成したことがなく、サーバーサイドの知見が少ないです。APIを理解するために、Node.jsを用いてローカルでTODOリストを管理するAPIを作成します。初学者の私がAPIを作成することを目的としており、GET POST メソッドなどの基本的な部分に着目して記載しています。そのため、今回はデータの永続化などは考慮していません。
# セットアップ
まずは、新規プロジェクトを作成します。新しいディレクトリを作成
“`
mkdir todo-api
“`ディレクトリ内へ
“`
cd todo-api
“`プロジェクトをセットアップ
“`
npm init -y
“`出力結果) package.jsonが生成される
“`
Wrote to /Users/(自身のPCのディレクトリ)/ReactNativeProject/todo-api/package.json:{
“name”: “todo-api”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.j
Androidの単一選択UI、こんな方法もあるかも?
「複数の選択肢から1つを選ばせたい」ということがよくあると思うのですが、皆さんならどんなUIを作るでしょうか?
わたしがパッと思いついたのはラジオボタンだったのですが、改めて、どんな選択肢があるのか身の回りのアプリをチェックしながら考えてみました。
## 目次
1. [Segmented buttons (Material Design)](#1segmented-buttons-material-design)
2. [Chips (Material Design)](#2chips-material-design)
3. [Radio button (Material Design)](#3radio-button-material-design)
4. [Drop-down menu (Material Design)](#4drop-down-menu-material-design)
5. [独自UI](#5独自ui)
6. [まとめ](#6まとめ)
7. [終わりに](#7終わりに)## 1.Segmented buttons (Material Design)
!
Wear OS by Google 搭載スマートウォッチで心拍数を表示する
## はじめに
Wear OS by Google 搭載スマートウォッチに心拍数を表示したい。その方法を調べる## 方法
調べたところ、以下の3つの方法があるもよう– Google Fit API
2024年末でサポート終了とのこと– Health Services
Google Fit API に代わる方法で Google は今後これを推していきたいように見える– センサー利用
今回は Health Services を利用して心拍数を表示してみる
## 実装
#### ライブラリ追加
“`build.gradle.kts
implementation “androidx.health:health-services-client:1.1.0-alpha02”
“`
まだ alpha 版のもよう#### 権限追加
“`AndroidManifest.xml
“`#### 権限取得処理
実行時に `an
KotlinでAndroidとMQTTを連携
![AndroidとMQTT: ステップ・バイ・ステップ ガイド](https://assets.emqx.com/images/blog_bg_en/android.png?imageMogr2/thumbnail/1520×684)
[MQTT](https://www.emqx.com/en/blog/the-easiest-guide-to-getting-started-with-mqtt)は、IoTメッセージの交換とデータ配信を実現するための軽量かつ柔軟なプロトコルです。IoT開発者にとって、柔軟性とハードウェア/インターネットリソースのバランスをとるのに役立ちます。
[Kotlin](https://kotlinlang.org/)はJetBrainsによって開発されたプログラミング言語です。KotlinはJVMベースなので、開発者はAndroid開発に簡単に使用でき、KotlinとJavaの混合記述もサポートしています。
この記事では、主にAndroidプラットフォームでのKotlinの使用方法を紹介し、MQTTの利用方法を説明します。
## プロジェクトの初期
[Android]マイナンバーカードの読み込みでjava.lang.SecurityException: Permission Denial: Tag ( ID: XX XX XX XX ) is out of date
## はじめに
AndroidでマイナンバーカードをNFCで読み込んだときに出たエラーの対応メモ## エラー内容
Androidでマイナンバーカードを読み込んだときにこのエラーが発生しました。“`
e = {SecurityException@30494} “java.lang.SecurityException: Permission Denial: Tag ( ID: XX XX XX XX ) is out of date”
backtrace = {Object[19]@30503}
cause = {SecurityException@30494} “java.lang.SecurityException: Permission Denial: Tag ( ID: XX XX XX XX ) is out of date”
detailMessage = “Permission Denial: Tag ( ID: XX XX XX XX ) is out of date”
stackTrace = {StackTraceElement[18]@30507}
Android開発 FirebaseCrashlyticsの実装に少しつまづいた話 備忘録
FirebaseCrashlyticsをAndroidアプリに実装するにあたり、
公式ドキュメントを参考に進めていたのだが、、、https://firebase.google.com/docs/crashlytics/get-started?hl=ja&platform=android#kotlin+ktx_1
“`app/build.gradle
plugins {
id ‘com.android.application’// Make sure that you have the Google services Gradle plugin
id ‘com.google.gms.google-services’// Add the Crashlytics Gradle plugin
id ‘com.google.firebase.crashlytics’
…
}
“`これをどこに書けばいいのかわからなかった。
調べるとどうやら
“`app/build.gradle
apply plugin: ‘co
Dagger-Hiltとは?
![スクリーンショット 2024-01-23 23.32.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3639815/26a88468-10a4-6559-9462-7a592a5fb035.png)
# *Dagger-Hilt*
HiltはGoogleが提供するDIライブラリで、Daggerを基に作られています。Dagger2と比べて理解しやすく、使いやすいです。また、Googleが積極的にサポートしており、Composeにも適しています。まだアルファやベータ版が出ている段階ですが、注目して学ぶ価値があります。### 依存性注入に必要な要素
* Application class
: Hiltを使用するすべてのアプリは “`@HiltAndroidApp“` アノテーションを “`Application Class“`に必ず追加し、依存性注入の開始点を指定する必要があります。
Hiltは “`Ap
Android 13でOpen SSTP Clientを使ってSoftEther VPNサーバにSSTP接続する
## はじめに
長らくリモートワークをしており、VPN接続して会社のサーバを自宅から見に行っています。
私は学生時代からずっとiPhoneユーザだったのですが、思うところあって今回Androidに買い替えました。
それまでは会社のsoftether VPNサーバにiOSの「[SSTP Connect](https://apps.apple.com/jp/app/sstp-connect/id1543667909)」(有料)を使って接続していました。
さいわい、Android購入前に、AndroidにもSSTP接続が可能な「[Open SSTP Client](https://play.google.com/store/apps/details?id=kittoku.osc&hl=ja&gl=US)」なるものがあるとの情報を得たため、Androidに乗り換えました。ところが、「SSTP Connect」と違って、「Open SSTP Client」を使うには一手間、具体的には**CA証明書をAndroid端末側に入れ**なければなりませんでした。
数日かけてやっと接続できるように
Androidダークモード対応方法
## はじめに
[こちら](https://qiita.com/sefwgweo/items/2c80356a14b74a5df827)でダークモード対応する際の見積もり手法という記事をあげましたが、本記事では短い準備期間でダークモード対応1画面にかかるコストをパターン化するためにどんな構成にしたのかを紹介します。## 事前準備
NewsPicksのAndroidアプリは10年もののプロダクトであるがゆえに、いわゆるカラーパレットと呼ばれるようなものがアプリ内に複数セットありました。
ダークモード対応用のカラーパレットと変数名がかぶってしまう古いものもあったため、以下なルールで対処しました(いずれもIDEAのりファクタ機能を用いて作業しています)– 使われていないリソースは削除、同一カラーを指定しているものは1個に可能な限りまとめる
– ダークモード対応用に新規追加するもの以外の変数名にoldというPrefixを付けてRename(例:blue_200 -> oldblue_200)## 手順1:ダークモード対応用カラーパレット追加
UI層のres/values/col
ReactNativeでTODOアプリ作ってみた
# はじめに
今回は、ReactNativeを用いてTODOアプリを作成していく。環境構築がまだの方は、こちらを参考にお願いします。
https://qiita.com/muranakar/items/8d0cb2044fe836fe758e
今回はこちらのライブラリーを用いて実装していきます。
https://reactnativeelements.com/
https://github.com/oblador/react-native-vector-icons
# 内容
### ライブラリーをインストール
“`
npm install react-native-elements react-native-vector-icons
“`### タスクの変数と関数を用意
“`react
const [task, setTask] = useState(”);
const [tasks, setTasks] = useState([]);
“`
`task`と`tasks`の状態変数:
– `task` は現在のタスクの文字列を格納します。ユーザーが
Retrofit使ってみた
# はじめに
最近自分の周りでよく聞くRetrofitを使用して、API通信で取得したデータをAndroidアプリの画面に表示させてみました。
本記事はそのサンプルコード及び備忘になります。
変な箇所とかあれば、遠慮なく指摘いただけますと嬉しいです。:::note info
Retrofitとは
HTTPクライアント通信を行うためのライブラリです。
これによりアプリからサーバと通信して情報を取得することが可能です。
:::# 実装
実装について記載していきます。**API準備**
コーディングに移る前にまずは取得するAPIの準備をします。
今回は[OpenWeather](https://openweathermap.org/)という天気情報を取得できるAPIを使用して実装していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308202/f7f31417-16d0-e65b-0751-5202f24d4c92.png)**Manifest**
天気APIを使用す
Bitriseのキャッシュ機構(最新)
Bitriseにはキャッシュ機構が3種類存在します。今回は使用頻度の高い2つについてまとめました。
1. Branch-based caching ⭐️
1. Key-based caching ⭐️
3. Remote build caching# Branch-based caching
従来から使われているキャッシュ機構。ブランチ毎にキャッシュが作成されます。
作成したキャッシュは同一のサーバー上のみで使用することができます。### 使い方
キャッシュの作成には`Bitrise.io Cache:Push`を使います。このステップでは`Cache paths`にキャッシュ対象のパスを指定します。
例えば`CocoaPods`であればこうなります。
“`
# CocoaPods
./Pods -> ./Pod
WEBからAPKをダウンロードすると拡張子が.zipになる問題
APKをウェブサーバーにアップロードして、そこからダウンロードすると何故かZIPファイルになることがある。
色々試した結果、APKとしてダウンロードする方法をメモっときます。
– WEBサーバーのmimeにapkを追加する(追加方法はhttpdによって違うので自分の使っているサーバーに合わせた設定をしてください)
“`
application/vnd.android.package-archive .apk
“`– ダウンロードリンクに?dl=1を追加する
“`
ダウンロード
“`もしかすると、リンクパラメータの方だけでも行けるかもしれないですが
念の為、mimeの方も書いてあります。
【Android] Jetpack Compose を使って OSSライセンス一覧を表示する
## はじめに
公式の [Google Play 開発者サービス](https://developers.google.com/android/guides/overview?hl=ja) API である `oss-licenses` プラグインを使うと以下のような OSS ライセンス一覧を表示することができる。(詳細は[ここ](https://developers.google.com/android/guides/opensource?hl=ja#display-license-info)を参照。)
同プラグインは build.gradle(.kts)の `dependencies` セクションに追加したライブラリを収集してくれるのだが、`oss-licenses` プラグインの `Activity` 上に表示され、本体アプリとデザインの
【Android】Mathクラスについてpart3【Kotlin】
# はじめに
以前Mathクラスについての記事を書いたのですが、今回また別のものを使ったので
忘れないために記事にしておきます。https://qiita.com/Tsubasa12/items/709cbd01b1abbfe8e209
https://qiita.com/Tsubasa12/items/11ca4b2243a89abefd26
# toRadians()
“`
toRadians(30.0) // 0.5235987755982988
“`
角度を指定するとラジアン単位に変換する# toDegrees()
“`
toDegrees(0.52) // 29.79380534680281
“`# 参考
https://www.dainippon-tosho.co.jp/unit/list/radian.html
Androidでタップすると選択肢が展開し、選択するとその項目だけに折りたたまれるメニューを作る
こういうのなんて言うんだっけ?と、この説明的なタイトルになったんですが
要するに以下のようなメニューを作りたいなー、どうやればいいんだ?
って考えたので記事にしておこうと思います。![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/58702b5b-5cb2-bebd-1840-20c134a8e52c.gif)
# RecyclerView でリストを作る
アニメーションを除けばそんなに難しい要素もなく、リストを作って選択肢以外の消去と全表示ができればいけそうですね。
リストの作り方はいくつかあるでしょうが、RecyclerViewを使うのが簡単でしょうか。
以下は単にRecyclerViewの使い方説明になります。リストアイテムの layout を作ります。最初に提示したような表示にしたいので、高さ固定で、幅はwrap_contentにしています。
“`item_menu.xml
RecyclerViewのdividerを最初・最後に描画させない方法
RecyclerView では、 ItemDecoration を追加することで、dividerを表示させることができます。 DividerItemDecoration という ItemDecorationが 用意されており、これを使うことで簡単に実装できますね。
“`kotlin
binding.recyclerView.addItemDecoration(
DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
)
“`|dividerなし|DividerItemDecoration|
|–|–|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/7dabc475-7b4d-e1dd-dc03-6e24ebeb78a2.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/35469306-ce6a-3119
【Android】スプラッシュ画面を簡単に実装
## スプラッシュ画面とは
アプリを起動すると現れるロゴが中央に配置されている画面です。今回はこの画面の実装を行います。## Step1. ライブラリをインストールする
まず、スプラッシュ画面を実装するためのライブラリをgradle(app)にインストールします。“`build.gradle(app)
dependencies {
implementation(“androidx.core:core-splashscreen:1.0.0”)
}
“`
入力したらgradleをSyncさせてください。## Step2. 背景色を用意する
スプラッシュ画面には背景色を用意する必要があるため、color.xmlで入力します。“`color.xml
#F48FB1 “`
今回はかわいらしくしたいと思ってこの色にしています。## Step3.
Androidの通知でアニメーションアイコンを表示する方法
Androidの通知でアニメーションを表示できるのでしょうか?
できるとすればアイコンですよね。AndroidのNotificationでは `SmallIcon` と `LargeIcon` の2種類のアイコンを設定できます。
“`kotlin
val notification = NotificationCompat.Builder(this, channel.id)
.setSmallIcon(R.drawable.ic_android)
.setLargeIcon(Icon.createWithResource(this, R.drawable.ic_android))
.setContentTitle(“Title”)
.setContentText(“Text”)
.build()
notificationManager.notify(1, notification)
“`ステータスバーに表示されるのが `SmallIcon`
![](https://qiita-image-store.s3.ap-northeast-1
androidAPI返却物受け口のススメ
# はじめに
今回はAndroideでAPIからの返却物を受け取る際の構造で自分が一番良かったなと感じるものを紹介していきます
### 本文
下記を用意した上でRepositoryから渡すのを`Result`のみにすることでエラーの種別によってハンドリングすることが非常に容易になります。
また、UseCaseで無駄なハンドリングをせずに結果を返すだけの機構にできるので可読性も向上します
“`kotlin
sealed class Result{
data class Success(val value: T) : Result ()
data class HttpError(val httpStatusCode: Int) : Result ()
}
“`
### 最後に
自分が最近エラーハンドリング周りを触ることが増えたので備忘録として紹介してみました
どなたかのお役に立てれば幸いです