Posts for: #Life

地元の友だちとの話題

実家へ帰って3年ぶりに高校の友だちと会うことになった。毎年大晦日に会ってご飯を食べて麻雀をやっていたのが、最近は葬儀があったりお正月に仕事があったりで集まりがなくなっていた。久しぶりに集まれそうと準備をしていたものの、直前に参加者の1人の身内に不幸があって4人集まることはできなかった。したがって3人になったので麻雀はやらずにお昼に集まって雑談して夜早めに解散した。

車を買ったのが2年前。3年前から友だちに会っていなかったので私が車を所有していることを知らなかった。11時に高校の友だちと待ち合わせて一緒に車で実家へ帰ることにした。1人で帰るよりも、誰か乗ってくれた方が話し相手になってくれるから同じ距離を運転していても到着するのが早く感じる。淡路島へ帰ってから、友だちの家に3人で集まってただひたすら雑談していた感じだった。3年ぶりに会ったというのもあって近況を話すネタもいろいろあった。その中でもやはり兵庫県知事の話題が一番盛り上がった。みんな兵庫県には住んでいるので背景をよく知っていてそれぞれの調べた情報や意見を交換して楽しめた。

私もちょうど年末に 百条委員会や定例会見をみてまとめた ところだった。その記事にもさいとうさんのコミュニケーションスキルに懸念があるように書いた。そして、私の友だちもそのことについては言及していた。詳細を忘れてしまったが、次の「ひょうご地域創生交付金」の廃止について話していたと思う。さいとうさんの前の知事の時代に作られた県から全市町を対象にした補助金で10億円程度の予算だった。これをいきなり廃止すると打ち出して、それについてさいとうさんは一切の説明をしなかったらしい。その友だちが言うには、大阪の維新でも改革するときに利権に対する喧々諤々の論争をした上で改革していったという。大阪の維新と比べても、さいとうさんは一切の説明も議論もなく改革しようとしたため、強い反発があり、結果的に「ひょうご地域創生交付金」を廃止はできず23-25年度は3億円の補助金となったらしい。

こういった急な改革を議論せずに独断で進めようとした結果、県議や自治体とのコミュニケーションがうまく取れていなかったのではないか?という背景が浮かび上がってきた。その友だちと話した後に「コミュニケーション」のキーワードで検索したらそれっぽい記事もいくつか出てきた。既得権益がどうこうというのもあるのだろうけれど、急過ぎる改革と説明すらしないという不遜な態度もあって反さいとうさんの陣営が大きくなっていったのではないかと考えられる。

3回忌

前日の夜から法要のために実家へ帰っていた。前日は19時にお仕事を終え、お風呂に入って準備をして21時半には出発した。しばらく日記を書くことをお休みしていたから夜に帰る余裕をもてた。今日は夕方には神戸へ戻ってきて、夜はオフィス行ってお仕事のコードを書いていた。

三回忌

亡くなって1年後に行う法要を 一周忌 と呼び、2年後に行う法要を三回忌と呼ぶ。初めての人は勘違いしやすい。私も半年前まで勘違いしていた。

10時から住職に来ていただいてお経をあげていただく。住職が来られたらまずお茶を出す。お教を読み始めたら、回し焼香を参加者が順番にやっていく。15分ほど住職がお教を読んだ後に、参加者も一緒に般若心経を読む。これも15分ぐらいかな。だいたい20-30分程度でお経をあげるのは終わる。その後の住職の法話が始まる。このタイミングで新しいお茶とお茶菓子を用意しつつ、一緒にお布施とお膳料も添えて渡す。

今日の住職の法話は亡くなった人との関係性において自分を知る機会になるという発見について話された。住職の父親はうちの父親が亡くなった翌日に亡くなられた。当時、葬儀の打ち合わせのためにお寺へ伺った際に住職自身も葬儀の準備でバタバタしていると話されていた。そのときに住職の父親は厳しい方だったと伺ったことを覚えている。うちの父親は逆にほとんど子どもには怒ることはなかった。住職は自身の父親が亡くなって最近になってから、自分は父親に褒められたかったのだと、そのことにふと気付いたと話されていた。父親が亡くなってからの1年目は日々の生活に追われ、2年目になってからそのことをゆっくり考えられるようになったのだという。お釈迦様も自分を知るのは難しいといった説法をしているそうな。他人との関係性からふと自分を知るきっかけが訪れるという気付きについて話された。住職にとっては父親との関係性において2年目というタイミングがそうだったのだという。

