Feedback Loop

エンジニアの日記帳。ものづくり、プログラミング、読書などについて書いてます。

ワーケーションに行った

2024/10/17

長野県と山梨県の境目あたりでワーケーションしてきた。2泊3日。なかなか良い時間を過ごせた。

ワーケーションはワークとバケーションを合わせた言葉で、和製英語と思いきや英語圏でも使われる表現らしい。普段はフルリモートで家から仕事していて快適ではあるが、人との会話に飢えるときがある。そういうときは出社もいいなと思うが、混雑している電車を見たり雨が降ってたりするとフルリモートでよかったと心から思うこともあり定まらない。何も毎日話さなくてもよくて、でもたまには喋りたい。というわけでワーケーションである。

数年前に6人で行ったときはAirbnbでコテージ的なところに泊まったが、今回は人数も少ないのもあり普通の旅館で各自部屋をとるスタイルになった。部屋で各々仕事したり、集まれるときはロビーで一緒に仕事したり。ランチにどのお店に行くかという相談が懐かしい。技術的な話やなんでもない話を気兼ねなくできる時間は貴重で、とても気持ちが満たされた。

ZoomやGoogle Meetのオンライン会議でも雑談はできるが、体験としては少し違う。仕事的な話をする分には効率的で良いが、雑談はなんだか盛り上がりにくい。相手の状況がわからない、いつまでも話せてしまうのでどこかで切り上げないといけないなどの意識が早めに切り上げる方向で調整してしまう。3人以上となると喋りづらさは格段に上がり、人数が増えると聞き専の人が増える。私はみんなでワイワイ話したい派だし、誰かが話すときも相槌打ったりしたいのでオンラインの雑談には限界を感じる。ボディランゲージが制限される、音声で割って入りにくいという技術的な制約によるものが大きいと思うのでいつか解決されるかもしれない。Apple Vision Proがその解決策かと思って試したが、あまり満足いける体験ではなかった(単純に頭が重くて長時間つけられない)。

近くに住む同僚と合流して一緒にご飯を食べたり、早朝に起きて温泉と散歩を楽しんでから仕事をしたり、良い時間がたくさんあった。夜は一緒に個人開発もした。とある新サービスを作ってるのだが、そのお互いの作業のドッキングというか、それぞれ進めていた領域が重なる部分を一緒にやった。こういうのは対面で会話しながらの方が進めやすいし楽しい。うまく動いたときに一緒の空間で喜ぶ。こういうものづくりの根源的な喜びは大事にしたい。


普通のことを続けるのは難しい

2024/10/17

社会人になりたての頃シェアハウスをしていて、東京に友人6人と住んでいた。そのなかの一人と夜ご飯を食べているとき、「普通のことを続けられる人は一握り」という話になった。朝元気に挨拶する、横柄な態度を取らない、分からないことがあったら人に聞くなどは誰でもできる。しかしこれをずっと続けらる人は実は少ない、みたいな話。

前職のヤフーで働いていたとき、当時の社長が「毎日1%成長していけば1年後には37.8倍になる」と言っていた。その日だけ見たら前日と変わらないように見えるけど、積み上げていけば良い意味で雪だるま式に増えていく。同期には明らかに優秀で才能に溢れた人たちがいて、その人たちのような特技はないけど、まぁ毎日挨拶したりちょっとずつ勉強するとかは自分にもできるかな、と思った記憶がある。

あれから10年ちょっと経ったが、いまでも好奇心には素直でいられている。自分の分からないことを腐すのではなく、純粋に学びたいと思える。Web業界はトレンドの移り変わりが激しいとよく言われるが、それは自分にとってはポジティブな要素。新しいことを学ぶのはいつでも楽しい。ただ、年齢的なところでいうと若いときの方が吸収力は一般的に高い。新しい技術をよーいドンで学ぶような状況では、新卒で入ってくるメンバーとパフォーマンス的に同じか劣るようなシーンもある。良くも悪くもメンタルは落ち着いてきていて、当時のようにがむしゃらに汚いコードを書きまくって体で覚える、みたいな時間は減ってきている。

対人スキルは技術に比べて積み上げの性質が強く、これまでの経験を活かしやすい。そうなるとマネージャーなどの職につくと良い気もする。人と話すのは好きだし周りが働きやすい環境をつくるのにも興味はあるが、私の一番好きなサービスをゴリゴリ作る部分からは離れてしまうので寂しい。昨今ではAIの進化が著しく、勉強するのにもプログラミングするのにも知の高速道路感がある。かつて複数人いないと難しかったものが1人でできるようになる。自分の疑問にピンポイントで答えてもらうこともできる。ただし検算は必要で、それで合っているのかどうかを見極められるだけのスキルは自分に必要。技術の幅をあげておくと良いことがあると信じて、気になる知識を勉強している。


