別れと出会い2024

この記事は Leaner Technologies Advent Calendar 2024 - Adventar の2日目の記事です。

2024年はさまざまな別れと出会いがありました。

仕事

2月末にGMOペパボ株式会社を退職しました。詳しくは 退職とこれから - tanaken’s blog に書きました。

職場を離れるという意味では "別れ" でしたが、その後も食事に行ったりボドゲをしたり、技術イベント等で会えば声を掛け合ったりと、継続的に仲良くしてくれる方たちがたくさんいて幸せな限りです。

そして3月からは株式会社Leaner Technologiesで働いています。

新たな職場のメンバーと出会い、職種の垣根なく本当に全員で「企業の買い物を進化させ、新しいスタンダードをつくるにはどうすればいいのか」「そのスタンダードを刷新し続けるためには我々はどうあるべきか」を真剣に考えて日々過ごしています。 それは難しいことでありつつも本当に楽しいし、自分たちであれば実現できると本気で信じることができています。

最近は企業の買い物についての理解が徐々に深まってきました。

企業の買い物は、多くの場合その企業の事業のために行なわれます。 買い物をして何かを手に入れ、それを使って何らかの価値を生み出し、生み出した価値を顧客に売る、というプロセスがあるわけですね。 買い物をする前段には、そもそも何をどこから手に入れるべきか、を決めるプロセスもあるし、手に入れたい背景にあるシチュエーションも異なります(1回限り手に入ればいいのか、数年間安定的に手に入れたいのか、とか)。

企業の買い物の周辺にあるプロセスやその背景を知ることは素朴に楽しいし、それがより良いプロダクトづくりにつながることを感じています。 いろんなメンバーと話して、知識や想いを共有しながらプロダクトをつくれていて、本当にありがたい環境だなと思っています。

家族

4月7日に愛犬のラテが息を引き取りました。

悲しい別れではありましたが、かけがえのない幸せな時間をたくさん過ごせたので、感謝の気持ちでいっぱいです。

そして7月末にはソイをお迎えしました。

すくすくと育って、8月には6.4kgだった体重は現在21.3kgまで増えました。

ラテとソイは性格やふるまいが違うところがたくさんあって(甘えん坊なところは同じ)、それぞれ良さがあるな〜と楽しんでいます。

この記事を書いている今日は、たまたま昔ラテとよくお散歩していたコースをソイとお散歩することになり、いろいろな思い出が溢れ出てきて泣きそうになりました(我慢した)。

犬の命も飼い主の命も、いつなにがあるか分からないので、日々を大切に過ごしたいと改めて思ったのでした。

趣味

最近はテニスをたくさんしています。だいたい週4日くらいの頻度で、休日の昼間、平日の早朝(仕事の前)や夜に練習しています。

今年は、お世話になっているマッサージ店の店長さんとダブルスのペアを組み、お隣の市の大会で3位になりました。市民総合体育大会硬式テニスの部 | 新座市テニス協会オフィシャルページ

この大会に出場していた方(店長さんの知り合い)と友人になり、連絡先を交換して平日早朝の練習に誘ってもらえるようになりました。嬉しい繋がりができてありがたいことです。

たくさん練習をしているだけあって、徐々に上達している手応えがあります。

直近では小さい大会に出場して優勝できました! inspirits-tennis-club.com

いま住んでいる東久留米市の大会ではまだ入賞できていないので、来年こそは入賞を目指します!

おわりに

別れと出会いがあるなかで、2024年を楽しく過ごすことができました。

2025年も楽しい1年にしていくぞ。

Rubyでクリエイティブコーディングをして遊んでみたよ

RubyKaigi 2024のLightning Talksで聞いたchobishibaさんのクリエイティブコーディングの話がとても楽しかったので、いまさらだけど遊んでみました。

やってみた

簡単なものからやってみよう、ということで、いま勤めている会社のロゴをコーディングすることにしました。

早速結果で、左が実際のロゴ画像、右がコーディングして描いた画像です。

すごく遠目から見たら誤魔化せるかな〜?くらいの完成度になりました。

まったくなにも分からない状態から始めて1時間半くらいでここまでできたので、簡単ですごい。ruby/wasm最高!p5.jsもp5.rbも最高!

もっと時間をかけてこだわろうと思えばいくらでもやれそうです。

妥協した点:

  • 位置調整(全体的にもうちょい上のほうがよかった)
    • このブログを書くまで横並びにすらせずになんとなくの目視で位置を決めていたので、その割にはマシなほうだとおもう
  • 図形の歪み(末端の変形や左から右にいくほど太くなっていく表現)
    • p5.jsで簡単につくれる図形の範囲でやりくりすることにしたので、実際のロゴの絶妙な形を表現できなかった
  • フォント
    • 実際のロゴで使われているフォントが分からなかった(週明け誰かに聞けば解決しそう)

