Posts for: #Motivation

ほぼお休み

今日のバドミントン練習はリフティングを5分、フットワークを10分した。久しぶりにリフティングしたら距離感が鈍っているかと思いきや、100回は簡単に超えられた。リフティングをするのも少し飽きてきたので他の練習もやっていこうと思う。練習前に無性にカラダ動かしたくなったので 1.8km ほどジョギングで走ってみた。

期日前投票

兵庫県知事選挙 の期日前投票へ行ってきた。元知事のさいとうさんも追い上げしているみたい。来週末が投票日になるので結果がどうなるのか楽しみでもある。

2人の自殺者のうち、1人は告発された方でもう1人は次の優勝パレードの寄付金を募る企画の責任者だったと思う。表向き補助金のキックバックとは認められてはいないが、不可解なお金の流れがあるのでかなり黒に近い灰色にみえる。百条委員会が進むうちにこの疑惑の検証も進むのではないか?と当初は考えていたが、そうでもなくなっていないみたい。もしくはこれは副知事がやったことで知事の過失とはみられていないのかもしれない。

タスクをこなす日々

以前みた動画で 日々の変化を感じる のが大事だとあった。少し意識して普段やらないことをしてみたり、買いものするモノを変えたりしてみていた。またマンネリになってきたのでそのことを思い出していた。梅原さんの言う 義務感によって受け身の状態になってしまう 状態そのものである。

以前はやりたいことがいくつかあったし、そのための調べものも少しずつ進められていた。夏場は開発者としてお仕事のよくない部分を直すというところに集中したものの (その成果も十分に出た) 、一時期のその繁忙期をすでに過ぎていていまはそれほど忙しくないにも関わらず、心が空き時間を何に使うかということについてこない。いまのプロジェクトの課題に気付き過ぎてすべてに対応できない状況にストレスを感じているところも多少はある。そうであっても、新しいことを学んでいて楽しいとか、日々の生活に活気があるとか、そういう状態ではなくなってしまっている。5月頃は運動をして体脂肪を減らす日々が本当に楽しかった。それが当たり前になってしまったというべきなのか。2024年1月まで運動はほとんどやっていなかったのだから、運動をやるようになって単純に他のことをしていた時間を取られているという考え方もある。一方で運動によって健康にはなっているし、バドミントンという趣味や新たなコミュニティの土台づくりにもなっているから、これはこれでよい方向に変化したとも考えられる。

照明の明るさや色合いとシャトル視認の考察

今日のバドミントン練習も引き続き主にエアシャトルでリフティングを70分 (駐車場10分、公園35分、ビル25分) した。土曜日なので昼間に駐車場や公園、ビルの軒下で練習した。20-30分もやれば集中力が途切れてくるので休憩と気分転換を兼ねて場所を移動している。今日の連続最大回数は122回だった。安定的に20-30回は続くようになってきた。メイビスフィールドだと10分やれば1度は200回以上続けられる程度に安定してきた。

エアシャトルのコルクが真下を向いているときにラケットのスィートスポットでとらえるとうまく上がる。失敗するときはラケットコントロールを誤ってシャトルを回転させてしまうことが多い。エアシャトルはコルクをラケットのガットでとらえないとうまく上がらない。回転しているとシャトルの裾をはたいたりコルクをフレームに当てて跳ね上がらなかったり、跳ね上がってもあらぬ方向へ飛んでいってしまう。軽い失敗で回転させてしまっても、ちょっと強めに打ち上げると重力で補正されてコルクが真下を向くように修正できるときがある。そのリカバリがうまくいくと連続回数が増えていく。

練習場所と照明と背景の考察

近所にバスの営業所があり、その駐車場が広くて明るかったので練習してみた。ここは24時まで照明がついている。周りは大きなマンションまたはビルに囲まれている。平日の22時台で20分ほど練習していたが誰も来なかった。広くて周りに気を遣う必要もなくシャトルも視認しやすかった。また今度行ってみようと思う。

先の駐車場の印象がよかったので広い駐車場なら練習しやすいのかな?と思って別のところへも行ってみた。基本的に駐車場は24時間照明がついていて明るいところが多い。しかし、駐車場ならどこでもいいわけでもなかった。次の駐車場はシャトルの背景が複数のビルと夜の闇で移り変わってしまい、背景の明るさが変わる影響でシャトルを視認しにくいことに気付いた。広くて明るければどこでも練習しやすいわけではないことに気付いた。

次に電球色なら昼白色の照明よりも目にやさしいから練習しやすいのではないかと考えた。旧居留地の有名な建物の隣のビル。写真ではわかりにくいが、次のビルの照明は橙色の電球色になる。試してみたら意外とシャトルを視認できなかった。その理由はシャトルの色が昼白色に映える赤色や黄色に着色されているため、電球色に照明に溶け込んでしまってシャトルそのものを視認しにくくなってしまうように思えた。もしかしたら白いシャトルなら逆にみやすいのかもしれない。今度また試してみる。

