2020年10月1週 Weekly Report
📰 Topics
引き続き内容は少なめ..業務の都合上、Go現中心です。
創の軌跡をやっとクリアしたので、次のレポートはアウトプットを出していきたい。
Table of Contents
書いたこと
【Python】Poetryでプロジェクトディレクトリに仮想環境作る方法
Version1.0より前とはコマンドが変わっていました。
学んだこと
【Golang】テストに必要な技術について
サンプルコードで示せるほどまとまっていないため、利用した技術だけメモ書き程度に。
後ほど、これらをまとめて記事にしたいです。
委譲できるクラスを作る
InterfaceとStruct、Methodを使って、コンストラクタでclientを委譲できる設計にします。
NewXXXService(apiClient)
みたいな感じです。
プロダクションとテストで渡すapiClient
を変えることでテストできるコードになります。
モックの作成
標準のmockを使います。
go generate
を使って対象コードに修正が入ったら、Mockコードを自動生成できるようにします。
//go:generate mockgen -source .\\projects.go -destination ..\\..\\..\\mock\\client\\bitbucket_client\\workspaces\\mock_projects.go
go generate
の書き方でいくつかハマりました..。
- 引数は記載されたソースディレクトリからの相対パス (ルートからの方法もある?)
// go:generate
とスペースを入れてはいけない- 全階層を調べる場合、パスには
./...
を指定する
assertライブラリ
『ライブラリに頼らずif文でしっかり書こう!』というのが推奨されてました。
ただ、私は本質と外れるコードを書きたくなかったのでtestify
を使いました。
GitHub CLIだってtestify
使ってますし🤗
読んだこと/聴いたこと
【Golang】GOPATH に(可能な限り)依存しない Go 開発環境(Go 1.15 版)
ModulesやGOPATH周りの理解が甘かったので参考になりました。
GOPATH
のデフォルトは~/go
であり、引き続きこちらを使っていこうと思います。
特別な拘りはないため、デフォルトを使った方がリスクは低いので。
開発場所を$GOPATH/src
に縛りたくないので、GO111MODULE=on
は必須です。
v1.16からはそれも不要になるとのことで楽しみです😆
【Golang】CodeReviewComments/Receiver Type
Go言語のコードレビューコメントガイドに、Receiverをポイント型にすべきの項目がありました。
重要だと思ったポイントは以下。
- レシーバーが変更されるならポインタでなければいけない
- 値型だと変更されないので
- 値がコピーされた方が変更されるのでエラーにはならない
- 値型だと変更されないので
- レシーバーの構造が大きいならポインタの方がいいかもしれない
- よほど巨大でなければコピーコストよりヒープコストの方が高いという話も..
- レシーバーのプロパティに変異可能なポインタがなければ、値型の方がいいかもしれない
- 変異しない(Immutable)であることを主張できる
迷ったらポインタにしておけ..と最後にありますが、適切かは都度意識していきます。
試したこと
スマホのTOPから必須でないアプリを消す
『起動しやすい場所にアイコンがあるアプリほど起動する』という仮説に基づき、つい開いてしまうSlackをスマホTOPから削除してみました。
まだ1~2日ですが効果を実感しています。以下のような感じによくなる。
スマホでロック画面解除
↓
Slackアイコンをタップしようとして無いことに気付く
↓
『じゃあいいか.. 別のアプリでも起動させようかな..』
あとは率先して起動させたいアプリをセットしてどうなるかですね。
【AutoHotkey】押しっぱなし回避用設定
AutoHotKeyの押しっぱなし問題を少しでも回避できないかと以下の設定を追加しました。
; 変数名解決時に環境変数を見ない (パフォーマンス改善による押しっぱなし対策)
#NoEnv
; 10msのコマンド間スリープを0にする (パフォーマンス改善による押しっぱなし対策)
SetBatchLines, -1
あまり期待はしていませんが、少し様子を見てみます。
なお、以下は既に設定済みです。
; キーボードフックを使用する (押しっぱなし防止対策)
#InstallKeybdHook
; 入力モードで割り込みを禁止する (押しっぱなし防止対策)
SendMode Play
以下のサイトを参考にしています。
調べたこと
なし。
整備したこと
なし。
今週のリリース
なし。
その他
創の軌跡、10/1アップデート含めてようやく一通りクリアしました!
プレイ時間は175時間程度です。
9月は時間とられてエンジニアリングが全然できませんでしたが、今月は挽回していきたいですね。