eityansメモ

eityansメモ

ゆるくやっていきます

記事一覧RSS

ポモドーロに向くタスク・向かないタスク

ポモドーロ・テクニックにハマっている。

ポモドーロ・テクニックをナメていた。良い。

在宅ワークは集中力との戦いである。,有名な,,自分はこれを読んで、時間を細かく区切って集中して作業するテクニックなんだなと思い、まぁ一理あるよね〜程度でこれまで実践してこなかった。,最近読んだ,,要は、ポモドーロ・テクニックは集中するテクニックではなく、自分がどれだけ集中して仕事ができたかを可視化するためのテクニックだという。この視点は自分に取って新鮮だった。,この考え方の良いところは、行動目標に…

一ヶ月ほど試してみたので、よりこのテクニックについていくつか気付いたことがある。ポモドーロ・テクニックに向いているタスクと、向いていないタスクがある。

ポモドーロに向いていないタスク

  • 設計の初期段階など、思考の繰り返しが要求されるようなタスク

    • 集中よりも創造性が求められる場合、時間で区切るとむしろ逆効果になる

    • 時間を気にせず考え抜く方が自分は心地よく仕事が進められる

  • コードレビュー

    • 特に大物や注意して見なければならない内容については時間で区切れるようなものではない。

    • ただ、軽微なものが大量にあるような場合は集中的にそれらを処理するために使えることもある(パッケージ上げなど)

  • 障害対応など緊急性が高いタスク

    • 5分の休憩などを取っている場合ではない

ポモドーロに向いているタスク

  • ある程度方針が見えているタスク

    • 上記の設計の初期段階が終わり、あとは手を動かすだけという状況は一番相性がいい。その手を集中して動かすことができる。

  • 時間で区切れるタスク

    • 実現可能性の有無などを一次調査したい場合などに有効

ポモドーロに向いていないタスクでポモドーロを行ってもストレスが溜まるだけだし、ただの勤怠管理に成り下がってしまうので、このあたりの用法は見極めていきたいところ

コードレビューで安易に質問形式を使うとチームが疲弊する

修正依頼の意図があるならば、素直にその内容を書いたほうが良い。安易に質問形式を使うとチームが疲弊する。


質問形式のレビューとは

例えばユーザーのidを抽出したいときに以下のコードがあったとして

1user_ids = User.where(hoge).map(&:id)

それに対してレビュアーが

map(&:id)を使っているのはなぜですか?

みたいな質問形式。これ、なるべくやめたほうが良い。

「この処理で必要なのはIDだけなので、pluck(:id)を使う方が効率が良いからそうしてほしい」という意図があるならば、シンプルにそう伝えれば良い。

上記の例は極端かもしれないが、以下のような書き方をしている人もいるのではないだろうか

pluckではなくてmapを使っているのはなぜですか?

退会ユーザーの場合はどうなりますか?

質問形式によるレビューの「こじれ」

質問形式を取ってしまうと以下のような「こじれ」が発生する

  • 真意を探る

    • 特に「なぜ?」と問われた場合に発生しがち。レビュイーからすると、レビュアーが何を問題視しているのか、どのような意図で質問しているのかを推測する必要が出てくる。「もっと良い方法があるのか?」「何か設計上の意図を確認したいのか?」など、レビュアーの意図が不明なため、レビュイーは様々な可能性を考慮し、本来のタスクから意識をそらすことになる。

  • 防御的な姿勢を取る

    • レビューの仕方や人にもよるが、自分の書いたコードを否定されたように感じ、防御的な姿勢を取ってしまう場合がある。

  • 無益な議論へと発展する

    • レビュイーが意図を汲み取れなかったり(大抵はできない)した場合に発生する。レビュアーからすると的外れな表面的な回答をレビュイーが行い、それに対してレビュアーがまた質問するという不毛な議論が発生する。

  • コードが歪む

    • これはレビュアーに修正依頼の意図がなく、純粋な質問をした場合に発生しうる。真意を探りすぎたレビュアーが既存のコードを過剰に調整してしまい、結果としてコードが歪んでしまう場合がある。

質問形式自体にこういう「こじれ」のリスクが有ることを意識したほうが良い。

なぜレビュアーは質問形式を使ってしまうのか