夜にバドミントンの練習をする場所探しで大事な要素がいくつかわかってきた。一見、明るさだけをみてよさそうに思えてもシャトルを使ってリフティングしてみると視認しにくい場合がある。実際に試さないとその場所がよいかどうかはわからない。今回の調査から考察したことをまとめる。

  • 照明の明るさと色
    • 暗すぎたらみえない
    • スペース全体が明るくてもシャトルを視認しやすいとはかぎらない
    • 照明が明る過ぎても眩しい
      • 照明がそれほど強力ではなくても目と照明との距離が近いと眩しい
      • 屋根の高いビルの軒下の視認性が高いのは目と照明との距離が遠いからだと気付いた
    • 電球色だと赤/黄色のシャトルを視認しにくい
  • 視界における背景色とシャトルとのコンストラクト
    • シャトルを目で追うときに背景の明るさや色が変わると視認しにくい
      • 背景が変わらない場所の方がその背景色に目が慣れてシャトルを視認しやすくなる
        • ビルの軒下の視認性が高いのはビルからみえる壁や背景が一様だから
  • スペースの広さ
    • 近くに壁や垣根、屋根があると避けようとして注意力を取られる
    • 周りに人が来ないことがわかっている場所の方が集中できる
      • 駐車場は断続的に車や人が来るので集中しにくい
    • 広い方が照明との距離を調整しやすい
    • 周りの背景があまり変わらない殺風景な場所の方がシャトルを視認しやすい

1日ひとつだけ、強くなる

昨日 はらさんに紹介してもらった梅原大吾の著書 の目次を眺めていくつか気になったところを読んでみた。1つの項目が2-3ページぐらいなのでタイトルで気になったところをすぐ読める。全体の3割ぐらいしか読んでいないけれど、それでも私には役に立ったので所感をブクログに書いてみた。

「格闘ゲーマーだって、正直飽きる」というタイトルがあってモチベーションコントロールについての梅原さんの考え方を読むことができた。私もプログラミングは好きだが、かといって飽きやマンネリがないわけではない。

この義務感というのは結構な曲者だ。時折「仕事でもないのに、そんな真剣にやってられるかよ」という人がいる。これは逆ではないだろうか。仕事が持つ義務感によって、かえって向上心を持つことが難しくなることは多い。義務感によってやらされているという、受け身の状態になってしまう。これが進行すると「最低限の基準さえ保っておけばそれでいいだろう」といた気持ちにまでなりかねない。

義務感によって受け身にならないこと。受け身というのは、外部からの刺激に依存したやり方だ。刺激を与えられている間はいいけれど、それがなくなればやる気もなくなる。

この悩みがあるときにひとりだと自分に言い訳をしてすぐ受け身の状態になってしまう。常に新しい取り組みや変化への挑戦をしていかないと、人間は怠惰で最低限の基準で受け身になってしまう。いまの私には耳の痛い話しでもある。そして、梅原さんの考え方を読んでいても、結局のところ、この状態を抜け出すにはモチベーションにとらわれない継続の仕組みを自分で見出すだけのように読めた。

評価してもらえない内的な成長を、どれだけ意識できるかで、モチベーションは大きく変わってくる。

プロであれアマチュアであれ、やるべきことは結局ほとんど変わらない。僕は、少しずつ自分のペースを取り戻していった。何か打ち込んでいることや、続けていることがあるのなら、成長のループを継続することを考えてほしい。毎日の歩みがいかにわずかであっても、安定した継続というのはそれだけで自信になるからだ。

本書のタイトルにもなっている「1日ひとつだけ」という言葉の背景として、梅原さんは1日を思い返して自身の成長を1つだけメモしているという。日記を書くことの意義とも共通する。日記の意義の1つはふりかえりを自然に行っていることになる。そして、外からみてわからない内的な成長を自分で気付いて成長を実感したり、自身の基準で肯定することが継続のためのモチベーションコントロールによいと梅原さんは実践している。この考え方は私が日記を3年書き続けていることから得た気付きとも合致する。よい時期によい本と出会えた。

実家へ帰る

先日トラクターで 真夏の硬い田んぼ を耕すのはやりにくかった。雨が降って適度に乾いた状態の田んぼを耕すために実家へ帰る。今日は親が外出しているというので20時から帰って明日、田んぼ作業をすることにした。

ひとりではできないこと

今日のバドミントン練習はエアシャトルでリフティングを30分した。連続最大回数は80回だが、ほとんどの試行は20回も続かずに失敗してしまう。難しい。

隔週の雑談

顧問のはらさんと隔週の打ち合わせ。今日の議題はこれら。

課題管理と adr の関係の考察

