2020年振り返り
時系列で振り返り
雑に月ごとに
1月
- 熱海とか行きながら岐阜で年越し
- コストコでオラフのぬいぐるみを買う
2月
- 大阪へ家族旅行で行く
- 今思えばコロナに心配しなくていい最後の旅行だった
- 会社統合の話を聞く
- 初めはもっと別の会社かと予想してたけど結果としては中々びっくりした記憶
3月
- 水出しコーヒー出すやつ買った
- 電動ミルを買った
デロンギ(DeLonghi) コーヒーグラインダー うす式 粗挽き~ 細挽き ブラック KG79J
- メディア: ホーム&キッチン
4月
- 息子が1歳になった
- コロナで入園1週間で自粛
- 自家焙煎を始める
- 会社が統合された
5月
6月
- 保育園復帰
- 妻産休開ける
- 老後の趣味としてギターを買う
- 最近は全然弾けていない
- 老後の趣味だし少しずつやろう
- 骨伝導ヘッドフォンを買う
AfterShokz Airオープンイヤーワイヤレス骨伝導ヘッドフォン、ポータブル収納ケース付き、スレートグレー
- メディア: エレクトロニクス
7月
- ご近所さんとよく遊ぶ
- クラフト系にハマる
- 時間を持て余してくるみボタンとか作り出した
- JCOMからNURO光に乗り換える
8月
9月
- 息子動物園デビュー
- 息子仲良しのいとこが引越し
- ハンディカムを買う
ソニー ビデオカメラ FDR-AX45 4K 64GB 光学20倍 ブラック Handycam FDR-AX45 BC
- 発売日: 2018/02/09
- メディア: Camera
10月
- 息子初カット
- 妹が結婚式したので息子結婚式に初参加
- 十数年ぶりにCDを買う
- 統合後のメンバーで仕事を始める
- コロナで一度も顔合わせする事なく仕事を始めた
【メーカー特典あり】 NHK「おかあさんといっしょ」最新ベスト きみイロ(絵あわせゲーム カード付)
- アーティスト:NHKおかあさんといっしょ/花田ゆういちろう、小野あつこ
- 発売日: 2020/10/21
- メディア: CD
11月
- 息子はじめての運動会
- 電動自転車を買う
12月
- 電気圧力鍋を買う
- 息子に○○してとお願いすると出来る様になってくる
パナソニック 電気圧力鍋 3L(満水容量3L/調理容量2L) 圧力/低温/無水/煮込/自動調理 レシピブック付 SR-MP300-K
- 発売日: 2019/07/01
- メディア: ホーム&キッチン
プライベート
- 息子が出来ること増えた一年だった
- 保育園に行き始めて生活リズムが激変した
- 息子の生活リズムがしっかりした
- 息子に合わせて大人の生活リズムが出来る
- リモワ無いと生活が回らない
- 息子の迎え
- ご飯の準備
- 戸建て買ってて良かった
- 作業部屋が用意できた
- 妻と二人でミーティング被っても大丈夫だった
- 今から買うならもう一部屋増やしたい
2020年買って良かった物
リンクは上の時系列のところにあるやつ
電動自転車
- 保育園までの送り迎えが車より早く済む
- スーパーに行く時は車、保育園送り迎えだけなら電動自転車と使い分けてる
電気圧力鍋
- 文明の利器
- 昼に仕込んでおけば仕事してる間にご飯が出来上がってる
ホームロースター
- リモワでコーヒーの消費量が増えてた
- 通販で生豆買えば家で焙煎して丁度いい頃合いの豆でコーヒーが飲める
仕事
おちんぎん
まあまあ上がった方。統合で今後どうなるのかよく分からんけども一旦は自分の今の能力としては十分な賃金を貰えてる気がする。2020年の下期から新しい領域に手を付け出してるので2021年は更に飛躍したいところ
リモワメイン
- 通勤時間分を家事に回せてる
- 働きすぎ感がある
統合
- 開発現場としては良いことも悪いことも色々とある
- 思ってたよりも開発現場としては良い方向になってる気もする
- 詳しくはMeetなりでAmongUsやりながら話しましょう
来年の抱負
- 読書量増やしたい
- 息子と色んなところへ行けるようになりたい
mockkのverifyでメソッドの引数の中身をチェックする
下のようなコードでUseCaseSaveのテストでrepo.saveに意図した値が入っているかを確認したいようなケース
data class Data( val target: Int val timestamp: Date = Date() ) class UseCaseSave(val repo: Repo) { fun execute(num: Int) { repo.save(Data(num)) } }
matcherを自前で用意することで対応が可能。
@Test fun test_hoge() { val repo = mockk() val useCase = UseCaseSave(repo) useCase.execute(1) verify { repo.save(match { date -> date.target == 1 }) } }
CircleCIでprivateなリポジトリをgit submoduleでアクセス出来るようにする
Projectのページ開いて右の方にある Project Settings
を開く
左のメニューから SSH Keys
を選ぶ
User Key
で Add User Key
を押す
こんな感じに追加されたらアクセス出来る状態になる
あとはCircleCIのymlでこんな感じのを追加して呼び出せばOK
init_git_submodule: steps: - run: name: Git submodule command: git submodule update --init
SpekでgetMainLooperをMockする必要がある場合の対応方法
LiveData使ってるクラスのテストをSpekで書こうとするとよく出てくるエラー。
エラー内容
Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.
テスト用のTaskExecutorを用意する
class TestArchTaskExecutor : TaskExecutor() { override fun executeOnDiskIO(runnable: Runnable) { runnable.run() } override fun isMainThread(): Boolean { return true } override fun postToMainThread(runnable: Runnable) { runnable.run() } }
SpekのGroupBodyに拡張関数を追加
fun GroupBody.applyTestTaskExecutor(executor: TaskExecutor = TestArchTaskExecutor()) { beforeGroup { // AACのテスト用設定 ArchTaskExecutor.getInstance().setDelegate(executor) } afterGroup { ArchTaskExecutor.getInstance().setDelegate(null) } }
テストでSpekのBodyで拡張関数を呼び出す
internal object ViewModelTest : Spek({ applyTestTaskExecutor() Feature("...") {} }
JUnit5でコルーチンの例外発生のテストを書く
@Test fun test_exception() { assertThrows(IllegalArgumentException::class.java) { runBlocking { testMethod() } } }
assertThrowsにラムダを渡すことで例外発生のテストを書くことが出来る
aarに含まれるsoが見つからない
これが正しい
artifacts.add("default", file('libname.aar'))
こんな感じに拡張子名を忘れるとライブラリが見つからないとエラーになる
artifacts.add("default", file('libname'))
pandasでステップ状のグラフを書く
import pandas as pd df = pd.DataFrame([1, 3 , 5]) df.plot(marker='.') df.plot(marker='x', drawstyle='steps-post') # drawstyleで指定
drawstyleで steps-post
を指定するとステップ状になる
指定なしの場合
指定ありの場合