3日前にお手伝い先の忘年会に出席した。5人で話していて、私以外は家庭をもっていて子どもがいて、そういった家族の話しをしている中、私は独身だから家族の話題にはついていけないし提供することもできない。もしかしたら周りに気を遣わせてしまっているかもしれないと、この卓に私がいて申し訳ないといった気持ちにもなった。懇親会や忘年会のような親睦を深めるための一般的な社交イベントに、プライベートに何も共通の話題がない私のような状況は向かないのだろうと思えた。とくに是非の話しではない。城崎温泉の開発合宿の参加者は独身者の方が多かったのでそのことに気付いていなかった。住職の法話を聞いていてそのときの自身の空虚さや違和感に気付いたことを思い出していた。

法話を終え、今回は卒塔婆が用意されていたのでお墓へもっていって供える。線香とライターを持っていってお墓で線香を3本たてる。お墓参りを終えたらそこで住職は帰られる。その後に参加者との法要後の食事へ行く。今回は身内だけだったので近所の回転寿司で簡単な食事で済ませた。12時過ぎには法要を終えた。

粗大ごみの処分

午後から実家の掃除をして粗大ゴミを整理していた。親戚からベッドをもらってきたようで、それを置くためのスペースを空けるために不要な家具を粗大ゴミとして捨てることにした。戸棚、ローテーブル、過去に使っていた古いベッドの残骸、扇風機、給湯ポットなどで軽トラックの荷台はいっぱいになった。いまベッドは2つあるのでこの離れに2人泊まれる。半年前に取り組んでいた実家の離れのコワーキングスペース化も一段落していて設備面では5人程度が作業するスペース分の机と椅子はある。あとはコンテンツを用意していく必要がある。思いつくキーワードを列挙していくと次になる。

  • 農業体験
  • 近所の温泉
  • バドミントン

設備面で wifi のインターネット回線がないという最大の懸念が残っている。回線を引くと5千円/月はかかるので毎月のように誰か来るなら引いてもいいが、現状だと経費的にもったいないから躊躇している。もう少し寝かせて先送りする。

古本の処分

粗大ゴミの整理をしていて あかつき教育図書 出版の「昭和日本史」という図鑑のような本が全巻 (16巻) あった。故祖父が通販で買ったものらしい。離れに置いておいても読む人はいないし場所も取るので処分することに決めた。保存状態がよかったし、図鑑のようなものを捨てるのはもったいないと思い、古本屋さんへ持っていけば必要とする然るべきところで活用されたら嬉しいなと実家から神戸まで運んできた。淡路島よりも神戸の方が古本屋さんがたくさんあるから引き取ってもらえるだろうと考えた。花隈駅近くの 古書ノーボ さんに電話して帰りの車でそのまま運び込んだ。査定してもらって買取価格は全巻で500円だった。店主曰く「こういったセットものは価値そのものはあるのだが、全巻セットを家に置こうという人が少ないために買取価格は安くなってしまう。」と話されていた。価値はあるが需要はないという話し。まさに私が処分しようと思った動機そのものだったので納得感は高かった。

部屋の片付けへの趣き

今日のバドミントン練習はエアシャトルでリフティングを10分、連続最大回数は322回だった。その後にショートサーブ30回、フットワーク10分の練習をした。リフティングは連続回数よりもラケットコントロールの質を求める練習に変えていく。昨日と同様、みなとのもり公園をジョギングで4週走った。fitbit によると 1.8km 走ったそうな。

プロジェクトマネージャーが手を動かすことの功罪

朝からお手伝い先の社内インフラサーバーが落ちていて待ち時間があったのでふと思い返してつらつら考えごとをしていた。

お客さんが選ばなければ、逡巡と葛藤の結果、最終的に私は品質を優先する

開発合宿の課題管理の雑談から引用

私はもっと仕組みを作るところに注力すべきだった。私自身がコンサル嫌いの、実務をやっている姿勢をみせてメンバーが参考にしてほしいという意識が強過ぎた。また開発は楽しいことから必要以上に手を動かし過ぎてコアな開発に入り過ぎたことで、自分がやらないと他のメンバーが担当しにくい体制になってしまった。「任せる」はずが「任される」ことになってしまった。バックエンドの品質は大事だから責任感もあった。もしかしたらお客さんが求める以上の過剰品質なモノづくりをしてしまったのかもしれない。そして、仕組みづくりの後はメンバーへ委譲すべきだった。いまメンバーへマネージャーを委譲しているが、マネージャーという業務はもともと得意でもなくこだわりもなかったがためにすんなりと委譲できた。