数年前から adr の話題や導入した会社の記事などをみかけるようになった。私はこれまで課題管理をうまくやっていれば adr はそれほど重要ではないとあまり重視してこなかった。しかし、世の中的に認知されて流行っているものはなにかしら意義があるのだろうと最近は少し見直してきているところもある。このスライドによると2017年から流行り始めたらしい。

  • 開発に関する情報を一元管理する、または全文検索ことにビジネスチャンスはある
    • 検索のニーズや要件は多様で言語によっても違い、技術もまだまだ発展的でもあるからずっとビジネスの種になる気はする
    • gitlab issues のコメントの全文検索は有料機能なので slack 通知したチャンネルを全文検索している
      • 課題管理システムのプラグインでテキストをシステム間連携することで検索システムを別途構築できる可能性がある
      • 検索できなくてもデータのアーカイブをするという視点でもビジネスニーズに応える?
  • ベクトル検索 を検索がまだ一般的にはなっていない?
  • wiki と adr の違いの1つとして wiki になにを書いてよいかわからない問題がある
    • 文章を書けるようになるのは経験や習熟を必要とする
    • adr のようなテンプレートがあることで経験の浅い開発者も書きやすくなる狙いはある
    • 課題管理システムの wiki に adr のラッピングをして別機能としてみせるのはよいかもしれない
    • 業務の引き継ぎにも adr は役に立つのではないか?
    • adr 一覧をみたり、そこから検索することで検索効率や精度は上がるという想定
  • 大きい会社でも巨大な課題管理システムと wiki が1つだけあって一元管理しているという噂は聞く
    • ある会社では wiki は誤っている可能性があるから信用するなという教訓があった
      • wiki の情報は更新されていない可能性があるから参考にしながら必ず裏をとって業務をしなさいという話し
    • wiki を編集したら必ずレビューが必要になるプロセス
  • notion のプロジェクト管理の使い勝手はどうか?
    • テンプレートを使ってガントチャートやカンバンを作れる
      • 基本的に自分でカスタマイズできることの良し悪しがある
        • db をどんどん改良できるが、それだけに魔改造してしまう
        • 時間とともに複数人が改良すると保守できなくなっていく懸念がある
      • 中核機能をパッケージ側で提供することは堅牢性を担保する上で重要ではないか
    • タスク管理と wiki がシームレスなところはよい、はらさんは日報を書いてリンクしている
  • 会社のインフラに日々の開発情報を書いていくと退職後に参照できない
    • フリーランスのような働き方をするにはナレッジデータベースをローカルに作りたいという欲求がある
    • 組み込みの課題管理システムにより、自身のナレッジデータベースをローカルに残すという目的はよいかもしれない

仕事は楽しいかね? の考察

まとめを見返しながら、だいたいの項目は理解または支持できる。1つだけ次の項目が私には欠けていることに気付いた。

毎日1つ試し続ければ必ず上達や進歩ができる

  • 新しいことを始めると、いまやっていることを継続する時間がなくなったりしないか?
  • プロダクト開発ではがんばってもあまり成果が出ないような時期もある
    • リファクタリングやテスト追加などはまさにそう
    • そういったときも1つでも変化をもたらせれば日々の生活が変わるのか?
  • はらさんのお奨めは梅原さんの 1日ひとつだけ、強くなる。 世界一プロ・ゲーマーの勝ち続ける64の流儀
  • 本書を読んではらさんのよかったところは「試してみることに失敗はない」
    • それまでも試すことはやっていたはずなのに躊躇してしまう理由として失敗したら時間の無駄だと考えてしまっていた
    • 失敗したら嫌だと考えてしまうところがあったが、この考え方があるから vision pro を購入できる
    • やりたいことをすぐやってみるという思考につながった
  • 面倒くさいときもなるべくパソコンを使うようにしてなにかしら調べる
  • 私はオフィスにいれば、家よりはなにかしら作業するモチベーションになる
  • 目標達成や成果をあげるには環境がもっとも大事
    • 個人の感情を信頼しない
      • 人間は面倒だとすぐ怠けてやめてしまう
    • 環境を整えることでワークフローを洗練させて習慣化する
      • 日記になにか書かないといけないから調べものをする
      • 嫌々ながらでもやっているうちに習慣になってくるとワークフローが洗練していく
      • 人間の運用を変えていくなにかは普遍的な価値またはビジネスチャンスがある
    • 調子の悪いときにどうやって早く脱却するかが大事
      • ひとりでは言い訳を作ったり怠けてしまう
      • このときに他人の助けがいるのではないか?
        • 話しを聞いてもらうだけでも前へ進むきっかけになる

go の結合テスト向けカバレッジ計測の考察

以前リリースパーティーで go 1.20 で結合テスト向けのカバレッジ計測の機能が入ったことを聞いていた。次のブログ記事でやり方が紹介されている。

将来的に結合テストを作るときにカバレッジ計測のカスタマイズを施したバイナリを使って api server を起動する仕組みにすればこの機能を使えることに気付いた。

まずは単体テストを実行して任意のディレクトリ (tests/coverage) にカバレッジ計測のための中間データを生成する。

