LazyColumn, LazyRow, TextFieldといった基本コンポーネントを並べて表示するというごくごく標準的な方法を教わりました。 ただ、その中で、数値のフォーマットや、列幅の調整等の実装を記述する必要があり、結果的にJetpack Composeでの基本的なコンポーネ…
Android OS自体についてや、アプリケーションの実行環境、アクセス制御、root化の方法などについて、詳しく聞いてみました。 Android OSとLinuxとの関係を教えてください。 AndroidとJVMの関係についても教えてください。 Ahead-of-Time (AOT) コンパイルに…
正規表現の基本的な構文については、Rubyの例ですが、別ブログで詳細に述べています。 Kotlinでは、正規表現クラスRegexのインスタンスメソッド、find(), findAll(), replace()を用います。 Javaのように、replace(), replaceAll()の区別はありません。 repl…
Exposedは、JetBrainsによって開発されたKotlin専用のORMライブラリとのことです。 Android以外の環境であって、Roomが使えない場合に使いたいと思いました。 kotlinのORMライブラリで、定番で軽量のものがあれば教えてください。 Exposedの歴史と、他の類似…
ふと、「再帰」のことが気になり、ChatGPTにいろいろ聞いていたところ、KotlinのWebサーバーフレームワークKtorの使い方の話に行き着きました。 Kotlinでコードを書く際は特に関数型プログラミングの知識が必須というわけではないのですが、徹底しようと思え…
一覧画面と詳細画面の2つをもつJetpack Composeアプリケーション作成の実践例です。 構成変更時、一時停止時、システムによる強制終了時をまたいだデータ保持戦略についてもいろいろ聞いています。 Jetpack Composeで、2つの画面のあるページを作りたいです…
android.util.Logを用います。 Android, Kotlinで開発を行う場合のログの取り方の標準的方法を教えてください。 ログレベルの使い分けの指針、及び、設定ファイル等を用いたログレベル設定について、標準的方法があれば教えてください。 buildConfigFieldと…
Kodeinの使い方でよく分からないものについて聞いてみました。 Kodeinのオブジェクトで、DI{..}で生成されるものとKodein{..}で生成されるもので違いはありますか? あと、KodeinAwareインターフェースの使い方も教えてください。 import()はKotlinの標準ラ…
「JavaのSpring Frameworkのようにアノテーションを用いないから、実行時に依存性解決を行っている」と勘違いしていましたが、実行時に依存性を解決するのはSpringも同じということです。 アノテーションの情報を実行時に、クラスのメタ情報として参照して挙…
(kotlinx.serializationを用いて、JSON文字列を読み書きする方法については、別記事でも触れています。) kotlinx.seriarization便利ですね。KotlinのデータクラスをJSONで読み書きする場合だけでなく、CSVで読み書きする際にも使えるようです。 ただし、ヘッ…
Jetpack ComposeのUIのテストについてかなり詳しく聞きました。 よく分かりませんでしたが、ドラッグアンドドロップのような複雑な動作もテストできるようです。 Jetpack Composeのテストについて、createComposeRule() が返すオブジェクトを用いてできるこ…
KotlinでMockitoを使う方法を詳しく聞いてみました。 Kotlinのクラスはデフォルトでfinalクラスであるため、通常のクラスはMockitoで扱えません。そこで、依存関係をmockito-coreに代えてmockito-inlineを使用する必要があります。話の流れで最後の方で聞き…
Roomデータベースのテスト方法も聞いてみました。 コンテキストはInstrumentationRegistry.getInstrumentation().targetContextで取得します。データベースは、インメモリーデータベースを、RoomのinMemoryDatabaseBuilder()を使用して作成します。 以前、ア…
Matcherクラス、Mockオブジェクト、各テストの前後の処理を記述するRuleについて、簡単に聞いてみました。 JUnit4で使えるMatcherについて教えてください。 正しい例外が発生するかどうかの検証はできますか? @Testアノテーションで指定できるテストが他に…
AndroidではJUnit4がテストフレームワークとして用いられることが多いそうです。 通常のクラスを初め、Jetpack ComposeのUIのロジックまで、テスト駆動開発の手法が使えるそうで、仕事で業務アプリを作成したときのUIのテストで散々苦しんだ経験のある僕とし…
2020年に導入されたというDataStoreオブジェクトを用いて、設定値を保存する方法を聞きました。 SharedPreferencesを改善するために導入されたものだそうですが、キー・値のペアを保持する際、キーに値の型情報を持たせるという手法を用いていたり、非同期処…
Jetpack Composeでは、EditViewではなく、TextFieldを用います。 また、保持するテキストは、SpannableStringではなく、AnnotatedStringです。 再表示周りの処理が従来のものと異なるので、似た機能の別コンポーネントが用意されているということだと思いま…
JsoupというJavaのライブラリを用いて、HTMLを操作する方法を教えてもらいました。 元の文書がXMLの場合、パーサーを指定する必要があるそうなので、忘れないようにしたいです。 後半では、読み込み・書き込み時の文字コードの設定方法も教えてもらいました…
「リアルタイムデータベースやプッシュ通知だけでなく、認証、アナリティクス、クラウドファンクションなど、多岐にわたる機能を提供しており、アプリ開発のさまざまな面で役立ちます」ということですが、今回はリアルタイムデータベースやプッシュ通知につ…
Jetpack Composeでは、ConstraintLayoutは第一の選択肢でないようです。 Bootstrapのグリッドシステムっぽい手法に近いのかとも思いましたが、それとも違うようです。 Jetpack ComposeのConstraintLayoutの例を示してください。 ConstraintLayoutの方が一般…
Jetpack ComposeでUIをデザインする際、Composable関数内に登場するStateFlow。 StateFlowのvalueが更新されることで、関連するComposable関数が再実行され、結果、StateFlowのvalueを参照するコンポーネントの表示も変わることになります。 ところで、非同…
Jetpack ComposeのColumnとRowの使い方を勘違いしていました。 あと、RadioButtonやCheckBox, LazyColumn, LazyRowといった複数の値や状態を持つコンポーネントの状態管理も、コード上の変数を通して管理するようで、従来のXMLベースのUIとは違った感じです…
音声録音の方法を聞いてみました。 ストリーミングと聞いて、リアルタイム音声通信などはできるかと思い、後半で聞いてみましたが、そちらはAndroid標準の機能だけで実装するのは難しそうです。 アプリ内から、音声の録音、録音したファイルの保存を行う方法…
メニューの作成も、各画面への遷移も、Jetpack Composeを使うとかなり楽になりますね。 Scaffoldを用いたメニューのデザイン、画面の遷移、Androidデバイスによるメモリ管理に関わらず値を保持する方法など、教えてください。 sharedPreferencesを用いたデー…
プラットフォームに依存せずどこでも使えるKotlinの依然性注入ライブラリ、Kodeinを、Androidアプリで使う方法について、ChatGPTに聞きました。 AndroidManifest.xmlに登録したクラス内で初期化するようです。 Kotlinの依存性注入ライブラリ、Kodeinの概要を…
Jetpack Composeを用いるアプリが肥大化すると、UI確認のためにビルドが必要なことがネックになり、マルチモジュール化が必要になるそうです。 後々苦しまないよう、早めにChatGPTで聞いてみました。 マルチモジュール化とは何ですか? どうやって実現するの…
ChatGPTに教えてもらいました。 僕は、Androidアプリ開発における、ViewModel以前を知りません。 Androidアプリの開発手法の変遷について教えてください。 このような変遷における、ViewModelの意義を教えてください。 データモデルとUIの間にViewModelを置…
Javaで書かれたJBox2DならKotlinでも使えます。 物理エンジンは、フレームレートの調整なども行ってくれるようです。 今は気が進みませんが、気が向いたら、使ってみようと思います。 あと、蛇足ですが、「衝突検知」というと難しいと思っていましたが、単純…
ForegroundServiceを用いるとのことです。 イメージは、音楽再生アプリで、バックグラウンドでアプリが実行中であることを示す通知が表示されます。 ForegroudServiceの使い方を教えてください。 上のコードの内部的振る舞いも教えてください。 サンプルコー…
ゲームプログラミングなどで、プログラムで音声の再生や停止、切り替えをする方法が知りたくて、ChatGPTに聞きました。 音声を再生するにはどうするのですか? MediaPlayerオブジェクトとDisposableEffectについて、もう少し詳しく教えてください。 MediaPla…