Webエンジニアのメモ帳

技術的な話を中心に書いています。

2023-01-01から1年間の記事一覧

【Kotlin】拡張関数で自身を参照する方法 (レシーバ付き関数リテラル)

Kotlinには拡張関数という仕組みがあり、既存のクラスにメソッドを追加することが可能です。 例えば以下コードでは、Int型にsum()メソッドを追加しています。 fun Int.sum(num: Int): Int { return this + num } その結果、以下のような記述が可能になります…

【Kotlin Koans 解説】ジェネリック (Generics)

Kotlin KoansでKotlinを勉強したメモをまとめています。 問題 リンクは以下。 https://play.kotlinlang.org/koans/Generics/Generic%20functions/Task.kt 少し簡略化して説明すると、以下のコードが動くように、リストに入った要素を条件によって2つに分ける…

【Room・SQLite】数字の0埋めでFORMATが使えない場合の対処法

SQLiteのFORMAT関数 SQLiteでは、以下のようにFORMAT関数で0埋めを行うことができます。 SELECT FORMAT(1,'D3') # 001と出力される FORMATはRoomでは使えない しかし、Androidの開発で使われるRoomでは、FORMATを使うことはできません。 使おうとすると、以…

【Android】Roomの@Queryアノテーションで正規表現を利用する方法

例えば以下のようなSQLがあるとします。 SELECT * FROM users WHERE name LIKE "A*" このSQLをRoomで動かす方法をいくつか説明します。 アノテーション内で||で文字列を結合する方法 @Queryアノテーション内では、以下のように||を使って文字列を結合させる…

【Kotlin】カスタムゲッター・カスタムセッターについて

カスタムゲッター 例えば、以下のようなRectangleクラスがあるとします。 class Rectangle(val width: Int, val height: Int) { fun area(): Int = this.width * this.height } このクラスはarea()というメソッドを持っており、実行すると以下のようになりま…

【Kotlin】コマンドラインでの実行方法

例えばSample.ktというクラスを実行する方法は以下です。 kotlinc Sample.kt -include-runtime -d Sample.jar kotlin Sample.jar

【Kotlin】トリプルクォート文字列への変数の埋め込み