しかし、開発の方は得意分野、且つ好きであるために品質にこだわってしまう傾向があることを認識できた。そのことが裏目に出てしまった。これが自社プロダクトの開発ならばすべて自社の資産になるためにそれでもよかったかもしれないが、他社プロダクトでやってしまうと、自分の時間を必要以上に注ぎ込むことになってしまった。その結果、お客さんの信頼を得られてはいるものの、自社プロダクトの開発に着手できず、クロージングの時期が遅れて微妙な状況になってしまった。もしかしたら、お客さんもうちの会社との契約を終了できなくなってしまって困っているという考え方もできる。

rabbitmq の autoAck (noAck) の振る舞い

先週の続き 。id 連携のリクエストをし続けながら compose サービスを down させたときの振る舞いを検証する。理想的にはそれぞれのモジュールのサービスが graceful に振る舞って、それぞれの永続化する場所でデータが溜まってくれることを期待している。その1つがメッセージキューでもある。Persistence Configuration によると、rabbitmq のメッセージを永続化するには queue に対して durable の設定を行い、producer が送信するメッセージに対しても persistent の属性を付与すればよい。しかし、実際に検証してみると、サービスの再起動時にメッセージキューからメッセージが消失していることがわかった。consume メソッドに渡す仮引数に autoAck というパラメーターがある。コメントにもそれっぽいことが書いてある。

When autoAck (also known as noAck) is true, the server will acknowledge deliveries to this consumer prior to writing the delivery to the network. When autoAck is true, the consumer should not call Delivery.Ack. Automatically acknowledging deliveries means that some deliveries may get lost if the consumer is unable to process them after the server delivers them. See http://www.rabbitmq.com/confirms.html for more details.

ConsumeWithContext

autoAck という名前からメッセージを取得したら自動的にそのメッセージに対して ack を返すようなイメージで私は考えていた。しかし、どうやら consumer が subscribe して接続した時点で consume 扱いとなり、consumer がメッセージを実際に取得したかどうかに関係なく consumer の終了時にそのときに溜まっているすべてのメッセージが消失しているようにみえる。余談だが、rabbitmq のドキュメントにも noAck と autoAck という2つの用語が存在する。どうやらもともと noAck という名前だったのを autoAck という用語に変更したようにみえる。メッセージを永続化するには autoAck=false にしてメッセージに対する処理を完了した後に consumer が必ず ack を返すという実装にしないといけないことがわかった。このパラメーターは2年前から同じ設定だったので私がいま検証するまで誰もこの振る舞いに気付かなかったんやと驚いた。

部屋の掃除

19時に閉まる業務スーパーへ買いものへ行くために18時過ぎにお仕事を終えて、移動して買いものをして、炊飯開始して、ジョギングして、戻って晩ごはんを食べて、バドミントン練習をして、お風呂に入って、ストレッチして、なんとなくベッドに入って休もうとした。ここで22時半ぐらい。まったく眠れなくて寝室の掃除を始めたら、これが捗ってやる気が出てきて、部屋のレイアウト変更したりして少し片付けもできた。引っ越してからまったく進めていなかった部屋づくりが突発的に急に少しできた。これまでも時間がなかったわけではないが、まったくやる気がなくて手をつけられていなかった。それがなぜできたのかはわからないが、手をつけられていなかったことに手を入れられたことで心理的に楽になった気がした。明日も帰ったら少しだけ部屋づくりの作業をしようと思う。

とりとめのない出張初日

出張で道具がないのでバドミントン練習はおやすみ。

始発の新幹線で東京へ。定例会議に出て、昨日の カバレッジ計測 の成果をメンバーに共有して、その後もバグ修正や結合テストのリファクタリングをしていた。夕方には疲労で眠くなってきて17時でお仕事を終えて、お気に入りの 中華料理屋さんの晩酌セット を食べて、ホテルに帰って3時間ほど寝てた。起きてから軽く散歩に外に出たぐらいでまたホテルに戻って寝てた。毎月の出張で生活のリズムが乱れる。食べものと生活の拠点がいつもと違うのがしんどくなってきた。