参考にした情報:

書いたコード

index.html

<html>
  <head>
    <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.6.2/dist/browser.script.iife.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/p5@1.11.0/lib/p5.min.js"></script>
    <script type="text/ruby" src="https://raw.githubusercontent.com/ongaeshi/p5rb/master/docs/lib/p5.rb"></script>
    <script type="text/ruby" src="./lib/drawings/logo.rb"></script>
    <script type="text/ruby">P5::init()</script>
  </head>
  <body>
    <main>
    </main>
  </body>
</html>

lib/drawings/logo.rb

def setup
  createCanvas(250, 250)
  angleMode(DEGREES)
end

def draw
  background(255)
  draw_logo_line(x: -10, y: 60, w: 28, h: 13, degree: 30)
  draw_logo_line(x: -12, y: 90, w: 70, h: 12, degree: 22)
  draw_logo_line(x: -5, y: 118, w: 125, h: 12, degree: 14)
  draw_logo_line(x: 6, y: 145, w: 200, h: 12, degree: 8)
  draw_logo_text(x: 18, y: 218, font_size: 56)
end

def draw_logo_line(x:, y:, w:, h:, degree:)
  rotate(degree * -1)
  noStroke()
  fill(color(71, 102, 171))
  rect(x, y, w, h, 5)
  rotate(degree)
end

def draw_logo_text(x:, y:, font_size:)
  noStroke()
  fill(color(71, 102, 171))
  textSize(font_size)
  textStyle(BOLD)
  text('Leaner', x, y)
end

p5.rb Editor でも見れます

ゆる解説

とりあえず rect() を使って丸角の図形を書く

rect(x, y, w, [h], [tl], [tr], [br], [bl])

def setup
  createCanvas(250, 250) # 実際のロゴ画像と同じ250x250
end

def draw
  background(236) # 図形が分かりやすいように背景に色をつけておく

  # なんとなく横長の丸角の図形を描く
  # canvasの左上を原点とし、水平右方向がx軸の正、垂直下方向がy軸の正
  rect(30, 40, 30, 15, 5) 
end

rotate() で回転して角度をつける

rotate(angle, [axis])

def setup
  createCanvas(250, 250)

  # 角度を度数で指定できるように設定する(デフォルトはラジアン)
  angleMode(DEGREES) 
end

def draw
  background(236)

  # canvasの原点(左上)を中心として30度回転する(時計回り)
  rotate(30)
  rect(30, 40, 30, 15, 5)
end

右斜上に傾けたいので、回転角度と位置を調整する

def setup
  createCanvas(250, 250)
  angleMode(DEGREES)
end

def draw
  background(236)
  rotate(-30) # 反時計回りに30度
  rect(-10, 60, 30, 15, 5) # 左に寄せて下にずらす
end

図形の枠線を消して色を塗りつぶす

def setup
  createCanvas(250, 250)
  angleMode(DEGREES)
end

def draw
  background(236)
  rotate(-30)
  noStroke() # 枠線を消す
  fill(color(71, 102, 171)) # 塗りつぶす
  rect(-10, 60, 30, 15, 5)
end

ゆる解説以上!

ざっくりこの作業を4本分繰り返して図形を描いています。

本当にこんなんで良いんですかね、位置調整がめっちゃ大変なんですけど。 x, y を変えると回転の開始位置が変わって図形の角度が変わることになり、そのへんがすごくだるいです。

他にいい方法があるかなぁ。 shearX() とかをつかったほうがよかったのかしら。

今後やりたいこと

  • 実装方法を見直す
    • 上に書いたように、本当にこれで良いんか、ほかに方法があるだろ、という気持ちがある
    • たくさんの作品の実装方法を見たらヒントになるかもしれない
  • 妥協点を潰す
    • 位置調整、図形、フォント
  • 光らせる
    • ネオンっぽくする
  • 回す
    • 回せそうなので回す
  • Mouse EventやKeyboard Eventをトリガーとしてなにかする
  • ロゴ以外もなんかやる
    • キャラクター的なやつ

リーナーに入社して6ヶ月経った

リーナーに入社して3ヶ月経った - tanaken’s blog の続編です。

株式会社Leaner Technologies(以下、リーナー)に入社して6ヶ月が経ちました。

直近3ヶ月のこと

5月下旬〜7月上旬

フロントエンドのフレームワークを移行に取り組んでいました。 この取り組みの全体像については「リーナー、Nuxt.jsからNext.jsに乗り換えたってよ - リーナー開発者ブログ」にまとめられています。

