Open12

検索の仕方、ググり方 〜検索に困った集〜

Akira KashiharaAkira Kashihara

もしも、技術系で「これ調べたいのに、なかなか出てこなかったけど、これで調べたら(検索ワードやサイトなど)すぐに出てきた!」という検索に対する知見を広め深める試みです。

Akira KashiharaAkira Kashihara

もしも、見ている方で「これ、検索に困ったけど、こう工夫して上手く行った!」というのがあれば、是非投稿いただけると幸いです。宜しくおねがいします。

Akira KashiharaAkira Kashihara

Q) .performKeyPress()の引数に何を入れて良いのかわからない。
A) 「performKeyPress compose uitest」とググっても、10件ほどしか検索に引っかからず、しかも結果が「performKeyPress(KeyEvent)」などといった、分かりきった答えしか出てこない…
結局、虱潰しに値を入れて解決した。ちなみに、この方法は以下の記事。
https://zenn.dev/akira_kashihara/articles/1b6cdb57e4c21d

Akira KashiharaAkira Kashihara

Jetpack Composeを使って、Twitterアプリの右下にある作成ボタンみたいなのを作りたい。
「Jetpack Compose 追加ボタン」でググると、それっぽいものが出てきて、このボタンのことを「FloatingActionButton」と呼ぶことを知る。後は「FloatingActionButton Jetpack Compose」とググれば、いっぱい出てくる。
こことか
https://techbooster.org/android/ui/18533/
こことか
https://developer.android.com/jetpack/compose/layouts/material
参考になる。

Akira KashiharaAkira Kashihara

Jetpack ComposeのUI Testで「戻る」の動作をしたいけど、見つからない。
「Jetpack Compose back key UI Test」で調べても出てこない。
とりあえず、無駄なあがきだが、以下のように、Command+backspace(delete)をやってみる。

composeTestRule
            .onRoot()
            .performKeyPress(
                KeyEvent(
                    NativeKeyEvent(100,100,ACTION_DOWN, KEYCODE_COMMA, 1)
                )
            )
        composeTestRule
            .onRoot()
            .performKeyPress(
                KeyEvent(
                    NativeKeyEvent(100,100,ACTION_DOWN, KEYCODE_BACK, 1)
                )
            )
        composeTestRule
            .onRoot()
            .performKeyPress(
                KeyEvent(
                    NativeKeyEvent(100,100,ACTION_UP, KEYCODE_COMMA, 1)
                )
            )
        composeTestRule
            .onRoot()
            .performKeyPress(
                KeyEvent(
                    NativeKeyEvent(100,100,ACTION_UP, KEYCODE_BACK, 1)
                )
            )

動かない(KEYCODE_BACKをKEYCODE_DELにしても駄目)

Akira KashiharaAkira Kashihara

JUnit4 ハードボタンと調べた。そしたら、この戻るボタンのようにデバイスにあるボタンを「メディアボタン」というらしい。

Akira KashiharaAkira Kashihara

色々と試したが、どうにも出来ない。
各ページの上でback button (KEYCODE_BACK)が押された時にBackHandler(enable=true){}を使って、前のViewを表示しようとした。手動で操作するときは動く。しかし、JUnit4 + Composeだと動かない。
そこで、Activity(MainActivity)上にdispatchKeyEventでback buttonが押されたときの挙動を調べた。すると、back buttonが押された時に、ViewModelのViewの状態を書き換えに入っているけど、それがView側で反映されていない、ということが起こっているらしい…
分からない…

Akira KashiharaAkira Kashihara

Q) Android kotlinでDIするときの@InstallInに何を入れたら良いのか分からない

普通に「@InstallIn DI」で調べてみると、以下の記事が出てくる

https://developer.android.com/training/dependency-injection/hilt-android?hl=ja

この記事の中に

Hilt モジュール AnalyticsModule@InstallIn(ActivityComponent::class) というアノテーションが付いています。これは、依存関係を ExampleActivity に注入させるためです。このアノテーションは、AnalyticsModule 内のすべての依存関係が、アプリのすべてのアクティビティ内で使用できることを意味します。

と書いているので、ActivityComponentがActivityに対する注入に使われることは分かった。

じゃあ、ViewModelComponent,SingletonComponentの違いは何なのか調べようと
「ViewModelComponent SingletonComponent difference」
でググるとDaggerのサイトを発見

https://dagger.dev/hilt/components.html

これをいい感じにまとめれば分かりそう。

Akira KashiharaAkira Kashihara

MySQL(mariaDB)でinnoDBかAria(MyISAM)かを確認したいとき、どうすればいいか。
「データベース 型 確認 mariadb innoDB MyISAM」と確認して、以下の記事が出てきた。
https://pgmemo.tokyo/data/archives/1891.html

engineというらしい。確認方法は、information_schemaに移動して

select table_schema, table_name, engine from tables where table_schema = 'your_db_name';

を実行する。

Akira KashiharaAkira Kashihara

docker-composeで入れたmariadbのmysql_secure_installationについて、コンテナがたった時点で、すでにmysql_secure_installationで行われるリモートアクセス不可、テストデータベースの削除は行われているらしい。
https://www.reddit.com/r/docker/comments/rhwf28/mysql_secure_installation_on_mariadb_with_docker/

確かに、以下のソースを見ると、実行されていそう。
https://github.com/MariaDB/mariadb-docker/blob/master/10.5/docker-entrypoint.sh#L302