$ mkdir -p tests/coverage
$ go test -cover ./... -covermode atomic -args -test.gocoverdir="$PWD/tests/coverage"
$ go tool covdata textfmt -i=./tests/coverage -o coverage.out

coverage.out がさまざまなツールの入力となる統計情報となる。例えば、このファイルを使って次のようにしてソースコードのヒートマップの html を作成できる。

$ go tool cover -html coverage.out -o coverage.html

nikolaydubina/go-cover-treemap を使うと treemap でカバレッジのヒートマップを確認できる。

$ go-cover-treemap -coverprofile coverage.out > treemap.svg

カバレッジ計測向けのバイナリをビルドする。そのバイナリを起動するときに環境変数 GOCOVERDIR に単体テストのカバレッジの中間データが含まれるディレクトリを指定する。

$ go build -cover -covermode atomic -o bin/api ./cmd/api/...
$ GOCOVERDIR="$PWD/tests/coverage" ./bin/api -verbose

このバイナリを使って起動した api server に対してリクエストを呼び出すことでカバレッジを計測してくれる。結合テストからバイナリ起動した api server に対してリクエストしたときに GOCOVERDIR に中間データが追加されていく。結合テストを完了したら最終的なカバレッジの統計情報を生成する。 

$ go tool covdata textfmt -i=./tests/coverage -o coverage.out

textfmt のヘルプをみたら同じディレクトリじゃなくてもよいみたい。

$ go tool covdata textfmt -help
...
Examples:

  go tool covdata textfmt -i=dir1,dir2 -o=out.txt

  	merges data from input directories dir1+dir2
  	and emits text format into file 'out.txt'

毎日の変化を感じる

今日のバドミントン練習は昼に30分、夜に40分した。リフティングは60分 (メイビスで40分、エアで20分)、キャッチは10分した。バック持ちのリフティング練習をしているうちに腕の筋が痛くなってきた。やり過ぎかもしれない。

フォア持ちとバック持ちを交互に切り替えながらリフティングをする。片方の持ち方だけでやれば200回はできる。しかし、交互に切り替えると50-100回ぐらいしか続かない。雑になってしまったり、遠近感を見誤ったりしてしまう。リフティングを失敗するときは前後の距離感が狂ってしまうことが多い。動体視力は10代後半がピークで40代から急激に衰えていくらしい。視力が衰えるのはもう仕方ないだろうからラケットコントロールを上達させる方がよいのだろう。ビルの軒下は風が通りにくいという特徴があって公園でやるよりも風の影響がなくてやりやすいときもある。あとエアシャトルも少し高めに弾くとコルク部分が重いせいか、直進的に落ちてきてリフティングしやすいことに気付いた。

仕事は楽しいかね?

プロダクト開発をしていると、開発がどんどん遅くなっていってがんばってもあまり進捗していないように実感する時期がくる。もしくは日々の開発業務がマンネリになってしまうこともある。昔からそういう状況のことを 射撃しつつ前進 と呼ばれていた気がする。そんな時期もあるから地道にコツコツと時間をかけて日々できることを積み重ねるしかないと私は考えていた。税理士さんと雑談していて「仕事は楽しいかね?」という名著があることを教えてもらった。要約動画がわかりやすいと紹介していただいた。

まとめは次になる。

  • 楽しく生きるには、遊び感覚で新しいことを試し続けること (価値観があう)
  • 試してみることに失敗はない (価値観があう)
  • 試すからこそ新しい発見がある (価値観があう)
  • むしろ試さないことが失敗である (価値観があう)
  • 大きな目標はなくていい (価値観があう、課題管理)
  • 毎日気になったことを1つ試すことを目標にすること (課題管理)
  • 毎日1つ試し続ければ必ず上達や進歩ができる
  • 成功者はシンプルに試す数がとても多い人 (価値観があう)
  • 今抱えている問題点を書き出して、それを解決するために今動き出すこと (課題管理)
  • 適切な時とか完璧な機会なんてものはない (価値観があう)
  • 現状を把握して1つずつ試す (課題管理)
  • 完璧な状態であっても試し続ける (価値観があう)

私の価値観にあるものも多いし、いくつか課題管理で普段やっていることにも当てはまる。動画をみていて「毎日1つ試す、変化を感じるのが大事」と言っているのが気になった。日々の生活における既存のいろいろをやっていると、他のことをする余裕がなくなってしまい、いま抱えていることの区切りがついてから新しいことをしようと私は考えるところがある。いま注力していることに余裕がなければ、新しいことはしないように私はしている。一方で最近は少し余裕が出てきたこともあり、バドミントンの練習を始めたことが日々の変化になっていて、たしかに気分がよい。毎日の変化をもっと小さいもの、簡単なものにして、なにかを為さなくても日々の変化を感じることを目的にすればいま以上に日々の生活を楽しめるのかなと学びになった。

1ヶ月ぶりの休日出勤

1ヶ月ぶりの休日出勤