この取り組みは約1年前に開始されたもので、自分は最終段階でこの取り組みに加わったことになります。 取り組みを推進していたメンバーが別のプロジェクトに移るという事情もあり、自分が推進者の役回りを引き継いで「残りをきっちり最後までやりきる」を目標にガツガツと実装していきました。

無事に最後までやりきれて本当によかったです。各画面の移行実装に留まらずにさまざまなこと(エラーハンドリング周りの処理の改善、UIデザインコンポーネント集へのコミット、E2E・VRT、CloudFrontでの新旧画面への振り分けなど)に取り組めたこともよかったですね。フロントエンドの実装に対する理解が深まりました。

7月中旬〜下旬

上述の取り組みがいったん完了した時点で新画面に完全に移行した状態にはなりました。 ですが、「ここちょっと気になるけど急ぎじゃないからあとでやろう」といった積み残しはそれなりにありました。

積み残したことはタスクとして積んであったので、それらを棚卸しして優先順位をつけ、7月の残りの期間で潰せるだけ潰していきました。

8月

8月からは開発チーム内の役割の入れ替えをして、自分は「問い合わせ担当」として動き始めました。 プロダクトへの理解を深める手段として、問い合わせに答えるのはすごく良いですね。ユーザーのことも知れるし、機能も知れる、本当にお得です。しかもたのしい。

「問い合わせ担当」という名前ですが、エラー監視ツールからの通知の対応やライブラリのバージョンアップを主導する役割も担っています。このあたりもプロダクトのコードベースへの理解を深めるきっかけが山ほどあります。たのしい。

感じてること

ユーザーに新たな価値を感じてもらえるような取り組み

自分自身はほとんどできてないなと感じています。

フレームワーク移行の取り組みは基本的に画面の見た目や挙動を変えないことを目指して取り組んでいたので、新たな価値が増えないのは致し方ない部分はあるものの。

8月はもっとそういう動きができてもよかったんじゃないかなと思っています。 ちょっと問い合わせ対応に夢中になりすぎた&コストを掛けすぎた(もっとスピーディーに解決できる問い合わせもあった)ので、そのへんは改善ポイントかなと思っています。

ユーザーにとって分かりやすい変化 = 新たな価値を、コンスタントに提供していく、というのは忘れずにやっていきたいところです。 (水面下でほかのメンバーが大きめな機能の開発を進めていたりはするわけですが、それ以外の価値提供もしっかりやっていく)

スピード

上述の価値提供の話にも通じるんですが、とにかくもっと速くできることは速くやっていかなきゃならんな、という想いがあります。

コードベースが大きくなってきて複雑さが増しているなかで、速度を上げて開発することは簡単ではないですが、チャレンジしていきたい。

また、コードを書くところ以外の部分でも速度を上げる余地はありそうとも思います。

たとえば「どの課題に対してどう解決するか = 何をつくるか」を決めるところ。 自分は「安易に解決策を実装してしまって負債になること」を恐れる傾向があります。ブレーキを踏みがちなんですよね。 その傾向を自認したうえで、もうちょいブレーキを緩めてみてもいいかもしれないと思っています。

自分たちのようなスタートアップはスピードが最大の強みと言っても過言じゃないはずで、中途半端にブレーキを踏んで強みを潰さないようにせねば、と感じています。

再構築

という話をした一方で、中長期的なことを考えたときに見直しておくべきシステム内部の課題もありそうです。

1年前に「フロントエンドフレームワークを移行する」という意思決定をしてやり遂げたことで、いまフロントエンドの開発は以前よりやりやすくなっています。

これと同じように、いま向き合うべき課題に向き合っておくことで、将来の開発速度をあげることができるかもしれません。

これからやること

プロダクトの理解を深めて機能リストを整備する

引き続き、問い合わせ対応を起点としてプロダクトの理解を深めていきます。加えて、理解したことを「機能リスト」に追記していきます。

「機能リスト」はプロダクトの機能をまとめたNotion DBです。 最近はこれのメンテナンスが滞っているので、構成の見直しやメンテナンスのポリシーを定めて改めて活用していきます。

現状の機能を整理し、誰でもアクセスできる状態にすることで、問い合わせが解決するまでの速度をあげることができるし、今後新たな価値(現状の機能との差分)をつくるときも活用できる情報になると考えています。

向き合うべきシステムの課題とそうでない課題を切り分ける

システムの課題を洗い出して、取り組むべき課題といったんおいておく課題を明確にします。

取り組むべきと判断した課題については、いつ着手していつまでに解決するのかを決めます。


以上、入社6ヶ月のふりかえりでした。

淡々と書いたけど、とてもアツく燃えています。やるぞ!!!!

新たに家族をお迎えしました

