- 0.1. Pythonの投稿記事をまとめてみました。
- 0.2. ネイティブ開発か、クロスプラットフォーム開発か
- 0.3. 【UserLAnd】AndroidスマホにWi-Fi経由でSSH接続する方法
- 0.4. React NativeでWebViewを使って、Webページからデータを受け取る方法
- 0.5. 【UE5】Android スマホでのデバッグ方法(2024年2月版)
- 0.6. [Unity:Android] VideoPlayerで指定したURLの動画を再生する
- 0.7. ImageMagickを使ってAndroidのスクショにデバイスフレームを合成する方法(ストア画像作成)
- 0.8. Androidで物理キーボード・Bluetoothキーボードを日本語配列で使う
- 0.9. 【kotlin】文字列の中に特殊文字が含まれているか確認する方法
- 0.10. 【忘備録】startActivity(intent)で画面遷移できずアプリが落ちる(なんで?)
- 0.11. Java経験者がKotlinで実装したアプリをGoogle Playでリリースするまでに得た気づき
- 0.12. 【備忘録】ChatGPTとAndroidアプリ開発 その0 (環境準備)
- 0.13. ZoomIn (Out) できるLazyColumnを作ってみる
- 0.14. BaseTemplateAndroidAppで強力なAndroidアプリを作成する
- 1. はじめに
- 2. 概要
- 2.1. ラムダ式書き方まとめ(Kotlin)
- 2.2. エラーに直面した:android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY[787])
- 2.3. MVVMを採用して分かったこと
- 2.4. Firebase Cloud Messaging API(V1)でのPushテストの方法
- 2.5. Android端末はインターネットアクセスの夢をみるか?
- 2.6. Flutterでadmobをandroidに追加するための備忘録
Pythonの投稿記事をまとめてみました。
# はじめに
ここ半年間、Pythonの勉強しながらQiita投稿した記事をまとめてみた。
Pythonはライブラリが充実しており、何かやりたいことがあれば、ほとんどの場合に対応できる便利な言語。Pythonの本領である機械学習にはまだ手を出していないので、これからも勉強続けたい。# 目次
分類|概要
—|—
[エクセル処理・ファイル処理](#エクセル処理ファイル処理)|PandasやOpenpyxlでのエクセル処理や、テキストファイルのファイルの読み書き等。
[仕事効率](#仕事効率)|仕事で使うとちょっと便利な小技。
[Kivy関連](#kivy関連)|GUIライブラリKivyの使い方。
[Androidアプリ関連](#androidアプリ関連)|Kivyを使ったアンドロイドアプリ。
[Raspberrypi関連](#raspberrypi関連)|電子工作関連。MicroPython。
[文字列処理](#文字列処理)|文字列や数値の整形、変換処理。
[Python基本](#python基本)|Python文法の基本。## エクセル処理・ファイル処理
+ [Ex
ネイティブ開発か、クロスプラットフォーム開発か
## はじめに
モバイルアプリの開発として, ネイティブ開発にするかクロスプラットフォーム開発でFlatterやReactNativeを使うか、今でも議論が絶えません。
現在Androidのリードエンジニアとして働いている自分から見て、どう選定するかを個人的な意見を書きたいと思います。選定の方法として絶対正しい、はないと思いますので参考までにしていただければと思います。
下のような記事の内容はすでに把握している方が対象です。https://circleci.com/ja/blog/native-vs-cross-platform-mobile-dev/
## 前提条件
iOSとAndroidの両OSでアプリを作る必要がある場合を想定## 自分の経歴
自分のモバイルアプリ歴として、ざっくり書いておきます。
* Swift
– Swift UIで個人開発3件
– 100万円以上の収益化に成功しているアプリあり
– 経歴は1.5-2年ほど* Kotlin
– 個人開発で2件
– 経歴は1年ちょい
– 現在リードエンジニア
– 主にJetpa
【UserLAnd】AndroidスマホにWi-Fi経由でSSH接続する方法
## はじめに
この記事では**パソコンからSSH接続でAndroidスマートフォンにアクセスすること**を目的とします。
SSH接続するには「openssh」というアプリが入っていれば使えます。Windowsにもデフォルトで入るようになったので、今回はWindowsでSSH接続してみます。
ただし、WindowsからSSH接続するにはpowershellではだめで、**Git Bash** を起動しなければなりません。スマートフォンではsshどころか**ターミナルが使えない**ため、ターミナルが使えるアプリをインストールします。
以前は「termux」というアプリが主流でしたが**現在はplayストアで更新できない**状態が続いているため、現在おすすめのアプリは **「[UserLAnd](https://play.google.com/store/apps/details?id=tech.ula)」** というアプリになります。
:::note info
以前Qiitaで同じような記事を書いていました[^1]。このときは「terumux」を取り上げていましたが、今回は
React NativeでWebViewを使って、Webページからデータを受け取る方法
今回は、Webページの状況によって、Reactnative側で処理を変更したい場合に、データを受け取る必要があるため、詳細を記載していく。
WebViewのライブラリーを用いて、以下のガイドラインを参考に進めていく。
https://github.com/react-native-webview/react-native-webview
https://github.com/react-native-webview/react-native-webview/blob/master/docs/Getting-Started.md
## Webpageからメッセージを送る
### ディレクトリ・ファイル作成
最初にWebページを用意するために、以下のコマンドを入力します。
“`
mkdir WebPage
cd WebPage
touch index.html
“`### htmlファイルの変更
index.htmlに以下のコードを加えます。“`index.html
【UE5】Android スマホでのデバッグ方法(2024年2月版)
# はじめに
## 前提条件
– Android 用のUEプロジェクトを作成してある事
## テスト環境
– Windows 11 Home
– UE 5.1.1
# 手順
## Android SDK のダウンロード
### 手順1
[SDK Platform-Tools リリースノート](https://developer.android.com/studio/releases/platform-tools)に行き、**Android SDK Platform-Tools** をダウンロードする。### 手順2
ダウンロードしたZIPファイルを解凍し、「**platform-tools_r34.0.5-windows**」フォルダ内の「**platform-tools**
[Unity:Android] VideoPlayerで指定したURLの動画を再生する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/ef036fe6-c10b-0aa5-a852-a414e62f22a2.png)
VideoPlayerでURL指定をしても再生されない場合、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/eec814c8-fbef-724b-0a22-fa517b4a243a.png)CustomMainManufestにチェックを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/8453d47b-15b9-5a1d-c29d-61223246ce74.png)AndroidManifest.xmlが生成される
![image.png](https://qiita-image-store.s3.ap-nort
ImageMagickを使ってAndroidのスクショにデバイスフレームを合成する方法(ストア画像作成)
Play Consoleでストアに公開するにはスクリーンショットを用意する必要があります。
エンジニア一人の趣味開発でも、それなりのものを用意したいところ、本当のスクリーンショットよりも、デバイスフレームがついた画像の方が見栄えしそうなので、これぐらいはなんとかしたいと思いました。|ノーマルなスクショ|フレーム付き|
|:-:|:-:|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/c222e687-d032-9916-dbf8-9e0e93354ec4.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/d60d11b0-8763-0659-a152-9e5f6048b338.png)|しかし、不慣れな画像編集ソフトでちまちま調整して何とか一枚できて、さて、同じ作業を何回繰り返すんだ?マクロとか?よくわからん!
よし、ImageMagick使おう!ということでやり方調べたのでそのメ
Androidで物理キーボード・Bluetoothキーボードを日本語配列で使う
# 概要
Bluetoothキーボードを日本語配列で使うための戦い。半角と全角を、キーボードを切り替えたいのに切り替えられなくてイライラしていたのですが、見つけたらむっちゃ簡単でした。
そもそもネットの情報が古いなと思いました。Google日本語入力を使うとかいろんなホットキー試すとか。# 環境
* Logicool K380
* NEC Lavie Tab 10FHD3
* Android 12
* Gboard# 手順
### IMEをGboardにする
設定アプリで「システム > 言語と入力 > 画面キーボード > 画面キーボードを管理」
Gboardを有効にする。### 物理キーボードの設定を変える
Bluetoothキーボードはつなげた状態にしておきましょう。https://support.google.com/android/answer/14114879?hl=ja
これによると設定アプリに「システム > キーボード > 物理キーボード」というのがあるらしい。…ないんだけど。(設定がある人は次の項目を飛ばして読んでください)#### 設
【kotlin】文字列の中に特殊文字が含まれているか確認する方法
# はじめに
文字列操作って案外大変だったりしますよね。
特に正規表現を使って行うようなバリデーションなどは条件によっては少し考えてしまうことも多いのではないでしょうか。
今回はバリデーションでありがちな文字列の中の特殊文字の有無を判定する方法をまとめておこうと思います。# 文中の特殊文字の判定方法
文中の特殊文字の有無を判定するには、以下により実現可能です。“`main.kt
fun hasIncludeEmoji(str: String) {
val regex = Regex(“\\p{So}”)
return regex.containsMatchIn(str)
}val value1 = hasIncludeEmoji(“あいうえお😊”) // true
val value2 = hasIncludeEmoji(“あいうえお”) // false
“`以上になります。
今回はUnicodeのSymbolOtherカテゴリに属するものを判定する形になっていますが、SymbolOtherカテゴリには様々な文字ブロックが存在するので、バリデーショ
【忘備録】startActivity(intent)で画面遷移できずアプリが落ちる(なんで?)
### startActivity(intent)で画面遷移できず沼りまくったのでメモ
:::note info
Android 超初心者が画面遷移で沼ったので忘備録
:::#### MainActivity.kt のコードはちゃんと書いていた
“`kotlin:MainActivity.kt
// ボタンクリックで画面遷移
val mBtn = findViewById
Java経験者がKotlinで実装したアプリをGoogle Playでリリースするまでに得た気づき
# 概要
日頃、Javaに触れている筆者が、KotlinでAndroidアプリを作成し、Google Playに公開した一連の中で得た気づきを共有できたらと考えています…# 前提・背景
Java:ある程度読み書きできます…Androidアプリは過去に個人レベルでJavaにて実装経験がありました。
Kotlin:興味をよせていましたが、KotlinでのAndroidアプリ実装経験はありませんでした。# デバッグに使うAndroid仮想マシンのアイコンランチャに、開発中アプリのアイコンが2つ存在する…
開発中、デバッグ環境としてAndroid Studioに標準搭載のAndroid仮想マシンを使っていました。デバッグや実行をすると、当該アプリがインストールされランチャーに開発アプリのアイコンが追加されます。ところが、まったく同じアイコン・名前のアプリがランチャーに2つ表示されていました…## 原因・解決
AndroidManifest.xmlにて、以下の2つの記述が、複数のActivityの各``内に
【備忘録】ChatGPTとAndroidアプリ開発 その0 (環境準備)
# 1.やること
組込みソフト開発者がキャリアチェンジのためにChatGPTを教師としてAndoroidアプリ開発に挑戦してみる。
備忘録として初心者がアプリ開発するまでの流れを投稿する。# 2.開発環境準備
https://developer.android.com/studioから「Android Studio」をインストールする。# 3.プロジェクトの生成
1.Andoroid Studioを起動し、「New Project」をクリック
![Main.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687592/9e27cc4f-961b-7991-de0a-0a5d55e06efd.png)
2.「Phone and Tablet」の「Empty Activity」を選択してNext
![Template.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687592/ddc54f50-e53f-21e9-
ZoomIn (Out) できるLazyColumnを作ってみる
– ピンチインアウト
– ダブルタップで、ZoomIn (Out) する部品を考える
### コード
“`kotlin
@Composable
fun ZoomableContent(
modifier: Modifier = Modifier,
content: @Composable () -> Unit
) {
val scale = remember { Animatable(1f) }
val offset = remember { Animatable(Offset.Zero, Offset.VectorConverter) }
val constraintSize = remember { mutableStateOf(Size.Zero) }
val scope = rememberCoroutineScope()val transformableState = rememberTransformableState { zoomChange, offsetChange, _ ->
/
BaseTemplateAndroidAppで強力なAndroidアプリを作成する
はじめに
はじめまして、Hridoy Chandra Das(リド)(@ihridoydas)です。
#### BaseTemplateAndroidApp: Androidアプリ開発の新しいスタート
テンプレート:[BaseTemplateAndroidApp](https://github.com/ihridoydas/BaseTemplateAndroidApp)
概要
BaseTemplateAndroidAppは、Androidアプリの開発プロセスを合理化し、堅牢で洗練されたアプリケーションを迅速に作成するためのオープンソースのAndroidテンプレートです。このテンプレートは、ベストプラクティス、ライブラリ、アーキテクチャのパターンを組み合わせ、開発者が毎回同じコードを書かなくても済むようサポートします。
このテンプレートは、[Hridoy Chandra Das](https://www.linkedin.com/in/ihridoydas/) によって設計され、コードの構築において意見を押し付けず、開発者が自由に選択
ラムダ式書き方まとめ(Kotlin)
ラムダ式にいろいろな書き方があるようなのでまとめてみました。
## 基本の形
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach({n:Int -> println(n)})
“`## 引数の型が推論できる場合は省略して以下のようにも書けます。
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach({ n -> println(n) })
“`## 高階関数の最後の引数がラムダ式なら、ラムダ式を高階関数のカッコの外に出せる
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach() { n -> println(n) }
“`
普通に関数宣言してるみたいで少し違和感…## 高階関数の唯一の引数がラムダ式なら、高階関数のカッコを省略可能
“`kotlin
var arr = arrayOf(1, 2, 3, 4)
arr.forEach{ n -> println(n) }
“`
これはAndroidアプ
エラーに直面した:android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY[787])
表題のエラーに直面して解決まで辿り着いたので共有します。
# 環境
Android Studio Hedgehog | 2023.1.1 Patch 2# 経緯
Androidアプリの開発の中で、Roomを実装中にこのエラーに直面しました。
## クラッシュした箇所
“`Kotlin
suspend fun operate() {
getCityCodeJsonDataSource.fetchResponseAsFlow().collect { list ->
list.forEachIndexed { i, data ->val prefecture = Prefecture(
i,
data.prefectureCode!!,
data.prefectureName!!
)//logをはくメソッド
MVVMを採用して分かったこと
仕事で開発中のプロジェクト内で、MVC?->MVVMへの移行を少しづつ進めています。まだ、絶賛移行中ですが、MVVMの実装にも慣れてきたところなのでここで一度分かったことを整理してみようと思います。サンプルで作ったコードも載せているので見てもらえるとうれしいです。
# MVVMとは?
この記事ではModel-View-ViewModelという3つの概念とレイヤード(layered)アーキテクチャを組み合わせたアプリ設計とします。## Model
データの構造体(もしくはデータ構造)のことです。Kotlinであれば data class で実装することが多い印象です。データをモデル化することでデータのまとまりやデータそのものに意味を持たせることができて理解しやすいです。永続モデルを構築するためにRoomというSQLiteを扱うためのライブラリを使うこともあります。
“`Kotlin
//こんなやつ
data class User(
val name: String,
val age: Int
)“`
## View
ここではユーザーに見えるもの、ユー
Firebase Cloud Messaging API(V1)でのPushテストの方法
# 概要
以前から利用していたFirebaseのCloud MessagingAPI(レガシー)の期限が迫ってきました。
![fcm-expire.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10494/6b0dbc15-f7c8-5936-ede9-29e97d99de74.png)
で、Firebase Cloud Messaging API(V1)に移行が必要なのですが、これをすると困ることがあります。
それは、いままでDebug用のアプリメニューから、Push通知テストを試すコマンドをSlackに送る仕組みを作っていたのですが、その仕組みがそのままでは使えなくなりますし、面倒になります。
ので、その対応の記事です。
# 何が面倒になる?
レガシーの場合は、Pushのテストをするときに、Httpヘッダーの`Authorization` に固定のキーを入れておけばよかったのですが、これからは、アクセストークンに変わります。(セキュリティが強化されました)
アクセストークンは、秘密鍵
Android端末はインターネットアクセスの夢をみるか?
# はじめに
Android端末をインターネット接続のないWi-Fiアクセスポイントに接続しようとして、接続・切断を繰り返して安定しないという現象に遭遇し、ワークアラウンドを見つけたので紹介します。
# 環境
ある試験のため、SIMなしAndroid端末をインターネット接続のないクローズドなLAN環境にWi-Fi接続しようとしました。アクセスポイントのSSIDを選択してパスワードを入れると、一旦接続されるのですが数秒後に切断され、その後接続・切断を繰り返して接続が完了しません。環境を簡単に書くと、
Buffalo Wi-Fiルータ 192.168.1.1(ブリッジモードでDHCPサーバ兼用)
+-Windows10 PC(Wi-Fi接続 or 有線接続どちらでも)
+-Android端末(SIMなし、Android 12 or 13どちらでも)複数機種で再現Android端末をインターネットにアクセスできない環境で使うというのは特殊な状況と思いますが、電波暗室で測定したいとか、工場内でクローズド環境で工具として使いたいとか、そんな場面があると思います。
ちなみに、同じ環境で
Flutterでadmobをandroidに追加するための備忘録
# google_mobile_adsのインストール
pubspec.yamlに以下の行を追加する
“`
dependencies:
google_mobile_ads: ^4.0.0
“`# google_mobile_adsの初期化
“`dart:main.dart
import ‘dart:async’;
import ‘package:google_mobile_ads/google_mobile_ads.dart’;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
unawaited(MobileAds.instance.initialize());//これを追加
runApp(const MyApp());
}
“`# 広告の読み込み等
下のサイトのexampleを参考にすれば、すぐに実装できる。
https://pub.dev/packages/google_mobile_ads/example# なんかビルドで失敗する
多分、google_mobile_