以下のような理由がある。質問形式のレビューは楽なのだ。

  • 指示することに対するためらいがある

  • 具体的な修正案がわからない、自分が想定する修正が最適なのか自信がない

  • レビュイーが自発的に気付き、修正することに対する教育的な期待を持っている

上二つの理由は心理的だったり技術的な問題であるため説明は省略するが、最後の理由は注意したい。確かにレビューのコメントでレビュイーが自身のコードの問題点に気付き、それの修正を行うことはあるが、それによる教育的なメリットはどれぐらいあるのだろうか。おそらくほぼ無いと言っていいだろう。仮にあったとしても、それは質問形式を行ったことによるものではない気がする。

より建設的なレビューをするために

  • 提案をする(コスト:低)

    • 提案形式で済むのなら、積極的に提案形式でレビューしたほうが良い。先に述べた通り質問形式は「こじれ」を引き起こすリスクを持っている

    • 答えを与えることに対する教育的なデメリットを感じる人もいるが、それは無いし、自発的な修正による教育的なメリットもない。もしそれが期待できるような状況ならば、「勉強も兼ねて周辺を調査し、最適だと思う手法を提案してください」ぐらいまで伝えた方が良い。

  • 純粋な質問であることを伝える(コスト:低)

    • 疑問に思ったときに使う。「ask」や「純粋な質問なのですが、」をつけるだけでいい。レビュアーが余計な真意を探る「こじれ」を減らせる。

  • 具体的な指摘をする(コスト:中)

    • 何が問題なのかを伝え、それと期待する修正内容を伝えるとより良い。

  • 指摘内容の意図や背景を伝える(コスト:高)

    • 技術的な差やドメインの差がある場合に必要になる。

コストの高いレビューをレビュアーに期待するのはやめる

自分がレビューするときはこれらのことを意識していきたいが、一方で人のレビューにこれらを期待するのは少し虫が良すぎるかもしれない。なぜレビュアーが質問形式を使うのかと言うと、それが楽だからだ。

雑なレビューを受け取ると少しがっかりすることもあるが、まずはレビューのために時間を割いてくれた相手に感謝の気持ちを持つようにしよう。

git ですでに管理されているファイルの変更を無視する

.gitignoreとは違い、既に管理されているファイルの変更を無視したい。

環境依存の関係でどうしても変更したいが、全体には影響させたくないときに使う。

1git update-index --skip-worktree [ファイル名]

git update-index はインデックスを更新する。インデックスはワーキングツリーとリポジトリの中間に位置するステージングエリアのこと。

これの--skip-worktreeオプションでファイルの変更を無視する。

この操作を取り消すには --no-skip-worktree を使う

1git update-index --no-skip-worktree [ファイル名]

注意点

--no-skip-worktree を使うと、変更を検知することができなくなる。そのため、変更を取り込めないことによる別のトラブルが発生する場合がある。後述する--assume-unchangedの方が目的に合っている場合もある。

--assume-unchangedオプション

似たようなオプションで、--assume-unchangedがある。--skip-worktreeがファイルの変更を無視するのに対して、--assume-unchangedはローカルでのファイル変更が無いと仮定するように指示する。

使用目的としては、自動生成されるファイルなど、頻繁に更新されるけど頻繁に変更を追跡しなくても良いものに対して使う。ファイル変更の監視をしなくて良くなるので、パフォーマンスが向上する。

1git update-index --assume-unchanged [ファイル名]

この操作を取り消すには--no-assume-unchangedを使う

1git update-index --no-assume-unchanged [ファイル名]

--skip-worktreeと--assume-unchangedの違い

ローカルとリポジトリでそれぞれファイルの更新が行われ、マージされたときの挙動が異なる

  • assume-unchanged:ローカルの変更は破棄。リポジトリが取り込まれる

  • skip-worktree:ローカルの変更を維持。リポジトリの変更は取り込まれない。

設定ファイルにおける軽微な調整を無視したいときなどは、将来の変更が取り込まれる--assume-unchangedの方が向いていそう。

無視したファイルを確認する

1git ls-files -v | grep '^[Ssh]'