Duolingoをはじめた

2024/10/15

英会話学習アプリのDuolingoをはじめた。毎朝15分を1週間ちょっと。今のところいい感じなので年間プランを課金した。どこまで続くか試してみることにする。

元々夏休みのフィリピン旅行の前にオンライン英会話のNative Campを契約して、日本に帰ってきてからも毎朝やっていた。Native Campではビジネス英会話コースというのを初級からやっていたが、初級・中級と終えて次はどうするか迷う。上級はちょっと実践例すぎるように感じたし、テキストを読み上げるだけでの上達にも限界を感じつつあった。自分の弱点は明らかにリスニングで、英文ならそこそこ意味を読み取れてても会話だと簡単な質問がわからない。以前ディクテーションをやった時とてもよかったのを覚えていたので、近いことができるアプリがないか探してDuolingoに行き着いた。

Duolingoは兄が使っていたりSNSで知人がシェアしていたりして存在はしっていたが、かなり海外のゲーミフィケーションを感じるつくりなのが自分にはどうかと思っていた。でも実際始めてみるとすぐ慣れ、続けれそうな感覚があったので年間プランを課金。リスニングやディクテーションの問題もたくさんあってうれしい。自分は五感で言うと視覚優位だと思うので、アプリの画面をみながらひとつずつ答え合わせできるのも肌に合っている。毎朝15分を目標に続けてみることにする。

実際に英語が話せるようになるかは分からない。Duolingoの日本語訳の問題で英文とバラバラに配置された単語が与えられ、単語を順にタップして正解の日本語文を作るというのがある。登場人物にHinataという人がいるが、その名前を「ひな」「た」とタップする。ここじゃない感がすごい。あとは時制の問題なのに自由入力で「soccer」とか「fruits」が穴埋めの対象になってるときがある。そこじゃない気がする。でも理解が足りてないところを補えたり、ディクテーションのときに「a」とか「were」とかが聞き取れなかったり勉強になるところも多い。最近学んだのは「This soup is as spicy as my mom's」。簡単な文章だがasやspicyをどの順で並べたら良いかわかっていないことに気づく。レッスンも過去進行形に入ってきて問題も難しくなってきたので、ここから楽しくなりそうである。


自分の体調を知る

2024/10/14

長かった夏が終わりようやく秋が来た。日中もかなり涼しくなってきて朝晩は寒いくらい。軽くタンスを整理して長袖の服を取り出しやすくした。

暑いのが苦手なので秋の到来は喜ばしいが、体調はあまり万全ではない。体が重かったり頭が回らなかったりする。そして毎年春と秋の時期にそうなっていることに気づき、寒暖差アレルギーで調べると症状が一致していてひとりで頷く。数年前から自律神経が乱れやすい体になっており、外出の際は体温調整に気をつけるようにしている。

カフェインにも弱い。カフェや喫茶店のような雰囲気は好きなのでよく行くが、コーヒーを飲んだ日は夜中までそわそわしてパフォーマンスが落ちる。ずっと落ち着かなかったり、人の話に集中しづらかったりする。カフェインを避けてるうちにさらに耐性は失われてるようで、最近はスタバのカフェラテでもフラフラする。一度紅茶が自慢のカフェに行くとポットパーティーなるメニューしかなく、カップが空くたびに違う紅茶が注がれることになった。2時間で6-7杯ほど飲み、翌日まで体調が戻らなかった。

最近はもっぱらカフェインレスを飲むことにしている。幸い(?)コーヒーの味は全然わからないのでカフェインレスでも変わりなく満足できる。ただしカフェインレスを提供している店自体が少ない。個人店だとほとんどないし、大手チェーンでも提供状況はまちまち。自然と100%デカフェにありつけるスタバに行く機会が増えた。本当はタリーズ派だが、タリーズは店によってデカフェがあったりなかったりする。私はカフェラテをデカフェにしたものが好きで、それだとさらに店が絞られる。本当は個人店のいろんな雰囲気を楽しみたいが、フラフラになると後がしんどいので我慢する。誰かと行くときはデカフェどうこういってられないシーンもあるので、その時はルイボスティーやハーブティーを選ぶ。カフェインを飲むとその後あまり集中して喋れず申し訳ない気持ちになってしまう。

