jestでgetActivePinia()” was called but there was no active Pinia.

Vue(バージョン2.7)+Jest(バージョン29)+Pinia(バージョン2.1)でJestでテストしていると、次のようなエラーになってしまいました。

import { mount } from '@vue/test-utils'
import DestinationModal from "../../../components/location/poi/organisms/DestinationModal.vue";


describe('DestinationModal', () => {
test('is a Vue instance', () => {
const wrapper = mount(DestinationModal)
expect(wrapper.isVueInstance()).toBeTruthy()
})
})

実行すると

Error: [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"?

Piniaがないのでエラーになってしまうので

import { mount } from '@vue/test-utils'
import DestinationModal from "../../../components/location/poi/organisms/DestinationModal.vue";
import {createPinia, setActivePinia} from "pinia" //これを追加


describe('DestinationModal', () => {
setActivePinia(createPinia())
//これを追加
test('is a Vue instance', () => {
const wrapper = mount(DestinationModal)
expect(wrapper.isVueInstance()).toBeTruthy()
})
})

パイナップルがかわいいですね!🍍

Android Studio3 Logcatの字が小さい

高解像度のディスプレイで使っていると、ある時からAndroidStudioのLogcatが表示されるところの字が非常に小さくなって見づらくなりました。

「まるで、ゴミのようだ!!」

というわけで、設定を変更します。

File→Editor→Color Scheme→Console Font

で変更できます。

File→Editor

にもFontがありますが、これはソースコードなどの表示ですね。

Kotlin tailrec とは(超簡単解説)

Kotlin(コトリン)の勉強を始めたばっかりです。6年ぐらいJavaをやってて、まぁ、今度のAndroidアプリはKotlinでやってみるか、ということで始めました。

本を読んでいて、次のようなサンプルコードに出会いました。

    tailrec private fun gcd(a: Int, b: Int): Int =
        if (b == 0) a
        else gcd(b, a % b)

tailrecとはなんぞや!!

Kotlin公式サイトで見ます。残念ながら現時点では英語しかないらしい…。

https://kotlinlang.org/docs/reference/functions.html#tail-recursive-functions

簡単に、意訳しますね!

tailrecの修飾子がついた関数は、条件を満たせば、再帰関数をスタックオーバーフローの心配なく使える。

条件は

・その関数自体の呼び出しが、関数の最後である
・try catchブロックの中ではない

だそうです。

以上が、超簡単なtailrecの話でした。以下は、もうちょっと詳しく補足です。
—————————————————-

そもそも、tailrecの日本語が「末尾再帰」なのか「末尾再帰最適化」なのか、よくわかりませんが、再帰関数の、返り値が末尾で再帰する場合、Kotlinの場合はJVMがいい感じに処理してくれるということです。

何がいい感じなのかというと、再帰関数というのはスタックオーバーフローを起こしやすいのです。

自分自身を参照して、ぐるぐる回るので、なかなかストップ条件にいたらない場合、そうなりがちですね。

しかし、 末尾再帰最適化 では、それを普通のwhileループみたいに内部で書き換えてくれるので、スタックオーバーフローの心配がなくなるのです。

すごいー。

「じゃあ、最初からwhileとかで書けばいいじゃん」

という人もいると思います。

♪違う違う~ そうじゃ、そうじゃなーいー

再帰関数はあまりJavaとかでは出てこないですけども、使えると便利なシーンがあります。同じことを何度か繰り返す場合ですね。

その時に、

「ああー この入力値がもしかしてバカでかかったらスタックオーバーフローで止まってしまうのでは…」

と心配をしなくていいのは、素晴らしいことなんです。

Android 5より下のバージョンでjava.lang.ClassNotFoundException: Didn’t find class “smart.location.admin.hogehoge.MyApplication” on pathのエラーが出る

Android5以上のスマホでは正常に立ち上がるのに、5より下のバージョン、(ここでは4.3を利用して試しています。)では

java.lang.RuntimeException: Unable to instantiate application smart.location.admin.hogehoge.MyApplication: java.lang.ClassNotFoundException: Didn't find class "smart.location.admin.hogehoge.MyApplication" on path

というエラーが一番最初のコード実行時に出て、立ち上がらなくなることがあります。

APIレベルでいうと19以下ということですね。

下記の、

64K を超えるメソッドを使用するアプリ向けに multidex を有効化する

https://developer.android.com/studio/build/multidex

というのが関係しているので、読んでみて、自分のソースコードに合うのをやってみてください。
私の場合は、gradleを変更し、MyApplication(最初に実行されるクラス)を下記のように変更したらできました。

public class MyApplication extends Application { ... }

上記を下記に変更↓

public class MyApplication extends MultiDexApplication { ... }

Git 自分のした変更の履歴だけ見る

書くまでもないことかもしれないけど、書かないときっと忘れるシリーズ。

自分がした変更で、

「あれ、あそこでどうやってああしたんだっけ?」

みたいなの見たいことありますよね?

2パターン紹介しておきます。

Githubで簡単に見る方法

①見たいレポジトリを選択する

②Contributers というところをクリック

③自分の名前の下のコミットの数のところをクリック
これは場所がわかりにくいと思うのでスクショ載せておきます。
下記の赤丸のところです。

②Gitコマンドで見る方法

上記のGithubで見る方法だと、ブランチごとでしか見れなかったりしますね…。

どこのブランチでした変更か覚えていない場合、探すのが大変です。

そんな時は、Gitコマンドでやっちゃいましょう!

git log –pretty=”%h – %s” –author=”akiko.goto”

これで、ずらずらと出てきてくれます。

ちなみに、今回は自分の名前で、ってことになってますが、もちろん

–author=”akiko.goto”

のauthorを変えれば、ほかの人の修正履歴が見れるってことです!

参考:Git の基本 – コミット履歴の閲覧