変な疲れかた

今日のバドミントン練習はエアシャトルでリフティングを40分した。連続最大回数は168回だった。いくつか練習場所を転々としながら最終的にはホームのビルの軒下に行き着いた。環境のよい場所を知ってしまうと、それよりも劣る環境で練習することに抵抗を感じてしまう。昼間なら風がなくて人通りの少ないところであればどこでもそう大差はないが、夜は証明と背景でシャトル視認性 が変わってくる。21時まではホームのビルで、21時以降はその隣のビルでといった定番の練習場所ができつつある。今日はなんとなく調子がよくなくて練習していて手応えや集中力を感じなかった。

午前中に結合テスト改善に関するドキュメントを書いて、お昼から rpm パッケージングのリファクタリングやって、夕方に午前中に書いたドキュメントを使いながらメンバーに結合テスト改善の要項について共有した。そして17時半にはお仕事終えて帰った。晩ご飯も外食してリフティング練習も早めに切り上げて帰った。ここ数日あまり睡眠時間を取れていなかったのもあり、疲れているかも?と21時過ぎから横になって寝ていた。

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

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

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

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

ぱっとしない休日

9月に入ってしまった。8月は開発者の生活を思い出すための試行錯誤の月だった。よくもわるくもかな。

キャンセル料の支払い

この前の金曜日は しみん福祉スポーツセンター の体育館を借りてバドミントンを行う予定だった。木曜日は戻ってこれない可能性 があったし、前日の天気予報では金曜日の夕方が神戸に台風が来る予報になっていた。そこで木曜日の夜に参加者も少なかったしキャンセルすることに決めた。キャンセルは1週間前でないとできないため、これは自然災害だから仕方がないと体育館のキャンセル料金3,000円を支払うことにした。直接、しみん福祉スポーツセンターの窓口でないと支払いできない。窓口へ行って paypay で支払いしてきた。しみん福祉スポーツセンターの体育館を借りるのは値段が高いので参加者数が増えてから借りる運用を変えようと思う。

X-Forwarded-For ヘッダーの制御

先日の作業の続き 。本当は土曜日にやろうと思っていて、全然やる気がなくて、なにもやらないよりはちょっとでもやった方がよいかと、今日やり始めたら集中できて2-3時間で調査と対応を完了した。もともと構築しているリバースプロキシとしての nginx には次のヘッダーを扱う設定が追加されていた。

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;

追加で remote_addr を置き換える設定を入れてみれば、リバースプロキシ経由でリクエストを受ける go の http Request が参照する RemoteAddr の値も置き換わるのかな?と検証してみた。

set_real_ip_from 172.29.0.0/16;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header REMOTE_ADDR $remote_addr;

結論としては RemoteAddr の値は置き換わらなかった。nginx の real_ip_header モジュールは nginx 環境における remote_addr の値を変更する設定であり、転送するときにパケットの値を置き換えるものではないようにみえる。そこで api サーバー側で X-Forwarded-For ヘッダーを参照するのが正しい対応方法だと理解できた。このヘッダーを参照することは一般的な用途に思えるので調べたら echo の IP Address のドキュメントにその設定方法やユーティリティの扱いなどが書いてあってすぐに参照できることもわかった。

X-Forwarded-For ヘッダーはクライアントが任意で偽装できる。デフォルトでは内部ネットワークから転送されたヘッダーの値のみを信頼するように設定されている。それが次の IPExtractor の設定になる。デフォルトの制約を変更することもできるが、コンテナで運用するとすべての通信はコンテナネットワークの gateway からリクエストされているようにみえるのでアクセス制御という側面ではこの設定そのものにあまり意味はない。

e := echo.New()
e.IPExtractor = echo.ExtractIPFromXFFHeader()

X-Forwarded-For ヘッダーの値を実際に参照するときは c.Request().RemoteAddr ではなく c.RealIP() を使う。api サーバーはこのぐらいの変更で実際のクライアントから転送されてきた ip アドレスを知ることができた。

親からの依頼

前泊移動