f:id:tanaken0515:20240731222616j:image

2024/05/31生まれ、ゴールデンレトリバーの男の子です!「ソイ(Soy)」と名付けました。

 

今月中旬ごろに、故・愛犬ラテの親戚めぐりをしました。

まず、ラテの祖父にあたるゴールデンレトリバーを飼育している犬舎さんに行きました。お話を聞き、祖父わんこに会い、楽しく過ごしました。子犬も一頭見せてもらいました。

そろそろ新たに子犬をお迎えしたいと考えていたので、どんな子犬をお迎えしたいのか希望をお伝えして、合いそうな子犬がいれば紹介していただくようお願いしました。

その2日後には、ラテの従兄弟(上述の祖父わんこが共通)に会いました。このわんことはSNSで繋がっていて、これまでに何度もやりとりをしていました。実際にお会いするのは初めてでしたが、SNSの動画や写真で見ていたとおり、仕草や表情がラテに似ていて嬉しかったです。わんこと共に過ごす生活が待ち遠しくなりました。

 

そんななかで今日お迎えした「ソイ」は、ラテの祖父の犬舎さんからお迎えしました。元気で甘えん坊で、すでに賢いです。可愛すぎです。

f:id:tanaken0515:20240731230607j:image

 

これからのソイとの生活は、楽しいことだけでなく、つらいことも含めてさまざまなことがあると思いますが、感情の変化を素直に受け止めながら、共に過ごしていこうと思います!

感情の出し惜しみをしている場合じゃない

祖母の米寿(88歳)と卒寿(90歳)のお祝いができていなかったので、お祝いをかねて親戚一同(18名)で箱根の温泉旅館に宿泊しました。

おめでとうやありがとうを伝えるいい時間でした。

いまあるものがいつまでもあるとは限らない、という前提に立って、家族、愛する動物、コミュニティ、仕事仲間、などのさまざまなモノゴトに接していかねばなぁ。

喜んだり怒ったり哀しんだり楽しんだり、あらゆる感情を出し惜しみせずに生きていきたいと思うこの頃です。

豪華な舟盛り

リーナーに入社して3ヶ月経った

2024年3月からリーナー(株式会社Leaner Technologies)で働いています。

入社して3ヶ月が経過しました。

簡潔にいうと、非常にたのしく働いています。

特定のポジションを定めず事業と組織にどう貢献するかをひとりひとりが考えて行動している(※)のを感じるし、それが自分にはあっているなと感じています。

※ 詳しくは「CTO,VPoE,PdM,EM,テックリード誰もいないLeanerの組織づくり」を読んでね

事業も組織もまだまだこれからで、より大きく成長できるかどうかは不確実な部分が大いにあるので、その意味では毎日ヒリヒリしながら働いています。

けれど、不思議と不安はないです。 同僚たち(職種問わず)のひとりひとりの日々の働きが、事業と組織の成長につながっていることを実感できているからだと思います。

「調達購買」というニッチな事業領域に切り込んでいることもあってか、課題を整理して価値提供のカタチを定めることには苦労します。でもむしろそれが楽しく、やりがいを感じています。

この3ヶ月で自分が提供できた価値はごくわずかなので、もっと事業領域と顧客のことを知り、より大きな価値を提供できるようになりたいです。 そしてそのためには、多くのチャレンジをし、多くの「失敗」を蓄積して(※)、自分自身を高めていく必要があるなと感じています。

※ 「失敗」の蓄積と組織づくりへの想いが綴られた代表の記事「創業期のスタートアップに必要なたった1つのこと|大平 裕介/ CEO at リーナー」がエモいのでぜひ読んでほしい

課題解決に全力で向き合って働きたいという人には、とてもおすすめできる環境です。

一緒に働く仲間を募集中なので、興味がある人は声をかけてもらえると嬉しいです。

(興味はあんまなくてもたなけんと話してくれるひとも大絶賛募集中なのでお気軽にどうぞ)

pitta.me

愛犬が息を引き取った話

2024年4月7日、日曜日の夜に、愛犬のラテが息を引き取りました。

www.instagram.com

夫婦で看取ることができました。

亡くなってしまったことはもちろん悲しいけれど、2023年8月にガンが発覚してから約8ヶ月間で色んな思い出をつくり、最期の時に向けて心の準備をしてきたので、前向きに過ごせています。

看取った日以降の数日間はあまり記憶にはないですが、声日記に記録してありました。便利ですね。

listen.style

listen.style

listen.style

ブログを書き始めたものの、そんなに書くことないですね笑

それでもなんとなく、今月の日記はこのタイトルで書いておくべきと思ったんだよなぁ。

本当に看取れてよかった、自分は元気です、ということが伝わればいいかな。よし!以上!