今日のバドミントン練習はリフティングを昼間に10分、夜に10分、壁当てを10分した。連続最大回数は82回できた (昼間) 。昼間にやってみたら夜に街灯の隣でやるときとの違いに気付いた。ほんのそよ風でもシャトルは風の影響を受けるので空中で少し流れたりする。その微妙な変化が暗いとみえにくい。昼間にリフティングをやってみたことで真っ直ぐ落ちてこず微妙に風で流れていることを観察できた。あとシャトルを高くあげた方が重力による加速がつくので真っ直ぐ落ちてきやすくなるかもしれない。

ポータブルネット

外でバドミントンができる準備をしていく。調べてみたらいくつか製品の候補がみつかる。価格帯は3千円から1万円ぐらいの幅。最終的には YONEX の ポータブルネット(バドミントン用).AC334 に決めた。なにかの記事で初心者は製品の良し悪しの判断が難しいから YONEX を買っておけば間違いないと書いてあった。amazon で購入すると9千円ほどだった。土日の昼間に公園へ持っていって練習できるかもしれないし、バドミントン設備がない体育館を借りて練習するのもよいかもしれない。たまたま組み立てしている動画をみつけた。一緒にクリップを用意しておけば幅の調節もできるみたい。

お昼からずっとコードを書いてた

昨日は家に帰る途中でバドミントンの練習場所を探したり、軽く練習をしたりしていて、1時過ぎに帰ってだらだらして3時頃に寝たせいか、少し寝坊してお昼頃にオフィスへ行った。ちゃんと休日にオフィスへ行ってお仕事できるぐらいには体調 (モチベーション) が回復した。病気だったわけでもないが。本当は今日中にマージリクエストまで作りたかったが、ラストワンマイル的なところがなかなか煩雑で24時過ぎまでやって明日に持ち越すことにした。寝ているときに無意識で設計するから明日にした方がコードの品質も上がるだろうと、既存のコードのロジックの確認や設計のヒントになりそうなことの調査をして終えた。

日曜日にお仕事をしたのは1ヶ月ぶり。しかも12時から24時と途中で晩ご飯休憩をはさみながらほとんどフルタイムに働いていた。他人のコードのリファクタリングだから私が直さないといけない積極的なインセンティブがない。この開発フェーズの最後の issue だったのと、私がコードレビューして知ってしまっているからやる・やらないを選択しないといけない。やらなくても誰からも非難されないかもしれない。逆に言えば、だからこそ、やらないといけないなと昨日、決心した。覚悟したからどれだけ労力をかけようが気にならなくなった。そんな休日のモチベーション管理。

業務としてのリファクタリングへの集中力

今週からメンバーが開発した、少し大きめの機能の品質改善のためにリファクタリングをしていく。本当は週末に進めておこうと思っていたものの、どうにもやる気がなくてまったく手をつけられていなかった。不思議なもので休日は朝起きられなかったりオフィスへ行ってもまったくコードを書けなかったのに、平日なら普通に朝8時までに起きてオフィスへ行って集中して作業できた。2日休んでいるので体力を回復していたというのはある。それでも休日と平日の業務としてのプログラミングへの集中力の違いは何なんだろう?とやぎさんに相談したら 反脆弱性[上] という本にその答えが書いてあったと教えてもらった。この本を読まないとその答えは得られない。しかし、いまの私は本を読む元気がない。誰か読んだ人がいたら私にわかりやすく教えてほしい。

私が書いたコードに対する不備や欠陥は責任感からリファクタリングをする一定のモチベーションになる。しかし、他人が書いたコードのリファクタリングはそのモチベーションがいくらかレベルダウンするのではないか?という仮説もある。他人のコードを読んで理解するのはコストがかかるし、本質的には他人のコードを読むことはできても理解することはできない。コードの出典に起因するストレスもあるのかもしれない。

集中力の正体

昨日は20時半頃にお仕事を終えて帰った。スーパーで買いものして、家に帰って晩ご飯を作って食べて、休んだらオフィスへ戻るつもりがそのまま寝てしまった。

メッセージ作成

年一ゲストとして出演している terapyon channel100回記念公開収録 があった。いつもお世話になっているので私は参加できないがカンパ枠で応援していた。昨日てらださんから音声メッセージを作ってほしいと依頼され、本当は昨日の夜に作ろうと思っていたものの、疲れて寝てしまったので朝起きてから慌ててオフィスへ行って作成した。ubuntu の apt でインストールできるツールとして audacity を使って録音した。簡単に使えた。お祝いのメッセージを文章に書き出して、マイクテストも含めて最終的には7回撮り直した。文章を書いてから、話してみると、流れが悪かったり、語呂が悪かったり、途中で詰まったり、かんでしまったりと、なにか気になるところをみつけて、文章を推敲して録音しながら1時間ほどやってた。録音して聞き直すと、いかに自分の話し方が下手であるかがよくわかる。話し方を練習しないとうまくならないのだろうな。

