- 1. アプリエンジニアが達人に学ぶDB設計〜徹底指南書〜から学んだ話
- 2. KMM kotlinx-serializationでクラッシュする時にやったこと
- 3. [jetpack compose]Row/ColumnとConstraintLayoutでどの程度レイアウトの作り方が違うのか
- 4. DataStoreを試してみる
- 5. Androidのテストでだけ使うライブラリモジュールを作る
- 6. 【Jetpack Compose】Scaleアニメーション
- 7. 本当にリリースできるの?FlutterでQiitaアプリを作った話。
- 8. Inside Jetpack Compose
- 9. Cordova & React & TypeScript 環境構築&デバッグ手順 (2021年10月時点)
- 10. 【Android Studio】画像スピナー(プルダウン)作成
- 11. Pepper SDK入門(34) GoToでターゲットと巡り合ってもらう
- 12. Android 12βを正式版に更新する!
- 13. DroidKaigi2021セッション資料まとめ
- 14. emacs hy-mode
- 15. React Native + Expoで(iOS,Android)開発環境を構築する
- 16. SesameSDKをFlutterから触ってみて 〜前編〜
- 17. Android DIフレームワークのトレンドについて調査
- 18. @IntDefについて
- 19. AndroidでEditText以外のタップでキーボードを閉じる
- 20. 【Android】漫画の台詞はタテだから縦書きTextViewを作ってみた
アプリエンジニアが達人に学ぶDB設計〜徹底指南書〜から学んだ話
# TL;DR
– アプリケーションエンジニアもバックエンドの知識はあった方が面白いよ。
– いつどんな仕事が舞い込んでくるか分からないから守備範囲決めずに自己研鑽しようね。
– アンチパターンは実例としてわかりやすい。
– ストレージは、冗長設計しようね。
– 良書でしたので、是非いろんな方に読んで欲しい。(ステマじゃないよ)# 簡単な自己紹介
iOS, Androidのモバイル開発を主に行なってるエンジニア3年目です。
今所属しているチームのリソースの関係でアプリに拘らずバックエンドの開発業務も舞い込んでくるのでそっちの知識も最近は積極的に取り入れています。今回DBに関する書籍を読んだので、アプリエンジニアが知っておくメリットみたいな視点もなるべく取り入れながら、簡単な書評を中心に記事を書いていこうと思います。
## 書くこと
参考書の書評
アプリケーションエンジニアがこの本を読んで学べること
*ばちばちのインフラ屋さんはちょっと物足りない記事だと思います。## 書かないこと
業務レベルでDBを設計・運用する上での知識技能
*本書では論理設計に関してはかなり実用的
KMM kotlinx-serializationでクラッシュする時にやったこと
普段、iOSをやっていて、Androidは全く触っていないですが、KMMがずっと気になっていて某記事を参考に試しにやってみました。
慣れない中、クラッシュの連続で直すのが一番大変だったkotlinx-serializationでのエラーの直し方を残しておきます。
なかなかライブラリが参照されなかったり、クリーンしてようやく直ったと思ったら@ Serializablを使っているクラスが not foundでクラッシュしてしまいました。。まず、shared内のbuild.gradleに下記を記述します。
“`plugins {
kotlin(“multiplatform”)
kotlin(“plugin.serialization”) version “1.4.10” //これを追加
id(“com.android.library”)
}
“`次にandroidApp内のbuild.gradleに下記を記述します。
“`android {
compileOptions {
targetCompatibility = org.g
[jetpack compose]Row/ColumnとConstraintLayoutでどの程度レイアウトの作り方が違うのか
jetpack composeでかんたんなレイアウトをそれぞれ
– Row/Column/Box (※今回Boxは使っていません)
– Constraintで作成した場合、どのような違いが出るのか見てみました。
ConstraintLayoutのUIの作り方とかはこの記事では触れませんがコード見ていただいてもある程度理解できるかなと思います。
作ってみたのはこちら。
[search, share, home, star]
というラベルが付いたアイコンを並べるという部分をそれぞれRow/Columを使って実現したパターンとConstraintLayoutを使って実現したパターンとなります。
“`kotlin
@Composable
fun RowColumnOrConstraintScreen() {
DataStoreを試してみる
# [DataStore](https://developer.android.com/topic/libraries/architecture/datastore?hl=ja)とは?
> プロトコル バッファを使用して Key-Value ペアや型付きオブジェクトを格納できるSharedPreferencesの進化版DataStore には、以下2 種類がある
– **Preferences DataStore**
– キーを使用してデータの保存およびアクセスを行います。この実装では、
定義済みのスキーマは必要ありませんが、タイプセーフではありません。
– **Proto DataStore**
– カスタムデータ型のインスタンスとしてデータを保存します。この実装では、
プロトコル バッファを使用してスキーマを定義する必要がありますが、タイプセーフです。## 試した環境
サンプル用に[こちら](https://github.com/Slowhand0309/DataStoreSample)にリポジトリ作成しています。“`
Androidのテストでだけ使うライブラリモジュールを作る
# 概要
[Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(16)ライブラリバージョンアップ2021春(2)](https://qiita.com/kasa_le/items/3fc4814159e20f25c59a)
上記の記事にて、KotlinでAndroidアプリを作るシリーズを作っていますが、InstrumentationTest(androidTestフォルダのテスト)とRobolectric版のテストを同時に作っていて、いわゆるUtil系のクラスや関数が双方に必要でコピペしていくのが面倒になってきました。
テスト用の共通コードを共有する方法をとれば、コードのコピペは減らせるのですが、build.gradleのライブラリの記述が長くなってきて、テスト用のライブラリだけで長くなってしまい、本体のライブラリが分かりづらくなってきました。
そこで、テストに関連するコードを共通モジュール化することをやってみたので、その覚え書きです。
Android向けのライブラリモジュールを作る方法はいくらでも探せばありますが、私が
【Jetpack Compose】Scaleアニメーション
ComposeをScaleさせるアニメーションの実装に苦労したので書きます。
ここで書くのは以下2パターンです
– 無限ループするScaleアニメーション
– 表示時に一回だけ実行するScaleアニメーション今回動かすComposeはこんな丸いBoxです。
“`kotlin
@Composable
fun Circle(modifier: Modifier = Modifier) {
Box(
modifier = modifier
.size(80.dp)
.clip(CircleShape)
.background(Color.DarkGray)
)
}
“`## 無限ループするScaleアニメーショ
本当にリリースできるの?FlutterでQiitaアプリを作った話。
![poster_new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678085/27dcb69c-c257-7add-27aa-0a723fe70ada.png)
## はじめに
昨年の春先からFlutterを触り始めて、状態管理シリーズの記事や「Dart vs Swift」の翻訳を出してきたが、いつかFlutterで自作アプリを出したいとの思いが強くなり、今回のQiitaアプリに至りました。####ダウンロード先
▼iOS
https://apps.apple.com/jp/app/open-qiita/id1590830106▼Android
https://play.google.com/store/apps/details?id=com.jamestong.open_qiita## Open Qiitaの技術要素
– 状態管理
グローバル状態、例えば記事本文の文字サイズ変更、テーマカラーの変更は**BLoC** + **Equatable**;
特定イベントの状態あるいは通知
Inside Jetpack Compose
The English version is available here. (英語バージョンはこちら)
https://medium.com/@takahirom/inside-jetpack-compose-2e971675e55e# なぜ内部を知るか?
Jetpack Composeってまるで魔法みたいですよね?
例えば、関数に返り値がなくてもレイアウトされたり、勝手に差分更新がうまく動いたりしますよね?![compose.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27388/435f822e-9281-0440-ec78-80799e3544a0.gif)
https://developer.android.com/jetpack/compose?hl=en より知りたいと思ったのは、どうやって動いているか分からないものを見ると中身を知りたくなるのが純粋な理由です。
しかし、これからJetpack ComposeがAndroid開発のデファクトスタンダードになっていくと思われ
Cordova & React & TypeScript 環境構築&デバッグ手順 (2021年10月時点)
2021年10月時点で ** Cordova & React & TypeScript ** の環境作成とデバッグを行う手順です。
参考ページの手順は古くなっており、2021年10月時点では環境の問題でビルドができません。
ビルドが成功するまでにはかなりの試行錯誤が必要でしたので、後学のために手順をまとめています。
* Cordova環境作成 参考ページ
https://qiita.com/bathtimefish/items/113154e89650b351b5b7
https://qiita.com/hal_sk/items/cdc459fd639a736bccc3
## 目的
* Cordova+Reactでアプリを作成し、Android実機上でTypeScriptのデバッグを行う。
## 前提
* create-react-app を使い、ビルド、実行、パッケージの追加ができること
* Windows10* Macは簡単にできるそうです。
## 作成したソース一式
https://github.com/murasuke/cordova
【Android Studio】画像スピナー(プルダウン)作成
スピナーに画像をセットする処理。
作成するのに少々時間がかかったのでメモ。# スピナーアイテムのレイアウト作成
各々の画像表示用のアイテム“` item.xml
Pepper SDK入門(34) GoToでターゲットと巡り合ってもらう
#はじめに
GoToでは、Pepeprをどこかに移動させることができます。トラジェクトリファイルを利用したAnimateとは異なり、障害物を回避して目標地点に到達するように柔軟に動いてくれるのが特徴です。
![k0120_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/1c9dd00d-5ac1-40e4-7441-9eb44c084dcc.png)
このようなアクロバティック回避は不可なので、乗り越えられる塩梅の試練を課してあげてください。“`java
// ターゲットフレームを取得
Frame targetFrame = …;// アクションをビルド
GoTo goTo = GoToBuilder.with(qiContext)
.withFrame(targetFrame)
.build();// 同期でアクションを実行
goTo.run();
“`#GoToの微に入
Android 12βを正式版に更新する!
みなさん、初めまして!
Androidアプリ開発している「kano-ts」と言います。
今後、ちょいちょいAndroidネタをアップしていきますので、よろしくお願いします!## さてと、
10/19(日本時間10/20)、ついにPixel系向けにAndroid 12が配信されはじめましたね!
早速、β版(Android ベータ プログラム)を正式版に更新します。
12へ更新できる端末たちはこちらです。
* Pixel 3
* Pixel 3 XL
* Pixel 3a
* Pixel 3a XL
* Pixel 4
* Pixel 4 XL
* Pixel 4a
* Pixel 4a (5G)
* Pixel 5
* Pixel 5a## おや?更新できないぞ?
・OSの「システムアップデート」画面を開いてみましたが、更新画面にならないですね。
## 端末を再起動してみようっと。
・まだ更新できないな。
## Android ベータ プログラムのせいだろうか?
DroidKaigi2021セッション資料まとめ
![スクリーンショット 2021-10-19 13.32.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188222/4a6f4d2d-a3b5-60f8-ea5e-dfbc4f67fb8a.png)
[DroidKaigi2021](https://droidkaigi.jp/2021/)登壇資料、スライドのまとめです。
Twitter等で見つけ次第掲載しますが、もし資料を見かけた方or資料を公開した登壇者の方がいらっしゃいましたら、コメント等でお声がけください。
スライドや資料のリンクが見つかった場合はタイトルにリンクをつけてありますので、タイトルがリンクになっていない場合はまだ資料が見つかっていないものになります。# Day 1
## [プロダクトレベルで必要になる Jetpack Compose テクニック](https://speakerdeck.com/yanzm/purodakutoreberudebi-yao-ninaru-jetpack-compose-tekunituku)
emacs hy-mode
Lisp の人の言質はだいたい典型的な特徴があり、自賛と懐古的な礼讚が7割入るので、9 割引で信用するとして、残りがよくわからないので、自分もそっちに λ ってみるしかない。
—
Android で 64bit アーキテクチャの Arm CPU で common Lisp ぽいことをやろうとすると今のところ唯一 hy だけ方法がわかる。アプリでは **CL REPL (ecl)**が動くが(これイイ!)。
https://www.lights-of-holiness.eu/cl-repl/blog.htm
termux では 32bit だと ecl が動くらしいが、64bit cpu ではエラーになった。他にも debian や ubuntu をセットして、そこへビルドする等、実践しているという情報はあるが、Lisp 側に変更点がなくともホスト側が日々変更があり今日どのようにするのか調べて実践するのには数日間かかる(数十日でも、わからないまま)。
[非公式のパッケージで Racket はある](https://github.com/termux/termux-packag
React Native + Expoで(iOS,Android)開発環境を構築する
弊社のサービス[Hapitas](https://apps.apple.com/jp/app/%E3%83%8F%E3%83%94%E3%82%BF%E3%82%B9-hapitas-w%E3%81%A7%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%8C%E8%B2%AF%E3%81%BE%E3%82%8B/id1475444626)のアプリ版はReact Nativeを用いて開発されています。インターンとして開発に携わっているのですがで正直環境がどのように動いているのか全く理解していなかったので、勉強としてまずは開発環境を構築したので備忘録としてまとめます。30分ほどあれば作れます。
# React Nativetとは
React Native(リアクト・ネイテイヴ)は、Facebookが作成したオープンソースのモバイルアプリケーションフレームワークです。開発者がネイティブプラットフォーム機能とともにReactを使用できるようにすることで、Android、iOSアプリケーションを開発するために使用されています。Web開発で用いられるReac
SesameSDKをFlutterから触ってみて 〜前編〜
まずは、公式セサミアプリでも基にされている[SesameSDKライブラリ](https://github.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp)を参考に調べて参ります。
`Gradle`というオープンソースのビルドシステムが使われている(Javaのjarファイル warファイルを作成してくれる)ので、インストールしてみます。言語は非常に`Java`に近いスクリプト言語である[Groovy](https://agency-star.co.jp/column/groovy) Javaと同じ感覚でスクリプトを書けます。“`
$ curl -s https://get.sdkman.io | bash
“`
こちらを実行して、“`
All done!Please open a new terminal, or run the following in the existing one:
source “/Users/XXXX/.sdkman/bin/sdkman-init.sh”
Then issue th
Android DIフレームワークのトレンドについて調査
Androidプロジェクトに新規参加することになり、
利用されているDependency Injection(以下、DI)について調査しました。プロジェクトで使われているDIがなぜ選択されたのか、
他との比較をした上で良い点、悪い点も把握するため調査した内容になります。# DIとは?
`依存性の注入`、`依存関係インジェクション` と表記されます。“`
依存関係インジェクション(DI)はプログラミングで広く使用されている手法で、Android 開発にも適しています。
DI の原則に従うことで、優れたアプリ アーキテクチャの土台を築くことができます。依存関係インジェクションを実装すると、次のようなメリットがもたらされます。
・コードを再利用できる
・リファクタリングが容易になる
・テストが容易になる
“`
引用:https://developer.android.com/training/dependency-injection?hl=ja# Android DI フレームワーク一覧
* ★Dagger
* ★Hilt
* ★Koin
* Kodein
* K
@IntDefについて
## 経緯
私はEnumクラスが大好きなのですが、この前初めてIntDefを触りました。
独自アノテーションに対して付与する・・・?
便利そうなので調べてみました。## IntDef(StringDef)とは
端的に言うと、Androidにおいて**Enumより軽く、型安全に定数を使用できるようになるアノテーション**のことです。Enumを使用した場合、1つのEunmにつき1.0~1.4 KB ほど増えることがあるそうです。
サイズの増加は可能な限り避けたいので、かなり有用な方法に思えます。([参考](https://developer.android.com/topic/performance/reduce-apk-size#remove-enums))## 使ってみる
とりあえずEnumのサンプルを。細かい部分は目を瞑ってください。“` Sample.java
public enum DayOfTheWeek {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESD
AndroidでEditText以外のタップでキーボードを閉じる
## EditText以外のタップでキーボードを閉じたい
プラットフォームに関係なく、よくある要件ですね!
色々調べたのですが下記のようにしたら大体のレイアウトでカバーできそうだなって思ったので共有します### dispatchTouchEvent() を使う
`onTouchEvent()` を使う記事などが多くありますが、List系のレイアウトがあったりScrollViewが入ってると反応しないので `dispatchTouchEvent()` を使っておけばいいと思います。
あとは、スクロールのタッチアクションにも反応してしまうので、そこも対応が必要です。
タッチした箇所がEditTextだった場合は処理をしたくないので、タッチ領域がEditTextの表示領域かを判定する必要があります
“`kotlin
private var lastEventAction: Int? = nulloverride fun dispatchTouchEvent(event: MotionEvent?): Boolean {
// スクロール時のタップを無視させる
【Android】漫画の台詞はタテだから縦書きTextViewを作ってみた
##背景
自分も@tome_uraさんや@Nonato_Noteさんみたいな素敵なIT系マンガ描きたい!
でも筆が遅い……
そうだ! イラスト素材と会話文をぺたぺた貼るだけの四コマ作成Androidアプリを開発して時短しよう!
あ、縦書きTextViewが無い……##こんな縦書きTextViewが欲しい
レイアウトxmlに書いても使えるヤツ。
wrap_contentがいい。
普通のTextViewと同じパラメータ使いたいな。
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた