GitHub の通知をちゃんと使えるように設定する
はじめに
今回初めて仕事で GitHub (GitHub Enterpsise Cloude) を使うことになりました。
始める前は少しアコガレなんかも有ったりしたのですが、いざやってみると、思ったほど素敵では無いですね… これまでプライベートスペースだったところに仕事が入り込んでくる居心地の悪さよ。 後日、他の人に聞いてみたり見てみたりした感じ、(規約的にはまずそうですが)アカウントを使い分けている人もそれなりに居そうで、自分もそうすりゃ良かったかも、と思う始末です。
Elixir 開発環境をセットアップする
はじめに
改訂新版 Elixir/Phoenix 初級①: はじめの一歩 という書籍で Phoenix というウェブフレームワークの勉強をはじめました。
Elixir という言語で実装していくことになりますが、本書籍は Elixir 言語入門としても優れているので、少なくとも本書を読み進めていくに当たって、言語仕様のことで困ることは無さそうです。
自分の作成したGitブランチを表示する
リモートブランチに一時的なブランチ、テスト的に作ったブランチなどをpushしていたのを掃除したくなりました。
複数人で共同作業するために利用しているので、どれが自分のブランチなのかをまずリスト化したかったので、どうすれば出力できるか調べました。
WSL2上のGUIアプリケーションを動かす
Tauri の開発環境を Windows10 の WSL2 に移行するために、 WSL2 上の GUI アプリを Windows で表示するようにセットアップしました。
とは言いつつ、既に次の手順でセットアップしたことがあるので、今回はこれが動くかどうかを確認しただけですが。
WSL2上にDockerをインストールする
現在、 Windows で Docker を利用するには大きく2つ方策があるのかなと思います。
-
WSL2 上に Docker Engine をインストールする
自分は元々 Ubuntu 上で Docker を利用してきたので、馴染みのある後者を選択することにしました。 (ちなみにこだわりが無いのなら前者の方が良いと思います)
Kotlin で JPA エンティティクラスを定義する
Kotlin で JPA エンティティを実装しようと思って調べた結果をまとめた記事です。
まとめ:
-
プロジェクト構成について
-
kotlin-jpa
compiler plugin を適用する -
all-open
compiler plugin を適用し、@Entity
,@Embeddable
,@MappedSuperclass
を対象に設定する
-
Jacksonでコンストラクタを利用してデシリアライズ
Jackson は引数なしコンストラクタが必要、というblogを目にしましたが、正しくありません。
-
@JsonCreator
を付与することでそのコンストラクタを使ってデシリアライズするように指示できます。-
コンストラクタが1つしか無い場合は省略できます。
-
git worktree を利用していると git-commit-id-maven-plugin でエラー
…になりました。
コマンドライン引数でスキップさせるには、 #278 で導入された maven.gitcommitid.skip
オプション(現時点最新版の該当コードリンク)を利用して、
mvn -Dmaven.gitcommitid.skip package
などとすれば良さそうです。
JUnit + Mockito テストケースを Kotest + MockK に書き換える
Kotest + MockK の組み合わせは Kotlin ではメジャー…かと思いきや検索してみても公式の
にあるような例しか見つかりませんでした。
Mockito で言うところの @Mock
や @InjectMocks
を使ってモックを差し込みたいんじゃい!
ということでサンプルです。
Kotlin で JUnit4 のテストケースを書く
-
JUnit4 / Parameterized
-
Mockito 利用
-
テスト対象が Lombok, MapStruct 使用
な状況で Kotlin でテストコードを書きます。
先にまとめを書いておきます。
-
(IntelliJ で Java のコードを
.kt
にペーストすると Kotlin コードに変換してくれるが、コレジャナイ感溢れるコードになったのであまり自動変換コードを信用するのは危険かも) -
@Mock
や@InjectMocks
を付与したフィールドはlateinit var
-
static
メソッドを書きたい場合はcompanion object
で囲って@JvmStatic
アノテーションを付与する-
今回の場合は JUnit4 のパラメータ供給メソッド(
@Parameters
)が該当
-
Kotolin のプロジェクトを Maven で作成する
入門書を一通り読み終えたのでサンプルプロジェクトを作成しようと思いました。
JetBrains がメンテナンスしている archetype が利用できそうです。
mvn archetype:generate -DarchetypeGroupId=org.jetbrains.kotlin -DarchetypeArtifactId=kotlin-archetype-jvm
IntelliJ IDEA から作成した場合も似た感じの pom.xml
が作成されるかなと思います。
IntelliJ 最新版(2021.3) で Kotlin と Lombok が共存できない
[追記 2022-01-17] 今回リリースされた 213-1.6.10-release-944-IJ6461.79
で修正されたようです(ただし .idea
ディレクトリを削除してからインポートし直す必要がありました)。
Kotlin 1.5.20 から Lombok compiler plugin というものが提供されるようになり、 Kotlin から自動生成される getter などにアクセスできるようになりました(※実験的機能なようですが)。
Kotlin in Action (Kotlin イン・アクション) 読書メモ
Kotlin 関連書籍について
書籍 Kotlinイン・アクション を読んでいます。
2022 年 1 月現在の Kotlin 最新バージョン が 1.6.10
であるのに対し、本書が解説しているのは 1.0
のようなので、役に立つのかな…と当初は考えていましたが、今のところ、これは駄目だ、というところは無さそうです。
(気になる人はドキュメントの "Earlier versions" (このあたり) で新機能について説明があります)