みなとのもりの運動

前回の所感 。14時頃に作業を終えてストレッチまで1時間ほど時間が空いた。ふと運動してからストレッチへ行くとよさそうだと思い立ってジョギングと縄跳びをしてきた。前回が7月24日なので1ヶ月半ほど運動していなかった。1kmほどジョギングしてから縄跳びを15分間した。以前と比較したら軽めに流したにも関わらず、久しぶりに運動したら体力が落ちていてかなりバテた。習慣的に運動していないとすぐに衰える。久しぶりに運動できたので、また再開するきっかけになるかもしれない。

ストレッチ

今日の開脚幅も開始前148cmで、ストレッチ後152cmとあまり数値は出なかった。直前に運動して行ったのでよく伸びるかな?と予測したものの、測ってみるとそうでもなかった。それでも運動した後にストレッチを受けるのはカラダによさそうにも思える。ここ1ヶ月半ほど運動できていないものの、体重は67kg台を維持していて体脂肪率や筋肉量はあまり変わっていない。トレーナーさんとそういう話をしていたら、筋肉は落ちにくくつきにくいから1ヶ月ではそんなもんとのこと。

プログラミングの集中力と生産性への考察

ストレッチを受けているときにトレーナーさんと話していて思うことがあったのでまとめておく。いまの開発フェーズは開発者としてプロジェクトに参加している。平均すると1日10時間ぐらいお仕事していて、早く帰る日もあるから遅い日は日付が変わるぐらいまではコードを書いていることがある。家に帰ると休んでしまうからオフィスで晩ご飯を食べることも多い。なぜプログラミングに集中していると運動ができないのか?を考察してみた。

  • 他の余分なことを排除すると集中力が増す

いまやっている開発のお仕事は1日で完了するような簡単な開発ではない。1年半開発しているので残っている課題は厄介で複雑な問題への対応であることが多い。新規機能を追加するときも既存機能や仕様や依存関係を考慮しないといけない。そうすると2-3日かけて課題を解決することが多い。そのときに他の余分なことを排除した方が脳のリソースを課題解決に割り当てられる。通勤しているときも、寝ているときも、ご飯を食べているときも取り組んでいる課題のことを四六時中考えている。他のことに脳のリソースを割くと課題解決の品質が下がる可能性が高い。ずっと考え続けることが複雑な問題の課題解決に重要となる。

  • システム開発とはタイムアタック競技である

システム開発のプロジェクトマネジメントにおいてもっとも重要な概念はタイムボックスだと私は考えている。適度な期間 (うちは2週間) を設け、モノゴトに取り組む最初と最後を作ること。認知心理学の研究からも記憶の仕組みからも期間の最初と最後がもっとも学習効果が高いことを示唆している。このことは私の経験則においてもシステム開発で当てはまる。作業期間が適切でないと人間はだらだらしてしまう (パーキンソンの法則) 。プログラミングにおいて動くのは当たり前で、動いた上でいかに品質をあげられるかが腕の見せ所になる。エラー処理を適切に制御できているか、他人がコードを読んでも理解しやすく保守しやすいか、将来の拡張性を考慮して設計されているか、など品質をよくするための取り組みには答えがない。仕事ができる・できないを分ける行動の1つとして、答えのない問いにどれだけ準備できるか、考え続けられるかと言い換えられるかもしれない。答えがないからいくらでも品質をあげるための施策がある。しかし、現実の業務には期限があるため、期限内に最善の品質を目指すことになる。そのため、タイムボックスでシステム開発をマネジメントする限り、いつもタイムアタック競技をしているのと同義になるから時間が足りない。

プログラミングはいつも妥協を強いられる。完璧で最高のシステムなどありえない。その時々で開発途中における最善の動くものをスナップショットとしてバージョン管理しているに過ぎない。この妥協するレベルが私にとってはマネージャーと開発者という役割で大きく異なるのだろうと思う。マネージャーとしての遊撃なら先送りできても、開発者としては多少の負荷があっても解決してしまう。自身の基準を満たす働き方に違いがあるのではないかと思う。言語化してみると、この考え方はプログラミングに限らず、そのときに取り組む対象によって何にでも応用できそうに思う。

開発が進捗することの作用

昨日おこなった調査 の成果もあって、いろいろ他の開発作業も進捗して、今日はいくつか小さい issue を fix できて1日の成果としては満足できる内容になった。それで夕方に洗濯したり、晩ご飯を作ったり、家事をやる余裕があったり、さらにオフィスへ戻って作業をしてから外出してくることもできた。ここ数日にはなかった充実した1日だったように実感した。いまの生活に満足できなかったりモチベーションが上がらなかったりする背景の1つとして、溜まっている残タスクへのストレスがある。このストレスを解消するのは残タスクを fix することがもっとも効果的である。

結論はやる気がなくてもやるしかない。少しずつでも問題を解決していくしかない。

