半空洞男女関係

思ったこととかプログラミングしてるときのメモとか色々かいてます。メールはidそのままgmail

久々にPython書いた

自分はdenoでスクリプトを書いたら、同僚はPythonで便利スクリプトを書いてきた。色々事情があってJupyter Notebookを使いたかったのでPythonに移植する作業をしていたのだが、Pythonはパッケージも多いし便利。JupyterはREPL的に開発してひょいと渡せるのでさらに便利。

昔はpipやvirtualenv、venvとパッケージ周りがカオスで使いたくないなあという印象だったけど、今日使ったPoetryというのはこれ使っておけばOKっぽい感じのやつで全くハマりどころがなかった。これならPythonを使ってもいいなあという気持ちになれたりした。

JSを普段書いているので、Arrayに対してmapとかfilterをmethod chainで書けなかったりするのがちょっとまだ慣れない感じ。普通に for in だったりリスト内包表記で回してしまう。最初Pythonやったのは高校の時とかだったと思うんで、そのころはmapとかfilterとか全くわからなかったが、今はまあ普通に欲しいよねという感じである。ここまで来るのに数年かかってるので、やっぱり駆け出しエンジニアでバリバリやってるのはすごいなあと思ったりもする。

GitHubのPersonal Access Tokenを作るページに値を渡す

https://github.com/settings/tokens/new でPersonal Access Tokenを作成できるけど、Query Paramaterで値を渡すとスコープとかを調整できる。

  • description
  • Note のところに入るやつ
  • scopes
    • カンマ区切りで欲しいスコープを渡す。
    • 例: repo,gist,read:org,workflow

例えばGPRを使うためのTokenを発行するためのURLはこんな感じになる

https://github.com/settings/tokens/new?description=gpr_token&scopes=read:packages

この仕様がドキュメントに乗っているかわからなかったんだけど、WebStormとかでTokenを作るときにこのURLに誘導されて便利ーとなったのでメモしておく。

何かしらオンボーディングする時に便利だと思う。

Swiftのguardのわかり方

久々にコードに触れるようになってきて、Swiftを読み書きしている。Swiftの guard は次のような感じで使うことが多いと思う。

guard let foo = item.foo else { return }

そのイメージだと、 何かを否定する条件だった場合に結構頭がこんがらがる。

guard !canceled else { return } // これはどっち?

これは、以下のコードと意味的には一緒になる。今までは以下のコードの方がわかりやすくて好みだった。

if canceled { return }

よくよく考えてみると、 guard は条件のところに前提条件を記載するようになっている。すなわち、「これは前提条件だ。保てないなら、elseの先へ」という感じ。こう捉えると、guardも読みやすくなった。

guard !canceled else { return } // キャンセルされてない状態が前提条件だよ!守れないならさよなら!

前々チームで一緒だった人に教えてもらったけど、guardelse の先は return するなり throw するなり、フローから抜けることが強制されるらしい。知らなかった。うっかり抜け忘れるということがなくていいですね。