親からの依頼 16時半移動の19時半から友だちと東京で飲み会予定になっていた。昨日リリース作業があったそうでお仕事の影響で行けないという話しになったので新幹線の移動時間も19時52分〜に変更しての前泊になった。スマートEX は新幹線の予約変更を直前までできる。こういう予定が曖昧なときに便利なのを実感した。朝にスーツケースを準備してオフィスに持ち込んで16時から移動できるような段取りは組んでいたものの、なんか16時から移動というのも違和感があったのでキャンセルになっていつも通りのスケジュールで1日を過ごせたことはよかったと思う。

城崎温泉のアテンド

親が親戚と一緒に城崎温泉へ行きたいというので11月の下旬に旅館の予約をとった。サイトで条件を入れて検索したら、きのいえ のすぐ前にあった 緑風閣 がヒットしたので (前を通って) 知っている旅館なのでここでいいなと4人一部屋で予約した。私が車で運転して連れていって案内したりすることになりそう。うちはもともと旅行したりする家族ではなかったし、親がどこかへ行きたいということもあまりないのでこういった機会はなるべく要望に応えるようにはしている。過去2回うちの会社の合宿として城崎温泉へ行った話しを親にしているうちに関心をもったようだ。別に狙った意図ではなかったが、親が楽しむ機会になるならそれはそれでよかったなと思える。

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

歯科検診

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

生活のリズムづくり

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

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

小雨が降る中のパンク修理

先週末に pr を送っていたから午前中にそのマージ作業をやって、他にもいくつか開発が順調に進捗したにもあって早めにお仕事を終えて自転車のパンク修理へ出掛けた。夕方から雨が降ったりやんだりで微妙な天候だったものの、大きく雨には降られなかったのでそれはそれでラッキーだった。

一番近い自転車屋さんへパンク修理にもっていくと、パッチ対応はしていなくてチューブ交換になってしまう。たまにしかないことではあるけど、チューブ交換で5,500円もかかる。ちょっと高い。他を探す時間もないから仕方ない。自転車を預けて1時間ほど待ち時間があり、その間にスーパーへ行って買いものして家に戻り、すぐにまた自転車屋さんに受け取りに行くといった感じで2時間ほどかかった。

軽く雨降りの中、傘をさして行ったり来たりしたのもあって疲れて夜のコーディングは行わずに早くに休んだ。

老若男女向けのバドミントン

今日の運動は腕立て,バドミントンをした。統計を 運動の記録 にまとめる。今日も 右股関節の改善体操 を軽くやった程度であまりちゃんとできなかった。

nhk の受信契約の解約

nhk の放送受信契約の解約 の手続きをした。電話して解約理由を説明したところ、その理由は妥当だと認められて、それから書類を送るのでその書類で解約申請をしてくださいと言われた。引っ越しにより、お風呂に備え付けのテレビがなくなったので受信契約を解約するという理由は妥当なので問題ないとのこと。nhk のようなところがオンラインの解約システムを作れないわけがないので意図的に面倒な仕組みにしていると推測される。電話で連絡してから1-2週間たって解約の書類が届いた。送られてきた書類に3週間以内に返送しないと解約は無効だとも書いてある。こういう言い回しの1つ1つに角が立つ。ほんとひどいよね。

体育館でバドミントン

チーム利用として初めて 磯上体育館 の競技場を借りてバドミントンをした。当日まで5人参加だったものの、当日に2人がドタキャンして3人になった。三宮.dev ではない外部からも line のオープンチャット 経由で1人参加してくれた。これはしてやったりという感じで私の目論見通り。3人だと代わりに休憩するといったこともできなくて、1度休憩は入れたものの、1.5時間ぐらい3人でずっとバドミントンをやっていた。これはこれでよい運動になった。バドミントンは初心者もそこそこできるし、年齢差や男女差もあまり出ず、誰でも参加できてよいスポーツだと思える。私ももっとうまくなりたいと思うようになったものの、バドミントンってどうやって練習すればよいのかがわからない。ひとりで練習したりできるのかな?野球で言うところの、壁当てや素振りみたいな練習できればいいのにな。

お仕事たくさん溜まっていて、本当はバドミントン終えてからオフィスへ戻ってお仕事しようと思っていたのに、バドミントンそのものと、それまでのイベントの調整疲れもあって、帰ったらくつろいでいたらそのまま寝てしまった。よいマンションに引っ越したというのもあるのだけど、寝室でエアコン入れてくつろいでいるとそのまま怠けてしまう。あまり家にいないようにしないといけない。