git ls-files -vで先頭にSがついているものが--no-skip-worktree指定したもの。--assume-unchangedを指定したものについては小文字のsがつく。マージ中にコンフリクトしたものは小文字のhで表示される。grepでそれらを抽出している。

参考

ASN (Autonomous System Number) とは何か

大きいところから説明するほうがわかりやすい。

ICANN (Internet Corporation for Assigned Names and Numbers)

インターネットのアドレス空間をグローバルに管理する非営利団体がある。

IANA(Internet Assigned Numbers Authority)を通じて、各地域のRIRにASNのブロックを割り当てている。

RIR (Regional Internet Registry)

各地域におけるIPアドレスとASNの割り当てと管理を担当する組織

世界には5つある

  • ARIN (American Registry for Internet Numbers): 北米地域

  • RIPE NCC (Réseaux IP Européens Network Coordination Centre): ヨーロッパ、中東、中央アジア地域

  • APNIC (Asia-Pacific Network Information Centre): アジア太平洋地域

  • LACNIC (Latin America and Caribbean Network Information Centre): 中南米、カリブ地域

  • AFRINIC (African Network Information Centre): アフリカ地域

ASN(Autonomous System Number:自律システム番号)

インターネット上でネットワークを識別するために使用される番号。主にインターネットサービスプロバイダー(ISP)や大規模ネットワークを管理する組織に割り当てられる。

この分類があるおかげでルーティングの効率化ができている

IPアドレスからASNを検索することができる

IPの情報を取得するときに、プライベートIPアドレスではASNは割り振られない。IPの情報を使ったロジックを書くときはこれを使って開発時かどうか判定できる。

首を痛めたメモ

ボルダリングで首を痛めた。2年前にも痛めており、今回も症状が近い。記録を残す。

ボルダリングで首を痛めたらメモする場所

定期的に首を痛めている気がするので、ここに記録してみる。,,

  • 2025/03/29

    • ムーブを試行錯誤しており、右手に少し悪いピンチでサイファ―ムーブを試したら思ったより身体が上がらず首裏が張ったような状態になる。多分これで痛めた。

    • その日はそのあと4,5時間ぐらい登った。

    • ずっと痛かったけどハイになっているのか登っちゃうんだよな

    • ロキソニンの湿布があったのでそれを貼って就寝。

    • 左を向くと痛い

    • 右を向くと痛くない

  • 2025/03/30

    • 朝から痛い。29日より痛い気がする。

    • 左を向くとじんわり痛い

    • 左を向いて上下を向くと常に痛い

    • 右を向くと神経っぽい痛み

    • 右を向いて上下を向くと常に痛い(左よりはまし?)

    • 両腕を伸ばすと左側の首裏が痛い。右腕は円のように動かしても痛くないが、左腕は痛い(痛くならないように無意識に他の筋肉が動いている感じがする。)

    • この日はお出かけした。2万歩歩いた

    • 夜はロキソニンの湿布を貼って就寝

  • 2025/03/31

    • まだ痛いが、痛みは引いてきている気がする

    • 左を向くと痛くない

    • 左を向いて上を向くと痛い

    • 左を向いて下を向くと痛くない

    • 右を向くと神経っぽい痛み

    • 右を向いて上を向くと痛くない

    • 右を向いて下を向くと痛い

    • 両腕を伸ばすと左側の首裏が痛い。右腕は円のように動かしても痛くないが、左腕は痛い

    • 夜はロキソニンの湿布を貼って就寝

  • 2025/04/01

    • かなり痛みは引いてきた

    • 左を向くと痛くない

    • 左を向いて上を向くと痛い(だいぶ引いてる)

    • 左を向いて下を向くと痛くない

    • 右を向くと神経っぽい痛み(だいぶ引いてる)

    • 右を向いて上を向くと痛くない

    • 右を向いて下を向くと痛い(こっちはまだ痛い)

    • 両腕を伸ばすと左側の首裏が痛い。右腕は円のように動かしても痛くないが、左腕は痛い

    • ボルダリングを3時間ほど。問題なく登れた

    • ロキソニンの湿布を貼って就寝

  • 2025/04/02

    • まだ痛みはあるが、よくなっている感じ

    • 左右、右上、左下:痛くない

    • 左上、右下:少し痛いぐらい

    • 両腕をのばしても痛くない