- 1. スコープ関数の読み方について
- 2. 【Android】MVVM的に2つのサンプルアプリを作ってみた 〜 Room & Retrofit2 〜
- 3. AndroidStudioのブックマーク機能
- 4. Android アプリのインストール方法を比較してみた
- 5. 【Flutter】MainActivityをComponentActivityのサブクラスにしたい【Android】
- 6. adb コマンド一覧
- 7. ラズパイとAndroidスマホでルーター作った
- 8. 【Android】Retrofit2のCall.enqueue()は非同期で処理されるの巻
- 9. Azure Spacial anchorsを使ったマルチプラットフォーム位置共有方法でつまずいた点
- 10. 【初心者応援】画像を選ぶ際の判断基準
- 11. 2022年度版 RecyclerViewをわかりやすく解説(Kotlin, View Binding)
- 12. Android Studio エミュレーターでのエラー Qt platform plugin could be initialized … 【備忘録】
- 13. 【Material Design】Material Designを読むときに知っていると理解しやすくなる単語集
- 14. Flutter × Firebaseでアプリを個人開発した話
- 15. UnityでHMSのAnalytics Kitを使用する方法
- 16. 既存の Android アプリの UI を Jetpack Compose で書き換えた際の知見をまとめてみる
- 17. Androidアプリを開発する #1
- 18. KMMプロジェクトを作ってバージョンカタログが利用できるスタート地点に立つまで
- 19. [Android + Vulkan + ImGui] AndroidでGUIをC++で
- 20. 【初心者応援】初心者Androiderに贈る、学習時に使用できるコンテンツ3選
スコープ関数の読み方について
# はじめに
スコープ関数を使うときは以下の記事を参考にさせてもらっていますが、
[Kotlin スコープ関数 用途まとめ](https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e)逆に読む時になると、「どう読んだらいいんだ?」と
悩んでしまうことがあるので簡単にまとめておきます***
それぞれオブジェクトのことをレシーバーと呼びます# let
“`
結果 = レシーバー.let {}
“`
となった時に{}内の処理の結果を返す# run
“`
結果 = レシーバー.run {}
“`
{}内の処理を行い、最後の処理を返す
“`
結果 = レシーバー?.run {}
“`
レシーバーがnullじゃなければ{}内の処理を行う
“`
結果 = レシーバー?:run {}
“`
レシーバーがnullなら{}内の処理を行う# apply
“`
結果 = レシーバー.apply {}
“`
となった時にレシーバーに対して{}内の処理を行い、その後レシーバーを返す# also
“`
結果
【Android】MVVM的に2つのサンプルアプリを作ってみた 〜 Room & Retrofit2 〜
# はじめに
皆さん、ごきげんよう!れぶです!
今回の記事では、`MVVM設計`を意識して作成した2つのサンプルアプリをざっくり紹介していきます。これからMVVM的にアプリを作成したいと考えている方に特に参考になれば光栄です。
それでは、参りましょう!!
# 開発環境
* MacBook Air
* Android Studio Bumblebee | 2021.1.1 Patch 1
* Java 8
* compileSdkVersion 31
* minSdkVersion 21# 1つ目のアプリ
## 概要
自分が行きたい国を管理できるサンプルアプリです。データの全表示・追加・削除ができます。
`Room`を使って、ローカルDBのSQLiteを操作しています。## 動作イメージ
## アーキテクチャ図
add Bookmarkをクリックするとブックマーク完了です
# ブックマークの一覧表示
こちらAndroidStudioの左下にあるFavoriteをクリックするとこのような画面が出て来ます。

1. [Firebase App Distribution](https://qiita.com/akirago/items/990fea92748c93bd4389#firebase-app-distribution)
1. [Website](https://qiita.com/akirago/items/990fea92748c93bd4389#website)
1. [adb command](https://qiita.com/akir
【Flutter】MainActivityをComponentActivityのサブクラスにしたい【Android】
# はじめに
Flutter開発してると、MethodChannelを使ってプラットフォーム固有の機能を使いたいことがままある。
AndroidだとMethodChannel経由でActivityにアクセスするんだけども、アクセス先のActivityがデフォルトだとFlutterActivityになっていて、ComponentActivityを継承していない。これだと、activity-ktxの`viewModels`が使えなくて、DIするときにとても困ってしまう。
ViewModelFactoryを作ったりして頑張ればなんとかなったのだろうけど、**僕にそんな技術力はないので**別の方法を探したら、いい感じに解決できた。あんまり記事とかもなかったので共有。
# 結論
[FlutterFragmentActivity](https://api.flutter.dev/javadoc/io/flutter/embedding/android/FlutterFragmentActivity.html)を使う。
ドキュメントを見てくれればわかるけど、この子はしっかり`andr
adb コマンド一覧
## はじめに
今更ながらせっかくなので個人的によく使う adb のコマンドをまとめました。
> 参考:Android Debug Bridge (adb) とは?
Android デバイスと通信するための多用途のコマンドラインツールになります。
adb コマンドを使用すると、アプリのインストールやデバッグなど、さまざまなデバイス操作を実行できます。(公式より)> 公式ページ
[Android Debug Bridge (adb)](https://developer.android.com/studio/command-line/adb)
> サンプルソース
– GitHub
[adbtool-for-mac](https://github.com/ngkr327/adbtool-for-mac)## コマンド一覧
### IP アドレスを使用してデバイスに接続する
“`
$ adb connect
“`### 接続済みデバイスのリストを取得する
“`
$ adb devices
“`### エミュレ
ラズパイとAndroidスマホでルーター作った
## Androidスマホをラズパイでルーターつくった
引っ越しを控え、現宅のフレッツ光の移設手続きをしていたのですが、諸事情で1ヶ月以上回線が引けない状況になりました。
仕方ないので、ルーターを自作します。## USBテザリングを有線LANに変換させてみた
Androidスマホで有線LANテザリングが出来るとベストなのですが、あいにく手元に対応しているスマホがありませんでした。
結果、RaspberryPiでブリッジしてあげることで、これを実現しました。## 環境
– SHARP SH-M05 (Android 9)
– RaspberryPi Model2B
– 楽天モバイル(楽天回線)## やり方
USBテザリングを、ラズパイの有線LANポートとブリッジする事で実現しました。
具体的には、SH-M05が、USBテザリングのEnable/DisableでUSBデバイスIDが変わることをトリガーとして、udevを使いブリッジをコントロールします。“`
Clients —> [[eth0]-[br0]-[usb0]] —> [Android 9] —>
【Android】Retrofit2のCall.enqueue()は非同期で処理されるの巻
# はじめに
皆さん、ごきげんよう!れぶです!
先日`Retrofit2`ライブラリを使って、API通信した結果を`RecyclerView`でリスト表示しました。その際に自身が悩んだ箇所が1点あったので、今回の記事で原因と解決方法を記述していきます。
自身のためでもありますが、自分と同じ悩みを持つ方々にも刺さる記事になれば幸いです。
それでは、参りましょう!!# 開発環境
* MacBook Air
* Android Studio Bumblebee | 2021.1.1 Patch 1
* Java 8
* compileSdkVersion 31
* minSdkVersion 21# 動作イメージ
完成イメージは以下になります。

入力された郵便番号をもとにAPI通信([zipclo
Azure Spacial anchorsを使ったマルチプラットフォーム位置共有方法でつまずいた点
# はじめに
この記事は、自分がHoloLens2とAndoridとでマルチプラットフォーム化する際に困った部分を記載している記事になります。※バージョンが更新された場合修正されているかもしれないので気を付けてください。
# 前提条件
公式がだしているAzure Spacial Anchorsのチュートリアルドキュメントhttps://docs.microsoft.com/ja-jp/learn/modules/azure-spatial-anchors-tutorials/
イワケンさんが出されている記事を参考にし
https://zenn.dev/iwaken71/articles/hololens-2022-2#%E3%82%B7%E3%83%BC%E3%83%B3%E3%81%AE%E6%BA%96%E5%82%99-(%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)
これらを一通り実践してから自分のつまづいたところを確認していただけると
理解しやすくなると思います。
ま
【初心者応援】画像を選ぶ際の判断基準
# 初めに
今回はアプリ内で使用する画像をどういった形式で保持しておくかについて書いていこうと思います。
自分が新人だった頃に、`svg`って何?どうしてここはsvgじゃないの?等疑問に思ったことがあったので、もし同じ感覚になっている方がいれば助けになれれば幸いです。### SVGとは
まず`svg`とはなんぞや?という部分からですね。
`Scalable Vector Graphics`(スケーラブル・ベクター・グラフィックス)の略で「大きさを変えられるベクター画像」という意味です
実はグラフと一緒で指定された座標を指定された色で塗りつぶしてるのがsvgなんですね。
他の`PNG/JPEG`はピクセルの集まりなので拡大した際に`svg`の方が綺麗だったりします。
また、名前の通り大きさを変えても綺麗に描画することができます。### 判断基準
ここからは、普段自分がどうやって画像の形式を分けているかをご紹介します。
自分は基本的に`svg`を使います。
ただし、`svg`は先ほど紹介したように座標や色の情報を持っているため、複雑で大きい画像を描画するとなるとデータがどうしても重
2022年度版 RecyclerViewをわかりやすく解説(Kotlin, View Binding)
# はじめに
「リスト表示程度で難しすぎる!!」
全初心者がそう思うであろうRecyclerViewを超わかりやすく解説します。::: note warn
本記事ではViewBindingの使用を前提に書いております。
findViewByIdより明らかに見やすく動作も早いです。
知らない人は調べてね!!
:::↓完成図
# RecycleViewとは
見た目をカスタム可能なリスト表示です。
特徴として、例えば100個のアイテムを表示したいとき、スマートフォンの画面に一度に見えているのは高々10個だとしましょう。
そしたら残りの90個のレイアウトを用意しておくのって無駄ですよね。
だから見えてる10個のレイアウトを再利用して使いまわ
Android Studio エミュレーターでのエラー Qt platform plugin could be initialized … 【備忘録】
## ■事象
Android StudioでADV Managerからエミュレーターを指定して、起動した時にエラーが出てきた## ■エラー文
「This application failed to start because no Qt platform plugin could be initialized. Reinsalling the application may fix this problem」## ■原因を探ってみる
グーグル検索したところ、他のソフトウェアで定義された環境変数がアプリケーションと競合するために発生しているので、アプリケーションを起動する前に、現在の環境から以下の変数を削除してください。とのことだったので、環境変数を見てみたが以下の環境変数は設定していない。なぜ?
・QT_PLUGIN_PATH
・QML2_IMPORT_PATH## ■本当の原因
どうやら、C:\Users\{username}直下のAndroidStudioのSDKやら何やらにアクセスできないため発生していたらしいusenamerフォルダ以下の、「読取り専用」「隠しフ
【Material Design】Material Designを読むときに知っていると理解しやすくなる単語集
## 概要
この記事では、少し前に公開された[Material Design 3(通称 : M3)](https://m3.material.io/)を読むときに
知っていると、M3さらに理解しやすくなる単語とその意味について解説します。この記事を読んで、単語とその意味について理解すれば、
M3をさらに理解することができるでしょう!## Banner
目立つメッセージと、それに関連するアクションを表示するコンポーネント。
[詳しい解説はこちら](https://material.io/components/banners)
## Button
メールの送信やドキュメントの共有、投稿へのいいね!など、ユーザーのアクションを助ける コンポーネント。
[詳しい解説はこちら(M3)](https://m3.material.io/compon
Flutter × Firebaseでアプリを個人開発した話
今回、初めてFlutterとFirebaseを使ってandroidrアプリを作りました。
個人でアプリを作ってみたい人やFlutterを使ってみたい人の参考になればと思います。# 作ったアプリ
[てすろぐ](https://play.google.com/store/apps/details?id=com.murapon.self_scoring_app)
テストや問題集を解いた結果を保存し、復習に使えるようにするアプリです。
今後、iosアプリもリリースする予定です。
アプリに関してはこちらにも書きました。# 使った言語、サービス
## Flutter
1つのソースで、android、ios両方のアプリができるのでこちら選びました
僕の場合、[現場で使える Flutter開発入門](https://www.amazon.co.jp/gp/product/483997375X/)を買って、一通り勉強してから作り始めようと思ったのですが、初心者には少し難しい内容で、1章だけ読んで挫折しました・・:sweat:
ただ、サンプルソースがダウンロードできるようになっていたので、それを
UnityでHMSのAnalytics Kitを使用する方法
Unityのオフィシャルドキュメントにしたがって、HMSのAnalytics Kitを実装しましたが、うまくいきませんでした。
Analytics Kit (HMS)
https://docs.unity.cn/cn/Packages-cn/com.unity.huaweiservice@2.3/manual/analyticskit.html“`
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK createInstance=> Stop report! Instance init failed: _openness_config_tag
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK createInstance=> Stop report! Instance init failed: _openness_config_tag
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK cr
既存の Android アプリの UI を Jetpack Compose で書き換えた際の知見をまとめてみる
# 概要
View & Fragment で画面を20ほど作っていた既存のアプリを1ヶ月かけて Jetpack Compose で書き換えたので、その際の進め方や気づいたことをまとめてみます。Jetpack Compose を使う意義や具体的な書き方については別の記事をお読みください。
# モチベーション
[Jetpack Compose 移行する前と移行した後](https://developers-jp.googleblog.com/2020/12/jetpack-compose-before-and-after.html) を読んでやってみたくなったのがきっかけでした。特にビルド時の最適化のパフォーマンスが向上するという点に興味を持ちました。> 最大のポイントは Compose がほとんどのデベロッパー指標で良好な(または中立的な)影響を示していることです。この点と Compose でデベロッパーの生産性が大幅に向上することを踏まえれば、いろいろ考えなくても、Compose が Android の UI 開発の未来であることはわかります。
# 書き換えのステップ
大ま
Androidアプリを開発する #1
# はじめに
今回から本格的に中身の機能を作っていきます
下準備編はこちらからhttps://qiita.com/sekkenn1102/items/eb0bc3646036b0ad9d36
# 作成するアプリに関して
#0の時にもほんの少し触れましたが、今回から「汎用性の高そうなスケジュール・タスク管理アプリ」を目指していきます
目指すにあたって最低限必要のは以下の3機能だと思っています
* スケジュール/タスクを登録する画面
* 登録したスケジュール/タスクを表示させる画面
* そもそも登録データを保存するためのDB想定としてはかなりざっくりしていますがこんな感じ
まずはスケジュール/タスクを登録する画面から手を付けていきます
# スケジュール/タスクを登録する画面を作成する
登録画面に必要な項目としては以下を想定していま
KMMプロジェクトを作ってバージョンカタログが利用できるスタート地点に立つまで
## はじめに
設定が複雑で設定やちゃんと動くようにするだけで一苦労。
とりあえず現時点での環境でプロジェクトが動くようになるまでまとめておく。後々別環境とかで動かす機会があったら、最初から環境構築から書きたい。
ライブラリのバージョンカタログ、バージョン管理ができるようになるまでします。## 環境
* Macbook Air M1 2020
* iOS 12.1 Monterey
* Android Studio Bumblebee | 2021.1.1 Patch 1
* Kotlin Multiplatform Mobile plugin 0.3.2
* Xcode 13.2.1## プロジェクトが動くようになるまでの手順
1. Android StudioでNew Project->Kotlin Multiplatform App
2. 名前を任意で決めて、OSバージョンは29〜
3. アプリ名は、androidApp,iosApp,shared
4. iOS frameworkは、 CocoaPods dependency frameworkを利用
5. Androi
[Android + Vulkan + ImGui] AndroidでGUIをC++で
# 概要
AndroidにVulkanベースでImGuiを導入できた。
ImGuiとはMITライセンスで公開されている、C++で書けるGUIライブラリである。
https://github.com/ocornut/imgui
ImGuiはexampleとして、いくつかのplatformとgraphics APIの組み合わせを紹介している。
https://github.com/ocornut/imgui/tree/master/examples
この中にAndroid + Vulkanの組み合わせはないが、やってみると導入は可能だったので、手順を簡単にまとめる。# 結果

私の前回記事の続きにimguiの領域を追加。
https://qiita.com/Aqoole/items/d8f020b24d2861d20322
オブジェクトはray
【初心者応援】初心者Androiderに贈る、学習時に使用できるコンテンツ3選
# はじめに
[新人プログラマ応援 – みんなで新人を育てよう!](https://qiita.com/official-events/3f21c92121aa125807b4)
ということで、今月から社会人となり、エンジニアになる方も多いのではないでしょうか?
今月は上記イベントに合わせて初心者応援をキーワードとして記事を書いていこうと思います。今回は初心者応援記事第5弾、Android学習時に使用できるコンテンツを3つほどご紹介したいと思います。
# 1.GoogleDeveloperトレーニングコース
https://developer.android.com/courses
1つ目にご紹介するコンテンツは、Googleが公式に出している、学習コンテンツです。
初心者から経験者まで幅広くコンテンツを提供しており、基本的にCodelabベースの学習システムです。Kotlin、Androidの基礎中の基礎から、比較的新しい技術であるComposeにフォーカスを当てた講座など、それぞれにあったレベル間で学習できるのが強みとなっています。
今後Androidをメインで開