古い文章だが、いまでも覚えていてたまに引用する Joel on Software の格言の1つに 射撃しつつ前進 がある。いま自分が置かれている状況はまさにこれに相当するものなので地道な積み重ねをしていくしかない。そういうときもあって人生はちょうどよいのだろうと思う。

生活のリズムづくりの1ヶ月

歯科検診

17時から歯科検診へ行ってきた。スタッフに「痩せてませんか?」と尋ねられて3ヶ月ぶりならそれほど変わらないんじゃないかと返したが、そのスタッフが私の担当をするのは2月以来だったらしく、それならかなり変わりましたと話していた。たまにしか行かないのに、首まわりが全然違うと言われて、半年前の体型を覚えているんやなと思ってこっちが驚いた。たまに会う人向けのお断りとして「癌ではありません」と説明しといた。

生活のリズムづくり

ここ1ヶ月ほど開発者へ戻るための取り組みをしてきた。昼間にお仕事でコードを書いて、晩ごはんを食べてから、夜にコードを書くのが習慣的になってきた。概ね1日の作業時間が10-12時間になってきている。夜に開発できている日はだいたい20-21時頃から24時頃までコードを書いている。夜は割り込みが入らないので集中できる。今日も晩ごはんを食べて22時前から翌2時半ぐらいまでコーディングしていた。ファイルのアップロード/ダウンロードを扱う汎用 api を実装した。

いまの開発フェーズでは 過去の残課題 が多い。それはこれまでの私のマネジメント不備でもあるし、知見を得たことでアーキテクチャの不備や再設計のリファクタリングができるようになった課題も多い。技術的負債が溜まっているとみなせる。いずれにしても、実運用を間近に控えて直せるところをできるだけ直しておきたい。当初は私が改善する issue が仕様変更になるためにプロジェクト全体のボトルネックになってしまっていた。なるべく初期の開発で ボトルネックを解消 してからもペースを落とすことなく、集中して開発作業を継続できている。スケジュールの前倒しとまではいかないが、後手にまわっている印象はなく迅速に対応できている。個人的にもよいリズムと集中力が出てきたと感じている。その視点からみると、いま開発に向いている集中力をこれまでは体脂肪コントロールや運動に費やしてきたこともわかる。だから短期間に大きな成果が出た。人の可処分時間は決まっている。継続的になにかに取り組むと1ヶ月も経てば実感できるぐらいの成果がでる。もしかしたら私がフルタイムの開発者として作業できるのはあと3ヶ月になるかもしれない。悔いの残らないよう、できるだけ集中して取り組もうと思う。

プロジェクトのボトルネック解消への壁

週末は休んでいたので今日は調子よかった。週末にある程度やっておこうと思っていた実装作業が手つかずだったものの、午前中の定例会議でメンバーに設計内容の最終確認をした。それから集中してコードを書いていたら日付が変わるぐらいの時間まではやっていたけれど、大きな仕様変更を完了した。

連休の週末に時間があったにも関わらず、なにもやらなかったのはこの仕様変更のための作業に私自身が本当の意味で関心をもっていないのではないかという仮説をたてた。仕事でやらなければいけない、面倒でやや規模の大きな作業を、個人の時間で取り組むほどのモチベーションをもっていない。そして無意識的に脳が業務時間だけでできると判断してしまっている。実際にそれで完了することも多い。開発の前倒しはできないが。

自分を騙す言い訳

今日の運動はジム筋トレ,縄跳び(両足跳),散歩,ジョギング,ハンドグリップ,ダンベルをした。統計を 運動の記録筋トレの記録 にまとめる。ジョギングの後に 右股関節の改善体操 をした。どこかのタイミングで今月からは運動を監視するのをやめて別のことへ移行していく。

隔週の雑談

顧問のはらさんと隔週の打ち合わせ。今日の議題はこれら。

  • お手伝い先のプロジェクト近況

今週の出張でお手伝い先でのふりかえりや進捗報告の要旨などを共有しつつ、うちの会社の課題管理ビジネスへの取り組みについて雑談したりした。ここ2-3ヶ月は私がバテてしまい、休日もオフィスへ足を運んでいるものの、運動したり日記を書いたり趣味の調べものをしたりと、のんびり過ごしていることが多い。課題管理ビジネスへの集中力が途切れてしまった。はらさんも上半期は自分のプロダクト開発などをやろうと考えていたものの、あまり想定したように進捗せず、下半期は他社のお仕事のお手伝いで忙しくなってくるらしい。はらさんは よりひろいフロントエンド を作ったり、最近は Apple Vision Pro のアプリ開発をされている。私と似たような状況だなと話しを聞いていて次のようなことを話された。

歳をとると自分を騙すのがうまくなる。うまくいっていない言い訳を、もっともらしく、自分で受けいられるように作ってしまう。
危機感をもたなくなる。うまくいっていないことや結果が出ていないことを直視しないといけない