Kotlinでトリプルクォート文字列に変数を埋め込む方法は、通常の文字列に埋め込む方法と同じです。 つまり、文字列中に$変数名と書けばOKです。 たとえば、以下のコードを実行すると fun main() { val name = "鈴木" val sentence = """My name is $name""" …

【Room】エラー対応 DELETE query methods must either return void or int (the number of deleted rows).

エラー発生の経緯 Roomを使ったAndroidアプリにおいて、Daoクラスの以下のメソッドをsuspend関数に変更しました。 @Dao interface UserDao { @Query("DELETE FROM user WHERE id = :id") fun deleteById(id: Int) } すると、以下のようなエラーが発生しまし…

【Android Studio】保存時にコードを自動整形する

Android Studioでは、保存時にコードを自動整形することが可能です。 これを設定する方法は以下の通りです。 1. Preferenceを開く 2. Action on Saveを開く ここで、必要な項目にチェックを入れます。 この例だと、コードの整形およびimport文の整理が保存時…

【Android】adbコマンドを使えるよう設定する (zshの場合)

adbコマンドの使い方 adbは以下のディレクトリに存在しています。 /Users/{ユーザー名}/Library/Android/sdk/platform-tools そのため、このディレクトリへのパスを通せばOKです。 zshを使っている場合は、ターミナルから以下の手順を実行すればOKです。 1 .…

【Android】DataBindingを導入しようとして発生したエラーと対処法

発生したエラー DataBindingを導入するためbuild.gradleを修正すると、以下のエラーが発生しました。 could not set unknown property 'enabled' for object of type com.android.build.gradle.internal.dsl.databindingoptions$agpdecorated. 対処法 build.…

【IntelliJ】ジャンプ先から戻る方法

結論 Macの場合は以下のショートカット command + [ 解説 IntelliJでは、commandを押しながらメソッドやフィールドをクリックすると、それを定義しているところに飛ぶことができます。 飛んだ後で元に戻るのが、冒頭に書いたショートカットになります。

【Mac】テキストエディットで行間を広くする

結論 Controll + L 解説 ControllとLを同時に押すことで、文字サイズを変えることなく行間を広くすることができます。 なかなか調べても情報が出てこないので、備忘録がてらメモしておきます。

【Android】Android Studioで「logcat: Unexpected EOF!」のエラーが出た時の対応

Android Studioで開発をしている際に、急に以下のようなエラーが出るようになりました。 logcat: Unexpected EOF! この解決方法ですが、自分はPCの再起動により直りました。 調べた感じだと、Android Studioの再起動や、再起動させずに直す方法もあるようで…

【Android】SafeArgsをbuild.gradleに追加すると「safeargs plugin must be used with android plugin」のエラーが発生

発生したエラー SafeArgsを使おうと思いbuild.gradleを以下の通り修正しました。 plugins { // 以下を追記 id 'androidx.navigation.safeargs.kotlin' // 以下はすでに記述されている id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' id…

【Android】Navigationを使った開発で「Unresolved reference: R」というエラーが出る場合の対処法

発生したエラー 自作のAndroidアプリで、Navigationを使った遷移を実装したところ、以下のようなエラーが出るようになりました。 e: {アプリのパス}/app/build/generated/source/navigation-args/debug/{パッケージ名}/fragment/MainFragmentDirections.kt: …

【Android】Navigationを使った開発で、元の画面に戻る

結論 以下で前の画面 (Fragment) に戻れる findNavController().popBackStack() 解説 以下のように画面A・Bの両方から画面Cに遷移でき、画面Cで戻るボタンを押すと前の画面に戻るケースを考えます。 画面A → 画面C 画面B → 画面C このとき、画面AやBからCへ…

【GitHub】画像をサイズを指定して貼り付ける方法

以下のように画像のURLと幅を指定する。 <img src="{画像のURL}" width="{サイズ}"> <img src="https://cdn.profile-image.st-hatena.com/users/itechblog/profile.png?1664679531" width="300">

CentOSにPythonをバージョン指定でインストールする方法

例えばpython3.8をインストールする場合は以下のコマンドで可能です。 yum install -y rh-python38 which scl enable rh-python38 bash これ以外のバージョンをインストールしたい場合、コマンド中の「38」の部分を別の数字に置き換えればOKです。

【Git】git stashした結果を元に戻す

git stash pop でgit stashした結果を元に戻すことができます。

Javaのテストで「Test events were not received」が発生した場合の対処法

JavaやKotlinのテストで「@Test」アノテーションを付けたテストメソッドを実装しているにも関わらず、「Test events were not received」という内容のエラーが発生することがある。 この場合は、以下の通りimport文を修正すれば良い。 ・誤 import org.junit…

Kotlinのテストで「lateinit property 〇〇 has not been initialized」のエラーが出た場合の対処法

Kotlinのテストで「lateinit property 〇〇 has not been initialized」のエラーが出た。〇〇は「@MockK」アノテーションによりモック化しているクラス。 この場合には、以下のメソッドを追加することでエラーが解消される。 @Before fun setUp() { MockKAnn…

【Git】リモートのブランチ名を変更する方法

間違ったブランチ名でpushしてしまった場合、以下のコマンドで修正できます。 # ローカルでブランチ名を修正 git branch -m {誤} {正} # 正しいブランチ名でpush git push --set-upstream origin {正} 間違った名前のリモートブランチは、GitHub上の操作で消…

labolaで天気予報の広告を消す方法

labolaというフットサルやサッカーの参加者を募っているサイトがあるのですが、ある時期から天気予報の広告が入るようになりました。 しかも、かなり邪魔な位置に表示されます。 この記事では、この広告を消す方法を説明します。 1. 「Stylus」のインストー…

【Android】FragmentContainerViewを画面全体に表示し、上下の余白を無くす方法

Androidの開発でFragmentを使う場合、以下のコードのようにビューにフラグメントを表示する領域を用意しておき、そこにフラグメントを埋め込むような使い方が一般的かと思います。 ・MainActivity.kt class MainActivity : AppCompatActivity() { override f…

【Java】JUnitで例外を投げるコードのテストをする方法

例外を投げるコードをテストするには、assertThrowsを使います。 例えば、以下は数字を0で割るとArithmeticExceptionクラスの例外が投げられることを検証するコードです。 import static org.junit.jupiter.api.Assertions.assertThrows; assertThrows(Arith…

【Kotlin】Pairクラスとtoの使い方

Pairクラスについて KotlinにはPairというクラスが存在しており、以下のように2つの値を1つの変数にまとめることができます。 val pair = Pair(100, 200) 以下のように書くと、各要素を表示できます。 println(pair.first) println(pair.second) toについて …

【英語】appoint A as B は「AをBに任命する」の意味

「appoint A as B」は「AをBに任命する」の意味です。 TOEICなどでは「appointment of A as B」という名詞形で登場することもあります。 「appointment」が「予定」という意味なのは知っている人も多い (「アポ」という和製英語の原型です) かと思いますが、…

【英語】on a weekly basisは「週一で」の意味

「on a weekly basis」は「週一で」という意味です。 「every week」や「once a week」と同じ意味になります。

【Android】dpとspについて

px まずはpxについて。 PCなどのデバイスにおいて、画像は単一の色で塗りつぶされた正方形を並べることで表現されていますが、この正方形がいくつあるかを表す単位がpxです。 そのため、1pxの長さはデバイスの解像度によって変わります。 dpi dpを理解する上…