梅雨の時期は低気圧に苦しめられる。気圧差が激しいタイミングでは頭痛になり、体も重くなる。低気圧はカフェインとは違って避けられないので受け止めるしかない。どうしても頭痛になりたくない日は市販薬を飲んだりもする。バファリンなどをいつもカバンに備えておき、体調の変化に気づいたらいつでも飲めるようにしている。備えがあるだけでかなり気は楽になる。低気圧というと「頭痛〜る」というアプリが有名で、これをみると何時頃に低気圧が来る分かる。不思議なことにグラフは平坦なのに頭痛になるときもあって、その時にアプリを開くと他のユーザーも同じように書き込みしてたりする。グラフだけではない何かがある。頭痛〜るはとても便利なアプリが、グラフを未来の方向に横スクロールしていくと急にプレミアムプラン訴求ポップアップが表示される体験が嫌いで使うのをやめた。先の予報はプレミアム限定なのは良いが、スクロールしてたら急に割って入られるのに毎度ムッとしてしまう。低気圧はどのアプリでも見れて良いと思うので、普通の天気アプリに組み込まれるのを期待している。


コーディングルーティーン

2024/10/13

Webサービス開発で新しい機能を実装するときの自分なりの流れを書いてみる。

まず最初はパソコンは不要で、紙とペンだけで作りたいものと向き合う。ノートに機能名を見出しとして大きく書き、その下に小さく要件を書き連ねる。例えばどこをクリックしたら何が起きるとか、画面にどういう要素があるかとか。画面を伴う開発の場合はラフな絵を最初に描いて、そこにあるボタンや要素について順に仕様を考えていくことが多い。ユーザーの状況によって表示が違ったり、何かのボタンを押したら要素が展開されるようなつくりもよくある。そういういろんなパターンをここで書き出しておく。

全体のイメージが沸いたら、次は実装のステップを書き出す。1, 2, 3...と数字を打ち、順番に何をやっていくかを書く。ここで書くのはユーザーの操作の順番(つまり仕様)ではなく自分がどういう順序で実装していくかを書く。例えばここの機能をコメントアウトするとこの要素が消えることを確認するとか、フォームにひとつ入力項目を追加するとか、データベースのマイグレーションをするとかとか。思い当たるすべてのことを書き出しつつ、それを今回の実装で重要な順に並べる。大体の機能は5ステップ、多くても7ステップくらいに収まる。それより超えてくると激ムズ機能なので、もう少し細かい粒度で考え直す。

例えば不具合修正の場合のステップは、その不具合が発生することの確認、原因調査としてソースコードを読む、保存されるデータ形式を理解する、不具合が出てない他の似た箇所のソースコードを読んで違いを比較する。アタリがついたら修正してみて一番主のパターンで解決されたか確認する。それができていれば細かい条件を網羅しながらサブのパターンで修正されたかを順に見ていく。最後にその関数を他で使っているところに思わぬ影響が出ていないかチェック。別の画面だったり機能が正しく動くことを確認する。こんな感じでステップを定義する。

昔はここでパソコンを開いてステップに従って実装を進めていたが、最近はこの段階ではまだ開かない。「難所」を書き出すようにしている。難所とは今回の実装で難しいポイントや、自分にとって学習が必要なポイントを指す。例えばGoogleアカウントでログインできるようにするとか、難しめのUIに挑戦するとか、そういうのを書く。書いたらその難所について先に調べる。良い時代なのでネットで調べればその実現方法や、その機能を実装した人のメモなどが見つかる。いくつか良さげなのをピックアップしたら読みながらメモしていく。動くサンプルコードが提供されている場合も少なくない。その場合はコードをザッと見つつ、やはり要点をメモしていく。

難所を乗り越えるイメージができたところで実装に入る。もう要件やステップ分解は済んでいるので、あとは上から順番に作業していくだけである。ここは考える脳みそはほとんどオフにして作業者に徹する。言われたことを完璧にこなせばOKというマインドに切り替えて、確認したり実装したりして進めていく。ひとつステップが完了するごとにその項目に打ち消し線を引いて終わった感を出していく。この進んでいく感じが個人的にたまらない。進めてると新しく問題や気になるポイントが思い浮かんだりするので、それもステップに追記していく。書き出したすべての項目に線が引かれたら完了の合図。最後に全体的にバグってないか、使い心地は良いかを確認して、問題なければ機能をリリースする。

自分なりの流れを決められるとリズムよく開発できる。難しい機能も分解すればひとつずつは超えていけるし、自分ひとりで乗り越えるのが難しい場合は知人に聞けばよい。その時もステップが分解されていればピンポイントで分からないことを相談しやすい。自分のできるところから作って難所を後回しにすることもできるがオススメしない。難所は自分にとって未知の領域なので、もしかしたら実現不可能かもしれない。その場合は他の解決方法を考える必要がある。不確実なものから先に取り組んだ方がよい。