まさに私にも当てはまることでこの2-3ヶ月の自分をみているみたいだ。私自身、今年はほとんど休まず会社のことばかりやってきたから、たまにはだらだらする時期があってもいいのかな程度に自分への言い訳をしていた。はらさんとは隔週で雑談する機会を設けている。こういう話しをするだけでもこの雑談には意味がある。これが自分ひとりだと、自分への言い訳をして、何もしないままどんどん時が過ぎ去っていくだけだったと思う。誰だって自分のネガティブな側面を直視するのはつらいから無意識に目を背けてしまう。信頼できる人たちからそういうことを指摘してもらって自身を省みるきっかけになればと思う。

いそがみの筋トレ

前回の所感 。19時過ぎから出掛けて、トレーニング器機の待ち時間などもあって21時前まで筋トレしてきた。出張中ずっと運動していなかったので行く前はやや面倒に感じていたが、やりきったら達成感があって行ってよかったと思えた。週2-3日のペースで筋トレや運動を継続していくのが心身ともによさそう。慣れてきたモノへのやる気はやり始めてから出てくる。なによりも大事なのはやり始めること。

体育館のトレーニングルーム通いも気付いたら5回目になった。少しずつ成果は出ていて、器機によっては重りをあげたり回数を増やしたりできるようになったのもある。そして終わってから外で縄跳びをして、ハンドグリップをしながら帰ってきた。これも筋トレした後だとややカラダがだるいのもあるけど、跳び始めてしまえば出来てしまう。毎日の運動は時間を取られて他のことが疎かになってしまった現状があるため、今後は週2-3日の筋トレの機会に集中して運動していくよう、日々の生活を変えていく。

日経平均株価の急落

fin-py という金融関係者向けのコミュニティがあり、数年前から参加している。何人か仲のよいメンバーもいるし うちの会社の顧問税理士さん もそのメンバーの1人でもある。老後の心配が出てくるのか、日々の生活が安定すると将来の生活に目を向ける余裕が出てくるのか、人生においてお金の話しは歳をとってから関心が出てくる話題の1つだと思う。

下落幅は1987年のブラックマンデー以来、史上2番目らしい。一方で下落率でいうと 5.81% で史上30番目になる。2008年のリーマンショックでは下落率が11.41%と、この倍以上であったことからそこまで不安を煽る状況でもないが、メディアは不安を煽った方がニュースバリューになるからこういう見出しになるのは仕方ないらしい。米国の経済事情だったり、為替の円高転換などの要因で日本株が急落している。fin-py で時事のニュースなどをやり取りしていたのもあり、為替の円高転換は Exclusive: BOJ to weigh rate hike next week, detail plan to halve bond buying, sources say の記事が出た7月24日ぐらいから注目していた。私の投資のポートフォリオも徐々に含み益の保有株を売ったりして、円高になって株価が下がってもよいように準備していた。今日の急落にも備えていたから投資資金の50%ほどは含み益の状態で売却できた。今日の取引終了後も為替は円高に進んでいるし、日経平均先物も悪化しているので月曜日もさらに下がりそうにみえる。これでしばらく為替は円高へ進んでいくのかな。その状況を確認しながら追加でポートフォリオを変更してもよいかもしれない。しばらく為替や株価の変動が大きいだろうから落ち着くまで見守ろうと思う。fin-py で日々の経済のニュースなどを見聞きしているうちにその先の展望を推測して対策を講じたり準備したりできるようになってきた。これまでは起こった状況で気付いて含み損になってしまって何もしていなかった。急な変動が起こりそうな気配や背景を知っていると、準備ができていて、ポートフォリオを機動的に変える決断を早くできる。

たまたまこんな日に 任天堂 2025年3⽉期第1四半期 決算発表 があった。もともと2025年3月期の通期の業績は前期よりも悪くなることが以前からわかっていたのになぜか株価は高止まりしていた。今回の為替の急な円高 (任天堂は海外の売上比率の方が大きいため、円高になると為替差益が減る) と、第1四半期の業績も市場予測よりも悪かった?せいか、月曜日は株価が急落するようにみえる。以前から株価が高過ぎるのと、どこかで為替の円高転換もあるだろうと、2月頃から少しずつ空売りしていた。最悪の時期は任天堂の空売金額が-10%ほどの含み損になっていたものの、(想定したよりも過激な円高がやってきて) 今日の時点で3%ほどの含み益になっている。おそらく月曜日から任天堂の株価は急落すると推測される。

以前 オプトラン という会社について書いた。ここも半導体産業、且つ為替で業績に影響を受ける会社になる。ずっと観察してきたし、ボラティリティが高いのでポートフォリオに入れたり出したりする定番の会社になっている。今日の時点では、おそらく思惑?だけで1711円と株価が急落している。過去の最安値が1420円、年初来最安値が1561円になる。1500-1600円台まで株価が落ちれば2-3年後のために投資していくのによいんじゃないかと注目している。