Hatena Developer Blog はてな開発者ブログ 2024-03-14T15:00:00+09:00 hatenatech Hatena::Blog hatenablog://blog/12704346814673975483 はてなエンジニアによるApple Vision Pro座談会 hatenablog://entry/6801883189090450447 2024-03-14T15:00:00+09:00 2024-03-15T09:30:27+09:00 2023年6月のWWDC(World Wide Developers Conference)23で発表され、2024年2月に米国で販売が開始されたApple Vision Proを、はてなのエンジニア5人が入手しました。ということで、3月初旬に5人がApple Vision Proをつけて、オンライン座談会を行いました。その様子をお伝えします。 <style> .zadan { display: flex; flex-direction: column; gap: 24px; } .zadan p { margin: 0; } .zadan > .notice { padding: 16px; border: 1px solid #ccc; border-radius: 8px; } .zadan > .row { display: flex; flex-direction: row; gap: 8px; align-items: flex-start; } .zadan > .row > img { width: 48px; height: 48px; border-radius: 12px; margin: 0; } .zadan > .row > div { display: flex; flex-direction: column; } .zadan > .row > div > span { line-height: 120%; font-size: 0.9em; font-weight: 600; margin-bottom: 0.2em; } </style> <div class="zadan"> <p> 2023年6月のWWDC(World Wide Developers Conference)23で発表され、2024年2月に米国で販売が開始されたApple Vision Proを、はてなのエンジニア5人が入手しました。 </p> <p> ということで、3月初旬に5人がApple Vision Proをつけて、オンライン座談会を行いました。その様子をお伝えします。 </p> <figure class="figure-image figure-image-fotolife" title="Google Meetで座談会をしています" > <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240307/20240307190934.jpg" width="1182" height="665" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span> <figcaption>Google Meetで座談会をしています</figcaption> </figure> <div class="notice"> <p> 本記事中のApple Vision Proは、使用者がそれぞれ「技適未取得機器を用いた実験等の特例制度」に基づく届出を行い、適切な管理の下に使用しています。 </p> <p> この無線設備は、電波法に定める技術基準への適合が確認されておらず、法に定める特別な条件の下でのみ使用が認められています。この条件に違反して無線設備を使用することは、法に定める罰則その他の措置の対象となります。 </p> </div> <div> <p> 座談会の模様はYouTubeでも公開しています。本文中にはないこぼれ話もある完全版です。あわせてご覧ください。 </p> <iframe width="560" height="315" src="https://www.youtube.com/embed/-Q48icZuNhk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="はてなエンジニアApple Vision Pro座談会"></iframe> </div> <ul class="table-of-contents"> <li><a href="#Apple-Vision-Proを買った経緯">Apple Vision Proを買った経緯</a></li> <li><a href="#ハワイはどうでしたか">ハワイはどうでしたか</a><ul> <li><a href="#ハワイ弾丸ツアーの様子はそれぞれブログにも書いています">ハワイ弾丸ツアーの様子はそれぞれブログにも書いています</a></li> </ul> </li> <li><a href="#どれくらい使っていますか">どれくらい使っていますか</a></li> <li><a href="#体験の新しさはどうですか">体験の新しさはどうですか</a></li> <li><a href="#ワークフローの変化">ワークフローの変化</a></li> <li><a href="#ペルソナ">ペルソナ</a></li> <li><a href="#アプリケーションについて">アプリケーションについて</a></li> <li><a href="#visionOSはどうですか">visionOSはどうですか</a></li> <li><a href="#ハンドトラッキングジェスチャー">ハンドトラッキング、ジェスチャー</a></li> <li><a href="#ウインドウの管理">ウインドウの管理</a></li> <li><a href="#EyeSight">EyeSight</a></li> <li><a href="#未来の国からはるばると">未来の国からはるばると</a></li> </ul> <h3 id="Apple-Vision-Proを買った経緯">Apple Vision Proを買った経緯</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 自己紹介をしつつ、入手経緯を話していこうと思います。僕は<a href="http://blog.hatena.ne.jp/cockscomb/">id:cockscomb</a>です。<a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>さんにApple Vision Proをピックアップしてきてもらいました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> ふと思い立ってホノルルに行き、Apple Storeでピックアップしてきた<a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>です。普段はiOSアプリエンジニアをやっていることが多いです。よろしくお願いします。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> <a href="http://blog.hatena.ne.jp/astj/">id:astj</a>といいます。この場にいる5人の中で、唯一スマートフォンアプリをまともに書けないエンジニアです。 </p> <p> 経緯は、会社で<a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>さんのApple Vision Proを触らせてもらったときに、これはすごいから俺も手にしないといけないな、と感動して、それで買ってきました。だから<a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>さんより1週間遅れくらいですよね。そのとき一緒に行ったのが、次の<a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>さんです。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> <a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>です。<a href="http://blog.hatena.ne.jp/astj/">id:astj</a>さんに連れて行かれる形でハワイまで買いに行ってきました。 </p> <p> 元々買うつもりはあったんだけど、まさかこのタイミングになるとは思っていなかったです。自分を含めてみんなAppleファンボーイズで、当然買うつもりはあったんですが、まさかこういう経験をするとは。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> <a href="http://blog.hatena.ne.jp/ikesyo/">id:ikesyo</a>です。<a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>と<a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>と同じチームでiOSアプリを書いています。自分もいつか買いたいとは思っていて、でも矯正レンズの問題とかもあるので、日本発売を待とうと思っていたんですが……。先に買った<a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>さんや<a href="http://blog.hatena.ne.jp/cockscomb/">id:cockscomb</a>さんが触っているのを見て、羨ましくなってしまって。 </p> <p> そのタイミングで<a href="http://blog.hatena.ne.jp/astj/">id:astj</a>さんと<a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>さんがハワイに行くとなって、急いでコンタクトレンズを作って、ピックアップをお願いして手に入れました。昨日の夜に受け取ったばかりで、まだ不慣れな状態です。 </p> </div> </div> </div> <h3 id="ハワイはどうでしたか">ハワイはどうでしたか</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 全員一泊三日で行きました。あのね、一泊三日は単純に疲れるというのが一番の感想ではないかな。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p>わかるな〜。飛行機にずっと座りっぱなしで辛いんですよね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>ハワイに24時間もいなかったですからね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 特に一泊三日で行こうと思うと、行きがしんどいんですよね。日本の夜に出て、飛行機に7時間乗って、向こうの朝に着くっていう感じになるんです。そうすると飛行機に乗っている数時間でちゃんと寝ないと、睡眠時間が足りないんですね。そこからもう1日始まるから。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ホテルはそんなに高い感じじゃないと思いますけど、ご飯とかは高そう。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> そうですね、物価が基本的にそもそも高いですし。そこから逆算すると、ホテルは安かったという気持ちになりますね。物価からの相対感では。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>でもいいですね。かけがえのない思い出のような感じがします。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 全員アラモアナ(注:ホノルルのショッピングモール、アラモアナセンターのこと。Apple Storeがある)に行きましたよね。ハワイの、ホノルルの空港(注:ダニエル・K・イノウエ国際空港)から近いApple Storeだったんだけど、すぐ横がビーチなんです。その美しいハワイのビーチを尻目に、俺たちは弾丸で高級ヘッドセットを買いに来ている。そういうかけがえのない思い出という感じでした。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>普通の人とはついでが逆なんだよね。</p> </div> </div> </div> <div> <h4 id="ハワイ弾丸ツアーの様子はそれぞれブログにも書いています">ハワイ弾丸ツアーの様子はそれぞれブログにも書いています</h4> <p> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdaiary.hatenadiary.jp%2Fentry%2F2024%2F02%2F29%2F140945" title="アメリカに行ってVision Proを買ってきた - ダンの日常2" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style=" display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px; " loading="lazy" ></iframe> </p> <p> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fyutailang0119.hatenablog.com%2Fentry%2Frta-purchase-apple-vision-pro-in-hawaii" title="Apple Vision Pro購入RTA 1泊3日弾丸ハワイツアー #AppleVisionPro - がんばってなんか書く" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style=" display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px; " loading="lazy" ></iframe> </p> <p> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.astj.space%2Fentry%2F2024%2F03%2F07%2F213627" title="1泊3日でハワイに行ってきた(Apple Vision Pro を買ってきた) - 平常運転" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style=" display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px; " loading="lazy" ></iframe> </p> </div> <h3 id="どれくらい使っていますか">どれくらい使っていますか</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> <a href="http://blog.hatena.ne.jp/kouki_dan/">id:kouki_dan</a>さんは買いに行ったのが2週間ちょっと前ですが、その後どうですか。使っていますか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> めっちゃ使ってますよ。できるだけこの新しいインターフェースに体を慣らして行きたいと思っています。そのためにはたくさん使うしかないと思っているので、仕事中もずっとヘッドセットをつけているように心がけています。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>えー、1日に8時間ぐらいですか。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p>いや、でもそんなつけてないかも。5時間くらいかな。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>それでも5時間もつけていられるのは、タフな側なんじゃないですか。</p> <p><a href="http://blog.hatena.ne.jp/astj/">id:astj</a>さんや<a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>さんはどうですか。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 僕も仕事中に被っていることもあるんですが、この中ではひ弱な方のようで、1時間を超えてくると目の疲れを感じがちです。それくらいのサイクルで被ったり外したりして向き合っています。よく考えると、そもそもコンタクトをつけていると目がシュパシュパしがちなので、それもあるのかなと思います。 </p> <p> 僕もこのApple Vision Proのインターフェースの感じとかに興味があって被っていて、Macと接続してMacのトラックパッドとかをユニバーサルコントロール(注:同じApple IDでログインした複数のMacやiPadが近くにあるとき、ひとつのトラックパッドやキーボードで複数の端末を操作できる機能)で使っていると、まだカーソルを動かす方が体に馴染んでいると思ってしまいますね。視線で操作するのは、特にブラウザだと、まだ難しい。でもこのまま続けていけば体に馴染んで、もうトラックパッドとかは使えなくなるはずだから、もうちょっとだと思っています。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 僕は仕事中はつけてないですね。ここにいるみんな目が悪いからメガネかコンタクトだと思うんですが、自分は朝にコンタクトをつけるのがめんどくさいというのもあります。仕事が終わってから遊んだり、自分が作ってるアプリを動かしてみたり、というときはコンタクトもせずに使っているときがあります。極限までウインドウを近づければ、目が悪くてもなんとか見える。仕事中はつけてないですが、プライベートタイムで遊んでいる感じですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 確かにコンタクトの問題はありますね。僕らみんなメガネだったわけじゃないですか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> Apple Vision Pro自体は、専用の矯正レンズを装着することで、裸眼でも本来は使えるものなんです。でも我々みたいにアメリカのApple Storeのピックアップで買おうと思うと、矯正レンズが注文できないので(注:Apple Vision Pro用のZEISS Optical Insertsは配送のみ受け付けている)。みんな諦めて、普段はメガネの人たちもコンタクトレンズをつけてかぶっている。あるいは<a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>さんみたいに、至近距離に近づけて我慢している。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> 僕はApple Vision Proが発表された瞬間、もうこれはコンタクトが必要だと思って、1年前から準備していました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p>すごいですね。</p> <p> 僕や<a href="http://blog.hatena.ne.jp/cockscomb/">id:cockscomb</a>さんは、このためにコンタクトを作りに眼科に行きましたよね。<a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a>さんにピックアップをお願いしたその週末に、近所の眼科で処方箋をもらって、コンタクトを買いに行きました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 今までコンタクトが怖いと言っていた人たちの考え方を変えさせるほどの力があるのかもしれない。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> Appleにはそれくらいの力がありますよ。僕も時計が嫌いだったけど、Apple Watchが発売してからつけるようになったし。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> <a href="http://blog.hatena.ne.jp/cockscomb/">id:cockscomb</a>さんはどうですか。日頃Apple Vision Proを使っていますか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 一応大体毎日つけています。僕は目は平気で、コンタクトでも全く疲れない。でもだんだん肩が凝ってきて、それで外します。それでも仕事中などで集中していたら気にならないので、何時間もつけてる日もあります。あとは夜にNetflixとかを見るときに使ったりもします。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 何かのタイミングで<a href="http://blog.hatena.ne.jp/cockscomb/">id:cockscomb</a>さんとミーティングで一緒になると、ほぼ常につけている気がする。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 面白がってつけているときもあります。このミーティングにはつけていったほうが面白いな、という風に。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 肩が凝るといえば、Apple Vision Proは長いことつけているにはどうしても重いですよね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p>昨日初めてつけて、しっかり重いと感じましたね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 重いのはそうですね。全員重さを感じていると思う。それでも、個人差もありますが、数時間ぐらいはつけていられるのかな。 </p> </div> </div> </div> <h3 id="体験の新しさはどうですか">体験の新しさはどうですか</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> <a href="http://blog.hatena.ne.jp/ikesyo/">id:ikesyo</a>さんはまだ触り始めたばかりですけど、他の4人はもう結構触っているから、例えば空間の感じがすごいとか、そういうプリミティブな喜びというか驚きみたいな話を通り過ぎてしまっている気がする。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 冷静になると、めちゃくちゃすごい。今Google Meetのウインドウが浮かんでいて、同時にパソコンの画面も見ているんですが、パソコンの方を見てる間は、ちゃんとGoogle Meetのウインドウの方からみんなの声が聞こえます。空間オーディオがめちゃくちゃよくできている。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 最初は、音の出ているウインドウを遠くの方に置くと、音が出る方向が変わるみたいなことに気づいていなかったんです。でもあるときやってみたら、遠くのほうから音がして、めっちゃびっくりしてしまった。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 反響も違いますよね。Environments(注:Apple Vision Proで空間を現実のものから置き換える機能)の有効・無効で、反響の感じが変わります。部屋の様子をセンサーで見て反響効果を変えているのでしょうか。 </p> <p> アイトラッキングは、ちゃんと作ってあるアプリだといいんですが、Safariとかでは難しい場合があります。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> そうですね。選択できるものが多いというか、密集してると選びづらい。アプリでも、iPadアプリが使えるようになっているけれど、ホバーエフェクトがなくてイマイチちゃんと選択できているのかがわからないケースもあったり。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>僕は、アプリは基本的に画面を触っています。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p>あー、なるほど。近づけたら触れるんだ。</p> <p> あとはバーチャルキーボードも、あのキーボードをタップするのは難しいと思いました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> そうですね。ユニバーサルコントロールを使っているとき、文字入力をMacのキーボードからできるので、最高だと感じます。 </p> <p> ホバーエフェクトがないと分かりにくいというのは、マウスポインターが見えない状態でマウスで操作してるようなイメージです。スマートフォンとかタブレットだったらタッチする指が直接見えているし、マウスとかトラックパッドだったらカーソルが出ていてわかりやすかったんです。それがApple Vision Proだと、大まかには自分の視線の方向にカーソルがあるわけですが、実際にどこにあるかはUIパーツのホバーエフェクトでしかわからない。ホバーの変化の見づらいUIではすごく難しい。紛らわしいくらい近くに、ボタンをいっぱい並べないでほしいとは思います。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> WWDC23で、ボタンは60ポイントの大きさが必要とか、ホバーエフェクトがすごく重要だという話をしてたと思います。でも去年それを見ていたときは、ああそうなんや、くらいで実感できていなかったですね。実際に触ると、これは絶対に必要っていう最低ラインだったと感じました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> その辺は、iPadOSがマウスとかトラックパッドに対応したときに、ホバーエフェクトが出るようになったという流れがありました。それにちゃんと対応しておけば、iPadアプリが使いやすくなるので、必ずしもApple Vision Pro対応だと思わずに、そういう体験をちゃんと提供しておくのが大事だと思いました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 標準のボタンとかを使っている限りはホバーエフェクトはきれいに動くので、カスタムコントロールを自分で作ったときにちゃんと対応する感じですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 我々も視線での操作に慣れてないから、頭ごと動かしちゃっているところがある。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 空間トラッキングがしっかりしているおかげで頭を動かせるというところもあると思います。空間トラッキングの精度が低いと、頭を動かしても思ったように視界が動かないから、酔ってしまうとかが起きると思う。こうやって空間に浮かんでいるウインドウがARとしてしっかりしていて、現実の空間に固定できているから、頭を動かしときにすごく自然で、本当にそこに存在しているという体験ができていると思いますね。 </p> <p> でもこれは話だけ聞いても伝わらないような気がする。ぜひ、ぜひあなたの目で確かめてください。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 不思議な体験なんですよね。でもあまりにも普通に見えて、その不思議さに気づかないかもしれない。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 最初にヘッドセットをかぶった時、カメラで撮影された現実の光景が出てくるんです。めっちゃ普通だから、ぼんやりしたすりガラス越しですよって言われたら、納得してしまうと思う。よく見ると、解像度がちょっと低いとか、カメラを通してるゆえの違いがあるんですけど。最初にかぶった瞬間は、普通じゃん、って思う。 </p> </div> </div> </div> <h3 id="ワークフローの変化">ワークフローの変化</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 実際に起きていることと主観的に受ける感じが一致しなくなっていますね。 </p> <p> 実際にこれでワークフローが変わったりしましたか。僕はApple Vision Pro越しにパソコンを使っているだけなんですが。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> パソコンを使っているだけですね。でも、元々シングルディスプレイ派だったんですが、空間が使えるのにもったいないと思って、いろんなアプリを周りに並べて仕事をするようになりました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>どんなアプリを置いていますか。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> メールと、カレンダーとSlackと、そういうちょっとした便利系のツール。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>Slackとかはいいかもしれないですね。いつも視野に入ってると便利。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>立ち歩くと自席にウインドウを置いてっちゃうじゃん。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 視界に対してじゃなくて、実空間に対してウインドウの位置が固定されているから、人間が動くとウインドウが置き去りになるんですよね。 </p> </div> </div> </div> <h3 id="ペルソナ">ペルソナ</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ペルソナ(注:Apple Vision Proで予め撮影して作成した自身の3Dモデルをモーフィングして、自身のアバターとして使う機能)は、最初は不気味かなと思ったけど、慣れてくると特に気にならないですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p>意外と自分だなって感じがする。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>まばたきしているし、視線も動くし。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 本物ではないというのは当然思うけど、本物ではないなりにも、ああ、あの人ねって。人間らしきものがしゃべってる姿として別に違和感がないのがすごいですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>これまだベータなんですよね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> これを話しているタイミングではまだvisionOSの1.1が出ていないので(注:2024/3/8にリリースされた)、みんな1.0.いくつを使っているんですが。1.1で改善されるという話も出ていますね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>でも今の時点でもそんなに変ではない。とにかく口が動くのがすごい。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p>口の動きが自然ですね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> カメラはヘッドセットの周りについてないはずですが、それでも普通に口の感じが再現されています。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ハンドトラッキングのために真下を向いたカメラがあって、それが口の動きまで捉えているんでしょうね。 </p> </div> </div> </div> <h3 id="アプリケーションについて">アプリケーションについて</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> ちょっと話を巻き戻すけれど、Apple Vision Proで何をやるかっていうコンテンツの部分は、全然まだ出てきていないですよね。だって、デベロッパキットとかはあったけど、やっと実機が出てきたばかりだから。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 動画の視聴にはめちゃくちゃいいです。スピーカーがいいから、音も迫力あるし、空間オーディオもすごいし。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 僕は3Dで猫の写真をめちゃくちゃ撮っています。お子さんの写真とかもぜひ。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 写真といえば、普通の写真でもApple Vision Proで見るととてもよく見えますね。大きく印刷した写真みたいな感じで見れて、非常に迫力がありますね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> パノラマ写真をちょっと見てみたけど、ちゃんと広げるとEnvironmentsみたいに自分の周りを囲う感じで見れるので、かなり迫力ありましたね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> ハワイのApple StoreでApple Vision Proのデモをしてもらえるんですが、そこで写真がパノラマだとこう見えるんだよ、みたいなことをやってくれるんです。そのデモを見た瞬間に、今までパノラマ写真を撮ってこなかったことを後悔しました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> ちょうど鴨川をパノラマで撮った写真があったので、それを広げてみたら、本当に自分が鴨川の河川敷にいるように感じられるくらいで、これはすごいと思いました。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p>やっぱりパノラマを撮っていきましょう。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p>遅い。いや、今からでも遅くないですね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p>今からでも、どんどん街へ撮影に繰り出す。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> そういうコンテンツを見るような用途にはだいぶ便利です。反対に、まだ入力が難しいというのもあるのかもしれませんが。あとは、Google MeetとかFaceTimeとか、そういうコミュニケーション用途も意外と悪くない感じがします。実在感があって、パソコンから飛び出しているように感じられる。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> ここでは5人がApple Vision Proを持っているから100%カバーしていますが、普通の人は持っていないから。ふたりでコミュニケーションするためには100万円かかる。 </p> </div> </div> </div> <h3 id="visionOSはどうですか">visionOSはどうですか</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> さっきもvisionOS 1.1の話をしましたが、ハードウェア的には今の時点での極限っていう感じです。ソフトウェアも良くできてるとは思う。例えばiPadのアプリが一通り動いて、ウインドウの表示もきれいです。とはいえ、まだソフトウェア的にはできることがありそうですが。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p>ありそうですね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 我々からすると、何よりIMEという気もします(注: Apple Vision Proはまだアメリカでのみ販売されており、ユーザーインターフェースも文字の入力も英語にしか対応していない)。IMEって、日本語IMEが単に入っていないんじゃなくて、IMEの仕組み自体がまだないんですか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> サードパーティ向けのIMEのAPIは今は有効になっていないですね。Appleはたぶんサードパーティ向けとは違うAPIでIMEを作っているでしょうけど、それはどうかは知りません。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> 日本語入力があったとしても、文字入力をこのキーボードでスムーズにできるかっていうと、まだ怪しいと思っています。人差し指しかキーボードの入力に使えないじゃないですか。5本の指が使えるようになってほしいですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> コンテンツを見るのに偏るみたいな話がちょっとあったけど、結局そこですよね。入力デバイスの都合でプロダクティブな用途はまだ難しい。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> でも日本語入力だったら、フリック入力ができれば、空間をシュッ、シュッとすれば入力できるわけでしょう。できるのかな。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p>それか、もう音声入力をするかですね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ただ普通にMagic KeyboardとかをBluetoothでつなげてもいいので、無理しないでもいいかもしれません。 </p> </div> </div> </div> <h3 id="ハンドトラッキングジェスチャー">ハンドトラッキング、ジェスチャー</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ハンドトラッキングは、今はイマーシブな、完全なアプリじゃないとハンドトラッキングのAPIは触れないんですよね。だから普通のアプリは標準的なジェスチャーだけを使えると思うんですが、それがもうちょっと使いやすくなるといいんですかね。 </p> <p> もちろん、完全なハンドトラッキングでアプリを触りたいわけじゃないですか。粘土をこねるように3Dモデリングしたいわけでしょう。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> Safariを使っていても、ブラウザバックとかは普通にジェスチャーでやりたいと思うけど、それは今できないんですか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> できないですね。2本の指で空を切ったらバックジェスチャーになってほしいですよね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> Macのトラックパッドジェスチャー的なことを空間でそのままやりたいですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> Appleは技術的にはそういうのも実装できそうですけど、でも誤爆が起きて難しいのかな。つまむジェスチャーでさえ誤爆する時があります。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> どの操作にせよ、視線を合わせた後、実際につまむその瞬間までちゃんと見ていないといけない。一瞬視線をずらしてしまって、思ったのと違う要素をタップしたりとかが起きがちだと思う。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>自身の体をちゃんとコントロールできていないですよ。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p>こんなに視線に対して真摯に向き合ったことがなかったから。</p> </div> </div> </div> <h3 id="ウインドウの管理">ウインドウの管理</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ウインドウのマネジメントについて、もうちょっと何か機能がほしい気がします。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 確かに、ウインドウを掴んで動かす体験は面白さがマックスなんだけど。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> ウインドウを壁に貼り付けたいですね。今はウインドウが壁を貫通するじゃないですか。別に貫通しても見えるけど、でも変な感じがする。 </p> <p> だからウィジェットがほしいです。ウィジェットを壁に貼り付けておきたいと思っていて、時計とか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> 確かに、さっき僕もこの空間に浮かんでいるといいものを考えていたけど、時計がほしいと思う。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>Apple Watchを腕につけているのに?</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p>まあ見えるけど、がんばって見るみたいな感じですよね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p>僕は大体、Macの右上の時計を見ています。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>それもわかります。結局、Macのディスプレイとして使っている。</p> </div> </div> </div> <h3 id="EyeSight">EyeSight</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> Macのディスプレイとして使うのは、大きく画面を表示できるから、いいじゃんとは思います。がんばって使い道を探した結果そうなってるっていう側面もあると思うけど。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p>それを移動先とかでも使えるのはメリットかもしれないですね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> あと使ってみて分かってきたのは、外で仕事をしてると顕著ですが、会社内でも、画面の中身をあまり見られたくない時に都合がいいと思います。Apple Vision Proに画面を映していると外から画面が見えないので。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>自分にしか見えないというのは新鮮な体験ですね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p>逆に外から見ると、僕らは空気を眺めている状態です。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> そういう不気味さに対してのAppleの回答がEyeSight(注:Apple Vision Proの外向きのディスプレイに使用者の目を表示する機能)なわけですけれど、どうでしょうか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> おもしろいとは思うけど、あれで何か解決できているイメージでもないですね。どうなのかな。あれでも目が見えてるといいのかな。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 家に小さい子供がいますが、子どもは僕がApple Vision Proをつけていても気にならないようで、それはEyeSightの効果なのかもしれないです。 </p> </div> </div> </div> <h3 id="未来の国からはるばると">未来の国からはるばると</h3> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> さて、なんとなくまとめの雰囲気に入っていきます。Apple的にはこれで未来の体験という(注:Appleがプレスリリースで「コンピュータの歴史にとって新たな時代の幕開け」と表現していることを受けて)わけですが、未来に来てどうですか。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/astj/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>astj</span> <div class="text"> <p> マジで、これだけ未来に来てしまった感じがする。トータルとして未来の暮らしが来ているっていうより、ドラえもんがポケットから1個だけ未来のグッズを出して渡してくれた、みたいな状態だと思っています。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 過去にタイムスリップして、携帯電話を持ってきたんだけど電波がない、みたいなイメージ。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 最初のiPhoneの頃に言われてたようなのに比べると、だいぶ素晴らしい体験と思います。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p>コピペができないみたいなね。</p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> そういう揶揄されていたことがあると思うんですが、Apple Vision Proについて言われているのは値段だけだと思う。実際に持っていて体験した側だから、ポジショントークでもあると思うんですが、別にこの値段でも買った価値があるとは思うくらいには、いい体験をしている。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 値段だけって言われても、その値段が問題なんだよという感じかもしれませんけどね。まあでも、ちょっと早めに未来に来れるなら安いと思います。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>yutailang0119</span> <div class="text"> <p> 買わない理由が値段だったら買えってやつです。いいこと言うでしょう。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>kouki_dan</span> <div class="text"> <p> 未来の感想というか、おそらくこのインターフェースが10年後は当たり前になっているはず。デベロッパーとしては、新しいインターフェースに適応したアプリケーションが作れないといけないわけなので、一刻も早くこのインターフェースに慣れるのが大切ですね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 向学心ですね。でも確かに、小さなスマートフォンを触って操作するというのは、2007年からやっていることです。今は2024年だから、もう17年経つ。つまり10年後には27年経っているわけだから、ずっと同じというわけにはいきませんね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>ikesyo</span> <div class="text"> <p> ここまで話してきた中でも、まだコンテンツの消費とかディスプレイとしての用途が強そうです。入力のしづらさとかの話もありますが、Appleが空間コンピューティングと謳っているのに対して、コンピューターとしての性格がまだちょっと弱いとは思います。そこをOSのアップデートや入力方法の進歩でどうなるのか期待したい。iPadでもSwift Playgroundでコーディングができるようになったわけですが、MacではなくApple Vision Proと入力用のキーボードがあれば多少は仕事できるとなったら、非常に便利ですよね。 </p> </div> </div> </div> <div class="row"> <img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile_128x128.png" width="48" height="48" alt="" /> <div> <span>cockscomb</span> <div class="text"> <p> 「scratch the surface」と言って、表面をなでただけ、という表現をすることがあります。僕たちもまだ、空間コンピューティングの可能性について、その表面をなぞっているだけなんだと思います。 </p> <p> まだ動物が海にしかいないような時代に、最初に陸に上がった動物のような気持ちで、我々はApple Vision Proと過ごしています。海の生き物からすれば、何やってんだあいつら、って感じかもしれない。でもいずれは陸の生き物がどんどん増えていくわけです。我々はアプリを作ったりもできますし、次のWWDC24でもいろんな発表があろうし、楽しみが続きますね。 </p> <p> というところで、今日は座談会ということで、お互いのペルソナを見ながら1時間ほどお話ししました。 </p> </div> </div> </div> </div> <hr /> <p>▼ <a href="https://hatenacorp.jp/recruit/career/sp-application-engineer">iOS、Androidアプリエンジニア職 転職・中途採用 - 採用情報</a><br /> ▼ <a href="https://hatenacorp.jp/recruit/fresh/sp-application-engineer">iOS、Androidアプリエンジニア職の新卒採用 - 採用情報</a></p> <p><a href="https://hatenacorp.jp/recruit/career/sp-application-engineer" target="_blank" border="0" width="100%"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20201224/20201224090955.png" alt="はてなでは、今の技術・この先の技術に積極的な仲間を募集しています" title="はてなでは、今の技術・この先の技術に積極的な仲間を募集しています" /></a></p> cockscomb はてなのポッドキャスト Backyard Hatena #33 - はてなとGo、hatena.go(id:maku693) #byhatena hatenablog://entry/6801883189089150795 2024-03-08T17:30:00+09:00 2024-03-08T17:30:06+09:00 はてな「技術グループ」によるポッドキャスト「Backyard Hatena」を更新。第33回では、ゲームチーム エンジニア の id:maku693 を迎え、先日開催したイベント「hatena.go #1」のお話やGoサブ会、スクラムマスター業についてなどについてお話を聞きました。 <p>こんにちは、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> です。</p><p>はてなのエンジニア組織である技術グループでやっているポッドキャスト「Backyard Hatena」を更新しました。<br /> 「Backyard Hatena」は、株式会社はてなのメンバーの普段の様子や、サービス開発の裏側や技術、取り組みなどについて、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> を中心としたメンバーがカジュアルにお届けするポッドキャストです。</p><p><iframe src="https://anchor.fm/backyard-hatena/embed/episodes/33-Gohatena-goidmaku693-e2gq3de" height="102px" width="400px" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a href="https://podcasters.spotify.com/pod/show/backyard-hatena/episodes/33-Gohatena-goidmaku693-e2gq3de">podcasters.spotify.com</a></cite><br /> <a href="https://anchor.fm/backyard-hatena">Backyard Hatena &bull; A podcast on Spotify for Podcasters</a></p><p>Anchor / Spotify / Google Podcasts / Apple Podcast で配信しています。お好みのプラットフォームから聞いていただけると嬉しいです。</p><p>今回のゲストは、ゲームチーム エンジニア の <a href="http://blog.hatena.ne.jp/maku693/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maku693/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maku693</a> です。先日開催したイベント「hatena.go #1」のお話やGoサブ会、スクラムマスター業についてなどについてお話を聞きました。</p> <blockquote> <p>Backyard Hatena #33 - はてなとGo、hatena.go(<a href="http://blog.hatena.ne.jp/maku693/">id:maku693</a>)</p><p>Show Notes</p> <ul> <li>hatena.go #1 裏話 <ul> <li><a href="https://developer.hatenastaff.com/entry/2024/02/16/130713">hatena.go #1 &#x958B;&#x50AC;&#x30EC;&#x30DD;&#x30FC;&#x30C8; - Hatena Developer Blog</a></li> </ul></li> <li>Goサブ会 <ul> <li>サブ会に関する参考:<a href="https://blog.stenyan.jp/entry/2023/12/05/001508">&#x793E;&#x5185;&#x3067;&#x30AA;&#x30FC;&#x30CA;&#x30FC;&#x3068;&#x3057;&#x3066;&#x904B;&#x55B6;&#x3057;&#x3066;&#x3044;&#x308B;&#x30C1;&#x30FC;&#x30E0;&#x6A2A;&#x65AD;&#x306E;&#x300C;Go&#x30B5;&#x30D6;&#x4F1A;&#x300D;&#x306B;&#x3064;&#x3044;&#x3066;&#x767B;&#x58C7;&#x3057;&#x305F; #kyotogo - stefafafan &#x306E; fa &#x306F;3&#x3064;&#x3067;&#x3059;</a></li> </ul></li> <li>スクラムマスター業</li> <li>技術のガバナンスを効かせるむずかしさ</li> </ul> </blockquote> <div class="section"> <h4 id="ハッシュタグは-byhatena-です">ハッシュタグは #byhatena です!</h4> <p>Backyard Hatena の感想・コメントは <a href="https://twitter.com/search?q=%23byhatena">#byhatena</a> ハッシュタグをつけてツイートいただけると嬉しいです!</p> </div> <div class="section"> <h4 id="収録後記">収録後記</h4> <p>コミュニティイベント、続けていきたいね!(motemen)</p><p>Backyard Hatena を聞いて、はてなで働くことに興味を持たれたら、ぜひお話する機会を持ちましょう。</p><p><p style="text-align: center; margin: 2em"><br /> <a href="https://open.talentio.com/r/1/c/hatena/pages/51631/apply " class="btn btn-large btn-blue" target="_blank">カジュアル面談のお申込みはこちら</a><br /> </p></p><p>あわせて、こちらの採用サイトもご覧ください。</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatenacorp.jp%2Frecruit%2Fengineer" title="エンジニア採用 - 採用情報 - 株式会社はてな" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><a href="https://hatenacorp.jp/recruit/engineer">&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p> </div> hatenatech 開発者体験を向上させていく活動をやっていきたい | はてなで働く mangano-ito にアンケート [#27] hatenablog://entry/6801883189081458574 2024-03-01T09:30:00+09:00 2024-03-08T13:51:30+09:00 はてなで働くエンジニアにアンケートシリーズ第27回は、マンガアプリチームのAndroidアプリエンジニア、id:mangano-itoです。アプリ開発の進め方、シニアエンジニアとしての働き方などについて聞きました。 <p><strong>はてなで働くエンジニアにアンケート</strong>シリーズ第27回は、マンガアプリチームのAndroidアプリエンジニア、<a href="http://blog.hatena.ne.jp/mangano-ito/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mangano-ito/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mangano-ito</a>に話を聞きました。</p> <ul class="table-of-contents"> <li><a href="#技術志向でエンジニアドリブンな会社に行きたかった">技術志向でエンジニアドリブンな会社に行きたかった</a></li> <li><a href="#バランスが崩れた状態を早期に解消できるようブルドーザー的な進め方を">バランスが崩れた状態を早期に解消できるようブルドーザー的な進め方を</a></li> <li><a href="#開発を進めやすく整地する余地はまだある">開発を進めやすく整地する余地はまだある</a></li> <li><a href="#オープンで多様性を尊重し協力して試行錯誤していく土壌">オープンで多様性を尊重し、協力して試行錯誤していく土壌</a></li> </ul> <h2 id="技術志向でエンジニアドリブンな会社に行きたかった">技術志向でエンジニアドリブンな会社に行きたかった</h2> <p><strong>── Q1. はてなidとその由来を教えてください</strong></p> <p><a href="http://blog.hatena.ne.jp/mangano-ito/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mangano-ito/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mangano-ito</a> です。ito(伊藤)は本名で、mangano(マンガーノ)はマンガが好きだからです。</p> <p>「(カタカナ)+伊藤」のような名前に憧れていて、名前を考える際に人名一覧のページを眺めていたらイタリア人の名前にあったので、よさそうなのでつけました。マンガサービスに関わるようになったのは完全に偶然です。</p> <p><strong>── Q2. いつどんなきっかけで入社されましたか?</strong></p> <p>前職で働いていた時に、技術に特化して専門性を高めていきたいと思ったのがきっかけです。その理由から、技術志向でエンジニアドリブンな会社に行きたかったので、はてなのことは転職活動の初期に思い浮かんでいました。</p> <p>表立って会社の名前が出ていないサービスの開発にはてなが関わっていることも、エンジニア同士の会話や他社サービスでのインタビュー記事で知っていたので、BtoCだけでなくBtoBtoC的な仕事もあるのは自分にとって興味深かったです。</p> <p>募集要項を見てマンガサービスがあるということも知ったので、自分の趣味の部分にも関わりがあり、妙な言い方ですが一石二鳥ということで興味を持って、はてなに入りたいと思いました。</p> <p>最終的には、そういったもろもろの話と面接の雰囲気からの直感で入社しました。一番最初に面接を受けた会社でしたが、選考の流れがスムーズだったのが印象的でした。</p> <h2 id="バランスが崩れた状態を早期に解消できるようブルドーザー的な進め方を">バランスが崩れた状態を早期に解消できるようブルドーザー的な進め方を</h2> <p><strong>── Q3. 現在の仕事を教えてください</strong></p> <p>マンガアプリチームでAndroidアプリエンジニアとして、スマートフォン向けのマンガアプリの開発に携わっています。</p> <p>専ら新たな機能の開発が業務です。流れとしてはキックオフで企画・デザイナー・APIを開発するサーバーサイドエンジニア陣と要件ややるべきことを確認し、後は定例で会を設けて、開発の進捗や問題の相談をしていくことが多いです。</p> <p>デザインの実現性やコードで表現するために知るべきことの会話もエンジニアがやるべきことです。Figmaを使ってデザイナーに作成してもらった後、実装に落とし込む上で難しいポイントを相談・調整して実現していくことも必要です。</p> <p>また、iOS側のアプリエンジニアやサーバーサイドのエンジニアと適宜会話を交わし、それぞれのプラットフォームでの実装上の差異や合わせておくべきポイントをすり合わせることも行っています。</p> <p><figure class="figure-image figure-image-fotolife" title="id:mangano-itoのデスク周り"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240301/20240301093002.jpg" alt="id:mangano-ito&#x306E;&#x30C7;&#x30B9;&#x30AF;&#x5468;&#x308A;" width="2000" height="1500" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/mangano-ito/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mangano-ito/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mangano-ito</a>のデスク周り</figcaption></figure></p> <p><strong>── Q. チーム内の立ち位置を教えてください</strong></p> <p>取り立てて決まった役割はないですが、良くも悪くもブルドーザー的にタスクを前に進めることをよくしているかなと思います。停滞した状態やバランスが崩れた状態は早期に解消できるようにしています。置いてある作業をガッとやったり、知らないことも試しにやってみるなどはよくやっているかもしれません。</p> <p>また、振る舞いとしては、前はサーバーサイドのチームにいたのでその視点でレビューや会話を行ったりすることもありますし、メンターとしての帽子をかぶってメンティーに接することもあります。分野によらず、自分が求められていることに応じていきたいと考えています。</p> <p><strong>── Q. 1日の仕事の流れを教えてください</strong></p> <p>朝11時あたりに業務を開始して、自分で1日に課したノルマを満足するまで仕事をするというのが1日の流れです。</p> <p>まず、届いたコードレビュー依頼の中で取り組みやすいものや、Asana、Slackの通知の確認・返信から始めています。その後は基本的には今日やるぞと用意しておいたタスクに手をつけます。</p> <p>お昼は日例の昼会があるなど定例的な会があるのでそれに参加します。会議やコミュニケーション、差し込みがあれば自分の仕事より優先するようにしています。ほかにもメンターとして1on1といったイベントも隔週で入るのでそちらも大事です。</p> <p>退勤前にはレビュー依頼されたPull Requestを見ることにしています。また、「明日へのつくりおき」のような形で、自分が次の仕事を思い出して開始しやすいように仕込みをしてから終えることを心がけています。</p> <h2 id="開発を進めやすく整地する余地はまだある">開発を進めやすく整地する余地はまだある</h2> <p><strong>── Q. 最近うまくいったことは何ですか?</strong></p> <p>強いて言えばシニアエンジニアという役割を拝命し、メンティーとの会話を通して改めてやるべきことに自覚的になったことです。自分の中で振る舞い方や考え方を更新したことは大きな収穫でした。まだまだ足りていない部分を知れたことは大きいと感じます。</p> <p>また、業務が円滑に進むことが一番大事だと思っていますが、状況によらずアウトプットが安定できるようにコードレビューのサポートを意識して活動できたこともうまくいったことです。Findy Team+でAndroidのコードレビューがうまく回っているかについて指標をウォッチして、自分が文脈を知っているものや、負荷が大きいメンバーの代わりに行ったりするだけの単純な力技ではありましたが、メンバーの状況によらず安定性を維持できていたと思います。コード面だけでなく期待される要件を満たすかの確認も必要なので、レビューから得られる学習機会と負荷分散のバランスを大事だと感じています。</p> <p>最近の個人的な活動でいうと、チームにSlackからアプリのBeta版のデプロイをするSlack Workflowがあるのですが、そこに手を入れてGitHub Actionsにも対応するようにしたのが個人的には想像通りにうまくいったことでした。Google Apps Scriptを使っていて、GitHubのAPIを叩いてビルドを走らせるものです。久しぶりにKotlin以外を触って気分転換にもなりました。こういう小さなことをうまくやるのが好みです。</p> <p><strong>── Q. 最近うまくいっていないと感じることは何ですか?</strong></p> <p>とてもいろいろありますが、個人的には新しい知識の習得や挑戦がおろそかになっていることです。幅広い知識を獲得して実践していくのが目標ですが、貯金を食い潰してしまっている感覚があるので、インプットもアウトプットも頑張っていきたいなという感覚があります。</p> <p>チームの中でいうと、情報や仕組み・コードを整理して誰にとっても開発を進めやすく、かつ変更しやすいように整地することについては、まだ頑張れる余地があると感じます。開発をどんどん進めていくフェーズもあれば整えていくフェーズもあると思うので、開発者体験を向上させていく活動をやっていきたいです。</p> <h2 id="オープンで多様性を尊重し協力して試行錯誤していく土壌">オープンで多様性を尊重し、協力して試行錯誤していく土壌</h2> <p><strong>── Q. 普段大切にしていることは何ですか?</strong></p> <p>自分に求められることを考えて確実に進めていくことです。いろんな得意なことがある人がいる中で、全体として成果を出すためには、自分で場面に応じてどう振る舞うかを変化させていく必要があると考えています。守備範囲も広げていくことも大事だなと思います。</p> <p>考え方で大事にしているのは直感・面白さです。第一に感覚があって、それを理由付けして行動することが多いです。感覚を大事にするとやり方の幅が出たり無理なくうまくいったりすることが多いと感じています。理屈は後から見出して目的につなげていくのが好みです。</p> <p><strong>── Q. はてなはどんな会社ですか?</strong></p> <p>技術に対して皆が真摯であるなど、いろいろ言えることはありますが、僕が一番思うのはオープンで多様性を尊重していて、トップダウンでなく協力して試行錯誤していく土壌がある会社だということです。</p> <p>知識や経験が不足している中で挑戦していくような難しく緊張する局面があっても、周囲のサポートに助けられたことで不安にならずにやり遂げられたことが数多くあります。自分の中で一番継承していきたい文化だなと感じます。</p> <p>また、働き方という面においても、エンジニアでない人でも技術に対して理解があり、寛大かつ自由にさせていただいていることがあるのでその点にも感謝しています。フレキシブルワークスタイルという働き方を見てもはてならしさが表れていると思います。</p> <hr> <p>はてなのスマートフォンアプリ開発は挑戦の連続です。誰にとっても身近なスマートフォンですが、開発環境も利用者にとっての位置付けも日々変容しています。より良いアプリの提供を目指し、今ある技術だけでなく、これから先の技術に積極的な仲間を募集しています。ご連絡をお待ちしております!</p> <p>▼ <a href="https://hatenacorp.jp/recruit/career/sp-application-engineer">iOS&#x3001;Android&#x30A2;&#x30D7;&#x30EA;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x8077; &#x8EE2;&#x8077;&#x30FB;&#x4E2D;&#x9014;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a><br> ▼ <a href="https://hatenacorp.jp/recruit/fresh/sp-application-engineer">iOS&#x3001;Android&#x30A2;&#x30D7;&#x30EA;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x8077;&#x306E;&#x65B0;&#x5352;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p> <p><a href="https://hatenacorp.jp/recruit/career/sp-application-engineer" target="_blank" border="0" width="100%"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20201224/20201224090955.png" alt="はてなでは、今の技術・この先の技術に積極的な仲間を募集しています" title="はてなでは、今の技術・この先の技術に積極的な仲間を募集しています"></p> hatenatech はてなにおけるEKSの運用と自動化 (2024年版) hatenablog://entry/6801883189086534492 2024-02-29T11:27:29+09:00 2024-02-29T17:24:19+09:00 サービスプラットフォームチームで SRE を担当している id:masayosu です。 先月からですが Hatena Developer Blog にて SRE 連載を始めました。先月の記事は はてなブログの DB を RDS for MySQL 8.0 にアップグレードした話 - Hatena Developer Blog です。 毎月はてなの SRE が交代でブログ記事を書きますのでお楽しみに。 この記事は2024年2月の SRE 連載の記事です。 はてなの EKS 利用について 私が所属するサービスプラットフォームチームでは EKS の運用を続けており、先日 Kubernetes 1.… <p>サービスプラットフォームチームで SRE を担当している <a href="http://blog.hatena.ne.jp/masayosu/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/masayosu/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:masayosu</a> です。</p> <p>先月からですが Hatena Developer Blog にて SRE 連載を始めました。先月の記事は <a href="https://developer.hatenastaff.com/entry/2024/01/19/164530#%E3%81%B5%E3%82%8A%E3%81%8B%E3%81%88%E3%82%8A%E6%84%9F%E6%83%B3">&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;&#x306E; DB &#x3092; RDS for MySQL 8.0 &#x306B;&#x30A2;&#x30C3;&#x30D7;&#x30B0;&#x30EC;&#x30FC;&#x30C9;&#x3057;&#x305F;&#x8A71; - Hatena Developer Blog</a> です。</p> <p>毎月はてなの SRE が交代でブログ記事を書きますのでお楽しみに。 この記事は2024年2月の SRE 連載の記事です。</p> <h2 id="はてなの-EKS-利用について">はてなの EKS 利用について</h2> <p>私が所属するサービスプラットフォームチームでは EKS の運用を続けており、先日 Kubernetes 1.23 から 1.28 へのアップグレードを完了しました。 私のチームは少人数で形成されているのですが、担当しているサービスは大小様々あり EKS クラスター上では数十個のサービスが稼働しています。</p> <p>少人数で Kubernetes の運用ということで大変なイメージを持つかもしれませんが、Kubernetes のエコシステムに乗っかることで少人数で複数のサービス開発を効率よく回せているといった実情もあります。</p> <p>クラスター運用でのポイントというとクラスターアップグレードが挙げられます。これまで私は今のチームで4度のアップグレードを経験してきました。</p> <p>アップグレード方法ですが、新バージョンのクラスターを別に構築してサービスを移行する Blue/Green アップグレードという方法を選択しています。その理由としてアップグレードによる問題が生じた場合にすぐに切り戻しができるようするためです。</p> <p>冒頭にも書いた通り少人数のチームのため年 3 回ある Kubernetes のアップグレード全てに追いつくのはリソース的に難しいと考えています。そのためどうしてもバージョンを飛ばしてアップグレードすることが多く影響範囲が大きくなってしまうため Blue/Green アップグレードを選択することでより安全にアップグレードを実施しています。</p> <p>Blue/Green アップグレードの方法もいろいろと工夫している点があるので現状を紹介します。</p> <h2 id="新クラスターへのデプロイ">新クラスターへのデプロイ</h2> <p>Blue/Green アップグレードのポイントとしてまず新クラスターへのアプリケーションのデプロイについて説明します。</p> <p>EKS クラスターへのデプロイは ArgoCD を利用しています。 ArgoCD ではサービスのデプロイに関する設定を Application というリソースで保持しています。 ArgoCD も Kubernetes 上で動作するサービスなのでこれらの Application リソースについても manifest で管理することができます。manifest で管理できるとはいえ、Blue/Green のクラスター 2 つの設定を管理するのは面倒です。</p> <p>これを解決するために私たちは Applicationset を利用しています。 Applicationset は Application リソースをまとめて管理できるリソースです。 Applicationset の Cluster Generator を利用することでデプロイ対象の Blue/Green クラスターへのデプロイ設定をまとめて管理することができます。</p> <p>以下が Applicationset のサンプルです。</p> <pre class="code lang-yaml" data-lang="yaml" data-unlink><span class="synIdentifier">code</span><span class="synSpecial">:</span> applicationset <span class="synIdentifier">apiVersion</span><span class="synSpecial">:</span> argoproj.io/v1alpha1 <span class="synIdentifier">kind</span><span class="synSpecial">:</span> ApplicationSet <span class="synIdentifier">metadata</span><span class="synSpecial">:</span> <span class="synIdentifier">name</span><span class="synSpecial">:</span> sample-application <span class="synIdentifier">namespace</span><span class="synSpecial">:</span> argocd <span class="synIdentifier">spec</span><span class="synSpecial">:</span> <span class="synIdentifier">generators</span><span class="synSpecial">:</span> <span class="synStatement">- </span><span class="synIdentifier">clusters</span><span class="synSpecial">:</span> <span class="synIdentifier">selector</span><span class="synSpecial">:</span> <span class="synIdentifier">matchLabels</span><span class="synSpecial">:</span> <span class="synIdentifier">eks</span><span class="synSpecial">:</span> <span class="synConstant">&quot;true&quot;</span> <span class="synIdentifier">version</span><span class="synSpecial">:</span> <span class="synConstant">&quot;1.23&quot;</span> <span class="synIdentifier">values</span><span class="synSpecial">:</span> <span class="synIdentifier">branch</span><span class="synSpecial">:</span> master <span class="synStatement">- </span><span class="synIdentifier">clusters</span><span class="synSpecial">:</span> <span class="synIdentifier">selector</span><span class="synSpecial">:</span> <span class="synIdentifier">matchLabels</span><span class="synSpecial">:</span> <span class="synIdentifier">eks</span><span class="synSpecial">:</span> <span class="synConstant">&quot;true&quot;</span> <span class="synIdentifier">version</span><span class="synSpecial">:</span> <span class="synConstant">&quot;1.28&quot;</span> <span class="synIdentifier">values</span><span class="synSpecial">:</span> <span class="synIdentifier">branch</span><span class="synSpecial">:</span> master <span class="synIdentifier">ignoreApplicationDifferences</span><span class="synSpecial">:</span> <span class="synStatement">- </span><span class="synIdentifier">jsonPointers</span><span class="synSpecial">:</span> <span class="synStatement">- </span>/spec/syncPolicy <span class="synIdentifier">template</span><span class="synSpecial">:</span> <span class="synIdentifier">metadata</span><span class="synSpecial">:</span> <span class="synIdentifier">name</span><span class="synSpecial">:</span> sample-application-{{name}} <span class="synIdentifier">spec</span><span class="synSpecial">:</span> <span class="synIdentifier">destination</span><span class="synSpecial">:</span> <span class="synIdentifier">namespace</span><span class="synSpecial">:</span> sample-application <span class="synIdentifier">server</span><span class="synSpecial">:</span> <span class="synConstant">'{{server}}'</span> <span class="synIdentifier">project</span><span class="synSpecial">:</span> spf-eks <span class="synIdentifier">source</span><span class="synSpecial">:</span> <span class="synIdentifier">path</span><span class="synSpecial">:</span> manifest/project/sample-application/production-{{name}} <span class="synIdentifier">repoURL</span><span class="synSpecial">:</span> https://github.com/hatena/spf-eks <span class="synIdentifier">targetRevision</span><span class="synSpecial">:</span> <span class="synConstant">'{{ values.branch }}'</span> </pre> <p>上記のポイントとしては以下の3点です。</p> <ul> <li>clusters の指定については全 Applicationset の設定を書き換えるのは面倒なので kustomize を利用することで1 ファイルで管理できるようにしました</li> <li>クラスターアップグレードの際には専用のブランチを切って動作確認をする場合が多いのでクラスター毎にデプロイするブランチを切り替えれるようにしました</li> <li>syncPolicy は基本 AutoSync を採用しているのですが新クラスターにいきなりデプロイされるのはバッチの2重問題などもあり避けたいと考えています。そのため初期状態では AutoSync は利用せず切り替えのタイミングで手動で AutoSync に変更する運用をしています。手動で変更したものが設定で上書きされないように<code>ignoreApplicationDifferences</code>を利用しています</li> </ul> <p>EKSでは数十個のサービスが稼働しているので、Applicationset を利用することで設定管理の作業コストを削減することができました。</p> <h2 id="切り替え作業">切り替え作業</h2> <p>次は切り替え作業についてです。</p> <p>Webアプリケーションの切り替えについてですが TargetGroupBinding という機能と ALB の WeightedRouting を利用してます。</p> <p>もともと Kubernetes の Ingress リソースから ALB を作成していましたがその方法だと DNS の切り替えが発生します。それでも問題ないのですがクライアントにキャッシュが残っている場合などに切り替えを待つ必要がありました。</p> <p>また一部の重要なサービスについては ALB の上に Global Accelerator を配置してエンドポイントウェイトの機能を利用して切り替えを実施していました。</p> <p>ALB に WeightedRouting の機能が追加されたことで Global Accelerator を利用する理由も無くなり TargetGroupBinding を利用する方針に切り替えました。これらの ALB と TargetGroup はクラスターとは別の IaC ( CDK )で管理しています。</p> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240229/20240229115601.png" width="759" height="441" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>TargetGroup の weight は以下のようなコードで管理しています。</p> <pre class="code lang-typescript" data-lang="typescript" data-unlink> <span class="synType">const</span> tgSettings: <span class="synIdentifier">{</span> id: <span class="synType">string</span><span class="synStatement">;</span> name: <span class="synType">string</span><span class="synStatement">;</span> weight: <span class="synType">number</span> <span class="synIdentifier">}[]</span> <span class="synStatement">=</span> <span class="synIdentifier">[</span> <span class="synIdentifier">{</span> id: <span class="synConstant">'BlueTargetGroup'</span><span class="synStatement">,</span> name: <span class="synConstant">`</span><span class="synSpecial">${</span>prefix<span class="synSpecial">}</span><span class="synConstant">-blue`</span><span class="synStatement">,</span> weight: <span class="synConstant">100</span> <span class="synIdentifier">}</span><span class="synStatement">,</span> <span class="synIdentifier">{</span> id: <span class="synConstant">'GreenTargetGroup'</span><span class="synStatement">,</span> name: <span class="synConstant">`</span><span class="synSpecial">${</span>prefix<span class="synSpecial">}</span><span class="synConstant">-green`</span><span class="synStatement">,</span> weight: <span class="synConstant">0</span> <span class="synIdentifier">}</span><span class="synStatement">,</span> <span class="synIdentifier">]</span> </pre> <p>実際に切り替えをする際は上記の weight を書き換え cdk deploy を実施するような流れとなります。weight の値を少しずつ増やすことでリクエスト先を除々に切り替えていくことも可能です。</p> <p>これで Global Accelerator も不要となり構成がシンプルになり、ALB を利用するサービスを安全に切り替えができるようになりました。</p> <h2 id="128へのアップグレード">1.28へのアップグレード</h2> <p>この度、Kubernetes の 1.23 から 1.28 にアップグレードする際にこれまで紹介してきた Applicationset や CDK での切り替えを始めて実施しましたが仕組み化されたことでより安全に効率的にアップグレード作業を実施することができました。</p> <p>その他、1.28 へのアップグレードの際に対応した変更について紹介します。</p> <p>EKS は Kubernetes 1.24 以降で Dockershim のサポートを終了しています。それに伴いコンテナランタイムも dockerd から containerd に変更となっています。</p> <p>containerd になったことで Node の <code>/var/log/containers</code> 配下に出力されるログのフォーマットが変更されました。私たちの EKS は daemonset で ​Fluent Bit を利用してログを集約しているためこのフォーマット変更に対応する必要がありました。それぞれのログフォーマットは以下のようになっています。</p> <p>・dockerd</p> <pre class="code" data-lang="" data-unlink>{&#34;log&#34;:&#34;{\&#34;level\&#34;:\&#34;info\&#34;,\&#34;ts\&#34;:\&#34;2024-01-05T13:11:25.922Z\&#34;,\&#34;caller\&#34;:\&#34;XXXX/main.go:53\&#34;,\&#34;msg\&#34;:\&#34;starting gRPC server (port = 50051)\&#34;}\n&#34;,&#34;stream&#34;:&#34;stdout&#34;,&#34;time&#34;:&#34;2024-01-05T13:11:25.923191709Z&#34;}</pre> <p>・containerd</p> <pre class="code" data-lang="" data-unlink>024-02-02T00:32:57.908092235Z stderr F {&#34;level&#34;:&#34;info&#34;,&#34;ts&#34;:1706833977.9079013,&#34;caller&#34;:&#34;XXXX/main.go:53&#34;,&#34;msg&#34;:&#34;starting gRPC server (port = 50051)&#34;}</pre> <p>このフォーマット変更には ​Fluent Bit の設定ファイルのみで対応できました。まずは以下のように新しいログフォーマットに対応した Parser を作成します。こちらの Parser の内容は公式のドキュメントにも記載されています。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.fluentbit.io%2Fmanual%2Finstallation%2Fkubernetes%23container-runtime-interface-cri-parser" title="Kubernetes - Fluent Bit: Official Manual" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://docs.fluentbit.io/manual/installation/kubernetes#container-runtime-interface-cri-parser">docs.fluentbit.io</a></cite></p> <pre class="code" data-lang="" data-unlink> [PARSER] Name cri Format regex Regex ^(?&lt;time&gt;[^ ]+) (?&lt;stream&gt;stdout|stderr) (?&lt;logtag&gt;[^ ]*) (?&lt;log&gt;.*)$ Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L%z</pre> <p>あとは上記の Parser を利用するように <code>INPUT</code> セクションの Parser を書き換えます。</p> <pre class="code" data-lang="" data-unlink> [INPUT] Name tail Tag kube.* Path /var/log/containers/*.log Parser cri DB /var/log/flb_kube.db Key log Mem_Buf_Limit 5MB Skip_Long_Lines On Refresh_Interval 10</pre> <p>以上で containerd のログフォーマットに対応できました。</p> <h2 id="まとめ">まとめ</h2> <p>EKS クラスターのバージョンアップの取り組みについて紹介しました。</p> <p>ArgoCD でデプロイの設定を中央集権的に管理できることは Kubernetes のメリットの一つで、Applicationset を利用してコード管理することでより効率よく自動的に設定を管理できるようになりました。</p> <p>TargetGroupBinding を利用して AWS と Kubernetes のリソースを分離して管理することで新クラスターへの切り替えを無停止で効率よく切り替えを行えるようになりました。</p> <p>アップグレード作業は年に 1-2 度という低頻度な作業ですが、面倒だし作業負担がかかる(精神的にも)作業です。この作業を定型化し、より安全な方法にすることでクラスターの状態を健全に保っていきたいと考えています。</p> <p>はてなでは今後も EKS 利用の改善を行っていきます。今後もよいプラクティスがあれば公開していこうと思います。</p> masayosu Gunosyで活躍中の id:skozawa を訪問 | はてな卒業生訪問企画 [#8] hatenablog://entry/6801883189084462271 2024-02-27T11:00:00+09:00 2024-02-27T11:41:43+09:00 いま会いたい元はてなスタッフを訪問してお話を伺っていく連載「卒業生訪問インタビュー」。 id:motemenが担当する第8回のゲストは、株式会社Gunosy のテクノロジー本部データサイエンス部で部長を務める id:skozawaさんこと、小澤俊介さんです。 <p>こんにちは、CTOの <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> です。</p><p>Hatena Developer Blogの連載企画「<a href="https://developer.hatenastaff.com/archive/category/%E3%81%AF%E3%81%A6%E3%81%AA%E5%8D%92%E6%A5%AD%E7%94%9F%E8%A8%AA%E5%95%8F%E4%BC%81%E7%94%BB">&#x5352;&#x696D;&#x751F;&#x8A2A;&#x554F;&#x30A4;&#x30F3;&#x30BF;&#x30D3;&#x30E5;&#x30FC;</a>」では、創業からはてなの開発に関わってきた取締役の <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>、CTOの <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>、エンジニアリングマネージャーの <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>が、いま会いたい元はてなスタッフを訪問してお話を伺っていきます。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>が担当する第8回のゲストは、<a href="https://gunosy.co.jp/">&#x682A;&#x5F0F;&#x4F1A;&#x793E;Gunosy</a>のテクノロジー本部データサイエンス部で部長を務める <a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>さんこと、小澤俊介さんです。</p><p>2012年にはてなに新卒として入社後、「はてなブックマーク」「はてなブログ」などのプロダクトの開発を担当されてきました。2017年に株式会社Gunosyに転職して、「グノシー」「ニュースパス」「LUCRA」などの記事配信アルゴリズム開発に携わります。</p><p>2022年に「Gunosy Tech Lab(グノシーテックラボ)」のチームマネージャー、副室長となり、現在はデータサイエンス部の部長を務める<a href="http://blog.hatena.ne.jp/skozawa/">id:skozawa</a>さんに、現在のGunosyでのご活躍や、マネジメント、はてなを離れてみての印象など、お話を伺いました。</p> <blockquote> <p>小澤俊介さん(<a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>)<br /> 2012年4月-2017年9月 はてな在籍<br /> X: <a href="https://twitter.com/5kozawa">https://twitter.com/5kozawa</a><br /> Blog: <a href="https://skozawa.hatenablog.com/">https://skozawa.hatenablog.com/</a><br /> GitHub Pages: <a href="https://skozawa.github.io/">https://skozawa.github.io/</a></p> </blockquote> <div class="section"> <h4 id="Gunosyのニュース配信アプリニュースパスLUCRAなどでアルゴリズム開発に携わる">Gunosyのニュース配信アプリ「ニュースパス」「LUCRA」などでアルゴリズム開発に携わる</h4> <p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>(以下「<a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a>」) 今回のゲストは、株式会社Gunosyのskozawaさんです。skozawaさんと僕は同じ84年生まれなんですよね。はてな時代は他の84年生まれのエンジニアたちも含めて頻繁に飲みに行ったりしていました。今日はひさしぶりにお会いできてうれしいです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>(以下「<a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a>」)84年生まれのSlackチャンネルとかもありましたよね。懐かしい。今日はよろしくお願いします。</p> <figure class="figure-image figure-image-fotolife" title="id:skozawa:detail こと、株式会社Gunosy 小澤俊介さん"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240112/20240112144948.jpg" width="1500" height="1000" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a> こと、株式会社Gunosy 小澤俊介さん</figcaption></figure><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> skozawaさんが2017年にはてなを退職して、Gunosyさんに転職してから6年くらいですね。「Gunosiru」の記事も拝見してきましたが、改めてご入社からこれまで、Gunosyさんでどういったことをされて来たのかお伺いしたいです。</p> <blockquote> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgunosiru.gunosy.co.jp%2F2023%2F07%2F26%2Fkozawa_interview%2F" title="自分の領域を決めつけることなく、サイエンスで機会をつくり続けるトップランナー。 -" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://gunosiru.gunosy.co.jp/2023/07/26/kozawa_interview/">gunosiru.gunosy.co.jp</a></cite></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 記事読んでいただいたんですね。ありがとうございます。</p><p>転職してから1か月くらいは、グノシー事業部でグノシーアプリの記事配信アルゴリズムの改善をしました。慣れてきたタイミングで、ニュース配信アプリ「ニュースパス」でパーソナライズのプロジェクトに参加することになり、半年くらいパーソナライズの仕組みを作っていた感じですね。</p><p>そのあとは「LUCRA」というトレンド情報アプリの開発プロジェクトチームに入って、機械学習(ML)のパーソナライズシステム開発やアルゴリズム改善、データ分析、サーバーサイド開発などに携わっていました。2023年2月にサービスは終了してるんですけど、当時は新規開発チームで人が少なかったので、基本的には何でもやっていました。</p><p>2019年2月に組織体制が変わり、「Gunosy Tech Lab(グノシーテックラボ)」というデータの利活用を促進する組織が新設され、その中の機械学習システムを開発するチームのマネージャーになりました。その後、2~3年くらいマネージャーを務め、副室長になり、現在はデータサイエンス部の部長をしています<br />  </p> <blockquote> <ul> <li><a href="https://gunosy.co.jp/news/161">Gunosy&#x3001;&#x30C7;&#x30FC;&#x30BF;&#x5229;&#x6D3B;&#x7528;&#x3092;&#x4FC3;&#x9032;&#x3057;&#x3001;&#x60C5;&#x5831;&#x306E;&#x63A8;&#x85A6;&#x3092;&#x52A0;&#x901F;&#x3055;&#x305B;&#x308B;&#x300C;Gunosy Tech Lab&#x300D;&#x3092;&#x8A2D;&#x7ACB;&#xFF5C;&#x682A;&#x5F0F;&#x4F1A;&#x793E;Gunosy&#xFF08;&#x30B0;&#x30CE;&#x30B7;&#x30FC;&#xFF09;&#xFF5C;&#x60C5;&#x5831;&#x3092;&#x4E16;&#x754C;&#x4E2D;&#x306E;&#x4EBA;&#x306B;&#x6700;&#x9069;&#x306B;&#x5C4A;&#x3051;&#x308B;</a></li> <li><a href="https://seleck.cc/1388">&#x300C;&#x672A;&#x77E5;&#x306E;&#x9818;&#x57DF;&#x300D;&#x3092;&#x4EEE;&#x8AAC;&#x691C;&#x8A3C;&#x3057;&#x3001;&#x7D44;&#x7E54;&#x306E;&#x6280;&#x8853;&#x529B;&#x3092;&#x9AD8;&#x3081;&#x308B;&#x3002;Gunosy Tech Lab&#x3092;&#x65B0;&#x8A2D;&#x3057;&#x305F;&#x7406;&#x7531; | SELECK [&#x30BB;&#x30EC;&#x30C3;&#x30AF;]</a></li> </ul> </blockquote> <p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> めちゃくちゃ目まぐるしく役割や部署が変わっていますね。skozawaさんが部長を務めるデータサイエンス部の、事業やプロダクトの関わりはどのような感じなんですか。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> プロダクトチームには、企画とサーバーサイド、クライアントエンジニアがいるんですが、データサイエンス部はプロダクトチームには直接紐づかない横断部署となっています。データ分析や企画に関しても開発者や企画、編集の担当者と話し合いながら進めています。</p><p>企画側は、アルゴリズム面に関しては何をどうやっていいかわからないじゃないですか。だから、企画面の改善も含めて、基本的には全部提案していますね。</p> <figure class="figure-image figure-image-fotolife" title="オンライン取材やはてな京都オフィスでの取材が続いた結果、<br>訪問企画8回目にして初のオフィス訪問が叶いました"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240112/20240112143602.jpg" width="1500" height="1000" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>オンライン取材やはてな京都オフィスでの取材が続いた結果、<br>訪問企画8回目にして初のオフィス訪問が叶いました</figcaption></figure> </div> <div class="section"> <h4 id="エンジニアマネジメントのミッション苦労って">エンジニアマネジメントのミッション、苦労って?</h4> <p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> データサイエンス部は何人くらいの部署なんですか?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 10人くらいで、全員エンジニアです。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> データに関わるエンジニアのミッションは、いかに良いニュースを届けられるかといったところなんでしょうか。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 機械学習システムを開発する人には、広告を担当している人とニュース配信を担当している人がいるのですが、広告は広告配信アルゴリズムの開発、ニュース配信は記事配信のアルゴリズムの開発がメインですね。BIチームでは、プロダクトの機能や施策の評価などを担当しています。サービスをリリースする際はABテストを実施し、再訪率や売上などをKPIとして定量的な評価をするとともに、定性面でもユーザーや広告主の体験改善に繋がるかを確認しています。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> マネジメントについても伺いたいです。</p><p>skozawaさんも僕も当時ははてなでエンジニアとして働いていたのに、いまはそれぞれマネージャーになっている。マネージャーとしての苦労や悩みについても話せるといいなと思って今日はやってきました。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 僕は部長なのでその下のマネージャー陣をマネジメントするのがメインですね。これはGunosyだけじゃないと思いますけど、マネージャー向けのオンボーディングって難しいじゃないですか。だから、部長になったときは、部長って何する人なのか、わかんなかったんですよね。ようやく何となくわかってきましたが。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> 本当にそうですね。僕もCTOになった時に、最初は新境地で割とずっと悩んでました。今も完全に分かったとは思ってないですけど。</p><p>自分が開発チームのマネージャーをやっていたときも、マネージャーとはなんぞやみたいなのが全然わかってなかったし。はてなの場合、マネージャーのありかたが、チームによってけっこう違うというのもあるかもしれません。</p><p>マネージャーの研修でディレクターの育成をするのは、誰かが責任持つとか、こういうプログラムを作ってやればうまくいきますみたいなものはないから、個別でやるしかないですよね。</p><p>一時期はてなでサービス開発チームのマネージャーをしていたことがありましたが、そのときも自分の仕事がなんなのか、というのがはっきり分かっていなかったように思います。今自分が職種組織として見ているエンジニアは、人数が多いぶん育成の話もしやすいんですが、マネージャーは数が少なくて、状況もバラバラだから、個別の話になりがちなんですよね。</p><p>部長としてマネージャー陣をマネジメントされているとのことですが、それも難しいですよね。何か工夫や取り組みなどされていることがあれば、ぜひ参考にしたいです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> まだ仕掛中ですけど、マネージャーのバリューズというのをちゃんと作ろうとしています。例えば、「マネージャーは盾になりましょう」みたいな話がありますが、全部防いでいくのがいいことなのか。人によって価値観が分かれちゃうと思うんですけど、本当はメンバーがしなくてはいけないこともあるので、それができるように後輩育成をしようという試みですね。役割定義であったり、マネージャーとしてのスタンスなどを考えています。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> マネージャーの仕事の仕方って個性が出るし、それが大切だとも思っていますが、組織としての行動原理を定めておくのはすごく良さそうな動きですね。データサイエンス部内の取り組みなんですか?それとも会社全体?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 今はテクノロジー本部でやっていますが、もともとコーポレートの部門の人たちが一部作っていたのでそれを参考にしました。</p> </div> <div class="section"> <h4 id="施策での自由度事業への関りなどがやりがいにつながる">施策での自由度、事業への関りなどがやりがいにつながる</h4> <p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> skozawaさんがGunosyさんの事業やサービスが自分に合っている、いいところだと感じているところはどんなところですか?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 基本的には、ニュースの配信アルゴリズムは面白い領域だなと思っています。今はデータ分析、データを活用しているところもすごく面白くていいなという感じですね。</p> <blockquote> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdata.gunosy.io%2F" title="Gunosyデータ分析ブログ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://data.gunosy.io/">data.gunosy.io</a></cite></p> </blockquote> <p>大きい役割だったりチャレンジをさせてもらうのには、多少の期間は必要なのですが、はてなにいたことで信頼してもらって、仕事の幅や深さが広がっていっていることにも面白さを感じています。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> マネージャーはアルゴリズム作ったり、チューニングしたりする業務には関わっていないんじゃないかなと思うんですが、実際は関わっているんですか。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 意外とまだコード書いていますね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> そうなんですね!それはぜひ参考にしたい(笑)</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> motemenさんは書いてないんですか?</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> コードを書くことは大分減って、ほぼマネジメント業務中心ですが、最近一時的にチームに入って久々にコード書いたらめちゃくちゃ楽しくて(笑)。すぐリターンがかえってくるからわかりやすいし、そういう楽しさはありますね。</p><p>さきほどデータサイエンス部の事業への関わりについてお伺いしましたが、skozawaさんご自身の事業への関わりについてもう少し教えていただいてもいいでしょうか。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> データサイエンス部は、ユーザーの再訪率を上げて、事業構造的に売上を上げることを役割を持っている部署でもあるので、それを達成するための企画や分析や改善に関わるさまざまなことに自由度高く関わっていってる感じです。</p><p>BIチームでは経営企画と一緒に予算を作ったりもしています。KPIの作成やそれを自分たちで達成するところにも関わっていたりもしますね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> プロダクトの価値や事業の価値に直接関わっているんですね。自由度が高いというのも面白いです。</p><p>いわゆる企画職のプランナーが企画を考えることもあるし、データエンジニアのプランナーが企画から考えることもある感じなんですよね?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> そうですね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> それが素晴らしいですよね。そういう場合って、企画がコンフリクトしたりするケースがあったりするものなのでしょうか。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 施策の優先順位は売上や数字への貢献度で決まります。そこで不満になることはないですね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> そこは「数字は神よりも正しい」をモットーにしているGunosyさんらしいです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 最近では「Gunosy Way」から「Gunosy Pride」へと行動指針が変わり、「数字は神より正しい」という言葉は誤解を招きうるので、「サイエンスで機会をつくる」という表現に変更になりましたが、数字を大事にする文化は残っていると思います。</p> <blockquote> <ul> <li><a href="https://www.wantedly.com/companies/gunosy/post_articles/347946">&#x300C;Gunosy Way&#x300D;&#x304B;&#x3089;&#x300C;Gunosy Pride&#x300D;&#x3078;&#x3002;&#x793E;&#x54E1;&#x3092;&#x5DFB;&#x304D;&#x8FBC;&#x3093;&#x3067;&#x751F;&#x307E;&#x308C;&#x5909;&#x308F;&#x3063;&#x305F;&#x65B0;&#x30D0;&#x30EA;&#x30E5;&#x30FC;&#x306B;&#x8FBC;&#x3081;&#x305F;&#x601D;&#x3044;&#x3092;&#x3001;&#x30D7;&#x30ED;&#x30BB;&#x30B9;&#x3068;&#x3068;&#x3082;&#x306B;&#x304A;&#x8A71;&#x3057;&#x307E;&#x3059;&#xFF01; | Gunosy</a></li> <li><a href="https://gunosy.co.jp/news/281">&#x300C;Gunosy Way&#x300D;&#x304B;&#x3089;&#x300C;Gunosy Pride&#x300D;&#x3078; &#x30DF;&#x30C3;&#x30B7;&#x30E7;&#x30F3;&#x3092;&#x9054;&#x6210;&#x3059;&#x308B;&#x305F;&#x3081;&#x3001;&#x5168;&#x54E1;&#x3067;&#x5171;&#x6709;&#x3059;&#x308B;&#x4FA1;&#x5024;&#x89B3;&#x3068;&#x884C;&#x52D5;&#x6307;&#x91DD;&#x3092;&#x30A2;&#x30C3;&#x30D7;&#x30C7;&#x30FC;&#x30C8;&#xFF5C;&#x682A;&#x5F0F;&#x4F1A;&#x793E;Gunosy&#xFF08;&#x30B0;&#x30CE;&#x30B7;&#x30FC;&#xFF09;&#xFF5C;&#x60C5;&#x5831;&#x3092;&#x4E16;&#x754C;&#x4E2D;&#x306E;&#x4EBA;&#x306B;&#x6700;&#x9069;&#x306B;&#x5C4A;&#x3051;&#x308B;</a></li> </ul> </blockquote> </div> <div class="section"> <h4 id="Gunosyとはてな開発で重視することやカルチャーの違い">Gunosyとはてな、開発で重視することやカルチャーの違い</h4> <figure class="figure-image figure-image-fotolife" title="はてな京都オフィスでプレゼン中の id:skozawa:detailさん(2014年)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240219/20240219162759.jpg" width="2000" height="1502" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>はてな京都オフィスでプレゼン中の <a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>さん(2014年)</figcaption></figure><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> skozawaさんが感じるGunosyさんとはてなの違いみたいな話も聞いてみたいです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> はてなは最近はtoBがメインになってきているとは思うんですけど、toCを伸ばしていくためのスタンスが結構違うのかなと思っています。</p><p>Gunosyに入ってから、初めてPMF(プロダクトマーケットフィット)ということを知ったんです。PMFで、そこにフィットしたものに投資して売上を伸ばしていくという考え方やプロジェクトのやり方などが違うと感じていました。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> たしかに、はてなのtoCサービスは、面白いものを作って、それが当たったら伸ばしていくみたいなことがメインでしたよね。伸ばすために先に投資するみたいなことは、当時はあまりできていませんでした。</p><p>文化や環境、例えば社風みたいな違いはどんなところですか?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> やっぱり数字を重視するというのが、違う文化なんだという感じがしますね。はてなは、数字以上に「これはユーザーが喜ぶから作ろう」という開発の雰囲気が大きい。Gunosyでも、もちろんそういう流れで機能を作ることもあるんですけど、基本的にはKPIを達成するための機能開発が中心です。</p><p>この機能を作ったらこういうふうにユーザーが動いてくれて、KPIが達成できるんじゃないかという発想で変更するので、入口が違います。あとは他社の動きも見ていて、競合がこういう機能を作ったから、うちでも取り入れようみたいな。そういう動きも結構違うなという感じですね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> ユーザーのためにというのは、はてなのいいところではあると思うんだけど、収益を上げていくための施策や投資もより考えていきたいところです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> あと、他の卒業生もよく言っていることだと思うのですが、テキスト文化ははてなのいいところだったなと思います。大変なボリュームのドキュメントがストックされたり、日々流れてきたりするのも良かったです。</p><p>業務と関係のない、プライベートなことや、最近考えてることなども投稿される場があったのも、はてならしさですよね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> skozawaさんが居た頃は、いま以上に仕事以外の情報も多く書かれていましたから。最近ちょっと減ってきたかな。僕も書きたいと思いつつ、色々考えてしまって...(笑)</p><p>Gunosyさんでは、テキスト情報のストックには何を使ってるんですか?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> Confluenceです。個人的なことを書くかというと、そうじゃないので。はてなのあの雰囲気は懐かしいなと思います。</p> </div> <div class="section"> <h4 id="はてなでのエンジニアスキルやマネジメント経験が活きている">はてなでのエンジニアスキルやマネジメント経験が活きている</h4> <p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> skozawaさんは、はてなの在籍の5年半で「はてなブログ」、任天堂さんとの「Miiverse」、「はてなスペース」「Mackerel」「はてなブックマーク」「BrandSafe はてな」、ソニーさんとの「家電会議」、社内の広告システム、KDDIさん・ナターシャさんとの「Pinga」と、自社・共同開発含めてさまざまなサービスに関わりつつ、シニアエンジニアとしても活躍いただきました。その経験はいまどのように活かしていらっしゃいますか。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 今に活きていると思うのは、エンジニアスキルを積み重ねられたことですね。「はてなブックマーク」や「BrandSafe はてな」でのコアな経験がいまもすごく活きていて、Gunosyに入ってからもすぐに活躍できたことの土台になってたと思います。</p><p>あとはシニアエンジニア制度(メンターとしてエンジニアと1on1する制度)で、マネジメントのさわりみたいなところも少し経験させてもらったので、Gunosyに入って1年半後にマネージャーをやり始めても、全く何やっていいかわからないということはなかったです。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> あの頃はチームメンバーだけじゃなく、他のチームの人と1on1と評価をしましょうという試みもやっていましたね。今はエンジニアの組織が大きくなりすぎて、他チームの人をメンタリングするのは難しくなってきて、チームの中でメンタリングしています。</p><p>skozawaさんがいた頃は、エンジニアが50人ぐらいで、他チームが何をやっているかぎりぎりわかったからできたのかもしれません。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 他チームのエンジニアなので、細かいコンテキストまで把握してるわけではないから解決まではできないけど、コーチングに近いサポートができるぐらいの感じでしたね。細かい話を知らない相手だからこそ相談できることとかもあったのかもしれない。</p> <figure class="figure-image figure-image-fotolife" title="id:skozawa:detailさんとid:onishi:detail(2015年)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240219/20240219165058.jpg" width="2000" height="1502" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>さんと<a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>(2015年)</figcaption></figure><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> そういうのもあったかもしれませんね。今もシニアエンジニア制度を運用していて、これからマネージャーやテックリードをやっていきたい人の前段パートとして活用しています。</p><p>Gunosyさんでは、エンジニア組織のマネジメントは、どのようになっているんですか?</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> エンジニアリングマネージャー(EM)がいて、その上が部長、本部長みたいな感じになっていきます。大体がマネージャーで、リードエンジニアがあまりいないというところが、はてなと違うかもしれないですね。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> はてなでも1年くらい前にようやくエンジニアリングマネージャー職を作りました。はてなは昔からディレクターが何でもやってたじゃないですか。そうすると本業のプロダクトマネジメントが手薄になってきてしまうといった問題があったので、テックリードという役割を作りました。</p><p>ただ、エンジニアを育てる前提でタスクのアサインやケアをして、目標達成を上げることをやるのは、エンジニアのバックグラウンドがある人じゃないと難しい面があります。そこで、エンジニアリングマネージャーを増やそうと思って。育成などにも注力しています。ただ、そっちのキャリアを選択したいみたいなエンジニアが割と少ない気がしていて。育成は難しいなと悩んでるところです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> Gunosyの場合は、チームに1人はEMを置いてるので、エンジニアの次のステップとして、EMになってもらうというのが自然と受け入れられていると思います。</p><p>あと、採用の時点から、技術特化した人というよりはプロダクトの課題解決を優先し、技術は課題解決の手段だという考え方をきちんとしてくれるエンジニアを採用しているので、その影響もあるかもしれませんね。<br /> テックリード的な役割より、EMでより大きな課題解決に関われるのは良いこと、という感じだと思います。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> そうなると、エンジニアの思考や振る舞いなどにもGunosyさんとはてなで違いはありそうですよね。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> そんな気はしますね。はてなは、僕がいた頃の印象でいくと、いい意味でも悪い意味でもエンジニアは事業と距離があったと思うんです。そうなると、技術に集中しやすい半面、集中しすぎた結果、事業開発からは、若干離れていくんじゃないかなと。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> 心当たりがないわけでもないですね。自分がチーフエンジニアとして採用に関わりだしたころは、技術力以外を重視できていなかったなと思っているので。最近は技術を極めるだけではなく、プロダクト志向やチームをまとめ上げられるソフトスキルも重要だと思っています。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> Gunosyの場合、評価のグレードを上げていくためには、ソフトスキルを求める傾向はあるので、技術力があってもソフトスキルがついてないと、グレードが上がらないというケースは全然あります。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> はてなも最近はそうなっていますね。エンジニアとしての評価にも技術力だけでなく行動の観点も入れています。それは別に悪くはないと思って、今はそうしています。評価は5項目あって、1つは技術、あとはプロダクト志向やコラボレーションとしています。</p> <blockquote> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2Fvalues" title="はてなのエンジニアのバリューズ - Hatena Developer Blog" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://developer.hatenastaff.com/entry/values">developer.hatenastaff.com</a></cite></p> </blockquote> <p>一方で、最近は会社の規模が大きくなり、若手エンジニアがプロダクトの重みというのを感じづらいという課題意識もあります。skozawaさんが居た頃は、エンジニアが少人数でプロダクトの大部分を背負わないといけなかったじゃないですか。システムもいまほど安定してなかったですし。エンジニアがイチから作ったり、作ったものを自分たちで運用するみたいなことが、わりと普通だったと思うんですよね。</p><p>今は自分が壊しちゃうかもしれないというプロダクトの重みを感じながらコード書いたり、自分が書いたコードでみんなに迷惑をかけるといったことが少なくなってきました。僕もそういう経験がすごく自分の成長につながったと思っているので、エンジニアとしての引き出しを増やすためにも、そういう機会を増やしてあげたいなと思っています。もちろん、ユーザーさんやクライアントさんにご迷惑をかけないようにすることは大前提ですけども、そのなかでうまく経験を積んでほしいなと思って。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> エンジニアにも、マネージャーにも、どう失敗を経験してもらえるかは、とても大事ですよね。僕らもそれに対して何かうまくアプローチできてるわけではないと思います。</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240112/20240112144923.jpg" width="1500" height="1000" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>基本はOJTなので、マネージャーとして目標設定することと、このひとにはこうしたタスクで育成しようといったところで考えたりします。Gunosyに「失敗させて育てる」みたいな文化があるわけではなく、僕の心がけとして、失敗するかもと思いつつ、様子を確認しながらサポートするようにしています。</p><p>エンジニアリングで障害を起こしたり、手戻り発生したりみたいなことが起こった場面では、あまり過剰にサポートやフォローをしすぎると身につかないので、自身で解決してやってもらうといった感じですね。</p> </div> <div class="section"> <h4 id="いまのはてなはどう見える">いまのはてなはどう見える?</h4> <p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> 最近のはてなについて、skozawaさんからどう見えているかというのをお聞かせいただきたいです。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> 僕は卒業してから6年経っているので、チームやプロダクトが大きくなって安定してきたなっていうのをすごく感じます。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> そうですよね。以前ってもっと安定してなかったと思う。一方で、エンジニアが自然と学ぶ機会は減ってきたのかなとも思います。</p><p>技術的な環境が整っていないなかで自分たちでやるしかなかった状況がエンジニアを育ててきたところもあると思うんですよね。環境が整ってきて、いい選択肢もどんどん増えてきている中で、そこからどうやって選び取ることを学んでいくのかが難しい。skozawaさんのお話にもあったように、いい失敗から学んでもらうのが大事だなと思います。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> IRとか見ていると、マンガビューワなどのtoBが伸びていて、すごいなと思っています。toCサービスは業界的にも売り上げを伸ばしにくくなっているので当然かなと思いつつ、今後toC、toBそれぞれをはてなはどういう位置づけでやっていくのかなというのが聞いてみたかったです。</p><p><a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="id:motemen" class="hatena-id-icon"></a> はてなの原点でもあるので、toCやUGCのサービスはやっていきたいと思っています。事業的には、toBであるテクノロジーソリューションサービスを着実に伸ばしながら、投資をしていこうとしています。だから久々にはてなにも新規チームみたいなのができて、めっちゃくちゃ頑張っています。</p><p>それがこれから事業としてどうなるかは、また別のファクターがあると思うんだけど。新規サービスの開発の様子は見ていますが、以前は勘と経験でやっていたところにちゃんと仮説検証を高速に回していて、はてなのやり方もいい意味でアップデートされてきたなと感じてます。</p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="id:skozawa" class="hatena-id-icon"></a> はてなのサービスがもっと増えたらいいなと、個人的には思っているので、期待しています!</p> <figure class="figure-image figure-image-fotolife" title="id:skozawa:detailさん、ありがとうございました!"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240112/20240112143632.jpg" width="1500" height="1000" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>さん、ありがとうございました!</figcaption></figure><p><hr></p><p><a href="http://blog.hatena.ne.jp/skozawa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/skozawa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:skozawa</a>さんこと小澤さん、ご協力ありがとうございました。次回の「はてな卒業生訪問企画」は2024年4月頃更新予定、担当は<a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>です。</p> </div> hatenatech hatena.go #1 開催レポート hatenablog://entry/6801883189081320143 2024-02-16T13:07:13+09:00 2024-02-16T13:48:05+09:00 こんにちは、はてなでアプリケーションエンジニアをしている id:lufiabb です。 2024年1月31日(水)に、 hatena.go#1 を東京オフィスで開催しました。当初想定していた以上の方に登録・参加いただけました。ありがとうございました。 このエントリーでは、当日の様子をご紹介します。 hatena.go#1について 「hatena.go」は、Go言語を普段から使っているエンジニアやWebアプリケーションを開発しているエンジニアのみなさまを対象に、Goにまつわる情報発信と情報交換を目的としたイベントです。 今回のhatena.goは、はてなのエンジニア2名による15分トークと、co… <p>こんにちは、はてなでアプリケーションエンジニアをしている <a href="http://blog.hatena.ne.jp/lufiabb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/lufiabb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:lufiabb</a> です。 2024年1月31日(水)に、 hatena.go#1 を東京オフィスで開催しました。当初想定していた以上の方に登録・参加いただけました。ありがとうございました。</p> <p>このエントリーでは、当日の様子をご紹介します。</p> <h2 id="hatenago1について">hatena.go#1について</h2> <p>「hatena.go」は、Go言語を普段から使っているエンジニアやWebアプリケーションを開発しているエンジニアのみなさまを対象に、Goにまつわる情報発信と情報交換を目的としたイベントです。</p> <p>今回のhatena.goは、はてなのエンジニア2名による15分トークと、connpassにて公募LT枠にご応募頂いた方3名によるLTが行われました。</p> <h2 id="発表概要と資料">発表概要と資料</h2> <h3 id="はてなのサービスを支えるGo-はてなにおけるGo利用のこれまでとこれから">はてなのサービスを支えるGo はてなにおけるGo利用のこれまでとこれから</h3> <p><iframe id="talk_frame_1140887" class="speakerdeck-iframe" src="//speakerdeck.com/player/a05f7077fefb4f0088a7ab8fa55f25d0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/maku693/hatena-dot-go-number-1-maku693">speakerdeck.com</a></cite></p> <p>一人目は、はてなのエンジニア <a href="http://blog.hatena.ne.jp/maku693/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maku693/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maku693</a> です。はてなのプロダクションでGoが採用された事例を年代ごとに俯瞰していき、次に現時点において複数のサービスにまたがってパッケージ構造や利用されているライブラリが紹介されていました。 また、後半では、プロダクトにGoを採用する動きが広がっていくにつれてプロダクトごとに知識が断片化してしまう問題があり、いまは収束するフェーズに入っていることにも言及していました。</p> <h3 id="Goサブ会によるチームを超えた知見展開あるいは-hatenago-に対する期待">『Goサブ会』によるチームを超えた知見展開、あるいは hatena.go に対する期待</h3> <p><iframe id="talk_frame_1140412" class="speakerdeck-iframe" src="//speakerdeck.com/player/57f53b622299461790b06010e128fdde" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/stefafafan/golang-task-force-at-hatena">speakerdeck.com</a></cite></p> <p>二人目は、はてなのエンジニア <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a> です。Go Conference mini 2023 Winter IN KYOTOで行われたトークのアップデート版として、Goサブ会での活動と成果内容について発表されていました。 質問にもありましたが、サブ会とは「<a href="https://developer.hatenastaff.com/entry/tech-group-snapshot-2016">集中して取り組み、ときには具体的なタスクを受けもつ、技術的な競争力を持つエンジニアの小集団</a>」です。人が集りやすいように、見える場所で活動することを意識されているのがいいですね。 今後のhatena.goに対しての期待などもお話されていました。</p> <h3 id="バクラク事業部でのGoのユースケースとチームを超えたナレッジ共有">バクラク事業部でのGoのユースケースとチームを超えたナレッジ共有</h3> <p><iframe id="talk_frame_1140694" class="speakerdeck-iframe" src="//speakerdeck.com/player/1d59731fe4f64db199c6d4291457c76a" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/upamune/bakurakushi-ye-bu-denogonoyusukesutotimuwochao-etanaretuzigong-you-hatena-dot-go">speakerdeck.com</a></cite></p> <p>LTの一人目は<a href="https://twitter.com/upamune">@upamune</a>様です。LayerX社ではチームを超えたナレッジ共有をどのように行っているかをお話してくださいました。 ディスカッションを目的とした「<a href="https://tech.layerx.co.jp/entry/2023/10/25/174051">ゆるい輪読会</a>」は、途中参加しやすそうな取り組みで興味深い内容でした。並行処理の実装は<a href="https://github.com/sourcegraph/conc">sourcegraph/conc</a>を採用して間違えを避ける試みもいいですね。</p> <h3 id="YAMLからCLIを自動生成するツールcyamliの複数言語サポート">YAMLからCLIを自動生成するツール「cyamli」の複数言語サポート</h3> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdrive.google.com%2Ffile%2Fd%2F1rfotfvc1Bl2xlpPSbsMenBJjCN3k9PMi%2Fview" title="2024-01-31_YAMLからCLIを自動生成するツール「cyamli」の複数言語サポート.pdf" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://drive.google.com/file/d/1rfotfvc1Bl2xlpPSbsMenBJjCN3k9PMi/view">drive.google.com</a></cite></p> <p>LTの二人目は<a href="https://twitter.com/Jumpaku">@Jumpaku</a>様です。YAMLで書かれたコマンドラインパラメータの定義からGoやPythonのコードを生成するcyamliという自作のツールを紹介してくださいました。 個人的には、1つのパラメータ定義を使って、Go以外の言語コードも生成できるところは面白いなと感じました。サブコマンドなどにも対応しているようなので、何か作るときに使ってみようと思います。</p> <h3 id="リンカを変えてgo-buildを-速く出来るか">リンカを変えてgo buildを 速く出来るか</h3> <p><iframe id="talk_frame_1140339" class="speakerdeck-iframe" src="//speakerdeck.com/player/3541f9b6db49459e81b20b9821c0e307" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/nasa_desu/su-irinkawoqiu-mete">speakerdeck.com</a></cite></p> <p>最後は<a href="https://twitter.com/nasa_desu">@nasa_desu</a>様です。Go標準の内部リンカを別のリンカに変更して、ビルド時間を削減できるか試してみるといった内容のお話でした。 複数のリンカで実行時間を計測されていますが、とても興味深い結果になっていました。続編にも期待しております。</p> <h2 id="さいごに">さいごに</h2> <p>ご参加いただいたみなさま、ありがとうございました。はてな技術グループでは引き続き、ブログやセミナーなどを通じた技術情報の発信に取り組んでまいります。</p> lufiabb はてなのポッドキャスト Backyard Hatena #32 - 15年前のはてなと組織・基盤開発本部のこれから(id:onishi) #byhatena hatenablog://entry/6801883189081824942 2024-02-09T18:00:00+09:00 2024-02-09T18:00:40+09:00 はてな「技術グループ」によるポッドキャスト「Backyard Hatena」を更新。第32回では、取締役 組織・基盤開発本部長 の id:onishiを迎え、15年前のはてなの様子や、onishiさんが本部長を務める「組織・基盤開発本部」についてお話しました。 <p>こんにちは、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> です。</p><p>はてなのエンジニア組織である技術グループでやっているポッドキャスト「Backyard Hatena」を更新しました。<br /> 「Backyard Hatena」は、株式会社はてなのメンバーの普段の様子や、サービス開発の裏側や技術、取り組みなどについて、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> を中心としたメンバーがカジュアルにお届けするポッドキャストです。</p><p><iframe src="https://anchor.fm/backyard-hatena/embed/episodes/32-15idonishi-e2fih6p" height="102px" width="400px" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a href="https://podcasters.spotify.com/pod/show/backyard-hatena/episodes/32-15idonishi-e2fih6p">podcasters.spotify.com</a></cite><br /> <a href="https://anchor.fm/backyard-hatena">Backyard Hatena &bull; A podcast on Spotify for Podcasters</a></p><p>Anchor / Spotify / Google Podcasts / Apple Podcast で配信しています。お好みのプラットフォームから聞いていただけると嬉しいです。</p><p>今回のゲストは、取締役 組織・基盤開発本部長 の <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a> です。15年前のはてなの様子や、onishiさんが本部長を務める「組織・基盤開発本部」についてお話しました。</p> <blockquote> <p>Backyard Hatena #32 - 15年前のはてなと組織・基盤開発本部のこれから(<a href="http://blog.hatena.ne.jp/onishi/">id:onishi</a>)</p><p>Show Notes</p> <ul> <li><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>さんは、はてなの屋台骨</li> <li>学生アルバイト <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> が入ったころのはてな</li> <li>ドベンチャー時代 <ul> <li>フリーアドレス</li> <li>立ったままの朝会から議論</li> <li>はてな公式ポッドキャストの先駆けである「<a href="https://hatena-announce.hatenastaff.com/entry/2005/06/25/000000">&#x306F;&#x3066;&#x306A;&#x30A2;&#x30A4;&#x30C7;&#x30A2;&#x30DF;&#x30FC;&#x30C6;&#x30A3;&#x30F3;&#x30B0;</a>」</li> <li>開発合宿</li> <li>散歩MTG</li> </ul></li> <li>ふたり旅行の思い出</li> <li>組織・基盤開発本部のミッション「インターネットに新しいもう一つのオフィスを作る」</li> <li>今後一緒にやっていきたいこと</li> </ul> </blockquote> <div class="section"> <h4 id="ハッシュタグは-byhatena-です">ハッシュタグは #byhatena です!</h4> <p>Backyard Hatena の感想・コメントは <a href="https://twitter.com/search?q=%23byhatena">#byhatena</a> ハッシュタグをつけてツイートいただけると嬉しいです!</p> </div> <div class="section"> <h4 id="収録後記">収録後記</h4> <p>onishiさんとは話せることが無限にあるのでまた出てもらいましょう!(motemen)</p><p>Backyard Hatena を聞いて、はてなで働くことに興味を持たれたら、ぜひお話する機会を持ちましょう。</p><p><p style="text-align: center; margin: 2em"><br /> <a href="https://open.talentio.com/r/1/c/hatena/pages/51631/apply " class="btn btn-large btn-blue" target="_blank">カジュアル面談のお申込みはこちら</a><br /> </p></p><p>あわせて、こちらの採用サイトもご覧ください。</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatenacorp.jp%2Frecruit%2Fengineer" title="エンジニア採用 - 採用情報 - 株式会社はてな" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><a href="https://hatenacorp.jp/recruit/engineer">&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p> </div> hatenatech はてなは YAPC::Hiroshima 2024 を全力で盛り上げます!登壇やスポンサー内容のご紹介 hatenablog://entry/6801883189081261510 2024-02-09T09:30:00+09:00 2024-02-09T09:30:04+09:00 こんにちは!Mackerel で CRE をしている id:KGA です。最近はイベントの運営をよくやっています。 イベントといえば今週末にいよいよ YAPC::Hiroshima 2024 が開催されますね! yapcjapan.org 今回の YAPC は「what you like」をテーマとしていますが、私の好きなプログラミング言語は何を隠そう Perl です。長年 Perl に触れ、これまでの YAPC にもたくさん参加してきた恩があるため、その恩を返したいなと思い、初めて当日スタッフとして参加することにしました。 私の他にも多くのはてなスタッフが一般参加者としてだけではなくトークへ… <p>こんにちは!Mackerel で CRE をしている <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a> です。最近は<a href="https://connpass.com/user/kga/open/">イベントの運営</a>をよくやっています。</p> <p>イベントといえば今週末にいよいよ YAPC::Hiroshima 2024 が開催されますね!</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fyapcjapan.org%2F2024hiroshima%2F" title="YAPC::Hiroshima 2024 " class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://yapcjapan.org/2024hiroshima/">yapcjapan.org</a></cite></p> <p>今回の YAPC は「what you like」をテーマとしていますが、私の好きなプログラミング言語は何を隠そう Perl です。長年 Perl に触れ、これまでの YAPC にもたくさん参加してきた恩があるため、その恩を返したいなと思い、初めて当日スタッフとして参加することにしました。</p> <p>私の他にも多くのはてなスタッフが一般参加者としてだけではなくトークへの登壇やコアスタッフ・当日スタッフとして参加します。また、はてなではゴールドスポンサーとコーヒーブーススポンサーもさせていただきます。本エントリではスタッフからのコメントとともにこれらの紹介をさせていただきます。</p> <ul class="table-of-contents"> <li><a href="#コーヒーブースにお立ち寄りください️">コーヒーブースにお立ち寄りください☕️</a></li> <li><a href="#前夜祭本編ライトニングトークのご紹介">前夜祭・本編・ライトニングトークのご紹介</a><ul> <li><a href="#前夜祭-Cache-Control-max-age86400by-キャッシュバスターズ">前夜祭: 「Cache-Control: max-age=86400」by キャッシュバスターズ</a></li> <li><a href="#rakulangで実装する-RubyVM-by-idanatofuz">「rakulangで実装する! RubyVM」 by id:anatofuz</a></li> <li><a href="#ライトニングトーク-GitHub-Linguistと学ぶ全国このコードはPerlとRakuどっちでしょうクイズ選手権大会2024-by-idpolamjag">ライトニングトーク: 「GitHub Linguistと学ぶ!全国このコードはPerlとRakuどっちでしょうクイズ選手権大会2024」 by id:polamjag</a></li> </ul> </li> <li><a href="#たくさんのメンバーが運営スタッフとして参加しています">たくさんのメンバーが運営スタッフとして参加しています</a><ul> <li><a href="#コアスタッフ当日スタッフよりひとこと">コアスタッフ・当日スタッフよりひとこと</a></li> </ul> </li> <li><a href="#みなさんと会場でお会いできることを楽しみにしています">みなさんと会場でお会いできることを楽しみにしています!</a></li> </ul> <h1 id="コーヒーブースにお立ち寄りください️">コーヒーブースにお立ち寄りください☕️</h1> <p>コーヒーブーススポンサーとしてPOPを掲出させていただいております。美味しいコーヒー片手に、はてなに思いを馳せながら交流したりブログを書いたりしてください!</p> <h1 id="前夜祭本編ライトニングトークのご紹介">前夜祭・本編・ライトニングトークのご紹介</h1> <h2 id="前夜祭-Cache-Control-max-age86400by-キャッシュバスターズ">前夜祭: 「Cache-Control: max-age=86400」by キャッシュバスターズ</h2> <p>会場: 厳島(ダリア)/ 19:20 - 20:00 (40min)</p> <p>前夜祭ではキャッシュバスターズ(はてな チーフエンジニア <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a> と合同会社 Have Fun Tech 代表社員 <a href="http://blog.hatena.ne.jp/Soudai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Soudai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Soudai</a> さん)によるパネルディスカッションが開催されます。お二人によるエントリをあらかじめご覧いただくとより一層楽しめそうです。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fonk.hatenablog.jp%2Fentry%2F2023%2F12%2F18%2F000000" title="「キャッシュは麻薬」という標語からの脱却 - id:onk のはてなブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://onk.hatenablog.jp/entry/2023/12/18/000000">onk.hatenablog.jp</a></cite> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fsoudai.hatenablog.com%2Fentry%2Fcache-strategy" title="キャッシュを活用するために必要な知識と勘所 - そーだいなるらくがき帳" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://soudai.hatenablog.com/entry/cache-strategy">soudai.hatenablog.com</a></cite></p> <p>YAPC スタッフの <a href="http://blog.hatena.ne.jp/Pasta-K/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Pasta-K/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Pasta-K</a> さんによる ChatPGT 4 に何を話すか予想させてみたエントリも面白かったですね。こちらもぜひ事前にご覧ください!</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.yapcjapan.org%2Fentry%2F2024%2F01%2F09%2F150000" title="YAPC::Hiroshima 2024の前夜祭でキャッシュバスターズは何を話すのかChatGPT 4に予想させてみた - YAPC::Japan 運営ブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 前夜祭として翌日を楽しみにできるような会にします。現地でたくさんお話しましょー!</p> <h2 id="rakulangで実装する-RubyVM-by-idanatofuz">「rakulangで実装する! RubyVM」 by <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/anatofuz/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/anatofuz/profile.png" width="16" />id:anatofuz</a></h2> <p>会場: 小田原 Hameeの間(ラン)/ 12:10 - 12:50 (40min)</p> <blockquote><p>皆さんは普段どんなプログラミング言語を使っているでしょうか golangなどのコンパイルする言語もありますが、Perlを始めとするスクリプト言語を使っている方も多いでしょう。 現代のスクリプト言語は実行時にスクリプト言語のソースコードを、言語内独自のVMが実行可能なアセンブラのような命令にコンパイルし、その結果を実行する方式が多いです。つまり、現代においてはスクリプト言語を実装するということはほぼCPUの命令実行シーケンスを実装することと同義です。</p> <p>特に最近は一部界隈ではRubyの処理系であるRubyVMを実装するのが流行っています。</p> <p>本トークではRubyVMをPerl...ではなくて、Raku(旧Perl6)で実装し、Rakulangの言語の面白さとRubyVMの実装の面白さについて見ていきます。 なお現時点でコードはほとんど書いてないので当日までに完成するかは......。お楽しみに</p> <p><a href="https://fortee.jp/yapc-hiroshima-2024/proposal/522f01e9-7af5-4c2c-9294-6a16764ad6a6">rakulangで実装する! RubyVM by 八雲アナグラ | トーク | YAPC::Hiroshima 2024 #yapcjapan - fortee.jp</a></p></blockquote> <p><a href="http://blog.hatena.ne.jp/anatofuz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/anatofuz/profile.png" width="16" height="16" alt="id:anatofuz" class="hatena-id-icon"></a> Perlシッk....というかRakulangについて話すのでよろしくお願いします!!!!</p> <h2 id="ライトニングトーク-GitHub-Linguistと学ぶ全国このコードはPerlとRakuどっちでしょうクイズ選手権大会2024-by-idpolamjag">ライトニングトーク: 「GitHub Linguistと学ぶ!全国このコードはPerlとRakuどっちでしょうクイズ選手権大会2024」 by <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/polamjag/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/polamjag/profile.png" width="16" />id:polamjag</a></h2> <p>会場: 厳島(ダリア)/ 17:15 - 17:45 (5min)</p> <blockquote><p>GitHubでレポジトリを表示したときに一番最初に確認するのは、レポジトリ内のプログラミング言語比率のグラフだという方は多いのではないでしょうか?あのグラフは、GitHub謹製のライブラリ「Linguist」 (github-linguist/linguist) によって、ファイルの内容をヒューリスティックに分析した結果が表示されています。</p> <p>そんなLinguistには、けっこう最近までPerlとRaku (Perl 6) の実装をうまく区別できないという問題がありました。このLTでは、この問題をある程度修正したpull requestを起点に、Linguistの仕組みや、PerlとRakuの似ているところ・似ていないところについて紹介することで、トークを聞いたみなさんが † Linguist 《言語学者》 † のようにPerlとRakuのコードを見分けられるようになることを目指します。</p> <p><a href="https://fortee.jp/yapc-hiroshima-2024/proposal/c0c2015f-31ff-4b40-846e-90589c2c56fa">GitHub Linguistと学ぶ!全国このコードはPerlとRakuどっちでしょうクイズ選手権大会2024 by polamjag | トーク | YAPC::Hiroshima 2024 #yapcjapan - fortee.jp</a></p></blockquote> <p><a href="http://blog.hatena.ne.jp/polamjag/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/polamjag/profile.png" width="16" height="16" alt="id:polamjag" class="hatena-id-icon"></a> このたびはLTのトリという大役を仰せつかりまして恐縮です、おもしろナレッジをお持ち帰り頂けるようなトークを用意してお待ちしております!当日はスタッフもやりますのでぜひ乾杯しましょう!</p> <h1 id="たくさんのメンバーが運営スタッフとして参加しています">たくさんのメンバーが運営スタッフとして参加しています</h1> <p>今回の YAPC::Hiroshima 2024 も前回の YAPC::Kyoto 2023 に引き続きコアスタッフ・当日スタッフとしてはてなスタッフが準備と運営に携わっています。運営スタッフを務めるメンバーからのひとこともご紹介します!</p> <ul> <li><a href="https://yapcjapan.org/2024hiroshima/staff">YAPC::Hiroshima 2024 スタッフ紹介ページ</a></li> </ul> <h2 id="コアスタッフ当日スタッフよりひとこと">コアスタッフ・当日スタッフよりひとこと</h2> <p><a href="http://blog.hatena.ne.jp/kfly8/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kfly8/profile.png" width="16" height="16" alt="id:kfly8" class="hatena-id-icon"></a> 業務委託のkobakenです。YAPC::Hiroshima 2024のリーダーという立場で今回参加します。 はてな様にはいつもお世話になっております(YAPCの協賛企業の意味としても、業務委託でお世話になってるという意味でも)</p> <p>広島楽しみですね!</p> <p><a href="http://blog.hatena.ne.jp/mazco/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mazco/profile.png" width="16" height="16" alt="id:mazco" class="hatena-id-icon"></a> 今回は現地参戦ができないのですが、めちゃ最高なノベルティをたくさん作ったのでぜひ楽しんでください!!</p> <p><a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="id:papix" class="hatena-id-icon"></a> YAPC::Hiroshima 2024広報担当の... じゃなかった, Webアプリケーションエンジニアの <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a> です. 今回は広報としてブログエントリを書きまくりました. YAPC::Hiroshima 2024, 全力全開で楽しんでいってくださいね!!!</p> <p><a href="http://blog.hatena.ne.jp/Pasta-K/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Pasta-K/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Pasta-K</a> YAPC::Hiroshima 2024では前夜祭担当が主務ですが、今回のYAPC::Hiroshima 2024を最後の最後まで皆さんに楽しんでもらえるような仕込みもしてますので、乞うご期待!!!!!</p> <p><a href="http://blog.hatena.ne.jp/tkzwtks/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png" width="16" height="16" alt="id:tkzwtks" class="hatena-id-icon"></a> スタッフとして参加します。来ていただいた方々に「来てよかった」と思ってもらえるように準備しています。現地でお会いしましょう</p> <p><a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="id:cohalz" class="hatena-id-icon"></a> 広島よりさらに西から前日・当日スタッフとして参加します!皆様に会えるのを楽しみにしております!!</p> <p><a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="id:KGA" class="hatena-id-icon"></a> 当日スタッフとしては初参加です!みなさんの what you like が聞けるのを楽しみにしています!</p> <h1 id="みなさんと会場でお会いできることを楽しみにしています">みなさんと会場でお会いできることを楽しみにしています!</h1> <p>この他にも、たくさんのはてなスタッフが YAPC::Hiroshima 2024 に参加する予定です。はてなスタッフはお揃いのパーカーを着ていますのでぜひ声をかけてください!当日みなさんとお会いできることを楽しみにしています!</p> hatenatech Hatena Engineer Seminar #28 「個人開発編」をオンラインで開催しました #hatenatech hatenablog://entry/6801883189079461453 2024-01-31T17:00:00+09:00 2024-01-31T17:02:50+09:00 2024年1月30日(火)に開催した Hatena Engineer Seminar #28 「個人開発編」のレポートです。はてなに所属するエンジニア3名が「個人開発」をテーマに、それぞれの取り組みについてご紹介しました。トークの発表資料と動画アーカイブを掲載しています。ぜひご覧ください! <p>2024年1月30日(火)に、 <a href="https://developer.hatenastaff.com/entry/engineer-seminar-28">Hatena Engineer Seminar #28</a> をオンライン開催しました。ご参加いただいたみなさま、ありがとうございました。</p><p>このエントリーでは、当日のアーカイブ動画や公開資料をご紹介します。</p> <ul class="table-of-contents"> <li><a href="#Hatena-Engineer-Seminar-28-について">Hatena Engineer Seminar #28 について</a></li> <li><a href="#発表概要と資料">発表概要と資料</a><ul> <li><a href="#個人開発のたのしみ--マンガアプリチーム-エンジニア-idyutailang0119">個人開発のたのしみ / マンガアプリチーム エンジニア id:yutailang0119</a></li> <li><a href="#運動モチベーション継続のためのiOSアプリ開発--マンガアプリチーム-エンジニア-idtokizuoh">運動モチベーション継続のためのiOSアプリ開発 / マンガアプリチーム エンジニア id:tokizuoh</a></li> <li><a href="#技術習得を支え続けた私の個人開発ヒストリー--Mackerel開発チーム-エンジニア-idarthur-1">技術習得を支え続けた私の個人開発ヒストリー / Mackerel開発チーム エンジニア id:arthur-1</a></li> </ul> </li> <li><a href="#さいごに">さいごに</a></li> </ul> <div class="section"> <h3 id="Hatena-Engineer-Seminar-28-について">Hatena Engineer Seminar #28 について</h3> <p>Hatena Engineer Seminar は、はてなのサービスを開発する上で、エンジニアがどのような事を考えているのか、どのような働き方をしているのかを語るイベントです。</p><p>#28では、はてなに所属するエンジニア3名が「個人開発」をテーマに、それぞれの取り組みについてご紹介します。はてなにおける事例紹介ではなく、それぞれのエンジニアがどのように個人プロダクトやその技術に向き合っているか、をお話しすることで、はてなのエンジニアの文化や風土に触れていただける内容になったと思います。</p><p>イベントの内容は、配信のアーカイブ動画もYouTubeでご覧いただけます。動画の概要や以下の説明で、各トークの開始時間にもリンクしていますのでご利用ください。</p><p><div><figure><iframe width="560" height="315" src="https://www.youtube.com/embed/IMTgxIG43NM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Hatena Engineer Seminar #28 個人開発編 #hatenatech"></iframe><br /> <figcaption><a href="https://www.youtube.com/live/IMTgxIG43NM?si=CQeFm-syt8E-iugGi"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fwww.youtube.com%2Flive%2FIMTgxIG43NM%3Fsi%3DCQeFm-syt8E-iugGi" alt="" class="http-favicon" /></a><a href="https://www.youtube.com/live/IMTgxIG43NM?si=CQeFm-syt8E-iugGi">Hatena Engineer Seminar #28 &#x500B;&#x4EBA;&#x958B;&#x767A;&#x7DE8; #hatenatech - YouTube</a></figcaption></figure></div></p> </div> <div class="section"> <h3 id="発表概要と資料">発表概要と資料</h3> <div class="section"> <h5 id="個人開発のたのしみ--マンガアプリチーム-エンジニア-idyutailang0119">個人開発のたのしみ / マンガアプリチーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/yutailang0119/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" />id:yutailang0119</a></h5> <blockquote> <p><a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="id:yutailang0119" class="hatena-id-icon"></a> アプリ開発だけに限りませんが、数年単位で毎日コミットを積み重ねています。 <br /> <a href="https://yutailang0119.hatenablog.com/entry/2022/05/07/223000">SSO&#x3092;&#x5207;&#x3063;&#x3066;&#x3082;&#x3001;GitHub&#x306E;&#x8349;&#x3092;1&#x5E74;&#x751F;&#x3084;&#x305B;&#x305F; - &#x304C;&#x3093;&#x3070;&#x3063;&#x3066;&#x306A;&#x3093;&#x304B;&#x66F8;&#x304F;</a></p><p>個人の活動なのだから、続けること自体が目的だっていいのです。欲しいものを作る、使いたい技術を使うために作る、続けるために作る、その時々で目的は様々ですが毎日続けていくためのマインドを話します。</p> </blockquote> <p>発表資料を以下で公開しています。</p><p><iframe id="talk_frame_1139831" class="speakerdeck-iframe" src="//speakerdeck.com/player/6467af74e9cd4d7f986e04e10be1690d" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/yutailang0119/enjoying-personal-development">speakerdeck.com</a></cite></p><br /> <p>配信アーカイブの該当部分は、<a href="https://www.youtube.com/live/IMTgxIG43NM?si=kOTlylHa-qYYS3ns&t=91">1&#x5206;31&#x79D2;&#x304B;&#x3089;</a>です。</p> </div> <div class="section"> <h5 id="運動モチベーション継続のためのiOSアプリ開発--マンガアプリチーム-エンジニア-idtokizuoh">運動モチベーション継続のためのiOSアプリ開発 / マンガアプリチーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/tokizuoh/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png" width="16" />id:tokizuoh</a></h5> <blockquote> <p><a href="http://blog.hatena.ne.jp/tokizuoh/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png" width="16" height="16" alt="id:tokizuoh" class="hatena-id-icon"></a> 皆さんは普段、運動を継続できていますか?リモートワークで運動が続かなかった経験がある方は多いのではないでしょうか。tokizuohもその内の一人でした。この発表ではいかにして個人開発を通じて運動のモチベーションを上げたのかについて話します。また、技術的な面で個人開発を行って良かったこと話します。</p> </blockquote> <p>発表資料を以下で公開しています。</p><p><iframe id="talk_frame_1139719" class="speakerdeck-iframe" src="//speakerdeck.com/player/55a44da8ae7d4a1f9342bd2c9b5473a2" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> </p><p>配信アーカイブの該当部分は、<a href="https://www.youtube.com/live/IMTgxIG43NM?si=9F2VJudidEK8Wicf&t=698">11&#x5206;38&#x79D2;&#x304B;&#x3089;</a>です。</p> </div> <div class="section"> <h5 id="技術習得を支え続けた私の個人開発ヒストリー--Mackerel開発チーム-エンジニア-idarthur-1">技術習得を支え続けた私の個人開発ヒストリー / Mackerel開発チーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/arthur-1/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" />id:arthur-1</a></h5> <blockquote> <p><a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="id:arthur-1" class="hatena-id-icon"></a> 私は学生時代の2018年ごろから個人開発をはじめ、社会人エンジニアとなった今でも主にボードゲームに関連したWebアプリケーションを開発・運用し続けています。こういったモノづくりの過程で様々な技術を身につけてきました。個人開発の歴史と自分のエンジニアとしての成長を振り返るとともに、最近進めている個人開発のモダナイズについてご紹介します。</p> </blockquote> <p>発表資料を以下で公開しています。</p><p><iframe id="talk_frame_1139744" class="speakerdeck-iframe" src="//speakerdeck.com/player/a27ac802a64e4371bd4fd72887592833" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> </p><p>配信アーカイブの該当部分は、<a href="https://www.youtube.com/live/IMTgxIG43NM?si=0YJBx72xQORgHC-a&t=1460">24&#x5206;20&#x79D2;&#x304B;&#x3089;</a>です。<br /> <br /> </p> </div> </div> <div class="section"> <h3 id="さいごに">さいごに</h3> <p>ご参加いただいたみなさま、ありがとうございました。はてな技術グループでは引き続き、ブログやセミナーなどを通じた技術情報の発信に取り組んでまいります。</p><p>次回の Hatena Engineer Seminar は2024年3月開催予定です。ご期待ください。</p><p>はてなでは新卒・中途、東京・京都を問わずエンジニアを募集しています。今回のセミナー内容に少しでも興味をお持ちなら、ぜひともご応募ください!</p><p><a href="https://hatena.co.jp/recruit/engineer"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20201224/20201224090947.png" style="width: 100%; height: 368px; object-fit: cover; border: none;" alt="エンジニア採用 - 採用情報 - 株式会社はてな" title="エンジニア採用 - 採用情報 - 株式会社はてな"></a></p> </div> hatenatech 自分が夢中になれるサービスの開発に関わりたいと思った | はてなで働く heleeen にアンケート [#26] hatenablog://entry/6801883189072587170 2024-01-31T09:30:00+09:00 2024-03-08T13:52:04+09:00 はてなで働くエンジニアにアンケートシリーズ第26回は、MackerelチームのSRE、id:heleeenです。SREとしての働き方、リモートワーク下のコミュニケーションなどについて聞きました。 <p><b>はてなで働くエンジニアにアンケート</b>シリーズ第26回は、MackerelチームのSRE、<a href="http://blog.hatena.ne.jp/heleeen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/heleeen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:heleeen</a>に話を聞きました。</p> <ul class="table-of-contents"> <li><a href="#夢中になれるサービスの開発にしっかり参加してみたい">夢中になれるサービスの開発にしっかり参加してみたい</a></li> <li><a href="#Mackerelを普段から運用することがサービス改善のきっかけに">Mackerelを普段から運用することがサービス改善のきっかけに</a></li> <li><a href="#リモートワークのコミュニケーションへ些細なことでも持ち込めるように">リモートワークのコミュニケーションへ些細なことでも持ち込めるように</a></li> <li><a href="#SLIの再編であるべきSLISLOの姿に近づけられた">SLIの再編であるべきSLI/SLOの姿に近づけられた</a></li> <li><a href="#現状を改善したい気持ちを常に持つ">現状を改善したい気持ちを常に持つ</a></li> <li><a href="#社内に限らず他者へのリスペクトが強い人が多い">社内に限らず「他者へのリスペクト」が強い人が多い</a></li> </ul> <div class="section"> <h3 id="夢中になれるサービスの開発にしっかり参加してみたい">夢中になれるサービスの開発にしっかり参加してみたい</h3> <p><b>── Q1. はてなidとその由来を教えてください</b></p><p><a href="http://blog.hatena.ne.jp/heleeen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/heleeen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:heleeen</a> です。旧姓を言い間違えられたことからついた呼び名をidにも使っています。ぱっと見で読みづらいのですが、これで「ヘレン」と読みます。ちなみに日本人です。</p><p><b>── Q2. いつどんなきっかけで入社されましたか?</b></p><p>前職の同僚のエンジニアが、同僚自身がヘビーユーザーかつ好きなサービスの開発に携わっていることに誇りを持ち、また自分の思いとプロダクトの方向性の違いに葛藤しながらも幸せそうに働いている姿を、隣で見ていました。</p><p>私はその時、その同僚の関わるサービスも含めて社内のいくつかのサービスを運用するSREだったのですが、自分が継続的なユーザーであり好きなサービスと言えるものには関わりがなく、その同僚のように自分が夢中になれるサービスの開発にしっかりと参加してみたい気持ちを持ち始めていました。</p><p>また、前職には新卒で入社しており、他の会社でも働いてみたいと感じ始めた頃に、以前からMackerelを通して関わりのあった <a href="http://blog.hatena.ne.jp/missasan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/missasan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:missasan</a> さんからお声がけいただきました。CREとしてお誘いをいただいたのですが、キャリアとしてはまだしばらくはSREでありたいと思い、SREとして入社しました。</p> <figure class="figure-image figure-image-fotolife" title="id:heleeen:detail 近影"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240131/20240131093001.jpg" alt="id:heleeen:detail &#x8FD1;&#x5F71;" width="2000" height="1319" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/heleeen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/heleeen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:heleeen</a> 近影</figcaption></figure> </div> <div class="section"> <h3 id="Mackerelを普段から運用することがサービス改善のきっかけに">Mackerelを普段から運用することがサービス改善のきっかけに</h3> <p><b>── Q3. 現在の仕事を教えてください</b></p><p>Embedded SREとしてMackerelの運用に携わっています。具体的には、SLI/SLOの策定から実装と運用、監視運用、CI/CDの構築や改善、クラウド運用などを主に行っています。</p><p>MackerelはSREのためのサービスでもあるので、Mackerelユーザーとしてチーム内で機能開発のためのヒアリングを受けたり、インターンの開発テーマや新機能を考えたりすることもあります。日頃Mackerelを利用してシステムを運用することがドッグフーディングとなり、サービス改善のきっかけにもなるのが面白いところですね。</p><p><b>── Q. チーム内の立ち位置を教えてください</b></p><p>今のMackerel開発チームには、OpenTelemetry対応のような特定の機能開発を行うチームと、SREなど職能で分かれたチームが混在しています。私はそのSREチームの一員として活動しているのですが、SREが関わったほうがよさそうと感じた機能開発のチームにも参画しています。</p><p>SREとして日々のタスクをこなしつつ、SREテックリードとして中長期的な計画や見通しについて思いをはせていることも多いです。</p><p>Mackerel開発チームの中でいくつかのチームに分かれていることによって情報の分断や他のチームとの距離ができてしまうことに対する懸念があったので、スプリントごとにSREからの情報共有をテキストで行ったりもしています。最近は気分が乗ればポエムも書いていて、反応をもらえることも多くてうれしいです。</p> </div> <div class="section"> <h3 id="リモートワークのコミュニケーションへ些細なことでも持ち込めるように">リモートワークのコミュニケーションへ些細なことでも持ち込めるように</h3> <p><b>── Q. 1日の仕事の流れを教えてください</b></p><p>およそ11時ごろに活動を始めて20時ごろに退勤しています。午前の機能開発チームとのデイリースクラム、午後のMackerel開発チーム全体でのデイリースクラムとSREチームの会話の時間が固定された予定です。</p><p>日によっては他のスクラムイベント、1on1、ポストモーテム読書会、社内勉強会、全社横断組織での作業を行う時間などが入ります。それらの会議の合間にコードレビューやタスクを進めています。</p><p>SREの会話の時間では各個人のタスクの状況の確認や共有も行っているのですが、どちらかというと日常の困りごとの相談や雑談を主な目的としています。リモートワークでのコミュニケーションのハードルを下げるために、些細なことでも持ち込める場を確保しておく狙いがあります。</p> </div> <div class="section"> <h3 id="SLIの再編であるべきSLISLOの姿に近づけられた">SLIの再編であるべきSLI/SLOの姿に近づけられた</h3> <p><b>── Q. 最近うまくいったことは何ですか?</b></p><p>Mackerelでは2019年にSLI/SLOの運用を始めました。それから4年ほどたち、現在のSLIが本当にユーザー体験を計測できているか疑問に感じたため、クリティカルユーザージャーニーという手法を用いて再編しました。</p><p>実装は今進めているところなのですが、よりユーザーの感覚に近い定義ができ、あるべきSLI/SLOの姿に近づけられました。他のSLI/SLOも同様の手法を用いて検討される流れができたのがよかったです。</p><p>SLIの再編の詳細については、2023年12月に開催した「Mackerel Meetup #15 Tokyo」で発表しました。</p><p><iframe id="talk_frame_1123643" class="speakerdeck-iframe" src="//speakerdeck.com/player/e5af2e7c6a954e11a089547994e9d8e9" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/heleeen/slo-critical-user-journey">speakerdeck.com</a></cite><br /> <a href="https://mackerel.io/ja/blog/entry/meetup15-report"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fmackerel.io%2Fja%2Fblog%2Fentry%2Fmeetup15-report" alt="" class="http-favicon" /></a><a href="https://mackerel.io/ja/blog/entry/meetup15-report">&#x3010;&#x958B;&#x50AC;&#x30EC;&#x30DD;&#x30FC;&#x30C8;&#x3011;&#x30C1;&#x30FC;&#x30E0;&#x3068;&#x30B3;&#x30DF;&#x30E5;&#x30CB;&#x30C6;&#x30A3;&#x3067;&#x76E3;&#x8996;&#x3092;&#x80B2;&#x3066;&#x308B; &#x301C;Mackerel Meetup #15 Tokyo&#x3092;&#x958B;&#x50AC;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Mackerel &#x304A;&#x77E5;&#x3089;&#x305B; #mackerelio</a><a href="https://b.hatena.ne.jp/entry/https://mackerel.io/ja/blog/entry/meetup15-report" class="http-bookmark"><img src="https://b.hatena.ne.jp/entry/image/https://mackerel.io/ja/blog/entry/meetup15-report" alt="" class="http-bookmark" /></a></p><p><b>── Q. 最近うまくいっていないと感じることは何ですか?</b></p><p>人材育成について思い悩むことがあります。例えば、新しく加わったSREがどうすれば自立して仕事やアラート調査ができるようになるか、SREだけではなくアプリケーションエンジニアも含めて、障害発生時の対応をどのように会得してもらうかなどがあります。自分がいつの間にかできるようになっていたことを他人ができるようにするって難しいですね……。</p><p>ドキュメントを充実させたり、講習を行ったりといった施策も実施しているのですが、自動化や仕組み化して人間が自然と導かれる形にできれば一番いいなと思っています。</p> </div> <div class="section"> <h3 id="現状を改善したい気持ちを常に持つ">現状を改善したい気持ちを常に持つ</h3> <p><b>── Q. 普段大切にしていることは何ですか?</b></p><p>現状に甘んじることなく変わり続けることです。</p><p>かつてMackerelでは、リリース作業の負担の重さなどを理由に本番リリースを週2回行っていたのですが、リリースフローを変更して負担を減らすことで毎日リリースを行うようにしました。フローを変えるだけではなく頻度も上げたのは、それだけでは開発者にもユーザーにも体験の変化が弱いと感じていたためです。</p><p>毎日リリースを行えるほどにサービスの安定性が高いのでできたことではありますが、次に本番リリースがいつあるかを意識しなくてよくなったという気持ちの変化も起きました。飽き性でめんどくさがりというのも影響しているかもしれないですね。</p><p>これはうまくいった例であり、残念ながら多忙で手が回りきらないところもあって歯がゆい思いもしているのですが……現状を改善したい気持ちは常に持っています。</p> </div> <div class="section"> <h3 id="社内に限らず他者へのリスペクトが強い人が多い">社内に限らず「他者へのリスペクト」が強い人が多い</h3> <p><b>── Q. はてなはどんな会社ですか?</b></p><p>社内の人々だけではなく、社外の開発者やお客さまに対するものも含めて、他者へのリスペクトが強い人が多いと感じています。 </p><p>例えば何かの課題に対して提案があったときに、背景や目的も含めてしっかりと耳を傾けて理解しようとし、もし仮に提示された計画があまり適さないものであった場合は、よりよい改善策があるかをお互い納得できるまでディスカッションする様子もあります。</p><p>他にも、チームでは採用していない技術や個人的な目標に真剣に取り組んでいる人を影から応援したり見守ったりしているのも、相手の意志を重んじていることが背景にあると考えています。</p><p>デイリースクラムでの提案やふとした思いつきを日常的に言えているのは、そういった他人を無下にしない環境の影響もありそうですね。そういう面で、開発者にとっての居心地の良さのレベルがとても高いと思っています。</p><p><hr></p><p>はてなのSREは、サービス開発の中で、システムの設計から構築、運用をリードし、サービスの信頼性と開発速度を両立する仕事です。サービスに求められる信頼性を定義し、チームでサービスを運用していく中での道標となる仲間を募集しています。ご連絡をお待ちしております!</p><p>▼ <a href="https://hatenacorp.jp/recruit/career/sre">SRE&#xFF08;Site Reliability Engineer&#xFF09;&#x8077; &#x8EE2;&#x8077;&#x30FB;&#x4E2D;&#x9014; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a><br><br /> ▼ <a href="https://hatenacorp.jp/recruit/fresh/sre">SRE&#xFF08;Site Reliability Engineer&#xFF09;&#x8077;&#x306E;&#x65B0;&#x5352;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p><p><a href="https://hatenacorp.jp/recruit/career/sre" target="_blank" border="0" width="100%"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240131/20240131093005.png" alt="はてなでは、サービス開発の道標となるSREの仲間を募集しています" title="はてなでは、サービス開発の道標となるSREの仲間を募集しています"></p> </div> hatenatech はてなブログでの情報漏洩に備えてセキュリティインシデント対応演習を実施しました hatenablog://entry/6801883189073647420 2024-01-30T17:57:17+09:00 2024-01-30T17:57:43+09:00 こんにちは、Webアプリケーションエンジニアのid:Furutsukiです。普段は、はてなブログチームにいます。 はてなブログチームではセキュリティインシデント対応演習を実施しました。演習の実施にあたって何を準備しどのように実施したかを紹介します。 ひとくちにセキュリティインシデントへの対応といっても様々なケースが考えられますが、今回実施したのははてなブログが情報の漏洩元になってしまった場合にサービスの開発・運用チームとしてどうすればよいかを確認する演習です。 当然、全社的に情報漏洩に対する備えとして、もし何かあったらこう動きましょうというフローは用意されているので、それに対してチームとしてよ… <p>こんにちは、Webアプリケーションエンジニアの<a href="http://blog.hatena.ne.jp/Furutsuki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Furutsuki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Furutsuki</a>です。普段は、はてなブログチームにいます。</p> <p>はてなブログチームではセキュリティインシデント対応演習を実施しました。演習の実施にあたって何を準備しどのように実施したかを紹介します。</p> <p>ひとくちにセキュリティインシデントへの対応といっても様々なケースが考えられますが、今回実施したのははてなブログが情報の漏洩元になってしまった場合にサービスの開発・運用チームとしてどうすればよいかを確認する演習です。</p> <p>当然、全社的に情報漏洩に対する備えとして、もし何かあったらこう動きましょうというフローは用意されているので、それに対してチームとしてより具体的なアクションに落とし込み、フローを整理したりするところまで備えるため、演習を行うことにしました。</p> <ul class="table-of-contents"> <li><a href="#セキュリティインシデント対応マニュアルの準備">セキュリティインシデント対応マニュアルの準備</a></li> <li><a href="#演習のシナリオ準備">演習のシナリオ準備</a></li> <li><a href="#机上演習形式で演習を実施">机上演習形式で演習を実施</a></li> <li><a href="#演習のふりかえり">演習のふりかえり</a></li> <li><a href="#まとめ">まとめ</a></li> </ul> <h2 id="セキュリティインシデント対応マニュアルの準備">セキュリティインシデント対応マニュアルの準備</h2> <p>世間ではタスクフォースなどと呼ばれる事がある概念だと思いますが、障害やセキュリティインシデントの発生時はその問題に対処する即席のチームを組んで対応に当たると思います。はてなではこれを「フォーメーション」と呼んでいます。</p> <p>はてなブログチームとしても、セキュリティインシデントの発生時にはそのようなフォーメーションを組み、一丸となって対応に当たりたいと考えて、まずはそのためのマニュアルを準備しました。</p> <p>マニュアルにはセキュリティインシデント対応フォーメーションにおけるチームメンバーのロール(指揮官・書記・連絡役など)と、フォーメーションを組んでまずやることの指示(会場の準備やチーム外への連絡など)などを記述しました。続く演習ではこのマニュアルを見ながら対応の流れを確認し、いざというときにできるだけスムーズに対応できるようにするのが目的です。</p> <p><figure class="figure-image figure-image-fotolife" title="用意したセキュリティインシデント対応時のマニュアル(人物はすべてFurutsukiで置き換えています)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240130/20240130175724.png" width="1200" height="1036" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>用意したセキュリティインシデント対応時のマニュアル(人物はすべてFurutsukiで置き換えています)</figcaption></figure></p> <h2 id="演習のシナリオ準備">演習のシナリオ準備</h2> <p>演習を行うに当たって、どのようなインシデントが発生したことにするかを決めました。大枠としては「はてなブログのすべてのブログの公開設定が全公開になってしまった」のように発生したインシデントを決めて、その原因(今回はエンジニアのオペレーションミスということにしました)やそれにより考えられる影響を考えていきました。また、目的とシナリオをまとめてレビューを受けました。</p> <p>また、今回は演習の対象範囲ははてなブログの開発チームのみとしたので、インシデント対応時に関係することになるチーム外の人(コーポレート本部、CTOなど)の役割も必要でした。今回は適宜私がその役割を務めることにして、インシデント発生時にそれらの人がどのようなことをチームに要求するかを想像してメモを作成しました。メモの作成には全社的な対応フローやその立場の人に求められる役割を参考にしました。</p> <p>メモを作る作業を通して別の視点からチームのインシデント対応を眺めることで理解を深めることができたことは良かったです。一方、役割を演じる上で本当にそのような動きで良いかは確信が持てないままだったので、事前にその役割の人にヒアリングしたり作成したメモをレビューをしてもらっても良かったかも知れません。</p> <p><figure class="figure-image figure-image-fotolife" title="チーム外の人の役割を演じるためのメモ"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240130/20240130175732.png" width="1200" height="430" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>チーム外の人の役割を演じるためのメモ</figcaption></figure></p> <h2 id="机上演習形式で演習を実施">机上演習形式で演習を実施</h2> <p>演習に先立って参加者に対して対応のフローや当日のシナリオを告知しました。先にフローやシナリオを告知しておくことで、事前に「自分はこう動けば良いはずである」ということを参加者に考えてもらい、演習をスムーズにする目的がありました。</p> <p><figure class="figure-image figure-image-fotolife" title="セキュリティインシデント対応演習実施のお知らせ"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240130/20240130175719.png" width="1200" height="877" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>セキュリティインシデント対応演習実施のお知らせ</figcaption></figure></p> <p>これはGMOペパボさんのエントリにあった方法を参考にさせていただいています。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.pepabo.com%2F2019%2F03%2F04%2Fincident-training-for-lolipop%2F" title="ロリポップに対してインシデント訓練を行いました - Pepabo Tech Portal" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.pepabo.com/2019/03/04/incident-training-for-lolipop/">tech.pepabo.com</a></cite></p> <p>今回の演習はインシデントが起こったという体でやることを考え、手を動かす部分は宣言のみとする机上演習形式で行いました。フローを確認しながらだと机上演習でも時間がかかることが想定されたからです。その分、やるべきことの確認や判断のために時間を使えたと思います。</p> <p><figure class="figure-image figure-image-fotolife" title="演習の様子(一部)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240130/20240130175736.png" width="983" height="769" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>演習の様子(一部)</figcaption></figure></p> <h2 id="演習のふりかえり">演習のふりかえり</h2> <p>演習の終了後はふりかえりを行いました。演習用のScrapboxのページに「感想・ふりかえり」コーナーを準備しておいたら演習中に気がついたことなどをその場でどんどん書き込んでもらえたので、あとからそれを眺めて次へのアクションを決めました。おもに当日詰まった場所のフローの改善案などが集まり、当初の目的通りにセキュリティインシデント時の対応フローをより洗練させられたと思います。</p> <p><figure class="figure-image figure-image-fotolife" title="演習に寄せられた感想の一部(ユーザアイコンを一部置き換えています)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240130/20240130175728.png" width="1200" height="503" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>演習に寄せられた感想の一部(ユーザアイコンを一部置き換えています)</figcaption></figure></p> <p>また、演習の中でどこまで具体的に対応を考えるかが難しい、あまりに具体的に想像しすぎると細かいところにまで気を遣う必要があり、かえって演習の進行を妨げてしまわないか気になったという意見もありました。ここは準備側で温度感の周知ができていなかったということだと思うので次回以降は改善していきたいところです。</p> <h2 id="まとめ">まとめ</h2> <p>はてなブログチームで行ったセキュリティインシデント対応演習の準備と実施の様子を紹介しました。皆様の会社・チームでのセキュリティインシデント対応の参考になれば幸いです。また、うちではこうやっている、こんなシナリオを考えていますなどのコメントもお待ちしております。</p> Furutsuki はてなエンジニア Advent Calendar 2023往復しました! hatenablog://entry/6801883189076231081 2024-01-19T23:45:00+09:00 2024-01-19T23:48:08+09:00 これははてなエンジニア Advent Calendar 2023 - Hatena Developer Blog 50日目の記事です。 昨日は id:kouki_dan の iOSアプリ開発での写真ライブラリのアクセス方法と設定 - Lento con forza でした。 id:yutailang0119 です、誕生日のお祝いありがとうございます! はてなエンジニア Advent Calendar 2023は、去年に引き続き、期間を通常のアドベントカレンダーの2倍の50日として、開催しました。 本日が最終日です。 これまでのまとめ はてなエンジニア Advent Calendar 2022往… <p>これは<a href="https://developer.hatenastaff.com/advent-calendar-2023">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2023 - Hatena Developer Blog</a> 50日目の記事です。 <br /> 昨日は <a href="http://blog.hatena.ne.jp/kouki_dan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kouki_dan</a> の <a href="https://kouki.hatenadiary.com/entry/hatena-advent-calendar-2023-2">iOS&#x30A2;&#x30D7;&#x30EA;&#x958B;&#x767A;&#x3067;&#x306E;&#x5199;&#x771F;&#x30E9;&#x30A4;&#x30D6;&#x30E9;&#x30EA;&#x306E;&#x30A2;&#x30AF;&#x30BB;&#x30B9;&#x65B9;&#x6CD5;&#x3068;&#x8A2D;&#x5B9A; - Lento con forza</a> でした。 <br /> <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a> です、誕生日のお祝いありがとうございます! </p><p>はてなエンジニア Advent Calendar 2023は、去年に引き続き、期間を通常のアドベントカレンダーの2倍の50日として、開催しました。 <br /> 本日が最終日です。 </p><p>これまでのまとめ</p> <ul> <li><a href="https://developer.hatenastaff.com/entry/2023/01/19/210000">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2022&#x5F80;&#x5FA9;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Hatena Developer Blog</a></li> <li><a href="https://developer.hatenastaff.com/entry/2021/12/29/143958">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2021&#x5B8C;&#x8D70;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Hatena Developer Blog</a></li> <li><a href="https://developer.hatenastaff.com/entry/2020/12/29/090000">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2020&#x5B8C;&#x8D70;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Hatena Developer Blog</a></li> <li><a href="https://developer.hatenastaff.com/entry/2019/12/27/130000">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2019&#x5B8C;&#x8D70;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Hatena Developer Blog</a></li> <li><a href="https://developer.hatenastaff.com/entry/2018/12/28/180000">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2018&#x5B8C;&#x8D70;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Hatena Developer Blog</a></li> </ul> <div class="section"> <h3 id="Stats">Stats</h3> <p>数字で見る はてなエンジニア Advent Calendar 2023 </p> <div class="section"> <h4 id="記事数-50">記事数: 50</h4> <p>去年の50日開催が好評だったため、今年も50日開催として企画しました。 <br /> 無事に終えられて、アドベントカレンダー担当としてホッとしています! </p> </div> <div class="section"> <h4 id="ユニーク参加者数-46人">ユニーク参加者数: 46人</h4> <p>12/26以降、複数登録OKにしました。 <br /> 今回はユニーク参加者数が増え、話題のバラエティがより豊かになったように感じます! </p><p>複数投稿: 4人 <br /> <a href="http://blog.hatena.ne.jp/kouki_dan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kouki_dan</a> <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a> <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a> <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></p><p></p> </div> <div class="section"> <h4 id="初参加者-17人">初参加者: 17人</h4> <p>2016年からの社内集計によると、2023で初参加は17人でした。<br /> 今年入社メンバー以外に、在籍は長めだが、はてなエンジニア Advent Calendarには初参戦という人もいたようです。 </p><p>初参加者のみなさん<br /> <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a> <a href="http://blog.hatena.ne.jp/cateiru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cateiru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cateiru</a> <a href="http://blog.hatena.ne.jp/chaya2z/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/chaya2z/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:chaya2z</a> <a href="http://blog.hatena.ne.jp/fxwx23/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/fxwx23/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:fxwx23</a> <a href="http://blog.hatena.ne.jp/handat/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/handat/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:handat</a> <a href="http://blog.hatena.ne.jp/kk__777/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kk__777/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kk__777</a> <a href="http://blog.hatena.ne.jp/lufiabb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/lufiabb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:lufiabb</a> <a href="http://blog.hatena.ne.jp/magaming/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/magaming/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:magaming</a> <a href="http://blog.hatena.ne.jp/maiyama4/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maiyama4/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maiyama4</a> <a href="http://blog.hatena.ne.jp/mangano-ito/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mangano-ito/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mangano-ito</a> <a href="http://blog.hatena.ne.jp/mechairoi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mechairoi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mechairoi</a> <a href="http://blog.hatena.ne.jp/nakataki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nakataki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nakataki</a> <a href="http://blog.hatena.ne.jp/rmatsuoka/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rmatsuoka/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rmatsuoka</a> <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a> <a href="http://blog.hatena.ne.jp/tomato3713/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tomato3713/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tomato3713</a> <a href="http://blog.hatena.ne.jp/yohfee/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yohfee/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yohfee</a> <a href="http://blog.hatena.ne.jp/yunagi_n/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yunagi_n/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yunagi_n</a></p><p>※ <a href="http://blog.hatena.ne.jp/mechairoi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mechairoi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mechairoi</a> は、集計外の2014に登場していました。 <br /> <a href="https://blog.chairoi.me/entry/how-to-make-wikipedia">Wikipedia &#x306E;&#x4F5C;&#x308A;&#x65B9; / How to make Wikipedia - *iroi*</a></p><p></p> </div> <div class="section"> <h4 id="総ブックマーク-1278-users-20240119現在">総ブックマーク: 1278 users (2024/01/19現在)</h4> <p>例年に比べると、ブックマーク数の伸びは少し課題ですね。 <br /> まだ見ていないエントリがある方は、ぜひご覧いただき、気になった記事にはブックマーク、スターよろしくお願いします! </p> <div class="section"> <h5 id="最多ブックマーク-418-users-20240119現在">最多ブックマーク: 418 users (2024/01/19現在)</h5> <p>はてなエンジニア Advent Calendar 2023最多ブックマークは <a href="http://blog.hatena.ne.jp/pokutuna/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/pokutuna/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:pokutuna</a> の</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.pokutuna.com%2Fentry%2Foss-sightseeing-spots" title="OSS 観光名所を貼るスレ - ぽ靴な缶" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://blog.pokutuna.com/entry/oss-sightseeing-spots">blog.pokutuna.com</a></cite></p><p>でした! <br /> Node.js の HTTP ヘッダの小文字化は、なるほど〜となりました。<br /> ブコメなどで観光名所が集まってきたのもよかったですね。<br /> 社内でも各々の業務観光名所が盛り上がっていました!<br /> <br /> </p> </div> </div> </div> <div class="section"> <h3 id="感想戦">感想戦</h3> <p>ここからは各エントリにひとつづつコメントしていきます。<br /> 今回は <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a> <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a> <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a> <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a> の5人で、お送りします!</p> <ul> <li>12/01 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a> <a href="https://yutailang0119.hatenablog.com/entry/2023/12/01/000000">Vision&#x30D5;&#x30EC;&#x30FC;&#x30E0;&#x30EF;&#x30FC;&#x30AF;&#x3092;&#x6D3B;&#x7528;&#x3057;&#x305F;&#x732B;&#x306E;&#x30DD;&#x30FC;&#x30BA;&#x691C;&#x51FA; #&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x30A2;&#x30C9;&#x30D9;&#x30F3;&#x30C8;&#x30AB;&#x30EC;&#x30F3;&#x30C0;&#x30FC;2023 - &#x304C;&#x3093;&#x3070;&#x3063;&#x3066;&#x306A;&#x3093;&#x304B;&#x66F8;&#x304F;</a> <ul> <li>猫かわいくてうける……。しれっと座ってる猫の骨格が見えてしまうのに背徳感を感じますね。みがわり人形ほしい <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>12/02 <a href="http://blog.hatena.ne.jp/pokutuna/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/pokutuna/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:pokutuna</a> <a href="https://blog.pokutuna.com/entry/oss-sightseeing-spots">OSS &#x89B3;&#x5149;&#x540D;&#x6240;&#x3092;&#x8CBC;&#x308B;&#x30B9;&#x30EC; - &#x307D;&#x9774;&#x306A;&#x7F36;</a> <ul> <li>Advent Calendar開始早々めちゃくちゃ面白いエントリが上がって、後続で書くはてなスタッフとしてはプレッシャーを感じました。SNSからもたくさんのOSS観光名所が集まって最高の観光案内所ができましたね。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>12/03 <a href="http://blog.hatena.ne.jp/mechairoi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mechairoi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mechairoi</a> <a href="https://blog.chairoi.me/entry/sqlite-fts-lindera">SQLite&#x3067;Lindera&#x3092;&#x4F7F;&#x3063;&#x305F;&#x65E5;&#x672C;&#x8A9E;&#x5168;&#x6587;&#x691C;&#x7D22; - *iroi*</a> <ul> <li>いかにコストを削って実用的なことだったり面白いことをやれるかというのが個人開発のやり込み要素の一つだったりしますよね。実際に素早くインクリメンタルサーチができていてすごい! <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>12/04 <a href="http://blog.hatena.ne.jp/mizdra/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizdra/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizdra</a> <a href="https://www.mizdra.net/entry/2023/12/04/093000">ESLint &#x306E; Suggestions &#x304B;&#x3089;&#x5B66;&#x3076;&#x3001;&#x30B3;&#x30FC;&#x30C9;&#x306E;&#x81EA;&#x52D5;&#x4FEE;&#x6B63;&#x306E;&#x5965;&#x6DF1;&#x3055; - mizdra&#39;s blog</a> <ul> <li><a href="https://github.com/mizdra/eslint-interactive">eslint-interactive</a> を作っている <a href="http://blog.hatena.ne.jp/mizdra/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizdra/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizdra</a> さんから、Linter では自動修正を偽陽性があるのでしないようにしていることがある等の紹介でした。リスクを飲んで強制適用するのはあるあるですね。候補が複数あるものは認識していなかった <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>12/05 <a href="http://blog.hatena.ne.jp/maku693/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maku693/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maku693</a> <a href="https://maku693.hatenablog.jp/entry/2023/12/05/090000">&#x30B9;&#x30AF;&#x30E9;&#x30E0;&#x30C1;&#x30FC;&#x30E0;&#x306E;&#x30D7;&#x30ED;&#x30B8;&#x30A7;&#x30AF;&#x30C8;&#x7BA1;&#x7406;&#x306B;&#x306F;Jira&#x304C;&#x4FBF;&#x5229; - The Third Law</a> <ul> <li>はてな社内ではチーム毎にプロジェクト管理ツールに色があって、弊チームはAsanaを使っています。Jiraには苦手意識が少しだけありますが、ベロシティグラフがめちゃくちゃよさそうですね、興味が出てきた! <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>12/06 <a href="http://blog.hatena.ne.jp/tomato3713/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tomato3713/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tomato3713</a> <a href="https://tomato3713.hatenablog.com/entry/hatena-advent-calendar-day6">&#x7D44;&#x307F;&#x8FBC;&#x307F;&#x7528;&#x9014;&#x5411;&#x3051;&#x306E;Go&#x8A00;&#x8A9E;&#x306E;&#x30B5;&#x30D6;&#x30BB;&#x30C3;&#x30C8;TinyGo&#x306B;&#x3088;&#x308B;M5Stack Basic&#x306E;&#x5236;&#x5FA1;&#x3092;&#x8A66;&#x3059; - tomato3713&rsquo;s blog</a> <ul> <li>個人的に毎年物理的なデバイスに挑戦しようとして敗退してるのを思い出すね。親しい言語で書けるのいいな~。M5Stackほしい! <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>12/07 <a href="http://blog.hatena.ne.jp/chris4403/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/chris4403/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:chris4403</a> <a href="https://tech4403.hatenablog.com/entry/hatena-advent-calendar-day7">GAS x YouTube Data API v3 &#x3067;&#x306F;&#x3066;&#x30D6;&#x3067;&#x4EBA;&#x6C17;&#x306E;YouTube&#x52D5;&#x753B;&#x306E;&#x30D7;&#x30EC;&#x30A4;&#x30EA;&#x30B9;&#x30C8;&#x3092;&#x4F5C;&#x308B;&#x306E;&#x5DFB; - memo log</a> <ul> <li>社長となった今でもコードを書いてなんならちょっとしたサービスを作ってしまう <a href="http://blog.hatena.ne.jp/chris4403/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/chris4403/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:chris4403</a> さんによるGASの事例紹介でした。動的なWebサーバや定期バッチなどが簡単に作れる上、GoogleのサービスのAPIの認可もGASの画面上で完結しているのが魅力です。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>12/08 <a href="http://blog.hatena.ne.jp/kouki_dan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kouki_dan</a> <a href="https://kouki.hatenadiary.com/entry/hatena-advent-calendar-2023">iPad&#x3060;&#x3051;&#x3067;&#x30A2;&#x30D7;&#x30EA;&#x3092;&#x4F5C;&#x3063;&#x3066;&#x307F;&#x308B; - Lento con forza</a> <ul> <li>チュートリアルが充実していたり便利なことに挙げられている項目を見るとプログラミング初学者に最適そうですね。iOS/iPadOS と macOS がだんだんと近づいて行っているようにプログラミングの環境も統一されていくんでしょうか。これからも進化に期待。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>12/09 <a href="http://blog.hatena.ne.jp/cockscomb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cockscomb</a> <a href="https://cockscomb.hatenablog.com/entry/se-0413-typed-throws">Swift&#x306B;&#x304A;&#x3051;&#x308B;Typed throws&#x306E;&#x73FE;&#x5728; - cockscomblog?</a> <ul> <li><a href="https://kanmoba.connpass.com/event/300598/">&#x95A2;&#x897F;&#x30E2;&#x30D0;&#x30A4;&#x30EB;&#x30A2;&#x30D7;&#x30EA;&#x7814;&#x7A76;&#x4F1A;A #1 - connpass</a> でのトーク。エラーハンドリングモデルがどう変わるか、どう使うと良いか。歴史とともに紹介しています。 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>12/10 <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a> <a href="https://papix.hatenablog.com/entry/2023/12/10/120000">Perl&#x306E;&#xFF62;&#x5F8C;&#x7F6E;if&#xFF63;&#x306B;&#x3064;&#x3044;&#x3066; - Masteries</a> <ul> <li>「if文修飾子」の呼び名、おもしろい。言語の文化圏の違いを感じます。Rubyの後置if、unlessは多用してしまう派です。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>12/11 <a href="http://blog.hatena.ne.jp/ne-sachirou/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ne-sachirou/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ne-sachirou</a> <a href="https://c4se.hatenablog.com/entry/2023/12/12/031650">mob programming &#x3092;&#x7E8C;&#x3051;&#x3066;&#x307F;&#x305F; - c4se&#x8A18;&#xFF1A;&#x3055;&#x3063;&#x3061;&#x3083;&#x3093;&#x3067;&#x3059;&#x3088;&#x2606;</a> <ul> <li>これはモブプログラミングっていうか共同生活みがあっていいね。居間というネーミングが秀逸。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>12/12 <a href="http://blog.hatena.ne.jp/Windymelt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Windymelt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Windymelt</a> <a href="https://blog.3qe.us/entry/2023/12/12/193359">&#x30B7;&#x30F3;&#x30D7;&#x30EB;&#x3067;&#x4F7F;&#x3044;&#x3084;&#x3059;&#x3044;&#x30DE;&#x30A4;&#x30AF;&#x30ED;HTTP&#x30D5;&#x30EC;&#x30FC;&#x30E0;&#x30EF;&#x30FC;&#x30AF;&#x300E;Cask&#x300F;&#x3092;&#x7D39;&#x4ECB;&#x3059;&#x308B;&#x3088; - Lambda&#x30AB;&#x30AF;&#x30C6;&#x30EB;</a> <ul> <li>ScalaのHTTPフレームワークであるCaskの紹介でした。JavaScriptのWebフレームワークHonoと比較して、両者共通の特性について書かれていたのが印象的でした。何か良いものを見つける、良いものを良いと言うために、言語という縛りから解き放たれるのは大事なことかもしれません。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>12/13 <a href="http://blog.hatena.ne.jp/maiyama4/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maiyama4/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maiyama4</a> <a href="https://maiyama4.hatenablog.com/entry/2023/12/13/184702">iOS &#x30A2;&#x30D7;&#x30EA;&#x306E;&#x30DE;&#x30EB;&#x30C1;&#x30E2;&#x30B8;&#x30E5;&#x30FC;&#x30EB;&#x958B;&#x767A;&#x3068;&#x30A4;&#x30F3;&#x30BF;&#x30FC;&#x30D5;&#x30A7;&#x30FC;&#x30B9;&#x30E2;&#x30B8;&#x30E5;&#x30FC;&#x30EB; - maiyama log</a> <ul> <li>ミニマムな状態から順を追って説明されていてとてもわかりやすかったです。デメリットや判断基準などにも触れられていて今すぐ実践の参考にできそう。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>12/14 <a href="http://blog.hatena.ne.jp/koudenpa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/koudenpa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:koudenpa</a> <a href="https://koudenpa.hatenablog.com/entry/2023/12/14/000000">&#x30D7;&#x30E9;&#x30E2;&#x306E;&#x5199;&#x771F;&#x3092;&#x5149;&#x3089;&#x305B;&#x305F;&#x3044; x Blazor WebAssembly x OpenCV - koudenpa&#x306E;&#x30D6;&#x30ED;&#x30B0;</a> <ul> <li>画像のエッジ検出をして色を変える、という楽しみを OpenCV(WebAssenbly) と Blazor でやっている。技術選定先行の面白い遊びですね。趣味プログラミングの楽しみっぽい <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>12/15 <a href="http://blog.hatena.ne.jp/rokoucha/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rokoucha/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rokoucha</a> <a href="https://rokoucha.net/%E4%BD%95%E6%95%85%E5%83%95%E3%81%9F%E3%81%A1%E3%81%AF%20React%20%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%82%92%E5%88%86%E5%89%B2%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8B">&#x4F55;&#x6545;&#x50D5;&#x305F;&#x3061;&#x306F; React &#x306E;&#x30B3;&#x30F3;&#x30DD;&#x30FC;&#x30CD;&#x30F3;&#x30C8;&#x3092;&#x5206;&#x5272;&#x3059;&#x308B;&#x306E;&#x304B; - Rokoucha</a> <ul> <li>コンポーネント分割が挙動に差を生むのは、深く知らないと罠ですね<a href="#f-d0fa79c3" id="fn-d0fa79c3" name="fn-d0fa79c3" title="SwiftUIでもあります">*1</a>。影響度が大きい気がするので、チェックリストが必要かも。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>12/16 <a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a> <a href="https://qiita.com/NanimonoDaemon/items/26e075d20451bd2a00ae">Vite&#x3067;&#x4F7F;&#x3046;Rollup&#x30D7;&#x30E9;&#x30B0;&#x30A4;&#x30F3;&#x306E;&#x4F5C;&#x308A;&#x65B9;&#x3068;&#x4FBF;&#x5229;&#x306B;&#x4F7F;&#x3063;&#x3066;&#x3044;&#x308B;&#x81EA;&#x4F5C;&#x30D7;&#x30E9;&#x30B0;&#x30A4;&#x30F3;&#x306E;&#x89E3;&#x8AAC; #vite - Qiita</a> <ul> <li>ViteもRollupもちゃんと履修せずに使ってるけど以外と簡単にカスタマイズできるのいいな~。こういうのあるとやってみようという気になるね。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>12/17 <a href="http://blog.hatena.ne.jp/gurrium/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/gurrium/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:gurrium</a> <a href="https://giarrium.hatenablog.com/entry/2023/12/17/130000">private-isu&#x3067;70&#x4E07;&#x70B9;&#x53D6;&#x308B;&#x305F;&#x3081;&#x306B;&#x3084;&#x3063;&#x305F;&#x3053;&#x3068; - &#x305C;&#x306E;&#x305C;</a> <ul> <li>毎日上がっていく目標を達成させてブログを書くのを継続する一人ISUCON+Blogathonというストイックな企画でした。2日目から目標を大きく上回るスコアを出してこの後どうなるかな〜と眺めていたのですが、最後には100万点叩き出してめでたい。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>12/18 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a> <a href="https://onk.hatenablog.jp/entry/2023/12/18/000000">&#x300C;&#x30AD;&#x30E3;&#x30C3;&#x30B7;&#x30E5;&#x306F;&#x9EBB;&#x85AC;&#x300D;&#x3068;&#x3044;&#x3046;&#x6A19;&#x8A9E;&#x304B;&#x3089;&#x306E;&#x8131;&#x5374; - id:onk &#x306E;&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;</a> <ul> <li>様々なパターンが網羅されていて教科書的に都度読み直したくなるエントリ!キャッチーな言葉に引っ張られずに適切な設計を行いたいですね。YAPCのトークも楽しみです。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>12/19 <a href="http://blog.hatena.ne.jp/tokizuoh/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tokizuoh</a> <a href="https://tokizuoh.hatenablog.com/entry/2023/12/19/000219">&#x5C0F;&#x7C92;&#x306A; Tips &#x306E;&#x5171;&#x6709;&#x3092;&#x3057;&#x3066;&#x3044;&#x304D;&#x305F;&#x3044;: 2023&#x5E74;&#x306B;&#x30E1;&#x30E2;&#x3057;&#x305F; iOS &#x30A2;&#x30D7;&#x30EA;&#x958B;&#x767A; Tips 3&#x9078; - &#x30AB;&#x30EB;&#x30DC;&#x30CA;&#x30FC;&#x30E9;&#x8857;&#x9053;</a> <ul> <li>小粒な Tips いいですね!私もペア/モブ作業時に「えっ、今何やったの!?」ってよく聞きます。 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>12/20 <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a> <a href="https://onishi.hatenablog.com/entry/2023/12/20/122021">&#x30B7;&#x30E7;&#x30FC;&#x30C8;&#x30AB;&#x30C3;&#x30C8;.app &#x3067;&#x904A;&#x3076; - &#x5927;&#x897F;&#x30D6;&#x30ED;&#x30B0;</a> <ul> <li>Automatorは試行錯誤してたんですが、ショートカット.appはmacOSだと活用できていないので、便利グッズを共有し合いたい! <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>12/21 <a href="http://blog.hatena.ne.jp/utgwkk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/utgwkk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:utgwkk</a> <a href="https://blog.utgw.net/entry/2023/12/21/142111">&#x77E5;&#x898B;&#x304C;&#x3069;&#x3093;&#x3069;&#x3093;&#x96C6;&#x307E;&#x3063;&#x3066;&#x304F;&#x308B;&#x3068;&#x3053;&#x308D;&#x304C;&#x898B;&#x305F;&#x301C;&#x3044; - &#x79C1;&#x304C;&#x6B4C;&#x5DDD;&#x3067;&#x3059;</a> <ul> <li>自分からどんどん社内に(も)共有してくれてるので本当に知見が集まっている。また近々企画してくれた社内勉強会が開催されますね! <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>12/22 <a href="http://blog.hatena.ne.jp/cateiru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cateiru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cateiru</a> <a href="https://blog.cateiru.com/entry/2023/12/22/000000">&#x51FA;&#x793E;&#x3067;&#x304D;&#x3066;&#x5049;&#x3044;&#x30DC;&#x30BF;&#x30F3;&#x3092;&#x4F5C;&#x3063;&#x305F; - blog.cateiru.com</a> <ul> <li>自分が学生時代に、授業に出たらSNSに投稿するアプリを作って出席モチベを高めていたのを思い出しました。(なお現実は……。)アイデアを思いついてから4時間でサービスとして完成するスピード感がすごい。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>12/23 <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a> <a href="https://blog.mudatobunka.org/entry/2023/12/23/080000">Perl &#x3068; Rust - &#x7121;&#x99C4;&#x3068;&#x6587;&#x5316;</a> <ul> <li>対照的な2つの言語を学ばれていてその対比からの学びがより深いものになっていそうで面白いですね。ちなみに私は Perl が母語で hackable なところも大好きです。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>12/24 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> <a href="https://motemen.hatenablog.com/entry/2023/12/25/013847">Angband&#xFF08;4.x&#x7CFB;&#xFF09;&#x3092;&#x65E5;&#x672C;&#x8A9E;&#x5316;&#x3057;&#x3066;&#x3044;&#x308B;&#x8A71; - &#x8A69;&#x3068;&#x5275;&#x4F5C;&#x30FB;&#x601D;&#x7D22;&#x306E;&#x3072;&#x308D;&#x3070;</a> <ul> <li>今回の記事とは関係ないけど、「motemen 変愚蛮怒」で検索して 17 年前のリポジトリを見つけました (<a href="https://github.com/motemen/hengband-lua">motemen/hengband-lua</a>)。本当に昔から *band 系やってるんだなぁ <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>12/25 <a href="http://blog.hatena.ne.jp/d-haru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/d-haru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:d-haru</a> <a href="https://developer.hatenastaff.com/entry/2023/12/25/081148">&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;&#x304B;&#x3089; OSS blogsync &#x3078;&#x306E;&#x5BC4;&#x4ED8;&#x306E;&#x3054;&#x5831;&#x544A;&#x3068;&#x300C;HatenaBlog Workflows Boilerplate&#x300D;&#x3067;&#x306E;GitHub Workflow &#x306E;&#x4ED5;&#x7D44;&#x307F;&#x3068;&#x5DE5;&#x592B; - Hatena Developer Blog</a> <ul> <li>Hatena Developer Blogも<a href="https://github.com/hatena/Hatena-Blog-Workflows-Boilerplate">HatenaBlog Workflows Boilerplate</a>の使用が広がっています!Template RepositoryからReusable workflowを参照して、変更に追従できる形にしておくのはかしこい。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>12/26 <a href="http://blog.hatena.ne.jp/masayosu/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/masayosu/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:masayosu</a> <a href="https://masayosu.hatenablog.com/entry/2023/12/26/094500">EKS Pod Identity &#x3092;&#x6D3B;&#x7528;&#x3059;&#x308B;&#x30E1;&#x30EA;&#x30C3;&#x30C8; - masayosu&rsquo;s blog</a> <ul> <li>マニフェストにARN書かなくてよくなるの生活が改善している! 丁寧に書いてあってフォローしやすくていいね。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>12/27 <a href="http://blog.hatena.ne.jp/chaya2z/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/chaya2z/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:chaya2z</a> <a href="https://chaya2z.hatenablog.jp/entry/2023/12/27/000000">Linux&#x30AB;&#x30FC;&#x30CD;&#x30EB;&#x306E;&#x8D64;&#x9ED2;&#x6728;&#x306E;&#x304A;&#x3082;&#x3057;&#x308D;&#x3044;&#x6700;&#x9069;&#x5316; - &#x758E;&#x5916;&#x91CD;&#x6574;</a> <ul> <li>単純な平衡二分木の話かと思ったら、さすがLinuxカーネルの中ということで、頑張ってメモリを節約したりメジャーではないCPUアーキテクチャのことを考えたりと興味深いコードが紹介されていました。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>12/28 <a href="http://blog.hatena.ne.jp/SlashNephy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/SlashNephy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:SlashNephy</a> <a href="https://blog.starry.blue/entry/2023/12/28/100000">&#x304A;&#x3046;&#x3061; Kubernetes &#x30AF;&#x30E9;&#x30B9;&#x30BF;&#x904B;&#x7528;&#x8A18; ~2023~ - Avoid a void</a> <ul> <li>おうちクラスタ勢だ!実際に運用していく中で課題を解決したりエコシステムに触れたりすると、座学で学ぶよりもよく身につきそうですよいですね。k8s のエコシステムが充実していそうなのも垣間見れました。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>12/29 <a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a> <a href="https://developer.hatenastaff.com/entry/2023/12/29/110000">&#x306F;&#x3066;&#x306A;&#x30D6;&#x30C3;&#x30AF;&#x30DE;&#x30FC;&#x30AF;&#x306E;&#x30B9;&#x30C6;&#x30FC;&#x30B8;&#x30F3;&#x30B0;&#x74B0;&#x5883;&#x3092;&#x652F;&#x3048;&#x308B;&#x6280;&#x8853; - Hatena Developer Blog</a> <ul> <li>DB を毎日立てたり潰したりする話で十分面白いのに、ECSのデプロイ周りの工夫が付いてきてお得度が高い <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>12/30 <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a> <a href="https://blog.stenyan.jp/entry/2023/12/29/115336">&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x30EA;&#x30F3;&#x30B0;&#x30DE;&#x30CD;&#x30FC;&#x30B8;&#x30E3;&#x30FC;&#x306E;4&#x9818;&#x57DF;&#x306F;EM&#x4EE5;&#x5916;&#x306E;&#x30E1;&#x30F3;&#x30D0;&#x30FC;&#x3067;&#x3082;&#x6FC3;&#x6DE1;&#x306F;&#x3042;&#x308C;&#x3069;&#x610F;&#x8B58;&#x3059;&#x308B;&#x5FC5;&#x8981;&#x304C;&#x3042;&#x308B; - stefafafan &#x306E; fa &#x306F;3&#x3064;&#x3067;&#x3059;</a> <ul> <li>テックリードとしてスクラムマスターと二人三脚をしていたこともあったので、自分も「テックリードやスクラムマスターと領域が被る部分がある」に同意します!今はICとして扱ってもらっていますが、そんな中でも「人を動かす」は重要なテーマの一つですね。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>12/31 <a href="http://blog.hatena.ne.jp/tkzwtks/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tkzwtks</a> <a href="https://blog.tkzwtks.net/entry/2023/12/31/100000">&#x53E4;&#x3044;&#x30B3;&#x30FC;&#x30C9;&#x306B;&#x5411;&#x304D;&#x5408;&#x3044;&#x3001;&#x672A;&#x6765;&#x306B;&#x4F55;&#x3092;&#x907A;&#x3059;&#x304B; - &#x305F;&#x304D;&#x3056;&#x308F;&#x306E;&#x65E5;&#x8A18;</a> <ul> <li>すばらしい年末の挨拶。10年後の2034年もよろしくおねがいします。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>1/1 <a href="http://blog.hatena.ne.jp/nakataki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nakataki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nakataki</a> <a href="https://nakataki.hatenablog.com/entry/2024/01/01/225018">1904&#x5E74;&#x306B;&#x306A;&#x308A;&#x307E;&#x3057;&#x305F;(dayjs&#x3067;&#x306E;&#x5E74;&#x5165;&#x529B;&#x306E;&#x8A71;) - nakataki&#x306E;&#x65E5;&#x8A18;</a> <ul> <li>元日に相応しいネタを掴みのあるタイトルで持ってきたのが流石だなあと思いました。input[type=""date""]のような特化したフォーム要素はブラウザがリッチなUIをデフォルトで提供してくれる一方、JSでアレコレ頑張ろうとするのと衝突することがあり難しいですね。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>1/2 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a> <a href="https://onk.hatenablog.jp/entry/2024/01/02/173000">&#x5909;&#x5316;&#x30D0;&#x30B8;&#x30A7;&#x30C3;&#x30C8;&#x3068;&#x3044;&#x3046;&#x8003;&#x3048;&#x65B9; - id:onk &#x306E;&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;</a> <ul> <li>私がCREチームに異動したての頃に <a href="https://developer.hatenastaff.com/entry/2018/04/04/111410">&#x300C;&#x696D;&#x52D9;&#x30FB;&#x958B;&#x767A;&#x30D5;&#x30ED;&#x30FC;&#x306F;&#x300C;&#x5909;&#x3048;&#x308B;&#x3053;&#x3068;&#x306F;&#x7121;&#x6761;&#x4EF6;&#x306B;&#x6B63;&#x3057;&#x3044;&#x300D;&#x304F;&#x3089;&#x3044;&#x306B;&#x601D;&#x3063;&#x3066;&#x826F;&#x3044;&#x3068;&#x601D;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x300D;</a>という言葉を引用して「改善は常に善という感じでやっていきましょう」と呼びかけた時の議論の中でも変化バジェットの話題が出ました。変化に適応するための筋力を鍛えていきたいですね💪 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>1/3 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a> <a href="https://blog.kga.gg/entry/2024/01/19/020634">CRE&#x306B;&#x306A;&#x3063;&#x3066;&#x5F97;&#x305F;&#x3088;&#x308D;&#x3053;&#x3073; - &#x53E3;&#x304B;&#x3089;&#x51FA;&#x307E;&#x304B;&#x305B;</a> <ul> <li>転身してどう変わったかを聞いてみたかったので読めて嬉しい。輪郭を明確にするのはアプリケーション開発をしていても同じですね。対象が変化していそう。 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>1/4 <a href="http://blog.hatena.ne.jp/ikesyo/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ikesyo</a> <a href="https://ikesyo.hatenablog.com/entry/github-actions-managed-runners">GitHub Actions&#x306E;&#x30B5;&#x30FC;&#x30C9;&#x30D1;&#x30FC;&#x30C6;&#x30A3;&#x30FC;&#x30DE;&#x30CD;&#x30FC;&#x30B8;&#x30C9;&#x30E9;&#x30F3;&#x30CA;&#x30FC;&#x306E;&#x7D39;&#x4ECB; - &#x3044;&#x3051;&#x3060;&#x3084;&#x6280;&#x8853;&#x30CE;&#x30FC;&#x30C8;</a> <ul> <li>GitHub Actionsが登場した当初は、まさかマネージドランナー戦国時代がやってくることは予想できませんでした。プロダクトや環境に合ったものを選択するのは、なかなかに骨が折れますね。契約面を除けば、導入が楽なのは救いです。 `buildjet/cache` が楽で便利。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>1/5 <a href="http://blog.hatena.ne.jp/rmatsuoka/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rmatsuoka/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rmatsuoka</a> <a href="https://blog.rmatsuoka.org/entry/2024/01/05/174223">Mackerel &#x3092;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x30B7;&#x30B9;&#x30C6;&#x30E0;&#x306B;&#x3057;&#x305F; - Unengineered Weblog</a> <ul> <li>タイトルだけでおおっと思わされる。おもしろ技術って感じで好き。割と使いやすそうなのもいいなー。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>1/6 <a href="http://blog.hatena.ne.jp/yunagi_n/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yunagi_n/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yunagi_n</a> <a href="https://www.natsuneko.blog/entry/2024/01/06/make-your-own-browser-extensions-in-2024">Google Chrome &#x62E1;&#x5F35;&#x6A5F;&#x80FD; / Firefox &#x30A2;&#x30C9;&#x30AA;&#x30F3;&#x4F5C;&#x6210;&#x30DC;&#x30A4;&#x30E9;&#x30FC;&#x30D7;&#x30EC;&#x30FC;&#x30C8; 2024 | &#x306A;&#x3064;&#x306D;&#x3053;&#x30E1;&#x30E2;</a> <ul> <li>僕はこれまでブラウザ拡張を作ったことがないのですが、この記事で紹介されているように必要なものが一通り揃ったボイラープレートがあると、自分のアイデアを実現させるのに集中してモノづくりができそうだなと感じました。create-react-appにも長年お世話になったものです。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>1/7 <a href="http://blog.hatena.ne.jp/handat/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/handat/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:handat</a> <a href="https://handat.hatenablog.com/entry/public-repo-alert">GitHub&#x3067;&#x30D1;&#x30D6;&#x30EA;&#x30C3;&#x30AF;&#x30EA;&#x30DD;&#x30B8;&#x30C8;&#x30EA;&#x3078;&#x306E;&#x8AA4;&#x6295;&#x7A3F;&#x3092;&#x9632;&#x3050;&#x62E1;&#x5F35;&#x6A5F;&#x80FD;&#x300C;GitHub Public Repo Alert&#x300D;&#x306E;&#x7D39;&#x4ECB; - handat&#x306E;dat&#x30D5;&#x30A1;&#x30A4;&#x30EB;</a> <ul> <li>同じインシデントを繰り返さないように「頑張って気をつける」ではなくて技術で解決しているところがよいエンジニア仕草だなと感じます。拡張機能を作るためのエコシステムも年々進化していて便利そう。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>1/8 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a> <a href="https://blog.arthur1.dev/entry/2024/01/08/195315">Advent Calendar&#x3092;25&#x65E5;&#x5206;&#x7D9A;&#x3051;&#x308B;&#x6280;&#x8853;&#x3001;&#x3042;&#x308B;&#x3044;&#x306F;&#x7269;&#x3092;&#x767A;&#x660E;&#x3057;&#x7D20;&#x65E9;&#x304F;&#x4F5C;&#x308B;&#x6280;&#x8853; - Diary of a Perpetual Student</a> <ul> <li>ものづくりを楽しんでいて何よりです。新しく遊ぶときに、知ってる/学びたい技術の割合はバランス良く決めないとエターナるので気をつけて。 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>1/9 <a href="http://blog.hatena.ne.jp/magaming/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/magaming/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:magaming</a> <a href="https://magaming.hatenablog.com/entry/2024/01/09/125554">&#x30EA;&#x30E2;&#x30FC;&#x30C8;&#x30EF;&#x30FC;&#x30AF;&#x3067;&#x9000;&#x52E4;&#x5F8C;&#x306B;&#x30C6;&#x30F3;&#x30B7;&#x30E7;&#x30F3;&#x3092;&#x4E0A;&#x3052;&#x308B;&#x305F;&#x3081;&#x306E;&#x6280;&#x8853; - magaming&#x306E;&#x30D6;&#x30ED;&#x30B0;</a> <ul> <li>最高です「> 実際には Get Wild を流しています。」USB接続可能なミラーボールがここ需要でいいですね。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>1/10 <a href="http://blog.hatena.ne.jp/lufiabb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/lufiabb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:lufiabb</a> <a href="https://mackerel.io/ja/blog/entry/2024/01/10/162149">Mackerel&#x306E;&#x30E9;&#x30D9;&#x30EB;&#x4ED8;&#x304D;&#x30E1;&#x30C8;&#x30EA;&#x30C3;&#x30AF;&#x5B9F;&#x88C5;&#x3067;ent&#x3092;&#x4F7F;&#x3063;&#x3066;&#x30B9;&#x30AD;&#x30FC;&#x30DE;&#x3092;&#x66F8;&#x3044;&#x3066;&#x307F;&#x305F;&#x8A71; - Mackerel &#x304A;&#x77E5;&#x3089;&#x305B; #mackerelio</a> <ul> <li>ent便利そうながらまだ手が出せてない。idは実用上困ることがありそうなので、そこに触れられてるのはありがたい。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>1/11 <a href="http://blog.hatena.ne.jp/yohfee/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yohfee/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yohfee</a> <a href="https://yohfee.hatenadiary.org/entry/2024/01/11/000349">Mackerel DSL&#x3092;&#x4F5C;&#x308D;&#x3046; - @yohfee.blog!</a> <ul> <li>構造化データが表現できるだけでなく、F#としてそのまま実行可能なDSLを作ったという話でした。こういった概念に初めて触れたのですが、Scalaも元の言語にするのに向いていそうと感じました。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>1/12 <a href="http://blog.hatena.ne.jp/mangano-ito/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mangano-ito/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mangano-ito</a> <a href="https://mangano-ito.hatenablog.com/entry/2024/01/12/000229">Wear OS &#x30B9;&#x30DE;&#x30A6;&#x30A9;&#x3067;&#x30B9;&#x30DE;&#x30DB;&#x3068;&#x9023;&#x643A;&#x3059;&#x308B;&#x5358;&#x8A9E;&#x5E33;&#x30A2;&#x30D7;&#x30EA;&#x3092;&#x3064;&#x304F;&#x3063;&#x3066;&#x307F;&#x3088;&#x3046; - &#x30DE;&#x30F3;&#x30AC;&#x301C;&#x30CE;&#x4F0A;&#x85E4;&#x30CE;&#x301C;&#x30C8;</a> <ul> <li>単語帳アプリというのがいい題材だなと思いました。ランダムに通知が来て答えさせられたりすると面白そう! <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>1/13 <a href="http://blog.hatena.ne.jp/kk__777/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kk__777/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kk__777</a> <a href="https://qiita.com/kk__777/items/a4f924ee9a2a2a16aa53">Notion&#x306E;&#x30E1;&#x30E2;&#x3092;&#x3082;&#x3068;&#x306B;&#x8A18;&#x4E8B;&#x3092;&#x4F5C;&#x3089;&#x305B;&#x3066;&#x6295;&#x7A3F;&#x3057;&#x3066;&#x307F;&#x308B; #Kotlin - Qiita</a> <ul> <li>API を叩いて Notion -> Qiita に自動投稿かーと思ったら、メモから記事に仕立て上げるところは OpenAI だった。面白 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>1/14 <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a> <a href="https://papix.hatenablog.com/entry/2024/01/15/015553">&#x79C1;&#x3068;YAPC::Japan&#x3068;&#x3010;&#xFF62;YAPC::Hiroshima 2024 &#x975E;&#x516C;&#x5F0F;&#x4E88;&#x7FD2;&#x4F1A;&#xFF63;&#x5BA3;&#x4F1D;&#x8A18;&#x4E8B;&#x3011; - Masteries</a> <ul> <li>自分のカンファレンス運営経験も<a href="https://pycon.jp/2016">PyCon 2016</a>からだし、<a href="https://www.tryswift.co/events/2020/tokyo/jp/">try! Swift Tokyo 2020&#x306E;&#x30AD;&#x30E3;&#x30F3;&#x30BB;&#x30EB;</a>もあって、シンパシーを感じます!<a href="https://yapcasia.org/2015/">YAPC::Asia 2015</a>にだけしか参加経験がないので、YAPCそろそろ行くべきな気がしてきた。 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> <li>1/15 <a href="http://blog.hatena.ne.jp/fxwx23/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/fxwx23/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:fxwx23</a> <a href="https://fxwx23.hatenablog.com/entry/2024/01/16/000006">Simulator.app &#x306E;&#x300C;Stay On Top&#x300D;&#x3092;&#x30AD;&#x30FC;&#x30DC;&#x30FC;&#x30C9;&#x30B7;&#x30E7;&#x30FC;&#x30C8;&#x30AB;&#x30C3;&#x30C8;&#x3067;&#x5207;&#x308A;&#x66FF;&#x3048;&#x308B; - 23&#x306E;&#x30D6;&#x30ED;&#x30B0;</a> <ul> <li>これSimulator.app以外でも使えるテクだね!できるだけマウスつかいたくない勢としてはな……。 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></li> </ul></li> <li>1/16 <a href="http://blog.hatena.ne.jp/miki_bene/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/miki_bene/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:miki_bene</a> <a href="https://benevolent0505.hatenablog.com/entry/2024/01/16/170000">Emacs Lisp&#x3067;&#x611F;&#x3058;&#x305F;&#x66F8;&#x304D;&#x6563;&#x3089;&#x3059;&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30DF;&#x30F3;&#x30B0;&#x4F53;&#x9A13; - &#x30C9;&#x30AD;&#x30E5;&#x30E1;&#x30F3;&#x30C8;&#x3092;&#x898B;&#x305F;&#x307B;&#x3046;&#x304C;&#x65E9;&#x3044;</a> <ul> <li>エディタ上でカーソルを当ててコード片を簡単に実行できるのはLispの言語特性が生きていそうで面白いと思いました。個人的にはEmacsよりvim派(リズミカルに左手で操作するのが苦手なため)なのですがEmacsは設定ファイルをLispで書くというのも驚き。 <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a></li> </ul></li> <li>1/17 <a href="http://blog.hatena.ne.jp/hagihala/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/hagihala/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:hagihala</a> <a href="https://developer.hatenastaff.com/entry/2024/01/19/164530">&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;&#x306E; DB &#x3092; RDS for MySQL 8.0 &#x306B;&#x30A2;&#x30C3;&#x30D7;&#x30B0;&#x30EC;&#x30FC;&#x30C9;&#x3057;&#x305F;&#x8A71; - Hatena Developer Blog</a> <ul> <li>生きた知見の宝庫エントリですごい。以前ブログの MySQL バージョンアップに関わったことがありますが、その時よりも停止時間が短縮されていたり、全停止ではなくリードオンリーで読めるようになっていたりと、メンテナンス自体が改善され続けているのを感じます。 <a href="http://blog.hatena.ne.jp/KGA/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/KGA/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:KGA</a></li> </ul></li> <li>1/18 <a href="http://blog.hatena.ne.jp/kouki_dan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kouki_dan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kouki_dan</a> <a href="https://kouki.hatenadiary.com/entry/hatena-advent-calendar-2023-2">iOS&#x30A2;&#x30D7;&#x30EA;&#x958B;&#x767A;&#x3067;&#x306E;&#x5199;&#x771F;&#x30E9;&#x30A4;&#x30D6;&#x30E9;&#x30EA;&#x306E;&#x30A2;&#x30AF;&#x30BB;&#x30B9;&#x65B9;&#x6CD5;&#x3068;&#x8A2D;&#x5B9A; - Lento con forza</a> <ul> <li>僕は普段 Android なので実感は無かったですが、Web も同種の制限があるので楽しく読みました。最新 OS はちゃんと進化してますねー。 <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a></li> </ul></li> <li>1/19 <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a> <a href="https://developer.hatenastaff.com/entry/engineer-advent-calendar-2024-summary">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2023&#x5F80;&#x5FA9;&#x3057;&#x307E;&#x3057;&#x305F;&#xFF01; - Hatena Developer Blog</a> <ul> <li>ブログをもって感想と代えさせていただきます! <a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yutailang0119</a></li> </ul></li> </ul> </div> <div class="section"> <h3 id="まとめ">まとめ</h3> <p>今回もアドベントカレンダーを、50日分往復できました。 <br /> 多くのメンバーに参加してもらえて、大満足です! </p><p>今年もHatena Developer Blog、個々人のブログで業務や日々の発見を発信していきます! <br /> よろしくお願いいたします 🐇 → 🐉 </p> </div><div class="footnote"> <p class="footnote"><a href="#fn-d0fa79c3" id="f-d0fa79c3" name="f-d0fa79c3" class="footnote-number">*1</a><span class="footnote-delimiter">:</span><span class="footnote-text">SwiftUIでもあります</span></p> </div> yutailang0119 はてなブログの DB を RDS for MySQL 8.0 にアップグレードした話 hatenablog://entry/6801883189057352888 2024-01-19T16:45:30+09:00 2024-02-29T17:24:19+09:00 この記事は、はてなエンジニア Advent Calendar 2023の2024年1月17日の記事です。 はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog id:hagihala です。先日、はてなブログの DB を RDS for MySQL 5.7 から 8.0 へアップグレードしたので、工夫した点などを共有します。 Aurora MySQL 3.x にしなかった理由 MySQL 5.7 -> 8.0 で対応した変更点 character set や collation のデフォルトが変更される explicit_defaults_… <p>この記事は、はてなエンジニア Advent Calendar 2023の2024年1月17日の記事です。</p> <ul> <li><a href="https://developer.hatenastaff.com/advent-calendar-2023">はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog</a></li> </ul> <p><a href="http://blog.hatena.ne.jp/hagihala/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/hagihala/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:hagihala</a> です。先日、はてなブログの DB を RDS for MySQL 5.7 から 8.0 へアップグレードしたので、工夫した点などを共有します。</p> <ul class="table-of-contents"> <li><a href="#Aurora-MySQL-3x-にしなかった理由">Aurora MySQL 3.x にしなかった理由</a></li> <li><a href="#MySQL-57---80-で対応した変更点">MySQL 5.7 -&gt; 8.0 で対応した変更点</a><ul> <li><a href="#character-set-や-collation-のデフォルトが変更される">character set や collation のデフォルトが変更される</a></li> <li><a href="#explicit_defaults_for_timestamp-がデフォルトで有効になる">explicit_defaults_for_timestamp がデフォルトで有効になる</a></li> <li><a href="#SQL-mode-の変更">SQL mode の変更</a></li> <li><a href="#デフォルトの認証プラグインが-caching_sha2_password-になり-mysql_native_password-が-Deprecated">デフォルトの認証プラグインが caching_sha2_password になり、 mysql_native_password が Deprecated</a></li> <li><a href="#10000-01-01-や-9999-99-99-といった日付の含まれるクエリがエラーになる">10000-01-01 や 9999-99-99 といった日付の含まれるクエリがエラーになる</a></li> </ul> </li> <li><a href="#インスタンスサイズ縮小のためにやったこと">インスタンスサイズ縮小のためにやったこと</a></li> <li><a href="#負荷試験">負荷試験</a></li> <li><a href="#readonly-メンテナンス">readonly メンテナンス</a><ul> <li><a href="#1-サービスの-readonly-メンテナンスモードを有効にする">1. サービスの readonly メンテナンスモードを有効にする</a></li> <li><a href="#2-DB-を-read_only--1-にする">2. DB を read_only = 1 にする</a></li> <li><a href="#3-readonly-のままアプリケーションの接続先DBを一時的に-green-環境に向けて動作確認">3. readonly のままアプリケーションの接続先DBを一時的に green 環境に向けて動作確認</a></li> <li><a href="#4-green-環境-DB-を-read_only--0-にして動作確認">4. green 環境 DB を read_only = 0 にして動作確認</a></li> <li><a href="#5-blue-環境に向け直す">5. blue 環境に向け直す</a></li> <li><a href="#6-green-環境へのスイッチオーバを行う">6. green 環境へのスイッチオーバを行う</a></li> <li><a href="#7-サービスの-readonly-メンテナンスモードを解除する">7. サービスの readonly メンテナンスモードを解除する</a></li> </ul> </li> <li><a href="#アップグレード後に出た不具合">アップグレード後に出た不具合</a><ul> <li><a href="#mysql_native_password-の-Deprecation-warning-がセッション毎に出る">mysql_native_password の Deprecation warning がセッション毎に出る</a></li> <li><a href="#極端な日時または-invalid-な日時を含むクエリがエラーになる">極端な日時または invalid な日時を含むクエリがエラーになる</a></li> </ul> </li> <li><a href="#ふりかえり感想">ふりかえり、感想</a></li> </ul> <h2 id="Aurora-MySQL-3x-にしなかった理由">Aurora MySQL 3.x にしなかった理由</h2> <p>RDS for MySQL 5.7 からのアップグレード・移転先としては Aurora MySQL 3.x も有力な候補に挙がります。 すでに社内で採用しているサービスもあり、最終的に Aurora に移行する計画ではあるので Aurora 3.x へ一気に上げてしまうことも検討しましたが、今回は見送ることにしました。</p> <p>MySQL 8.0 へのアップグレード + Aurora への移行をまとめて行う事で準備やメンテナンスの回数を減らせるメリットと、不具合の発生する可能性が上がる、問題発生時の切り分けが困難になるなどのリスクとのトレードオフで後者の方が勝ったためであり、 Aurora 自体に何かしら問題があったという訳ではありません。 また、今回アップグレードした DB は I/O intensive なため以前は I/O 課金が高額になる可能性が高く躊躇していましたが、<a href="https://aws.amazon.com/about-aws/whats-new/2023/05/amazon-aurora-i-o-optimized/">2023年5月に Aurora I/O Optimized がリリースされた</a>ことで解消されています。</p> <h2 id="MySQL-57---80-で対応した変更点">MySQL 5.7 -&gt; 8.0 で対応した変更点</h2> <p>網羅的な変更点については公式ドキュメントや他の情報源が既にたくさんあるので、はてなブログで直面した・対応した変更点について説明します。</p> <p><a href="https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html">MySQL :: MySQL 8.0 Reference Manual :: 2.10.4 Changes in MySQL 8.0</a></p> <h3 id="character-set-や-collation-のデフォルトが変更される">character set や collation のデフォルトが変更される</h3> <ul> <li><code>character_set_server</code> 及び <code>character_set_database</code> システム変数のデフォルトが <code>latin1</code> から <code>utf8mb4</code> に変更</li> <li><code>collation_server</code> 及び <code>collation_database</code> のシステム変数のデフォルトが <code>latin1_swedish_ci</code> から <code>utf8mb4_0900_ai_ci</code> に変更</li> </ul> <p>はてなブログでは <code>utf8mb4</code> については以前から設定していたので問題ないのですが、 charset が <code>utf8mb4</code> の場合のデフォルトの collation が <code>utf8mb4_general_ci</code> から <code>utf8mb4_0900_as_ci</code> に変わるので、テーブルの作成時にスキーマに明記していないと <code>utf8mb4_0900_as_ci</code> になってしまいます。</p> <p>パラメータグループに <code>collation_server = 'utf8mb4_general_ci'</code> を明記しました。</p> <p>また、開発環境やテスト環境などで使用するときに備え、スキーマにも charset と collation を明記しました。</p> <p>こちらのエントリが参考になります。 <a href="https://mita2db.hateblo.jp/entry/2020/12/07/000000">MySQL 8.0 でも utf8mb4_general_ci を使い続けたい僕らは - mita2 database life</a></p> <h3 id="explicit_defaults_for_timestamp-がデフォルトで有効になる"><code>explicit_defaults_for_timestamp</code> がデフォルトで有効になる</h3> <p>これを有効にすることで、 <code>TIMESTAMP</code> カラムのデフォルト値や NULL 値の扱いが、これまでは NULLがアサインされた場合に自動で現在日時をセットするといった非標準な (緩い) 動作だったのが、標準的な動作になります。</p> <p><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp">MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables #sysvar_explicit_defaults_for_timestam</a> に詳しい条件が書かれていますが、最終的な動作には SQL mode <code>NO_ZERO_DATE</code> なども影響してきます。</p> <p>ざっくりと説明すると、 <code>TIMESTAMP</code> カラムの宣言時に明示的に <code>NOT NULL</code> attribute を付けなければ <code>NULL</code> 値を許容するようになり、またカラムに <code>NULL</code> をアサインした際に自動で現在日時をセットするといった暗黙的な動作を行わなくなります。<br/> <code>NOT NULL</code> なカラムに <code>NULL</code> をアサインした際の動作はカラムの <code>DEFAULT</code> の設定や SQL mode によっても変わるようですが、 strict モードの場合は暗黙的なデフォルト値がセットされる事を期待した操作はエラーになるようです。</p> <h3 id="SQL-mode-の変更">SQL mode の変更</h3> <p>システム変数やパラメータグループのデフォルト値は以下のように変わります。</p> <ul> <li>5.7: <code>NO_ENGINE_SUBSTITUTION</code></li> <li>8.0: <code>ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION</code> <ul> <li>ただし RDS のパラメータグループのデフォルト値は <code>NO_ENGINE_SUBSTITUTION</code> のまま (5.7 と同じ)</li> </ul> </li> </ul> <p>はてなにおいては以前からいわゆる <a href="https://songmu.jp/riji/entry/2015-07-08-kamipo-traditional.html">kamipo TRADITIONAL</a> を使うことが推奨されているのですが、はてなブログでは変更にかけるリソースが割けなかった (伝聞) 事により、5.7 のデフォルトが使われています。<br/> また、SQL mode の設定はアプリケーション側で持つべきとの考え方から、アプリケーションの DB 接続時にセッション単位で sql_mode をセットするようになっています。</p> <pre class="code lang-mysql" data-lang="mysql" data-unlink>SET SESSION sql_mode=<span class="synConstant">'NO_ENGINE_SUBSTITUTION'</span> </pre> <p>今回のアップグレードでは以下のようにしました。</p> <ul> <li>パラメータグループ (グローバル変数) には MySQL 8.0 のデフォルトを指定する</li> <li>アプリケーションがセットするセッション変数はアップグレードのタイミングでは変更しない</li> </ul> <p>アプリケーション側は SQL mode 変更のための修正に工数を割くよりアップグレードを優先するため、これまで通りセッション単位で 5.7 のデフォルトを指定することにしました。<br/> 一方で 8.0 のデフォルトは kamipo TRADITIONAL と同程度に厳格なので、パラメータグループは 8.0 のデフォルトにしました。 人間または別のプログラムによるクエリ実行は基本的にイレギュラーな操作なので厳格にいきたいという意図で、緩める必要がある場合はアプリケーションと同様に明示的にセッション単位で SQL mode を指定しましょうという運用です。</p> <h3 id="デフォルトの認証プラグインが-caching_sha2_password-になり-mysql_native_password-が-Deprecated">デフォルトの認証プラグインが <code>caching_sha2_password</code> になり、 <code>mysql_native_password</code> が Deprecated</h3> <p>MySQL 8.0 ではデフォルトの認証プラグインが <code>mysql_native_password</code> から <code>caching_sha2_password</code> に変更されます。 ただ、すべてのクライアント側が対応している必要があることなどから今回は <code>mysql_native_password</code> のままにしています。<br/> ちなみに RDS パラメータグループの <code>default_authentication_plugin</code> は <code>mysql_native_password</code> に固定されており変更できません。</p> <h3 id="10000-01-01-や-9999-99-99-といった日付の含まれるクエリがエラーになる"><code>10000-01-01</code> や <code>9999-99-99</code> といった日付の含まれるクエリがエラーになる</h3> <p><code>10000-01-01</code> や <code>9999-99-99</code> のような不正な日付は DB の <code>DATETIME</code> 型のカラムには格納できませんが、クエリに含める分には MySQL 5.7 では (warning が出るものの) 可能となっています。一方で MySQL 8.0 (8.0.16 以降) 環境ではこれらのクエリが即エラーになるようです。 8.0 の変更点には書かれていなかったため謎でしたが、 8.0.16 で変更されたものであり、従来の挙動がバグである (という扱いになっている) ことが分かりました。</p> <blockquote><p>まず、MySQL 8.0.15 以下では文字列と DATE 型を比較する場合、以下の手順を踏む。 1. 文字列を DATE (or DATETIME) に変換して比較する 2. 1.の変換ができない場合は逆に DATE を文字列に変換して比較する</p> <p>これが MySQL 8.0.16 以上では次のような手順に変更された。 1. 文字列を DATE (or DATETIME) に変換して比較する 2. 1.が失敗した段階でエラーとなる</p></blockquote> <p><a href="https://rabbitfoot141.hatenablog.com/entry/2020/07/01/215728">MySQL 8.0.15 の前後で変わった文字列と DATE 型の比較について - それが僕には楽しかったんです。</a></p> <p>文字列比較は辞書順での比較になるため、<code>10000-01-01</code> &lt; <code>2024-01-17</code> が true になるなど、エラーにはならなくても意図通りに動いていなかったことになります。</p> <p>invalid な日時がクエリに含まれないよう修正する事で対処しました。</p> <h2 id="インスタンスサイズ縮小のためにやったこと">インスタンスサイズ縮小のためにやったこと</h2> <p>今回のアップグレード対象 DB では過去にデータ移行のために DB のインスタンスサイズを大きめにしており、現状の負荷に対してオーバースペック気味になっていました。 そのためアップグレードと併せてインスタンスタイプを縮小することを検討しました。<br/> 変更後のインスタンスタイプが本番の負荷に耐えられるかどうかは後の負荷試験でも確認するつもりではあったものの、本番と同等の負荷を精確に再現することは難しいので、本番環境で試すに越したことはありません。<br/> MySQL 5.7.5 以降では <code>innodb_buffer_pool_size</code> の動的な変更ができるので、事前に本番環境で <code>innodb_buffer_pool_size</code> を変更後のインスタンスタイプ相当のサイズに縮小し、 (あくまで 5.7 環境ではあるものの) ストレージ I/O の上昇やアプリケーションのレイテンシの悪化が許容範囲内に収まる事を確認しました。</p> <p>RDS ではこの変数を RDS のパラメータグループ経由で変更する事になるため、 パラメータグループの変更 API を叩いてから実際に MySQL へ反映されるまでに多少のラグがあります。なので API 実行後に <code>SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status'</code> を実行して変更のステータスを確認し、完了するのを待ってから次の変更を行う必要があり、やや時間のかかる操作になります。 変更が適用される際にクエリが一時的にブロックされるなどの影響があるため、一度に減らす量を大きくしすぎるとサービスのレイテンシが悪化したり処理がタイムアウトしたりする可能性があります。今回はサービスへの影響を見ながら1回あたりの変更サイズを決め、最終的に4GB刻みで徐々に減らしていき、変更予定インスタンスサイズ相当のバッファプールサイズでもパフォーマンスに大きな影響が出ない事を確認しました。</p> <p><figure class="figure-image figure-image-fotolife" title="innodb_buffer_pool_size 縮小の様子"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20240119/20240119164532.png" width="1200" height="383" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>innodb_buffer_pool_size 縮小の様子</figcaption></figure></p> <p>後で見返したときに作業していたことが分かるよう Mackerel のグラフアノテーション (グラフ下部の青い帯) を付けてあります。 ちなみに短い帯はデプロイの記録です</p> <h2 id="負荷試験">負荷試験</h2> <p>負荷試験に使うクエリは、本番環境の general log を一定期間分出力したものから SELECT クエリのみを抽出して用意しました。サービスの性質上 read の割合が圧倒的に高いため更新クエリについては負荷試験を省略しました。 当初は他チームの事例に倣い、 general log を CloudWatch Logs に流す設定を有効にし、 データを S3 にエクスポートして取得していたのですが、今回のアップグレード対象DBでは上手く行かないことが分かりました。</p> <ul> <li>サイズの大きなクエリが含まれるため <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html">CloudWatch Logs のログイベントのサイズ上限</a> (256KB) に当たって分割されてしまう</li> <li>元々 CloudWatch Logs ではログイベントの順序が保証されないのに加え、分割されたログイベントには結合に使うためのメタデータ等が付与されないため元のクエリを完全に復元する方法が無い</li> </ul> <p>今回はそもそも CloudWatch Logs を経由しなくても、インスタンス上に出力された general log を Web コンソールからダウンロードボタンをポチポチすれば普通にダウンロードできるため、そうすることにしました。 今回はそれで事足りましたが、「クエリをリアルタイムに抽出してミラーリングし続ける」みたいな事をやる場合は <a href="https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html"><code>DownloadDBLogFilePortion</code></a> API を用いてログローテーションを考慮しながら取得し続けるような処理を自前で用意する必要がありそうです。</p> <p>負荷試験の実施には、与えられた並列度の組に対して定められた回数実行し、結果をカンマ区切り (Google スプレッドシートに貼り付け可能な形) で出力するスクリプトを用いました。</p> <pre class="code bash" data-lang="bash" data-unlink>#!/bin/bash # ./run.sh &lt;QUERIES_FOR_TEST&gt; &lt;HOST&gt; &lt;DATABASE&gt; &lt;CONCURRENCY1&gt;,&lt;CONCURRENCY2&gt;,... &lt;NUM_TRIALS&gt; set -eu SQL=$1 HOST=$2 DATABASE=$3 MYSQL_USER=$4 CONCURRENCIES=$5 NUM_TRIALS=$6 IFS=&#34;,&#34; read -r -a CONCURRENCIES_LIST &lt;&lt;&lt; &#34;$CONCURRENCIES&#34; NUM_LINES=$(cat $SQL | wc -l) for CONCURRENCY in &#34;${CONCURRENCIES_LIST[@]}&#34;; do DIR=$(mktemp -d) if [ -f init.sql ]; then # init.sql があれば分割した各ファイルの先頭に挿入する split -d -l $(($NUM_LINES/$CONCURRENCY+1)) --filter &#39;sh -c &#34;{ cat init.sql; cat; } &gt; $FILE&#34;&#39; $SQL $DIR/sql else split -d -l $(($NUM_LINES/$CONCURRENCY+1)) $SQL $DIR/sql fi echo -n &#34;$CONCURRENCY, &#34; for i in $(seq $NUM_TRIALS); do TIME_DIR=$DIR/time-$i mkdir -p &#34;$TIME_DIR&#34; ls $DIR | grep -v &#34;time-&#34; | xargs -P $CONCURRENCY -I{} bash -c &#34;/usr/bin/time -p -o $TIME_DIR/{}.txt mysql -u${MYSQL_USER} -h $HOST --default-character-set=utf8mb4 $DATABASE &lt; $DIR/{} &gt; /dev/null&#34; RESULTS=$(cat $TIME_DIR/sql*.txt | grep &#39;^real&#39; | cut -d &#39; &#39; -f 2 | sort -n) MIN=$(echo &#34;$RESULTS&#34; | head -n 1) MAX=$(echo &#34;$RESULTS&#34; | tail -n 1) MEDIAN=$(echo &#34;$RESULTS&#34; | tail -n -$(( $CONCURRENCY / 2 + 1 )) | head -n 1) # 厳密じゃない echo &#34;$MIN, $MEDIAN, $MAX&#34; if [ &#34;$i&#34; -lt &#34;$NUM_TRIALS&#34; ]; then echo -n &#39;, &#39;; else echo; fi done rm -rf $DIR done</pre> <h2 id="readonly-メンテナンス">readonly メンテナンス</h2> <p>アップグレードは RDS の blue/green deployment 機能を用いて行いました。 また、サービスを readonly 状態にしてメンテナンスを行いました。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fstaff.hatenablog.com%2Fentry%2F2023%2F09%2F27%2F170000" title="【完了】2023年10月11日(水)13:00〜16:00に、はてなブログの投稿・更新・設定を含む一部機能を停止するメンテナンスを行います - はてなブログ開発ブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://staff.hatenablog.com/entry/2023/09/27/170000">staff.hatenablog.com</a></cite></p> <p>readonly メンテナンスは以下の効果を狙ったものです。</p> <ul> <li>メンテナンス中でもブログの閲覧が可能になる</li> <li>新バージョンの DB に更新クエリを流す前に read の動作確認と負荷の確認が行える</li> <li>更新クエリが流れる前であれば容易に旧バージョンにロールバックできる <ul> <li>新バージョンのDBに更新クエリが流れ始めてからロールバックした場合、新バージョンで更新されたレコードを何らかの方法で旧バージョンの方に書き戻す必要が生じる</li> <li>MySQL では新→旧バージョンのレプリケーションはサポートされないので、 binlog を解析して書き戻すか外部ツールで逆方向レプリケーションを組んだりする必要が生じるため大変</li> </ul> </li> </ul> <p>メンテナンスの大まかな流れは以下のようになりました。</p> <ol> <li>サービスの readonly メンテナンスモードを有効にする</li> <li>DB を <code>read_only = 1</code> にする</li> <li>readonly のままアプリケーションの参照先DBを一時的に green 環境に向けて動作確認</li> <li>green 環境 DB を <code>read_only = 0</code> にして動作確認</li> <li>blue 環境に向け直す</li> <li>green 環境へのスイッチオーバを行う</li> <li>サービスの readonly メンテナンスモードを解除する</li> </ol> <h4 id="1-サービスの-readonly-メンテナンスモードを有効にする">1. サービスの readonly メンテナンスモードを有効にする</h4> <p>このために、書き込みを伴う機能や API を事前に洗い出しておき、それらについてメンテ画面を表示する設定をリバースプロキシ (nginx) に実装しました。<br/> アプリケーションで実現する選択肢もありますが、万が一 DB が高負荷に陥っても影響を受けにくい事を期待してこのようにしました。<br/> また、メンテナンスモード中でもスタッフが write を含めた動作確認を行えるよう、特定の Cookie または HTTP ヘッダが付いていればメンテナンス画面を回避できるようにしました。</p> <p>メンテナンスモードを有効にするかどうか決める変数の設定の例:</p> <pre class="code lang-nginx" data-lang="nginx" data-unlink><span class="synStatement">http</span> { ... <span class="synComment"> # $readonly_maintenance 変数の値はコンテナに渡す環境変数で指定できる。</span> <span class="synComment"> # リクエストヘッダ X-Bypass-Maintenance: 1 または Cookie bypass_maintenance=1</span> <span class="synComment"> # を付けるとメンテナンスモードを回避できる。</span> map <span class="synConstant">&quot;</span><span class="synPreProc">$readonly_maintenance$http_x_bypass_maintenance$cookie_bypass_maintenance</span><span class="synConstant">&quot;</span> <span class="synIdentifier">$should_show_readonly_maintenance_page</span> { default <span class="synConstant">&quot;0&quot;</span>; <span class="synConstant">&quot;1&quot;</span> <span class="synConstant">&quot;1&quot;</span>; <span class="synConstant">&quot;10&quot;</span> <span class="synConstant">&quot;1&quot;</span>; <span class="synConstant">&quot;100&quot;</span> <span class="synConstant">&quot;1&quot;</span>; } ... } </pre> <p>メンテナンス画面表示対象の location で include する設定 (<code>readonly-maintenance.nginx.conf</code>):</p> <pre class="code lang-nginx" data-lang="nginx" data-unlink><span class="synStatement">if</span> (<span class="synIdentifier">$should_show_readonly_maintenance_page</span> = <span class="synConstant">&quot;1&quot;</span>) { <span class="synComment"> # error_page ディレクティブを1つでも書くと外のコンテキストのものが全部リセットされるので</span> <span class="synComment"> # 全てコピペしつつ 503 だけメンテナンス画面にする</span> <span class="synConstant">error_page</span> 400 /error_page/error_400.html; <span class="synConstant">error_page</span> 413 /error_page/error_413.html; <span class="synConstant">error_page</span> 414 /error_page/error_414.html; <span class="synConstant">error_page</span> 500 /error_page/error_500.html; <span class="synConstant">error_page</span> 501 /error_page/error_501.html; <span class="synConstant">error_page</span> 502 /error_page/error_502.html; <span class="synComment"> #error_page 503 /error_page/error_503.html;</span> <span class="synConstant">error_page</span> 504 /error_page/error_504.html; <span class="synComment"> # メンテナンス画面</span> <span class="synComment"> # error_maintenance.htmlの内容はメンテナスごとに書き換えてください。</span> <span class="synConstant">error_page</span> 503 /error_page/error_maintenance.html; <span class="synStatement">return</span> 503; } </pre> <p>メンテ画面表示対象の location で include する:</p> <pre class="code lang-nginx" data-lang="nginx" data-unlink><span class="synStatement">location</span> / { <span class="synType">include</span> /path/to/readonly-maintenance.nginx.conf; ... } </pre> <p>その他、定期実行バッチやジョブワーカも停止しておきます。メンテ中に実行される可能性のあるバッチで冪等でないものは可能であれば時間をずらしておきます。</p> <h4 id="2-DB-を-read_only--1-にする">2. DB を <code>read_only = 1</code> にする</h4> <p>意図せず更新が走ってしまうのを防ぐため、 MySQL のシステム変数 <code>read_only</code> を有効にします。 RDS ではパラメータグループ経由での変更のため反映されるまでに若干のラグがあります。</p> <h4 id="3-readonly-のままアプリケーションの接続先DBを一時的に-green-環境に向けて動作確認">3. readonly のままアプリケーションの接続先DBを一時的に green 環境に向けて動作確認</h4> <p>この手順は、 RDS の blue/green deployment にロールバック動作がないために入れています。<br/> green 環境 (新インスタンス) へのスイッチオーバは既存の DB identifier を置き換える事で行われるため、アプリケーション側の接続先 DB ホスト名の設定を変更する必要がないのですが、 blue 環境 (旧インスタンス) の identifier は末尾に <code>-old</code> が付いたものに変わるため、ロールバックする際には結局アプリケーション側の設定変更が必要になってしまいます。<br/> ロールバックの可能性をなるべく減らすためにこのような手順になっています。</p> <h4 id="4-green-環境-DB-を-read_only--0-にして動作確認">4. green 環境 DB を <code>read_only = 0</code> にして動作確認</h4> <p>green 環境の動作確認のために書き込み可能な設定に変更します。<br/> スイッチオーバ前の green 環境はレプリカ扱いなので、デフォルトの <code>{TrueIfReplica}</code> ではなく <code>1</code> にします。</p> <p>これ以降 green 環境のデータに加えた変更は blue 環境に自動で書き戻されないので、万が一ロールバックすることになった場合は注意が必要です。</p> <p>その後、事前に用意したQA表を用いて書き込みを含めた動作確認を行います。<br/> 一般向けにはメンテナンス画面を表示したままですが、特定の条件を満たすリクエストのみメンテナンス画面を回避できます。</p> <h4 id="5-blue-環境に向け直す">5. blue 環境に向け直す</h4> <p>スイッチオーバの際には blue 環境の DB identifier やホスト名が green 環境にそのまま引き継がれるため、一度 blue 環境に向け直します。 アプリケーション側の接続先 DB ホスト名を変更し、 blue 環境に向け直します。 blue 環境 DB は <code>read_only = 1</code> のままなので再度書き込みができなくなります。</p> <h4 id="6-green-環境へのスイッチオーバを行う">6. green 環境へのスイッチオーバを行う</h4> <p>スイッチオーバでは blue 環境の DB identifier やホスト名がそのまま green 環境のインスタンスに引き継がれ、 blue 環境インスタンスの DB identifier の末尾には <code>-old</code> が付き、ホスト名も変更されます。</p> <p>今回の手順では 4. で明示的に <code>readonly=0</code> としているので関係ありませんが、 green 環境のパラメータグループで <code>read_only=1</code> になっていても、スイッチオーバの際に MySQL のランタイム変数が自動で <code>read_only=0</code> に書き換わり、強制的に書き込み可能になるようです (2023/05時点)。 readonly のままスイッチオーバを行おうとしている場合には注意が必要です。</p> <h4 id="7-サービスの-readonly-メンテナンスモードを解除する">7. サービスの readonly メンテナンスモードを解除する</h4> <p>1 と逆の手順でサービスの readonly メンテナンスモードを解除します。</p> <h2 id="アップグレード後に出た不具合">アップグレード後に出た不具合</h2> <h3 id="mysql_native_password-の-Deprecation-warning-がセッション毎に出る"><code>mysql_native_password</code> の Deprecation warning がセッション毎に出る</h3> <p>以下のメッセージがセッション毎にエラーログに出力されます。</p> <pre class="code" data-lang="" data-unlink>[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: &#39;&#39;mysql_native_password&#39; is deprecated and will be removed in a future release. Please use caching_sha2_password instead&#39;</pre> <p>MySQL 8.0.34 以降で <a href="https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html"><code>mysql_native_password</code> 認証プラグイン</a>が Deprecated になったためにこのメッセージが出るようになったようです。今回は認証プラグインの変更を見送ったので出ないようにしたいのですが、ピンポイントで止める方法は無さそうなのでひとまず我慢しています。</p> <h3 id="極端な日時または-invalid-な日時を含むクエリがエラーになる">極端な日時または invalid な日時を含むクエリがエラーになる</h3> <p>日時関連でエラーになる箇所はアップグレード前にも修正していましたが、一部で漏れがあり、 0000-00-00 00:00:00 や 10000年の日時を含むクエリがエラーになる部分がありました。</p> <p>また、かなりのエッジケースではありますが、0000年2月のサイトマップを生成する処理がエラーになっていました。原因は閏年の判定が Perl と MySQL で異なることによるものでした。 Perl の DateTime モジュールでは0000年が閏年と判定されたため0000年2月29日までの範囲でクエリが発行されましたが、 MySQL では閏年ではないと判定され、不正な日時としてバリデーションエラーになっていました。</p> <h2 id="ふりかえり感想">ふりかえり、感想</h2> <p>事前のアプリケーション側の修正を入念に行っていただけたこと、 staging 環境でリハーサルした上で詳細な手順を作って挑んだこともあって、一部不具合は出たものの特に大きなトラブルもなく完了しました。</p> <p>メンテナンスの所要時間について、<a href="https://staff.hatenablog.com/entry/2023/09/27/170000">告知エントリ</a>にもある通り今回は 13:00〜14:45の1時間45分で、そのほとんどの時間 readonly 状態になっていました。<br/> blue/green deployment にはロールバック機能が無いため、スイッチオーバ後の手動ロールバック (<code>-old</code> の付いた DB インスタンスへの向け直し) の可能性をできる限り減らすためにスイッチオーバ前に一度 green 環境に向け変えて動作確認する手順を行ったこともあり、手順が多く所要時間が長めになっています。新バージョンの環境 (green 環境) の構築が楽になる以外に blue/green deployment の利点を活かせていない気がするので、レプリカを作って昇格させるなどの切り替え方法でも良かったかも知れません。</p> <p>blue/green deployment に、 readonly を維持したままスイッチオーバする機能やロールバック機能 (readonly を解除する前であれば安全にロールバックできる。 green 環境への書き込みが開始された後はスプリットブレインを承知の上で行う) が実装されればもっと便利になりそうだなと思いました。</p> <p>たとえブログが閲覧可能であっても平日の日中にブログの投稿や管理画面等の機能が長時間停止してしまうのは特にサポートや法人向けの業務に大きな影響が出てしまうので、現状の所要時間だと日中に行うのはなかなか厳しそうです。次回以降の同様のメンテナンスは業務時間内を避けて夜間か早朝に行う事を検討しています。</p> hagihala はてな東京オフィスでGo言語の勉強会「hatena.go」を開催します hatenablog://entry/6801883189072538381 2024-01-17T19:11:35+09:00 2024-01-17T19:16:16+09:00 Webアプリケーションエンジニアの id:maku693 です。このたび 2024年1月31日(水)に、はてな東京オフィスにて hatena.go というGoの勉強会を開催します!はてなではMackerelやはてなブログをはじめ、さまざまなサービスでGo言語を利用しています。また、Goサブ会というチーム横断組織で定期的にGoにまつわる知見を交換しています*1。しかし、これまではその知見があまり外部に公開されてきませんでした。このイベントでは、実際にはてなでGoをプロダクションで運用して得た知見や、サブ会で話題になったトピックをお話しします。Goにまつわる技術的な情報だけでなく、それをどのように… <p>Webアプリケーションエンジニアの <a href="http://blog.hatena.ne.jp/maku693/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maku693/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maku693</a> です。</p><p>このたび 2024年1月31日(水)に、はてな東京オフィスにて hatena.go というGoの勉強会を開催します!</p><p>はてなではMackerelやはてなブログをはじめ、さまざまなサービスでGo言語を利用しています。また、Goサブ会というチーム横断組織で定期的にGoにまつわる知見を交換しています<a href="#f-b4673258" id="fn-b4673258" name="fn-b4673258" title="[https://speakerdeck.com/stefafafan/introduction-to-the-go-task-force?slide=7:title]">*1</a>。しかし、これまではその知見があまり外部に公開されてきませんでした。</p><p>このイベントでは、実際にはてなでGoをプロダクションで運用して得た知見や、サブ会で話題になったトピックをお話しします。Goにまつわる技術的な情報だけでなく、それをどのように社内展開しているかといった情報もお伝えします。</p> <ul> <li>Go言語を普段から使っているエンジニア</li> <li>Webアプリケーションを開発しているエンジニア</li> </ul><p>といった方におすすめです。お気軽にご参加ください!<br /> <br /> </p> <div class="section"> <h4 id="開催概要">開催概要</h4> <ul> <li>お申し込みページ:<a href="https://connpass.com/event/307931?">hatena.go #1 - connpass</a></li> <li>日時:2024年1月31日(水) 19:00開場、19:30開始、21:00閉会</li> <li>参加費:無料</li> <li>定員 <ul> <li>公募LT枠: 3</li> <li>参加枠: 17</li> </ul></li> <li>場所:はてな 東京オフィス(3階、セミナールーム)</li> <li>地図:<a href="https://hatena.co.jp/information/outline#access">https://hatena.co.jp/information/outline#access</a></li> </ul> </div> <div class="section"> <h4 id="発表内容詳細">発表内容詳細</h4> <div class="section"> <h5 id="はてなのサービスを支えるGo---各システムに見る共通点とそれぞれの特色">はてなのサービスを支えるGo - 各システムに見る共通点とそれぞれの特色</h5> <p>ゲームチーム アプリケーションエンジニア <a href="http://blog.hatena.ne.jp/maku693/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/maku693/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:maku693</a><br /> </p> <blockquote> <p>はてなにおけるGo言語の利用箇所は、一般的なユーザー向けのウェブアプリケーションに限らず、サービス横断で利用される基盤システムや、一風変わったところでは、監視サービスであるMackerelのエージェント(サーバにインストールするメトリック送信デーモン)の実装にもGoを使っています。このトークでは、各システムごとの特色やそれらの共通点についてお話しします。</p> </blockquote> </div> <div class="section"> <h5 id="Goサブ会によるチームを超えた知見展開あるいは-hatenago-に対する期待">「Goサブ会」によるチームを超えた知見展開、あるいは hatena.go に対する期待</h5> <p>マンガ投稿チーム アプリケーションエンジニア <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a><br /> </p> <blockquote> <p>はてなにはGoを扱うチームが複数ありますが、知見展開の場があまり存在していませんでした。チーム間の交流が少なかったため、ライブラリ選定や開発中の困りをチーム内で閉じて解消していくしかありませんでした。この状況に課題感を持った我々は、「Goサブ会」というチーム横断組織を立ち上げました。そして今回ここから派生して「hatena.go」というイベントの立ち上げも実施しました。このトークでは横断組織の立ち上げと運用のことや、hatena.go というイベントに対する今後の期待についてお話しします。</p> </blockquote> </div> </div> <div class="section"> <h4 id="LTについて">LTについて</h4> <p>Go言語に関するLTを公募します。ご自身でどのようにGoを活用されているか、どういった課題を解決したか、あるいは今どんなことで困っているかといった内容を気軽に発表いただけると嬉しいです!<br /> <br /> </p> </div> <div class="section"> <h4 id="お申し込みはこちらから">お申し込みはこちらから</h4> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fconnpass.com%2Fevent%2F307931%3F" title="hatena.go #1 (2024/01/31 19:30〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://connpass.com/event/307931?">connpass.com</a></cite></p><br /> <p>ご参加お待ちしております!</p> </div><div class="footnote"> <p class="footnote"><a href="#fn-b4673258" id="f-b4673258" name="f-b4673258" class="footnote-number">*1</a><span class="footnote-delimiter">:</span><span class="footnote-text"><a href="https://speakerdeck.com/stefafafan/introduction-to-the-go-task-force?slide=7">&#x958B;&#x767A;&#x30C1;&#x30FC;&#x30E0;&#x6A2A;&#x65AD;&#x30BF;&#x30B9;&#x30AF;&#x30D5;&#x30A9;&#x30FC;&#x30B9; &#x300C;Go&#x30B5;&#x30D6;&#x4F1A;&#x300D;&#x306E; &#x904B;&#x7528;&#x4E8B;&#x4F8B;&#x3068;&#x4ECA;&#x5F8C;&#x306E;&#x5C55;&#x671B; - Speaker Deck</a></span></p> </div> maku693 Hatena Engineer Seminar #28「個人開発編」を1月30日にオンライン開催します #hatenatech hatenablog://entry/6801883189075256622 2024-01-15T18:30:00+09:00 2024-01-16T10:41:46+09:00 2024年1月30日(火)に Hatena Engineer Seminar #28をオンライン開催します。はてなに所属するエンジニア3名が「個人開発」をテーマに、それぞれの取り組みについてご紹介します。今回ははてなにおける事例紹介ではなく、それぞれのエンジニアがどのように個人プロダクトやその技術に向き合っているか、をお話しすることで、はてなのエンジニアの文化や風土に触れていただけると思います。皆様のご参加をお待ちしております! <p>こんにちは。CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> です。</p><p>2024年1月30日(火)に Hatena Engineer Seminar #28 「個人開発編」を開催しますので、お知らせします。</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20220111/20220111165252.png" width="2000" height="1050" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>はてなに所属するエンジニア3名が「個人開発」をテーマに、それぞれの取り組みについてご紹介します。今回ははてなにおける事例紹介ではなく、それぞれのエンジニアがどのように個人プロダクトやその技術に向き合っているか、をお話しすることで、はてなのエンジニアの文化や風土に触れていただけると思います。</p><br /> <p>開催はオンラインです。(<a href="https://hatena.connpass.com/event/307763/">&#x8A73;&#x3057;&#x304F;&#x306F;connpass&#x306E;&#x30A4;&#x30D9;&#x30F3;&#x30C8;&#x30DA;&#x30FC;&#x30B8;&#x3092;&#x3054;&#x78BA;&#x8A8D;&#x304F;&#x3060;&#x3055;&#x3044;</a>)。皆様のご参加をお待ちしております!</p> <div class="section"> <h4 id="イベント概要">イベント概要</h4> <ul> <li>日時: 2024年1月30日(火) 13:00-13:50(予定)</li> <li>参加費: 無料</li> <li>開催形式: オンライン配信 YouTube Live <ul> <li>YouTube Live HatenaTech チャンネルにて <a href="https://www.youtube.com/channel/UCwqsFJGxzAZQdcT1xYZhhbw">https://www.youtube.com/channel/UCwqsFJGxzAZQdcT1xYZhhbw</a></li> <li>開催当日に connpass に登録されているメールアドレスや X の <a href="https://twitter.com/hatenatech">@hatenatech</a> アカウントにて配信 URL を共有いたします</li> </ul></li> <li>お申し込みURL: <a href="https://hatena.connpass.com/event/307763/">https://hatena.connpass.com/event/307763/</a></li> <li>ハッシュタグ: <code>#hatenatech</code> <ul> <li>ブログを書く際や SNS投稿の際にぜひお使いください</li> </ul></li> </ul><p>Hatena Engineer Seminar は、はてなのサービスを開発する上で、エンジニアがどのような事を考えているのか、どのような働き方をしているのかを語るイベントです。過去にも様々な技術レイヤーやサービスを軸としたテーマなどで開催してきました。</p> <ul> <li><a href="https://developer.hatenastaff.com/archive/category/Hatena%20Engineer%20Seminar">&#x904E;&#x53BB;&#x306E; Hatena Engineer Seminar &#x306B;&#x95A2;&#x3059;&#x308B;&#x8A18;&#x4E8B;&#x4E00;&#x89A7;</a></li> </ul> </div> <div class="section"> <h4 id="発表内容詳細">発表内容詳細</h4> <p><span style="font-size: 80%">(※ 内容は変更になる可能性がございます)</span></p><p></p> <div class="section"> <h5 id="個人開発のたのしみ--マンガアプリチーム-エンジニア-idyutailang0119">個人開発のたのしみ / マンガアプリチーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/yutailang0119/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" />id:yutailang0119</a></h5> <p><a href="http://blog.hatena.ne.jp/yutailang0119/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yutailang0119/profile.png" width="16" height="16" alt="id:yutailang0119" class="hatena-id-icon"></a> アプリ開発だけに限りませんが、数年単位で毎日コミットを積み重ねています。 <br /> <a href="https://yutailang0119.hatenablog.com/entry/2022/05/07/223000">SSO&#x3092;&#x5207;&#x3063;&#x3066;&#x3082;&#x3001;GitHub&#x306E;&#x8349;&#x3092;1&#x5E74;&#x751F;&#x3084;&#x305B;&#x305F; - &#x304C;&#x3093;&#x3070;&#x3063;&#x3066;&#x306A;&#x3093;&#x304B;&#x66F8;&#x304F;</a></p><p>個人の活動なのだから、続けること自体が目的だっていいのです。欲しいものを作る、使いたい技術を使うために作る、続けるために作る、その時々で目的は様々ですが毎日続けていくためのマインドを話します。</p> </div> <div class="section"> <h5 id="運動モチベーション継続のためのiOSアプリ開発--マンガアプリチーム-エンジニア-idtokizuoh">運動モチベーション継続のためのiOSアプリ開発 / マンガアプリチーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/tokizuoh/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png" width="16" />id:tokizuoh</a></h5> <p><a href="http://blog.hatena.ne.jp/tokizuoh/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png" width="16" height="16" alt="id:tokizuoh" class="hatena-id-icon"></a> 皆さんは普段、運動を継続できていますか?リモートワークで運動が続かなかった経験がある方は多いのではないでしょうか。tokizuohもその内の一人でした。この発表ではいかにして個人開発を通じて運動のモチベーションを上げたのかについて話します。また、技術的な面で個人開発を行って良かったこと話します。</p> </div> <div class="section"> <h5 id="技術習得を支え続けた私の個人開発ヒストリー--Mackerel開発チーム-エンジニア-idarthur-1">技術習得を支え続けた私の個人開発ヒストリー / Mackerel開発チーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/arthur-1/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" />id:arthur-1</a></h5> <p><a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="id:arthur-1" class="hatena-id-icon"></a> 私は学生時代の2018年ごろから個人開発をはじめ、社会人エンジニアとなった今でも主にボードゲームに関連したWebアプリケーションを開発・運用し続けています。こういったモノづくりの過程で様々な技術を身につけてきました。個人開発の歴史と自分のエンジニアとしての成長を振り返るとともに、最近進めている個人開発のモダナイズについてご紹介します。</p> </div> </div> <div class="section"> <h4 id="タイムテーブル">タイムテーブル</h4> <p><strong>13:00 開始 / 13:50終了予定</strong><br /> </p> <table> <tr> <td> 時刻 </td> <td> id </td> <td> タイトル </td> </tr> <tr> <td> 13:00 </td> <td> <a href="http://blog.hatena.ne.jp/papix/">id:papix</a> </td> <td> 開会の挨拶 </td> </tr> <tr> <td> 13:05 </td> <td> <a href="http://blog.hatena.ne.jp/yutailang0119/">id:yutailang0119</a> </td> <td> 個人開発のたのしみ </td> </tr> <tr> <td> 13:15 </td> <td> <a href="http://blog.hatena.ne.jp/tokizuoh/">id:tokizuoh</a> </td> <td> 運動モチベーション継続のためのiOSアプリ開発 </td> </tr> <tr> <td> 13:30 </td> <td> <a href="http://blog.hatena.ne.jp/arthur-1/">id:arthur-1</a> </td> <td> 技術習得を支え続けた私の個人開発ヒストリー </td> </tr> <tr> <td> 13:45 </td> <td> <a href="http://blog.hatena.ne.jp/papix/">id:papix</a> </td> <td> 閉会のご挨拶 </td> </tr> </table> </div> <div class="section"> <h4 id="お申し込み方法">お申し込み方法</h4> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatena.connpass.com%2Fevent%2F307763%2F" title="Hatena Engineer Seminar #28 個人開発編 (2024/01/30 13:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://hatena.connpass.com/event/307763/">hatena.connpass.com</a></cite><br /> </p> </div> <div class="section"> <h4 id="諸注意">諸注意</h4> <ul> <li>発表内容や時間は場合により変更となる可能性がございます。ご了承ください。</li> <li>お申し込み時やアンケートなどでいただいた個人情報は、<a href="https://hatena.co.jp/recruit/privacypolicy.html">&#x500B;&#x4EBA;&#x60C5;&#x5831;&#x306E;&#x53D6;&#x308A;&#x6271;&#x3044;&#x306B;&#x3064;&#x3044;&#x3066; - &#x63A1;&#x7528;&#x60C5;&#x5831; - &#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A;</a>に準じ、セミナーの管理・品質改善・調査・採用のご案内目的に利用いたします。</li> </ul><p>みなさまのご参加をお待ちしております!</p> </div> <div class="section"> <h4 id="株式会社はてな-エンジニア採用資料会社紹介資料">株式会社はてな エンジニア採用資料(会社紹介資料)</h4> <p><iframe id="talk_frame_802621" class="speakerdeck-iframe" src="//speakerdeck.com/player/73919842c53c4af3a7d4025702e399fc" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <a href="https://speakerdeck.com/hatena/engineers-recruitment">&#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A; &#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528;&#x8CC7;&#x6599; / Engineers Recruitment - Speaker Deck</a></p> </div> hatenatech 2023年のはてなスタッフのアウトプットまとめ hatenablog://entry/6801883189065905608 2023-12-31T22:00:00+09:00 2023-12-31T22:00:15+09:00 こんにちは、id:onk です。 2023年は、インパーソンの技術カンファレンスが戻ってきた 1 年だったなぁと思います。私が参加した 100 名程度以上の規模のものだけでも、以下のように参加していました。 2023/02/18 福岡Rubyist会議03 2023/03/04 鹿児島Ruby会議02 2023/03/19 YAPC::Kyoto 2023 2023/05/11-13 RubyKaigi 2023 2023/07/13 開発生産性Conference 2023/08/03 CloudNative Days Fukuoka 2023 (病欠) 2023/09/09 Osaka R… <p>こんにちは、<a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a> です。 2023年は、インパーソンの技術カンファレンスが戻ってきた 1 年だったなぁと思います。私が参加した 100 名程度以上の規模のものだけでも、以下のように参加していました。</p> <ul> <li>2023/02/18 <a href="https://regional.rubykaigi.org/fukuoka03/">福岡Rubyist会議03</a></li> <li>2023/03/04 <a href="https://k-ruby.com/kagoshima-rubykaigi02/">鹿児島Ruby会議02</a></li> <li>2023/03/19 <a href="https://yapcjapan.org/2023kyoto/">YAPC::Kyoto 2023</a></li> <li>2023/05/11-13 <a href="https://rubykaigi.org/2023/">RubyKaigi 2023</a></li> <li>2023/07/13 <a href="https://dev-productivity-con.findy-code.io/">開発生産性Conference</a></li> <li>2023/08/03 <a href="https://event.cloudnativedays.jp/cndf2023">CloudNative Days Fukuoka 2023</a> (病欠)</li> <li>2023/09/09 <a href="https://regional.rubykaigi.org/osaka03/">Osaka RubyKaigi 03</a></li> <li>2023/09/29 <a href="https://conference.pixiv.co.jp/2023/meetup">PIXIV MEETUP 2023</a></li> <li>2023/10/15 <a href="https://regional.rubykaigi.org/oedo10/">大江戸Ruby会議 10</a></li> <li>2023/10/27-28 <a href="https://kaigionrails.org/2023">Kaigi on Rails 2023</a></li> <li>2023/11/17 <a href="https://2023.agilejapan.jp/">Agile Japan 2023</a></li> <li>2023/11/18 <a href="https://vimconf.org/2023/">VimConf 2023 Tiny</a></li> <li>2023/11/19 <a href="https://jsconf.jp/2023/">JSConf JP</a></li> <li>2023/12/02 <a href="https://kyotogo.connpass.com/event/285351/">Go Conference mini 2023 Winter in Kyoto</a></li> <li>2023/12/11-12 <a href="https://event.cloudnativedays.jp/cndt2023">CloudNative Days Tokyo 2023</a></li> </ul> <p>コロナ禍の反動でつい行き過ぎてますね……。</p> <p>さて、はてなスタッフも色んなところで登壇しているなぁと思ったので、アウトプット、特に勉強会・カンファレンスでの登壇をまとめてみます。オンラインオフライン合わせて 88 件あるようです。せっかくなので全公開しておきます。</p> <ul class="table-of-contents"> <li><a href="#125-Hatena-Engineer-Seminar-23">1/25 Hatena Engineer Seminar #23</a></li> <li><a href="#210-関西CTO技術責任者10名が語るDX時代のエンジニアリング組織戦略">2/10 関西CTO/技術責任者10名が語るDX時代のエンジニアリング組織戦略</a></li> <li><a href="#216-第14回-Customer系エンジニア座談会">2/16 第14回 Customer系エンジニア座談会</a></li> <li><a href="#38-Findy-LT-Night-関西開発拠点の最前線-開発生産性の取り組みをオフラインで語り合う">3/8 Findy LT Night 〜関西開発拠点の最前線〜 開発生産性の取り組みをオフラインで語り合う</a></li> <li><a href="#317-サブカル業界Developers-勉強会-Vol4">3/17 サブカル業界Developers 勉強会 Vol.4</a></li> <li><a href="#317-はてなZOZOプルリクエスト分割が開発生産性向上のカギエンジニアチーム全体で改善を推進">3/17 【はてな×ZOZO】プルリクエスト分割が開発生産性向上のカギ?〜エンジニアチーム全体で改善を推進〜</a></li> <li><a href="#318-YAPCKyoto-2023-前日祭-ネコトーストラボ杯争奪東西対抗LTマッチ">3/18 YAPC::Kyoto 2023 前日祭 ネコトーストラボ杯争奪東西対抗LTマッチ</a></li> <li><a href="#318-YAPCKyoto-2023-Reject-Con">3/18 YAPC::Kyoto 2023 Reject Con</a></li> <li><a href="#319-YAPCKyoto-2023">3/19 YAPC::Kyoto 2023</a></li> <li><a href="#412-個人開発祭り-2">4/12 個人開発祭り #2</a></li> <li><a href="#415-16-ScalaMatsuri-2023">4/15-16 ScalaMatsuri 2023</a></li> <li><a href="#422-ITエンジニアに役立つChatGPT-LTトークセッション">4/22 ITエンジニアに役立つ"ChatGPT" LT×トークセッション</a></li> <li><a href="#59-Hatena-Engineer-Seminar-24-はてなインターン完全攻略マニュアル">5/9 Hatena Engineer Seminar #24 はてなインターン完全攻略マニュアル</a></li> <li><a href="#519-第2回-Slack-活用アワード-決勝プレゼン大会">5/19 第2回 Slack 活用アワード 決勝プレゼン大会</a></li> <li><a href="#526-Kyotojs-19">5/26 Kyoto.js 19</a></li> <li><a href="#530-Mobile勉強会-Wantedly--チームラボ-9">5/30 Mobile勉強会 Wantedly × チームラボ #9</a></li> <li><a href="#66-Hatena-Engineer-Seminar-25">6/6 Hatena Engineer Seminar #25</a></li> <li><a href="#67-Kyoto-Tech-Talk">6/7 Kyoto Tech Talk</a></li> <li><a href="#616-吉祥寺pm33">6/16 吉祥寺.pm33</a></li> <li><a href="#622-APPDATE-Hubアプリエンジニアがつながるトークセッション">6/22 APPDATE Hub〜アプリエンジニアがつながるトークセッション〜</a></li> <li><a href="#622-非公式PHPカンファレンス福岡全然野菜">6/22 【非公式】PHPカンファレンス福岡全然野菜</a></li> <li><a href="#622-Sendai-Frontend-Meetup-9">6/22 Sendai Frontend Meetup #9</a></li> <li><a href="#629-ちょっぴりDiveDeep-AWS-DevDay延長戦-編">6/29 ちょっぴりDiveDeep AWS DevDay延長戦 編</a></li> <li><a href="#711-Mackerel-Meetup-14-Tokyo">7/11 Mackerel Meetup #14 Tokyo</a></li> <li><a href="#713-開発生産性Conference">7/13 開発生産性Conference</a></li> <li><a href="#714-Kyotogo-43">7/14 Kyoto.go #43</a></li> <li><a href="#721-サブカル業界Developers-勉強会-Vol5">7/21 サブカル業界Developers 勉強会 Vol.5</a></li> <li><a href="#88-JAWS-UG-コンテナ支部-24-ecspresso-MeetUp">8/8 JAWS-UG コンテナ支部 #24 ecspresso MeetUp</a></li> <li><a href="#89-Hatena-Engineer-Seminar-26-エンジニアリングマネージャー編">8/9 Hatena Engineer Seminar #26 エンジニアリングマネージャー編</a></li> <li><a href="#825-アジャイル開発エンジニア勉強会各社の取り組みや課題から学ぶ会">8/25 アジャイル開発エンジニア勉強会~各社の取り組みや課題から学ぶ会~</a></li> <li><a href="#826-湘南pm-1">8/26 湘南.pm #1</a></li> <li><a href="#826-HACKBAR-福岡">8/26 HACK.BAR 福岡</a></li> <li><a href="#91-3-iOSDC-Japan-2023">9/1-3 iOSDC Japan 2023</a></li> <li><a href="#99-大阪Ruby会議03">9/9 大阪Ruby会議03</a></li> <li><a href="#927-Kyoto-Tech-Talk-2">9/27 Kyoto Tech Talk #2</a></li> <li><a href="#926-Mackerel-徹底使いこなし術---Mackerel-Drink-Up-11-Tokyo">9/26 Mackerel 徹底使いこなし術 - Mackerel Drink Up #11 Tokyo</a></li> <li><a href="#929-SRE-NEXT-2023">9/29 SRE NEXT 2023</a></li> <li><a href="#106-Kyotojs-20">10/6 Kyoto.js 20</a></li> <li><a href="#107-ハッカーズチャンプルー-2023">10/7 ハッカーズチャンプルー 2023</a></li> <li><a href="#107-JAWS-FESTA-2023-in-Kyushu">10/7 JAWS FESTA 2023 in Kyushu</a></li> <li><a href="#108-PHP-Conference-Japan-2023">10/8 PHP Conference Japan 2023</a></li> <li><a href="#1010-11-SaaS-on-AWS-2023">10/10-11 SaaS on AWS 2023</a></li> <li><a href="#1013-Scalaわいわい勉強会">10/13 Scalaわいわい勉強会</a></li> <li><a href="#1017-OSS-Drink-Up--LT会">10/17 OSS Drink Up &amp; LT会</a></li> <li><a href="#1025-運用に役立つダッシュボードの作り方---Mackerel-Drink-Up-12-Tokyo">10/25 運用に役立つダッシュボードの作り方 - Mackerel Drink Up #12 Tokyo</a></li> <li><a href="#1028-Vue-Fes-Japan-2023">10/28 Vue Fes Japan 2023</a></li> <li><a href="#118-YUMEMIgrow-Mobile-8">11/8 YUMEMI.grow Mobile #8</a></li> <li><a href="#1116-Hatena-Engineer-Seminar-27-パフォーマンスチューニング編">11/16 Hatena Engineer Seminar #27 「パフォーマンスチューニング編」</a></li> <li><a href="#1116-17-Agile-Japan-2023">11/16-17 Agile Japan 2023</a></li> <li><a href="#1119-JSConf-JP">11/19 JSConf JP</a></li> <li><a href="#1121-今更聞けないAWSインテグレーション---Mackerel-Drink-Up-13-Tokyo">11/21 今更聞けないAWSインテグレーション - Mackerel Drink Up #13 Tokyo</a></li> <li><a href="#1127-出張版Kyotorb-Meetup-大阪だよ">11/27 【出張版】Kyoto.rb Meetup 【大阪だよ】</a></li> <li><a href="#1128-29-Salesforce-World-Tour-Tokyo">11/28-29 Salesforce World Tour Tokyo</a></li> <li><a href="#1129-社内勉強会のノウハウ公開しちゃいますLT会">11/29 社内勉強会のノウハウ、公開しちゃいます!LT会</a></li> <li><a href="#122-Go-Conference-mini-2023-Winter-IN-KYOTO">12/2 Go Conference mini 2023 Winter IN KYOTO</a></li> <li><a href="#125-関西モバイルアプリ研究会A-1">12/5 関西モバイルアプリ研究会A #1</a></li> <li><a href="#1213-Kyoto-Tech-Talk-3">12/13 Kyoto Tech Talk #3</a></li> <li><a href="#1219-Mackerel-Meetup-15-Tokyo">12/19 Mackerel Meetup #15 Tokyo</a></li> </ul> <h3 id="125-Hatena-Engineer-Seminar-23">1/25 <a href="https://hatena.connpass.com/event/271696/">Hatena Engineer Seminar #23</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/SlashNephy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/SlashNephy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:SlashNephy</a><br> 登壇タイトル: 新卒研修で気軽に「ありがとう」を伝え合える Slack アプリを開発した話<br> <a href="https://speakerdeck.com/slashnephy/xin-zu-yan-xiu-deqi-qing-ni-arigatou-wochuan-ehe-eru-slack-apuriwokai-fa-sitahua"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fslashnephy%2Fxin-zu-yan-xiu-deqi-qing-ni-arigatou-wochuan-ehe-eru-slack-apuriwokai-fa-sitahua" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/slashnephy/xin-zu-yan-xiu-deqi-qing-ni-arigatou-wochuan-ehe-eru-slack-apuriwokai-fa-sitahua">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/momochi29/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/momochi29/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:momochi29</a><br> 登壇タイトル: 初めてのデータ移行プロジェクトから得た学び<br> <a href="https://speakerdeck.com/tjmtmmnk/chu-metenodetayi-xing-puroziekutokarade-taxue-bi"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftjmtmmnk%2Fchu-metenodetayi-xing-puroziekutokarade-taxue-bi" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tjmtmmnk/chu-metenodetayi-xing-puroziekutokarade-taxue-bi">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/aoym_05/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/aoym_05/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:aoym_05</a><br> 登壇タイトル: 本質を理解してデザインに取り組む<br> <a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-23-aoym-05"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fhatena%2Fhatena-engineer-seminar-number-23-aoym-05" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-23-aoym-05">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: チームとプロダクトを育てる Mackerel 開発合宿<br> <a href="https://speakerdeck.com/arthur1/hatena-engineer-seminar-number-23-timutopurodakutowoyu-teru-mackerel-kai-fa-he-su"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Farthur1%2Fhatena-engineer-seminar-number-23-timutopurodakutowoyu-teru-mackerel-kai-fa-he-su" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/arthur1/hatena-engineer-seminar-number-23-timutopurodakutowoyu-teru-mackerel-kai-fa-he-su">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/CNaan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/CNaan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:CNaan</a><br> 登壇タイトル: ScrapboxとSlackを使った新卒コミュニケーション術<br> <a href="https://speakerdeck.com/cnaan/communication-using-scrapbox-and-slack"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fcnaan%2Fcommunication-using-scrapbox-and-slack" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/cnaan/communication-using-scrapbox-and-slack">登壇資料</a></p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/engineer-seminar-23-report">Hatena Engineer Seminar #23 をオンラインで開催しました #hatenatech - Hatena Developer Blog</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 毎年、新春のエンジニアセミナーは新卒スタッフの登壇が恒例となっています。今年もチーム開発におけるコミュニケーションのあり方や、小さく素早い PR 粒度、難しいデータ移行で自信を持って検証する方法など、様々なテーマで登壇してくれました。</p> <p>YouTube に録画が上がっています。 <a href="https://youtu.be/IGCB3grHqpc"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FIGCB3grHqpc" alt="" class="http-favicon" /></a><a href="https://youtu.be/IGCB3grHqpc">Hatena Engineer Seminar #23 #hatenatech - YouTube</a></p> <h3 id="210-関西CTO技術責任者10名が語るDX時代のエンジニアリング組織戦略">2/10 <a href="https://flxy.jp/media/ctomeetup2023/">関西CTO/技術責任者10名が語るDX時代のエンジニアリング組織戦略</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a><br> 登壇タイトル: 事業成長とそれに合わせた技術組織の適応について<br> <a href="https://docs.google.com/presentation/d/1VKTubasyZEvAILtxP-kjFNwZv8vZR8d5DBU_WYhShXA/edit#slide=id.p"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1VKTubasyZEvAILtxP-kjFNwZv8vZR8d5DBU_WYhShXA%2Fedit%23slide%3Did.p" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/1VKTubasyZEvAILtxP-kjFNwZv8vZR8d5DBU_WYhShXA/edit#slide=id.p">登壇資料</a> <a href="https://flxy.jp/media/article/21681"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fflxy.jp%2Fmedia%2Farticle%2F21681" alt="" class="http-favicon" /></a><a href="https://flxy.jp/media/article/21681">ブログ</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a><br> 登壇タイトル: 技術広報戦略~エンジニアにとって魅力的な会社にするには~<br> パネルディスカッション <a href="https://flxy.jp/media/article/19591"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fflxy.jp%2Fmedia%2Farticle%2F19591" alt="" class="http-favicon" /></a><a href="https://flxy.jp/media/article/19591">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> による登壇です。共通フレームワークで加速できた時代から、事業や技術スタックの多角化、プロダクトオーナーシップの推進、SRE 文化の浸透と、20年間のはてなの歴史を振り返った発表でした。パネルディスカッションでは個人的なアウトプットが本人にも技術広報的にも良い影響があるという話をしています。</p> <h3 id="216-第14回-Customer系エンジニア座談会">2/16 <a href="https://customer-x-engineer.connpass.com/event/272570/">第14回 Customer系エンジニア座談会</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/missasan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/missasan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:missasan</a><br> 登壇タイトル: 納得感を注入したスキルマップの作り方<br></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a><br> 登壇タイトル: 書籍編集者からCREへ転身してみた<br></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 継続開催している <a href="https://customer-x-engineer.connpass.com/">Customer系エンジニア座談会 - connpass</a> です。まだ書籍等でちゃんと体系化されていない Customer Reliability Engineer という職種のスキルマップが欲しい。スキルマップを作るときに、得たい能力と、なぜそれを得たいのかという軸でまとめた、という発表でした。<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a> は入社 3 ヶ月時点での LT ですね。1 年後にどうなったのかは <a href="https://developer.hatenastaff.com/entry/2023/12/30/110000">「一番の下手くそ」かもしれないけれど、未経験の業務に飛び込んでみる | はてなで働く kmuto にアンケート [#25] - Hatena Developer Blog</a> でご確認ください。</p> <h3 id="38-Findy-LT-Night-関西開発拠点の最前線-開発生産性の取り組みをオフラインで語り合う">3/8 <a href="https://share.hsforms.com/1ikvuiYqtS6SDihe3aAMWqwbymz5">Findy LT Night 〜関西開発拠点の最前線〜 開発生産性の取り組みをオフラインで語り合う</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: デュアルトラックアジャイルとの向き合い方<br> <a href="https://speakerdeck.com/onk/2023-03-08-how-to-deal-with-dual-track-agile"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fonk%2F2023-03-08-how-to-deal-with-dual-track-agile" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/onk/2023-03-08-how-to-deal-with-dual-track-agile">登壇資料</a> <a href="https://onk.hatenablog.jp/entry/2023/03/10/045349"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fonk.hatenablog.jp%2Fentry%2F2023%2F03%2F10%2F045349" alt="" class="http-favicon" /></a><a href="https://onk.hatenablog.jp/entry/2023/03/10/045349">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> ディスカバリーとデリバリーの両輪と言われているが、開発チームとしてはまずは教科書的な解決法があり、コントロール可能な、デリバリー(アウトプット)にこだわるところから始めよう、という発表をしました。ブログはそこそこ反響があった。</p> <h3 id="317-サブカル業界Developers-勉強会-Vol4">3/17 <a href="https://subculturedev.connpass.com/event/275395/">サブカル業界Developers 勉強会 Vol.4</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> パネルディスカッション</p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 継続開催している <a href="https://subculturedev.connpass.com/">サブカル業界Developers - connpass</a> です。インフラ方面が強めの会でしたね。各社の SRE との向き合い方や、デプロイの高速化は誰の役割なのか、オンプレとクラウドのバランス、インシデントとの関わり等の話をしました。会社ごとに特色が出るのでパネルディスカッションは楽しい。</p> <h3 id="317-はてなZOZOプルリクエスト分割が開発生産性向上のカギエンジニアチーム全体で改善を推進">3/17 <a href="https://findy.connpass.com/event/276072/">【はてな×ZOZO】プルリクエスト分割が開発生産性向上のカギ?〜エンジニアチーム全体で改善を推進〜</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/yigarashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yigarashi</a><br> パネルディスカッション<br> <a href="https://togetter.com/li/2103386">togetter</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Four Keys を改善しようと思うとレビュープロセスの改善が必要になる。自身の作業よりもレビューが優先であるという鉄の掟や、PR のサイズを小さくすることがチームに浸透して生産性が向上してきた、という会でした。実際にサイクルタイムがどんどん減っているグラフが出ると成果が分かりやすい。</p> <h3 id="318-YAPCKyoto-2023-前日祭-ネコトーストラボ杯争奪東西対抗LTマッチ">3/18 <a href="https://yapcjapan.connpass.com/event/276583/">YAPC::Kyoto 2023 前日祭 ネコトーストラボ杯争奪東西対抗LTマッチ</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: 新卒エンジニアが1年間で顔を売るために取った行動100連発<br> <a href="https://speakerdeck.com/arthur1/yapc-kyoto-2023-qian-ri-ji-nekotosutorabobei-zheng-duo-dong-xi-dui-kang-ltmatuti"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Farthur1%2Fyapc-kyoto-2023-qian-ri-ji-nekotosutorabobei-zheng-duo-dong-xi-dui-kang-ltmatuti" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/arthur1/yapc-kyoto-2023-qian-ri-ji-nekotosutorabobei-zheng-duo-dong-xi-dui-kang-ltmatuti">登壇資料</a> <a href="https://blog.arthur1.dev/entry/2023/03/20/165700"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.arthur1.dev%2Fentry%2F2023%2F03%2F20%2F165700" alt="" class="http-favicon" /></a><a href="https://blog.arthur1.dev/entry/2023/03/20/165700">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://blog.arthur1.dev/entry/2022/11/25/221436">二日酔いの治し方 - Diary of a Perpetual Student</a> という掴みから始まって、Slack での積極的な発言や、色々な会に顔を出す。夢を語る。その場にいるだけじゃなく、すばやく貢献できる、情熱を持っていると示すことで顔を売っていく、という発表でした。<a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a> の生き様は <a href="https://qiita.com/advent-calendar/2023/mackerel">arthur-1 Mackerel Advent Calendar マラソン</a> からも窺い知れるので、ぜひ見てみてください。</p> <h3 id="318-YAPCKyoto-2023-Reject-Con">3/18 <a href="https://yapcjapan.connpass.com/event/276583/">YAPC::Kyoto 2023 Reject Con</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a><br> 登壇タイトル: テックリードやEM候補必見!チーム開発における様々なボトルネックの整理<br> <a href="https://speakerdeck.com/stefafafan/organization-of-bottlenecks-in-team-development"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fstefafafan%2Forganization-of-bottlenecks-in-team-development" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/stefafafan/organization-of-bottlenecks-in-team-development">登壇資料</a> <a href="https://blog.stenyan.jp/entry/2023/03/20/094654"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.stenyan.jp%2Fentry%2F2023%2F03%2F20%2F094654" alt="" class="http-favicon" /></a><a href="https://blog.stenyan.jp/entry/2023/03/20/094654">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 去年書いていた記事 (<a href="https://blog.stenyan.jp/entry/2022/11/20/190000">ソフトウェア開発サイクルの改善を行う際に認識すべきボトルネックの種類 - stefafafan の fa は3つです</a>) が非常に広範囲のプラクティスをうまく統合していて最高だったので、これをもっと大勢に見て貰おうぜ、と CfP を書いて貰ったのでした。残念ながら reject だったけど、Reject Con で発表できて良かった!</p> <h3 id="319-YAPCKyoto-2023">3/19 <a href="https://yapcjapan.org/2023kyoto/">YAPC::Kyoto 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: ORM - Object-relational mapping<br> <a href="https://speakerdeck.com/onk/2023-03-19-orm-object-relational-mapping"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fonk%2F2023-03-19-orm-object-relational-mapping" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/onk/2023-03-19-orm-object-relational-mapping">登壇資料</a> <a href="https://onk.hatenablog.jp/entry/2023/03/27/003901"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fonk.hatenablog.jp%2Fentry%2F2023%2F03%2F27%2F003901" alt="" class="http-favicon" /></a><a href="https://onk.hatenablog.jp/entry/2023/03/27/003901">ブログ</a> <a href="https://youtu.be/aZZXa6ymp8s"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FaZZXa6ymp8s" alt="" class="http-favicon" /></a><a href="https://youtu.be/aZZXa6ymp8s">YouTube</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/Pasta-K/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Pasta-K/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Pasta-K</a><br> 登壇タイトル: JavaScriptのASTと戯れる<br> ライブコーディング<br> <a href="https://youtu.be/CkuplQhq8Vs"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FCkuplQhq8Vs" alt="" class="http-favicon" /></a><a href="https://youtu.be/CkuplQhq8Vs">YouTube</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/tarao/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tarao/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tarao</a><br> 登壇タイトル: ジョブキューシステムFireworqのアーキテクチャ設計と運用時のベストプラクティス<br> <a href="https://speakerdeck.com/tarao/fireworq"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftarao%2Ffireworq" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tarao/fireworq">登壇資料</a> <a href="https://youtu.be/vPu3qNqD478"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FvPu3qNqD478" alt="" class="http-favicon" /></a><a href="https://youtu.be/vPu3qNqD478">YouTube</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/tkzwtks/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tkzwtks</a><br> 登壇タイトル: Perlブートキャンプのご紹介<br> <a href="https://speakerdeck.com/tkzwtks/perlbutokiyanpugoshao-jie"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftkzwtks%2Fperlbutokiyanpugoshao-jie" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tkzwtks/perlbutokiyanpugoshao-jie">登壇資料</a> <a href="https://blog.tkzwtks.net/entry/2023/03/27/021155"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.tkzwtks.net%2Fentry%2F2023%2F03%2F27%2F021155" alt="" class="http-favicon" /></a><a href="https://blog.tkzwtks.net/entry/2023/03/27/021155">ブログ</a> <a href="https://youtu.be/LCz6NpiCDG0"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FLCz6NpiCDG0" alt="" class="http-favicon" /></a><a href="https://youtu.be/LCz6NpiCDG0">YouTube</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/utgwkk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/utgwkk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:utgwkk</a><br> 登壇タイトル: prototype大全<br> <a href="https://speakerdeck.com/utgwkk/yapc-kyoto-2023"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Futgwkk%2Fyapc-kyoto-2023" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/utgwkk/yapc-kyoto-2023">登壇資料</a> <a href="https://blog.utgw.net/entry/2023/03/21/155645"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.utgw.net%2Fentry%2F2023%2F03%2F21%2F155645" alt="" class="http-favicon" /></a><a href="https://blog.utgw.net/entry/2023/03/21/155645">ブログ</a> <a href="https://youtu.be/F-HOZEzC588"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FF-HOZEzC588" alt="" class="http-favicon" /></a><a href="https://youtu.be/F-HOZEzC588">YouTube</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a><br> 登壇タイトル: 私とPerlとYAPCとはてなと私<br> <a href="https://speakerdeck.com/onishi/yapc-kyoto-2023-keynote"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fonishi%2Fyapc-kyoto-2023-keynote" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/onishi/yapc-kyoto-2023-keynote">登壇資料</a> <a href="https://onishi.hatenablog.com/entry/2023/03/20/141549"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fonishi.hatenablog.com%2Fentry%2F2023%2F03%2F20%2F141549" alt="" class="http-favicon" /></a><a href="https://onishi.hatenablog.com/entry/2023/03/20/141549">ブログ</a> <a href="https://youtu.be/B7nRD9FKZ28"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FB7nRD9FKZ28" alt="" class="http-favicon" /></a><a href="https://youtu.be/B7nRD9FKZ28">YouTube</a></p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/20230418-yapc-kyoto-2023-report">「YAPC::Kyoto 2023」にはてなのエンジニアが登壇しました! #yapcjapan - Hatena Developer Blog</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> YAPC、そして京都開催ということで、はてなから大勢が登壇&参加しました。すべて YouTube にも上がっていますので、ぜひご覧ください。</p> <p><a href="https://www.youtube.com/playlist?list=PLc_D79K7j3r-yvKC82Wd_wrPhESe5VLBf"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fwww.youtube.com%2Fplaylist%3Flist%3DPLc_D79K7j3r-yvKC82Wd_wrPhESe5VLBf" alt="" class="http-favicon" /></a><a href="https://www.youtube.com/playlist?list=PLc_D79K7j3r-yvKC82Wd_wrPhESe5VLBf">YAPC::Kyoto 2023 - YouTube</a></p> <h3 id="412-個人開発祭り-2">4/12 <a href="https://nota.connpass.com/event/279499/">個人開発祭り #2</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: 孤独な個人開発からの脱却: バトグラ技術部への憧憬<br> <a href="https://speakerdeck.com/arthur1/ge-ren-kai-fa-ji-ri-number-2"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Farthur1%2Fge-ren-kai-fa-ji-ri-number-2" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/arthur1/ge-ren-kai-fa-ji-ri-number-2">登壇資料</a></p> <p>ブログ: <a href="https://blog.notainc.com/entry/2023/04/18/184247">Helpfeel主催、 #個人開発祭り 2 開催レポート! - Helpfeel Developers' Blog</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> フィードバックがすぐに反映されたり、集めたデータを活用したりと行った、価値を出して行くサービスを作りたいが、やる気が起きないことにより負のループに繋がってしまう。だからまず維持コストを減らすために色々整えている。これは後にジャンプするためのしゃがみである、という発表でした。パネルディスカッションも良かったですねー。こちらも全編 YouTube に上がっています。</p> <p><a href="https://youtu.be/yJKNDd2TXZM"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FyJKNDd2TXZM" alt="" class="http-favicon" /></a><a href="https://youtu.be/yJKNDd2TXZM">#個人開発祭り #2 - YouTube</a></p> <h3 id="415-16-ScalaMatsuri-2023">4/15-16 <a href="https://2023.scalamatsuri.org/ja">ScalaMatsuri 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/Windymelt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Windymelt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Windymelt</a><br> 登壇タイトル: 解説動画作成ツールをScalaで作成している話<br> <a href="https://www.3qe.us/2023/04-scalamatsuri-zmm-movie-generator"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fwww.3qe.us%2F2023%2F04-scalamatsuri-zmm-movie-generator" alt="" class="http-favicon" /></a><a href="https://www.3qe.us/2023/04-scalamatsuri-zmm-movie-generator">登壇資料</a> <a href="https://youtu.be/rz-tF_GfQ6w"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2Frz-tF_GfQ6w" alt="" class="http-favicon" /></a><a href="https://youtu.be/rz-tF_GfQ6w">YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Scala の話を <a href="https://blog.3qe.us/archive/category/scala">大量にブログに投稿し続けている</a> <a href="http://blog.hatena.ne.jp/Windymelt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Windymelt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Windymelt</a> の、ScalaMatsuri での登壇です。去年のアドベントカレンダーの話 (<a href="https://blog.3qe.us/entry/hatena-advent-2022">Scala記事を書き続けている話 - Lambdaカクテル</a>) も非常に良かったんですが、その流れを汲んで、こんなこともできるぞ、というのを示した良い発表でした。</p> <h3 id="422-ITエンジニアに役立つChatGPT-LTトークセッション">4/22 <a href="https://fukuoka-meetup.connpass.com/event/280292/">ITエンジニアに役立つ&quot;ChatGPT&quot; LT×トークセッション</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a><br> 登壇タイトル: プログラミングを学ぶときの相棒探し - ChatGPT・人・書籍 の場合<br> <a href="https://docs.google.com/presentation/d/1eZuxqLIrZSB-QfuW-D3zEqY3LVyQnguiS3da1prdS7o/edit?usp=sharing"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1eZuxqLIrZSB-QfuW-D3zEqY3LVyQnguiS3da1prdS7o%2Fedit%3Fusp%3Dsharing" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/1eZuxqLIrZSB-QfuW-D3zEqY3LVyQnguiS3da1prdS7o/edit?usp=sharing">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://fukuoka-meetup.connpass.com/">Fukuoka Meetup</a> の LT 会ですね。新しい言語を学ぶ際に、ChatGPT や人、書籍をうまく組み合わせて学習してきた実践と学びの発表です。記号は特に既存の検索エンジンだと検索するのが非常に難しいので厄介ですよね〜</p> <h3 id="59-Hatena-Engineer-Seminar-24-はてなインターン完全攻略マニュアル">5/9 <a href="https://hatena.connpass.com/event/280848/">Hatena Engineer Seminar #24 はてなインターン完全攻略マニュアル</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a><br> 登壇タイトル: はてながインターンをする理由<br> <a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-24-id-onishi"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fhatena%2Fhatena-engineer-seminar-number-24-id-onishi" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-24-id-onishi">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/polamjag/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/polamjag/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:polamjag</a><br> 登壇タイトル: はてなブログとインターンと私<br> <a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-24-id-polamjag"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fhatena%2Fhatena-engineer-seminar-number-24-id-polamjag" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-24-id-polamjag">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/cockscomb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cockscomb</a><br> 登壇タイトル: はてなインターン応募RTA<br> <a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-24-id-cockscomb"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fhatena%2Fhatena-engineer-seminar-number-24-id-cockscomb" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/hatena/hatena-engineer-seminar-number-24-id-cockscomb">登壇資料</a></p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/engineer-seminar-24-report">Hatena Engineer Seminar #24 「はてなインターン完全攻略マニュアル」をオンラインで開催しました #hatenatech - Hatena Developer Blog</a><br> YouTube: <a href="https://youtu.be/KVG3rdCQC7s"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FKVG3rdCQC7s" alt="" class="http-favicon" /></a><a href="https://youtu.be/KVG3rdCQC7s">Hatena Engineer Seminar #24 はてなインターン完全攻略マニュアル #hatenatech - YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 毎年夏のはてなインターン (大規模なWebアプリケーション開発の<strong>すべて</strong>が学べる) に向けての会です。我々が何を考えてインターンをやっているのか、どんなことが学べるのか、選考のおもてなしなど、面白いところをすべてお話ししました。</p> <h3 id="519-第2回-Slack-活用アワード-決勝プレゼン大会">5/19 <a href="https://slackuserawards2023.splashthat.com/">第2回 Slack 活用アワード 決勝プレゼン大会</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: はてなピアスターで生まれるコミュニケーション<br> <a href="https://youtu.be/dUJOQoeaLyo"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FdUJOQoeaLyo" alt="" class="http-favicon" /></a><a href="https://youtu.be/dUJOQoeaLyo">YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://hatena.connpass.com/event/271696/">Hatena Engineer Seminar #23</a> でも発表した「はてなピアスター」の活用について、<a href="https://slackuserawards2023.splashthat.com/">第2回 Slack 活用アワード</a> に応募したものです。サンクスカードとして Slack 上で完結した、気軽に送り合う文化が生まれているのを発表し、優勝しています(さすがです)。 Developer Blog にも書いています。</p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/2023/10/17/170000">新卒研修として開発した「はてなピアスター」がSlack活用アワードで優勝しました - Hatena Developer Blog</a></p> <h3 id="526-Kyotojs-19">5/26 <a href="https://kyotojs.connpass.com/event/282651/">Kyoto.js 19</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a><br> 登壇タイトル: フロントエンドの改善を計測しよう<br> <a href="https://speakerdeck.com/nanimonodemonai/deng-tan-zi-liao"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fnanimonodemonai%2Fdeng-tan-zi-liao" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/nanimonodemonai/deng-tan-zi-liao">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/utgwkk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/utgwkk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:utgwkk</a><br> 登壇タイトル: SPAでもデータをURLでシェアしたい<br> <a href="https://speakerdeck.com/utgwkk/kyoto-dot-js-19"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Futgwkk%2Fkyoto-dot-js-19" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/utgwkk/kyoto-dot-js-19">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://blog.pastak.net/entry/2023/01/17/000138">2 月に 3 年ぶりに復活した Kyoto.js</a> の、復活後 2 回目の会です。Sentry でリアルタイムユーザーモニタリングをやっている様子や、データストアを持たずにデータを共有する方法について発表しています。Sentry の Performance Monitoring で Core Web Vitals の計測ができることは意外と知られていなかった感じでしたね。5 月の京都は、その後 <a href="https://twitter.com/luccafort/status/1662089765376901130">鴨川でのストリート LT</a> に繋がってすごい!</p> <h3 id="530-Mobile勉強会-Wantedly--チームラボ-9">5/30 <a href="https://wantedly.connpass.com/event/282142/">Mobile勉強会 Wantedly × チームラボ #9</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/nabe1216/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nabe1216/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nabe1216</a><br> 登壇タイトル: Google I/O 2023 の個人的おすすめセッションの紹介<br> <a href="https://speakerdeck.com/numeroanddev/introducing-interesting-sessions-at-google-io-2023"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fnumeroanddev%2Fintroducing-interesting-sessions-at-google-io-2023" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/numeroanddev/introducing-interesting-sessions-at-google-io-2023">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://io.google/2023/">5/10 に開催された Google I/O 2023</a> について、キーノートはみんな見ていると思うので、それ以外のオススメセッションを紹介しています。<a href="http://blog.hatena.ne.jp/nabe1216/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nabe1216/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nabe1216</a> さんは、社内の技術勉強会でも Google I/O Recap を発表してくれました。</p> <h3 id="66-Hatena-Engineer-Seminar-25">6/6 <a href="https://hatena.connpass.com/event/283800/">Hatena Engineer Seminar #25</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/miki_bene/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/miki_bene/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:miki_bene</a><br> 登壇タイトル: 社内にアクセシビリティを広めた時に考えたこと<br> <a href="https://speakerdeck.com/benevolent0505/she-nei-niakusesibiriteigai-shan-woguang-meruji-niyi-shi-sitakoto"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fbenevolent0505%2Fshe-nei-niakusesibiriteigai-shan-woguang-meruji-niyi-shi-sitakoto" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/benevolent0505/she-nei-niakusesibiriteigai-shan-woguang-meruji-niyi-shi-sitakoto">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/lunastera/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/lunastera/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:lunastera</a><br> 登壇タイトル: ブックマークチームでアクセシビリティを広める際に、如何にして失敗し、如何にして立て直したか<br> <a href="https://speakerdeck.com/lunastera/hatenaengineerseminar-25"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Flunastera%2Fhatenaengineerseminar-25" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/lunastera/hatenaengineerseminar-25">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/azukiazusa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/azukiazusa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:azukiazusa</a><br> 登壇タイトル: Mackerel のアクセシビリティ改善事例<br> <a href="https://speakerdeck.com/azukiazusa1/mackerel-noakusesibiriteigai-shan-shi-li"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fazukiazusa1%2Fmackerel-noakusesibiriteigai-shan-shi-li" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/azukiazusa1/mackerel-noakusesibiriteigai-shan-shi-li">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/Pasta-K/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Pasta-K/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Pasta-K</a><br> 登壇タイトル: 手を動かして始めるアクセシビリティ改善<br> <a href="https://speakerdeck.com/pastak/shou-wodong-kasiteshi-meru-akusesibiriteigai-shan"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fpastak%2Fshou-wodong-kasiteshi-meru-akusesibiriteigai-shan" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/pastak/shou-wodong-kasiteshi-meru-akusesibiriteigai-shan">登壇資料</a></p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/engineer-seminar-25-report">Hatena Engineer Seminar #25 「アクセシビリティ編」をオンラインで開催しました #hatenatech - Hatena Developer Blog</a><br> YouTube: <a href="https://youtu.be/nHXoK5D6sQY"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FnHXoK5D6sQY" alt="" class="http-favicon" /></a><a href="https://youtu.be/nHXoK5D6sQY">Hatena Engineer Seminar #25 アクセシビリティ編 #hatenatech - YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 2023 年はアクセシビリティに関する会が各地で開催されましたね。Hatena Engineer Seminar でも、社内でやってきた事例を紹介しました。アクセシビリティという軸だけで開催できるぐらいに広まったのは、やっていき/のっていきがちゃんと回っている結果だなぁと感慨深いです。</p> <h3 id="67-Kyoto-Tech-Talk">6/7 <a href="https://line.connpass.com/event/283505/">Kyoto Tech Talk</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/ne-sachirou/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ne-sachirou/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ne-sachirou</a><br> 登壇タイトル: 野生の onbording と onbording 設計<br> <a href="https://speakerdeck.com/ne_sachirou/ye-sheng-no-onbording-to-onbording-she-ji"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fne_sachirou%2Fye-sheng-no-onbording-to-onbording-she-ji" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/ne_sachirou/ye-sheng-no-onbording-to-onbording-she-ji">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/tkzwtks/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tkzwtks</a><br> 登壇タイトル: はてなスターにおける静的ファイル配信の話<br> <a href="https://speakerdeck.com/tkzwtks/hatenasutaniokerujing-de-huairupei-xin-nohua"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftkzwtks%2Fhatenasutaniokerujing-de-huairupei-xin-nohua" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tkzwtks/hatenasutaniokerujing-de-huairupei-xin-nohua">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> マネーフォワードさん、LINE (現 LINEヤフー) さんと一緒に、新しいオフラインイベントを立ち上げてみました。Kyoto.rb の懇親会 (w/<a href="https://twitter.com/luccafort">@luccafort</a>, <a href="https://twitter.com/pinzolo">@pinzolo</a>, <a href="https://twitter.com/onk">@onk</a>) で、せっかくだし何かやりたいねって言っていたのを実現に本気で動いてしまったヤツです。オンボーディングとしての実績解除システム、はてなスターリニューアル時のキャッシュコントロールと、それぞれ面白い発表ができたと思います。</p> <h3 id="616-吉祥寺pm33">6/16 <a href="https://kichijojipm.connpass.com/event/281939/">吉祥寺.pm33</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a><br> 登壇タイトル: YAPC::Kyotoの「全て」<br> <a href="https://speakerdeck.com/papix/all-of-yapc-kyoto"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fpapix%2Fall-of-yapc-kyoto" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/papix/all-of-yapc-kyoto">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://yapcjapan.org/2023kyoto/">YAPC::Kyoto 2023</a> の実行副委員長だった <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a> から、「勉強会は湧いてこない」という発表でした。開催までの全てが書いてあるので、これを元にイベントを開催して欲しいし、スタッフをやってもいいかなと思ってみて欲しい。<a href="https://yapcjapan.org/2024hiroshima/">YAPC::Hiroshima 2024</a> も楽しみですね!</p> <h3 id="622-APPDATE-Hubアプリエンジニアがつながるトークセッション">6/22 <a href="https://hatena.connpass.com/event/285201/">APPDATE Hub〜アプリエンジニアがつながるトークセッション〜</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/ikesyo/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ikesyo</a><br> パネルディスカッション<br></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> nana musicさん、ピクシブさん、BASEさんと合同で、スマホアプリエンジニア向けの会を開催しました。オフラインのみで夜遅くまでガッツリ話す会からしか摂取できない栄養はありますねー。</p> <h3 id="622-非公式PHPカンファレンス福岡全然野菜">6/22 <a href="https://pepabo.connpass.com/event/280682/">【非公式】PHPカンファレンス福岡全然野菜</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a><br> 登壇タイトル: Deployment Previewを用意する流れで学んだ良い仕事の進め方<br> <a href="https://speakerdeck.com/stefafafan/project-management-tips-with-deployment-preview"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fstefafafan%2Fproject-management-tips-with-deployment-preview" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/stefafafan/project-management-tips-with-deployment-preview">登壇資料</a> <a href="https://blog.stenyan.jp/entry/2023/06/25/133004"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.stenyan.jp%2Fentry%2F2023%2F06%2F25%2F133004" alt="" class="http-favicon" /></a><a href="https://blog.stenyan.jp/entry/2023/06/25/133004">ブログ</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a><br> 登壇タイトル: 生産性を高め続けるための「学び方の学び方」<br> <a href="https://docs.google.com/presentation/d/1nK0lmVdv91JHUsEl8x-LqYwWQlU4SbRsai2KX2TTL3A/edit?usp=sharing"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1nK0lmVdv91JHUsEl8x-LqYwWQlU4SbRsai2KX2TTL3A%2Fedit%3Fusp%3Dsharing" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/1nK0lmVdv91JHUsEl8x-LqYwWQlU4SbRsai2KX2TTL3A/edit?usp=sharing">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 全然野菜 (前々夜祭) に、福岡在住メンバーが登壇しました。全然野菜から本編の懇親会まで、3 日間しっかりと交流を楽しめたようで何よりです。今年、来年の PHP カンファレンスは全国で盛り上がっていて凄いなぁ。</p> <h3 id="622-Sendai-Frontend-Meetup-9">6/22 <a href="https://sfeug.connpass.com/event/285907/">Sendai Frontend Meetup #9</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/yohfee/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yohfee/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yohfee</a><br> 登壇タイトル: バーチャル背景の話<br> <a href="https://docs.google.com/presentation/d/1sUlaveiGv_mYS_2cVNYI3UG14nQLDvjgKkTT_YBFqw4"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1sUlaveiGv_mYS_2cVNYI3UG14nQLDvjgKkTT_YBFqw4" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/1sUlaveiGv_mYS_2cVNYI3UG14nQLDvjgKkTT_YBFqw4">登壇資料</a> <a href="https://yohfee.hatenadiary.org/entry/2023/06/22/230000"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyohfee.hatenadiary.org%2Fentry%2F2023%2F06%2F22%2F230000" alt="" class="http-favicon" /></a><a href="https://yohfee.hatenadiary.org/entry/2023/06/22/230000">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 6/22 のイベント 3 つ目。全国でのオフライン回帰の様子が見て取れますね。<a href="http://blog.hatena.ne.jp/yohfee/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yohfee/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yohfee</a> から、LT 映えするデモで LT がありました。 <q>今回は新しい顔ぶれが多かったかも</q> とのこと。</p> <h3 id="629-ちょっぴりDiveDeep-AWS-DevDay延長戦-編">6/29 <a href="https://pages.awscloud.com/choppiri-divedeep-seminar-series-reg.html">ちょっぴりDiveDeep AWS DevDay延長戦 編</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/tkzwtks/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tkzwtks</a><br> 登壇タイトル: 実践データ移行 〜はてなダイアリーや魔法のiらんどの事例と共に〜<br> <a href="https://speakerdeck.com/tkzwtks/tiyotupiridivedeepsuruawsnoshi-jian-aws-dev-day-2023-tokyo-yan-chang-zhan-shi-jian-detayi-xing-hatenadaiariyamo-fa-noirandonoshi-li-togong-ni"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftkzwtks%2Ftiyotupiridivedeepsuruawsnoshi-jian-aws-dev-day-2023-tokyo-yan-chang-zhan-shi-jian-detayi-xing-hatenadaiariyamo-fa-noirandonoshi-li-togong-ni" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tkzwtks/tiyotupiridivedeepsuruawsnoshi-jian-aws-dev-day-2023-tokyo-yan-chang-zhan-shi-jian-detayi-xing-hatenadaiariyamo-fa-noirandonoshi-li-togong-ni">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 数々のデータ移行を手がけた <a href="http://blog.hatena.ne.jp/tkzwtks/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tkzwtks/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tkzwtks</a> から、依存関係のある移行処理を並列実行するための作戦と AWS コンポーネントの使い方についての発表です。savepoint と名付けたこの仕組みは、あらかじめ分割して S3 に JSON を置いておくことで、並列に実行できるし、各 Job の成否やリトライを管理できる、という発明でした。</p> <h3 id="711-Mackerel-Meetup-14-Tokyo">7/11 <a href="https://mackerelio.connpass.com/event/286608/">Mackerel Meetup #14 Tokyo</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/wtatsuru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/wtatsuru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:wtatsuru</a><br> 登壇タイトル: Mackerelの現在と未来 2023<br> <a href="https://speakerdeck.com/mackerelio/mackerel-meetup-number-14"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fmackerelio%2Fmackerel-meetup-number-14" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/mackerelio/mackerel-meetup-number-14">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: 次世代Mackerelのアーキテクチャ<br> <a href="https://speakerdeck.com/mackerelio/mackerel-meetup-number-14-next-generation-architecture"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fmackerelio%2Fmackerel-meetup-number-14-next-generation-architecture" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/mackerelio/mackerel-meetup-number-14-next-generation-architecture">登壇資料</a></p> <p>ブログ: <a href="https://mackerel.io/ja/blog/entry/meetup14-report">【開催レポート】Mackerel Meetup #14 Tokyoを開催しました! - Mackerel お知らせ #mackerelio</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://mackerel.io/ja/blog/entry/meetup14-2">開発者に会いに行けるサービス</a> を謳っていた Mackerel も、4 年ぶりにオフラインイベントを開催しました。ユーザーの皆様と一緒にイベントを作れるのは最高ですねー。今後ともよろしくお願いします。</p> <h3 id="713-開発生産性Conference">7/13 <a href="https://dev-productivity-con.findy-code.io/">開発生産性Conference</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: Four Keys改善のハードシングス!NewsPicks・バイセル・はてなが直面したハードルと乗り越え方<br> パネルディスカッション <a href="https://togetter.com/li/2186813">togetter</a> <a href="https://youtu.be/txFw5RgUWy4"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FtxFw5RgUWy4" alt="" class="http-favicon" /></a><a href="https://youtu.be/txFw5RgUWy4">YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 開発生産性だけでオフライン600人集まるんですね。すごい。Four Keys を取得するまでの試行錯誤や、チームで開発生産性と向き合うためにやったことの話をしました。会の中では、定義にこだわるよりまずなんとなくでもいいので計測するのが大事、という感じでしたね。</p> <h3 id="714-Kyotogo-43">7/14 <a href="https://kyotogo.connpass.com/event/287778/">Kyoto.go #43</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/utgwkk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/utgwkk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:utgwkk</a><br> 登壇タイトル: mockgenによるモック生成を高速化するツール bulkmockgenのご紹介<br> <a href="https://speakerdeck.com/utgwkk/kyoto-dot-go-number-43"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Futgwkk%2Fkyoto-dot-go-number-43" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/utgwkk/kyoto-dot-go-number-43">登壇資料</a> <a href="https://blog.utgw.net/entry/2023/07/18/103332"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.utgw.net%2Fentry%2F2023%2F07%2F18%2F103332" alt="" class="http-favicon" /></a><a href="https://blog.utgw.net/entry/2023/07/18/103332">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://kyotogo.connpass.com/">kyoto.go</a> 久々のオフラインだったかな? 事前にブログも書いていた <a href="https://blog.utgw.net/entry/2023/07/09/133349">bulkmockgen</a> について、課題と解決を発表してくる LT でした。LT 会 + Ask the Speaker という形式面白いですね。</p> <h3 id="721-サブカル業界Developers-勉強会-Vol5">7/21 <a href="https://subculturedev.connpass.com/event/287823/">サブカル業界Developers 勉強会 Vol.5</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: Cache Stampede<br> <a href="https://speakerdeck.com/onk/2023-07-21-cache-stampede"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fonk%2F2023-07-21-cache-stampede" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/onk/2023-07-21-cache-stampede">登壇資料</a> <a href="https://onk.hatenablog.jp/entry/2023/07/31/224505"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fonk.hatenablog.jp%2Fentry%2F2023%2F07%2F31%2F224505" alt="" class="http-favicon" /></a><a href="https://onk.hatenablog.jp/entry/2023/07/31/224505">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> ガッツリ技術の話をしよう!と思って、Cache Stampede の話をしました。Web アプリケーションの文脈でダブルバッファリングってワードが出ることはなかなか無いので、面白ポイントだったんじゃないかと思う。懇親会もあって、はてなからも何名か現地参加だったんですが、うまく引率できなかった (紹介して回れなかった) のが心残りです。</p> <h3 id="88-JAWS-UG-コンテナ支部-24-ecspresso-MeetUp">8/8 <a href="https://jawsug-container.connpass.com/event/285124/">JAWS-UG コンテナ支部 #24 ecspresso MeetUp</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a><br> 登壇タイトル: ecspressoへのコントリビュートを振り返る<br> <a href="https://speakerdeck.com/cohalz/jaws-ug-kontenazhi-bu-number-24-ecspresso-meetup"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fcohalz%2Fjaws-ug-kontenazhi-bu-number-24-ecspresso-meetup" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/cohalz/jaws-ug-kontenazhi-bu-number-24-ecspresso-meetup">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://github.com/kayac/ecspresso/graphs/contributors">人間では fujiwara さんに次いで 2 番目</a> のコミット数である <a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a> から、やってきたことを紹介していく発表でした。途中に出てきた「YAPC::Kyoto 2023の懇親会きっかけで進んだ」という話は本当に良いですね。オフラインカンファレンスの良さは廊下 (突発的に発生するインフォーマルなオフライン議論) だというのが分かります。</p> <h3 id="89-Hatena-Engineer-Seminar-26-エンジニアリングマネージャー編">8/9 <a href="https://hatena.connpass.com/event/290735/">Hatena Engineer Seminar #26 エンジニアリングマネージャー編</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a><br> 登壇タイトル: はてなのエンジニアリングマネジメント、これまでとこれから<br> <a href="https://docs.google.com/presentation/d/1O3hBz4BLcuZNVhEzTvHAJcyF5G-Wfo4b7VUdLn-6VRc/edit#"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1O3hBz4BLcuZNVhEzTvHAJcyF5G-Wfo4b7VUdLn-6VRc%2Fedit%23" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/1O3hBz4BLcuZNVhEzTvHAJcyF5G-Wfo4b7VUdLn-6VRc/edit#">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/yigarashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yigarashi</a><br> 登壇タイトル: はてなEMキャリアパス 最速攻略RTA 新卒部門<br> <a href="https://speakerdeck.com/yigarashi/hatenaemkiyariapasu-zui-su-gong-lue-rta-xin-zu-bu-men"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fyigarashi%2Fhatenaemkiyariapasu-zui-su-gong-lue-rta-xin-zu-bu-men" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/yigarashi/hatenaemkiyariapasu-zui-su-gong-lue-rta-xin-zu-bu-men">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/shimobayashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/shimobayashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:shimobayashi</a><br> 登壇タイトル: 「いい感じにしといて」を支える技術<br> <a href="https://speakerdeck.com/shimobayashi/iigan-zinisitoite-wozhi-eruji-shu"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fshimobayashi%2Fiigan-zinisitoite-wozhi-eruji-shu" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/shimobayashi/iigan-zinisitoite-wozhi-eruji-shu">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/k-murakami0609/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/k-murakami0609/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:k-murakami0609</a><br> 登壇タイトル: エンジニアとしてチーム改善してたら、EMになってた話<br> <a href="https://speakerdeck.com/kmurakami0609/ensiniasemina"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fkmurakami0609%2Fensiniasemina" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/kmurakami0609/ensiniasemina">登壇資料</a></p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/engineer-seminar-26-report">Hatena Engineer Seminar #26 「エンジニアリングマネージャー編」をオンラインで開催しました #hatenatech - Hatena Developer Blog</a><br> YouTube: <a href="https://youtu.be/MkKZNGbErfw"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FMkKZNGbErfw" alt="" class="http-favicon" /></a><a href="https://youtu.be/MkKZNGbErfw">Hatena Engineer Seminar #26 エンジニアリングマネージャー編 #hatenatech - YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> エンジニアリングマネージャーという職種を作った後、新たに EM になった人たちによるそれぞれの EM 像です。三者三様で面白い回でしたね。その後 <a href="https://logmi.jp/events/3997">ログミーにまとめられた</a> のもエンジニアセミナーをやっていて初めての体験でした。<a href="http://blog.hatena.ne.jp/k-murakami0609/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/k-murakami0609/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:k-murakami0609</a> の話は特に良かったなぁ。プロダクトを成長させるための改善を何でもやっていたら裁量が付いてきたし、他の人に新しい挑戦を含めてタスクをお願いしたいときに自分が手を動かせると使える手段が多い。</p> <h3 id="825-アジャイル開発エンジニア勉強会各社の取り組みや課題から学ぶ会">8/25 <a href="https://tech-street.connpass.com/event/292827/">アジャイル開発エンジニア勉強会~各社の取り組みや課題から学ぶ会~</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/yigarashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/yigarashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:yigarashi</a><br> 登壇タイトル: プロダクトマネージャーがアジャイルに習熟して生まれた強いチームの話<br> <a href="https://speakerdeck.com/yigarashi/purodakutomaneziyagaaziyairunixi-shou-sitesheng-maretaqiang-itimunohua"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fyigarashi%2Fpurodakutomaneziyagaaziyairunixi-shou-sitesheng-maretaqiang-itimunohua" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/yigarashi/purodakutomaneziyagaaziyairunixi-shou-sitesheng-maretaqiang-itimunohua">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 仮説検証型アジャイル開発をやっていく上で、デュアルトラックのディスカバリー側にエンジニアが越境して改善していくのは難しさがある。この難しさを、全員で SCRUM BOOTCAMP THE BOOK の読書会を開催したり、PdM にも認定プロダクトオーナー研修を受けてもらったりして、双方からアプローチが回るようにしたら非常に強いチームになった、という、いい話でした。</p> <h3 id="826-湘南pm-1">8/26 <a href="https://shonanpm.connpass.com/event/289094/">湘南.pm #1</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/polamjag/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/polamjag/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:polamjag</a><br> 登壇タイトル: Perl でいい感じに構造化ログを書く旅<br> <a href="https://polamjag.hatenablog.jp/entry/2023/08/26/153000"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fpolamjag.hatenablog.jp%2Fentry%2F2023%2F08%2F26%2F153000" alt="" class="http-favicon" /></a><a href="https://polamjag.hatenablog.jp/entry/2023/08/26/153000">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a> が <a href="https://papix.hatenablog.com/entry/2023/05/29/121433">新たに立ち上げた湘南.pm</a> 第 1 回です。はてなからも 7 名参加しました。盛況で良かった! <a href="http://blog.hatena.ne.jp/polamjag/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/polamjag/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:polamjag</a> の LT はブログを資料としての発表でした。こういうのもいいですねー。</p> <h3 id="826-HACKBAR-福岡">8/26 <a href="https://hackbar.connpass.com/event/290968/">HACK.BAR 福岡</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a><br> 登壇タイトル: 私が好きな型<br> <a href="https://docs.google.com/presentation/d/12Az92jbNub0p0PhIxuFKGiiYHWd8fvChTXTdxn6giNU/edit?usp=sharing"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F12Az92jbNub0p0PhIxuFKGiiYHWd8fvChTXTdxn6giNU%2Fedit%3Fusp%3Dsharing" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/12Az92jbNub0p0PhIxuFKGiiYHWd8fvChTXTdxn6giNU/edit?usp=sharing">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 神戸で営業しているエンジニアバー <a href="https://hackbar.jp/">HACK.BAR</a> が福岡に! LT 会が開催されたので、<a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a> が趣味でやっているラムダ計算の発表をしてきました。</p> <h3 id="91-3-iOSDC-Japan-2023">9/1-3 <a href="https://iosdc.jp/2023/">iOSDC Japan 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/ikesyo/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ikesyo/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ikesyo</a><br> 登壇タイトル: Renovateで実現するライブラリの自動更新生活<br> <a href="https://speakerdeck.com/ikesyo/automated-library-updates-with-renovate"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fikesyo%2Fautomated-library-updates-with-renovate" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/ikesyo/automated-library-updates-with-renovate">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> iOSDC も去年に引き続きハイブリッド開催ですね。今年もスポンサーさせていただいています。はてなからは 5 件 CfP に応募して、1 件の採択でした。<a href="https://github.com/hatena/renovate-config">はてなで公開している Renovate の設定</a> は今年も変化していますので、どうぞご参照ください。トーク中にあった XCodeGen の更新チェックも含まれています。</p> <h3 id="99-大阪Ruby会議03">9/9 <a href="https://regional.rubykaigi.org/osaka03/">大阪Ruby会議03</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: 複数の言語で同じWebサービスを実装して技術特性の違いを見てみた</p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 以前 Developer Blog に書かれた <a href="https://developer.hatenastaff.com/entry/2023/06/14/110000">複数の言語で同じWebサービスを実装して技術特性の違いを見てみた - Hatena Developer Blog</a> の実例を話して来ました。オンラインだと可燃性がちょっと高いので公開してないですスミマセン。</p> <h3 id="927-Kyoto-Tech-Talk-2">9/27 <a href="https://nota.connpass.com/event/294941">Kyoto Tech Talk #2</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a><br> 登壇タイトル: はてなブログのESM化<br> <a href="https://speakerdeck.com/nanimonodemonai/hatenaburogunoesmhua"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fnanimonodemonai%2Fhatenaburogunoesmhua" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/nanimonodemonai/hatenaburogunoesmhua">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 3 社で始めた Kyoto Tech Talk ですが、2 社増えて 5 社の共催になっています。今回は Nota 社のオフィスにお邪魔しました。はてなからは <a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a> による、チームのフロントエンド会から出てきた ESM 化というタスクを、どうプロダクトのロードマップに組み込んだのか、結果としてどんな成果が出たのか、という発表でした。やるべきことをちゃんとやっている感じが伝わると良いなと思います。</p> <h3 id="926-Mackerel-徹底使いこなし術---Mackerel-Drink-Up-11-Tokyo">9/26 <a href="https://mackerelio.connpass.com/event/295797/">Mackerel 徹底使いこなし術 - Mackerel Drink Up #11 Tokyo</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: 仮説検証サイクルでユーザーの声を高速に叶える「キカク組」の取り組み<br> <a href="https://speakerdeck.com/arthur1/mackerel-drink-up-number-11-arthur-1"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Farthur1%2Fmackerel-drink-up-number-11-arthur-1" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/arthur1/mackerel-drink-up-number-11-arthur-1">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/do-su-0805/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/do-su-0805/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:do-su-0805</a><br> 登壇タイトル: 元SREのCREが伝えたい、Mackerelをもっと活用するための実践Tips集<br> <a href="https://speakerdeck.com/dosu0805/mackerel-drink-up-number-11-do-su-0805"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fdosu0805%2Fmackerel-drink-up-number-11-do-su-0805" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/dosu0805/mackerel-drink-up-number-11-do-su-0805">登壇資料</a></p> <p>ブログ: <a href="https://mackerel.io/ja/blog/entry/event/mackerel-drink-up-11-report">【開催レポート】Mackerel Drink Up #11 Tokyoを開催しました! - Mackerel お知らせ #mackerelio</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 毎月開催している Mackerel Drink Up です。Mackerel 開発チームで、仮説検証サイクルをちゃんと回している様子や、アラートをオオカミ少年にしないために抑制していく Tips などが語られました。Drink Up なので、本番は質疑と懇親会ですね。</p> <h3 id="929-SRE-NEXT-2023">9/29 <a href="https://sre-next.dev/2023/">SRE NEXT 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/wtatsuru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/wtatsuru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:wtatsuru</a><br> 登壇タイトル: プロダクトオーナーとしてSLOに向き合う 〜Mackerelチームの事例〜<br> <a href="https://speakerdeck.com/tatsuru/sre-next-2023"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftatsuru%2Fsre-next-2023" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tatsuru/sre-next-2023">登壇資料</a> <a href="https://youtu.be/q_FDQ80umoY"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2Fq_FDQ80umoY" alt="" class="http-favicon" /></a><a href="https://youtu.be/q_FDQ80umoY">YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://mackerel.io/ja/blog/entry/meetup14-5">Mackerel ブログに書いた内容</a> を、更に大勢に届けてきました。SRE 目線での SLO との向き合い方や導入の仕方の話は多いんですが、PO 目線から語られているのは少ないんじゃないでしょうか。ぜひぜひ見てみてください。</p> <h3 id="106-Kyotojs-20">10/6 <a href="https://kyotojs.connpass.com/event/296322/">Kyoto.js 20</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/Windymelt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Windymelt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Windymelt</a><br> 登壇タイトル: ブログ内引用グラフを自作して引用一覧を作った話<br> <a href="https://www.3qe.us/2023/20231006kyotojs.html"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fwww.3qe.us%2F2023%2F20231006kyotojs.html" alt="" class="http-favicon" /></a><a href="https://www.3qe.us/2023/20231006kyotojs.html">登壇資料</a> <a href="https://blog.3qe.us/entry/2023/10/08/003311"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.3qe.us%2Fentry%2F2023%2F10%2F08%2F003311" alt="" class="http-favicon" /></a><a href="https://blog.3qe.us/entry/2023/10/08/003311">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Kyoto.js 復活第 3 回。継続していて素晴らしいですね。この会は Scala.js、CoffeeScript と AltJS の話題が多かったのが特徴的でした。<a href="http://blog.hatena.ne.jp/Windymelt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Windymelt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Windymelt</a> の <q>手ぶらでScala.js最近良くできてますよ!という話をしても仕方がないので、実際にScala.jsで動作するウィジェットをこのブログの下部に追加しました。</q> というムーブはとても良い。</p> <h3 id="107-ハッカーズチャンプルー-2023">10/7 <a href="https://hackers-champloo.org/2023/">ハッカーズチャンプルー 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/anatofuz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/anatofuz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:anatofuz</a><br> 登壇タイトル: 沖縄の大学で育った学生がエンジニアになるまで<br> <a href="https://speakerdeck.com/anatofuz/chong-nawa-noda-xue-deyu-tutaxue-sheng-gaenzinianinarumade"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fanatofuz%2Fchong-nawa-noda-xue-deyu-tutaxue-sheng-gaenzinianinarumade" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/anatofuz/chong-nawa-noda-xue-deyu-tutaxue-sheng-gaenzinianinarumade">登壇資料</a> <a href="https://anatofuz.hatenablog.com/entry/2023/10/10/211609"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fanatofuz.hatenablog.com%2Fentry%2F2023%2F10%2F10%2F211609" alt="" class="http-favicon" /></a><a href="https://anatofuz.hatenablog.com/entry/2023/10/10/211609">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> ハッカーズチャンプルーも 4 年ぶりですね!<a href="http://blog.hatena.ne.jp/anatofuz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/anatofuz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:anatofuz</a> のトークは壮大なフルタイム自己紹介です。「企み、段取り、遂行する」「気づいたらかつての先輩っぽいムーブをしていた」等、いい話が次々繰り出されてすごく良かった。</p> <h3 id="107-JAWS-FESTA-2023-in-Kyushu">10/7 <a href="https://jft2023.jaws-ug.jp/">JAWS FESTA 2023 in Kyushu</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a><br> 登壇タイトル: ECSのCI/CD改善と標準化の取り組み<br> <a href="https://speakerdeck.com/cohalz/jaws-festa-2023-in-kyushu"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fcohalz%2Fjaws-festa-2023-in-kyushu" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/cohalz/jaws-festa-2023-in-kyushu">登壇資料</a> <a href="https://cohalz.co/entry/2023/10/12/104950"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fcohalz.co%2Fentry%2F2023%2F10%2F12%2F104950" alt="" class="http-favicon" /></a><a href="https://cohalz.co/entry/2023/10/12/104950">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 発表の良さもさることながら (そういえば一昨日の <a href="https://developer.hatenastaff.com/entry/2023/12/29/110000">はてなブックマークのステージング環境を支える技術 - Hatena Developer Blog</a> にもデプロイ周りの話が書かれていましたね)、ブログで説明された色々がまた尊くて良いのだよなぁ。こういう話が求められているんじゃないかとか、人と人とを繋げているのとか。</p> <h3 id="108-PHP-Conference-Japan-2023">10/8 <a href="https://phpcon.php.gr.jp/2023/">PHP Conference Japan 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: 学園祭Web開発の現場とPHPのこれまでとこれから──技術選定と教育から語る<br> <a href="https://speakerdeck.com/arthur1/php-conference-japan-2023"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Farthur1%2Fphp-conference-japan-2023" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/arthur1/php-conference-japan-2023">登壇資料</a> <a href="https://blog.arthur1.dev/entry/2023/10/10/201410"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.arthur1.dev%2Fentry%2F2023%2F10%2F10%2F201410" alt="" class="http-favicon" /></a><a href="https://blog.arthur1.dev/entry/2023/10/10/201410">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 去年ブログに書いていた三部作 (<a href="https://blog.arthur1.dev/entry/2022/12/17/064900">学園祭のWeb開発を語る: 具象編1</a> <a href="https://blog.arthur1.dev/entry/2022/12/23/093000">具象編2</a> <a href="https://blog.arthur1.dev/entry/2023/01/14/093000">抽象編</a>) の集大成としての登壇。人がどんどん入れ替わっていく難しさと立ち向かいながら、学ぶ場と遊ぶ場を用意して本番に臨む、という技術マネジメントの話です。ブログにも <q>伝えたい内容を一言で書くと「技術的決定はチームやプロダクトの特徴を捉えて決めましょう」という話でした。</q> と書かれていますね。</p> <h3 id="1010-11-SaaS-on-AWS-2023">10/10-11 <a href="https://pages.awscloud.com/saas-on-aws-reg.html">SaaS on AWS 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/heleeen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/heleeen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:heleeen</a><br> 登壇タイトル: CloudNative 移行で実現した Mackerel における SaaS 開発<br></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Mackerel で Batch 環境を EC2 から CloudNative な構成に変化させたアーキテクチャの変化と、その過程でどのように可観測性を改善していったかという発表です。クラウド移行したことで、特にログ周りが stdout に出力するだけになって楽になったこと、また検索しやすくなったので、そこからメトリック化している様子などを話しています。</p> <h3 id="1013-Scalaわいわい勉強会">10/13 <a href="https://scala-tokyo.connpass.com/event/297260/">Scalaわいわい勉強会</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/Windymelt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Windymelt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Windymelt</a><br> 登壇タイトル: http4s入門<br> <a href="https://www.3qe.us/2023/20231013scalawaiwai.html"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fwww.3qe.us%2F2023%2F20231013scalawaiwai.html" alt="" class="http-favicon" /></a><a href="https://www.3qe.us/2023/20231013scalawaiwai.html">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: Scala の好きなところ 難しいところ<br> <a href="https://speakerdeck.com/arthur1/number-scala-waiwai"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Farthur1%2Fnumber-scala-waiwai" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/arthur1/number-scala-waiwai">登壇資料</a></p> <p>ブログ: <a href="https://scalawaiwai.hatenablog.com/entry/waiwai2023">株式会社はてな後援、Scalaわいわい勉強会を開催しました! #scala_waiwai - Scalaわいわいブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <q>Scalaわいわい勉強会とその母体となったScalaわいわいランドは、「Scalaを楽しく学んでほしい」という理念から生まれました。</q> とブログにも書かれていますが、初心者から上級者まで楽しめるイベントを開催できたというのは本当に素晴らしいことですね。私は <a href="https://jp.quora.com/Ruby%E3%81%AB%E3%81%A8%E3%81%A3%E3%81%A6%E6%B1%BA%E5%AE%9A%E7%9A%84%E3%81%AB%E8%B6%B3%E3%82%8A%E3%81%AA%E3%81%84%E3%82%82%E3%81%AE%E3%81%AF%E4%BD%95%E3%81%A0%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B">Rubyにとって決定的に足りないものは何だと思いますか? - Quora</a> という話を思い出していました。</p> <h3 id="1017-OSS-Drink-Up--LT会">10/17 <a href="https://engineercafe.connpass.com/event/297306/">OSS Drink Up &amp; LT会</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a><br> 登壇タイトル: たぶんこれが一番ささやかなコントリビュートの始め方<br> <a href="https://docs.google.com/presentation/d/1A6luZjAJzx0RDykGAkK0mr7-ALK1_a0t5zXXsGivlLo/edit?usp=sharing"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1A6luZjAJzx0RDykGAkK0mr7-ALK1_a0t5zXXsGivlLo%2Fedit%3Fusp%3Dsharing" alt="" class="http-favicon" /></a><a href="https://docs.google.com/presentation/d/1A6luZjAJzx0RDykGAkK0mr7-ALK1_a0t5zXXsGivlLo/edit?usp=sharing">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://engineercafe.jp/ja/">Engineer Cafe</a> のイベントですね。コントリビュートをドキュメントから始めるというのは本当にとてもオススメです。コードを書く側の人はそこまで手が回らないが、初心者はよく読む、という対称性があるので。はてなのエンジニアもよくドキュメントに対して修正の PR を送っています。</p> <h3 id="1025-運用に役立つダッシュボードの作り方---Mackerel-Drink-Up-12-Tokyo">10/25 <a href="https://mackerelio.connpass.com/event/298385/">運用に役立つダッシュボードの作り方 - Mackerel Drink Up #12 Tokyo</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/taxintt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/taxintt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:taxintt</a><br> 登壇タイトル: Mackerel開発チームでのカスタムダッシュボードの活用例<br> <a href="https://speakerdeck.com/taxin/kasutamudatusiyubodonohuo-yong-fang-fa-tomackerelkai-fa-timudenoshi-jian-li"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftaxin%2Fkasutamudatusiyubodonohuo-yong-fang-fa-tomackerelkai-fa-timudenoshi-jian-li" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/taxin/kasutamudatusiyubodonohuo-yong-fang-fa-tomackerelkai-fa-timudenoshi-jian-li">登壇資料</a></p> <p>ブログ: <a href="https://mackerel.io/ja/blog/entry/event/mackerel-drink-up-12-report">【開催レポート】Mackerel Drink Up #12 Tokyoを開催しました! - Mackerel お知らせ #mackerelio</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 毎月開催している Mackerel Drink Up です。ダッシュボードを上手く使うために、認知負荷が高すぎない (情報を詰め込みすぎない) ようにしよう。情報を整理するときはダッシュボードの利用目的から整理すると良いよ、という話をしています。イベントの LT でも効果的なダッシュボードの作り方について話していただけました。この回はライブコーディングからリリースに繋げられたのが特に良かったですね。<q>さらに <a href="http://blog.hatena.ne.jp/arthur-1/">id:arthur-1</a> がユーザーの要望をその場でライブコーディングして実装するイベントがありました。この機能は Drink Up 開催翌日にリリースされました!</q></p> <h3 id="1028-Vue-Fes-Japan-2023">10/28 <a href="https://vuefes.jp/2023/">Vue Fes Japan 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/mizdra/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizdra/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizdra</a><br> 登壇タイトル: Vue Language Server から生まれた Volar.js と、それが秘める可能性<br> <a href="https://speakerdeck.com/mizdra/vue-language-server-karasheng-mareta-volar-dot-js-to-soregami-meruke-neng-xing"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fmizdra%2Fvue-language-server-karasheng-mareta-volar-dot-js-to-soregami-meruke-neng-xing" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/mizdra/vue-language-server-karasheng-mareta-volar-dot-js-to-soregami-meruke-neng-xing">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Vue の LSP である Volar の話です。私はこのトークを見るまで他の LSP (に限らないツール) を作るためのフレームワークであるということは知りませんでした。1 ファイルに複数言語が混ざるときの難しさを解決してくれるものが利用可能な形で公開されているとは。Vue コミュニティすごいなぁ。</p> <h3 id="118-YUMEMIgrow-Mobile-8">11/8 <a href="https://yumemi.connpass.com/event/299907/">YUMEMI.grow Mobile #8</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/tokizuoh/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/tokizuoh/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:tokizuoh</a><br> 登壇タイトル: Xcode 15 で swift run が遅い<br> <a href="https://speakerdeck.com/tokizuoh/xcode-15-de-swift-run-gachi-i"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftokizuoh%2Fxcode-15-de-swift-run-gachi-i" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/tokizuoh/xcode-15-de-swift-run-gachi-i">登壇資料</a> <a href="https://tokizuoh.hatenablog.com/entry/2023/11/08/205328"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Ftokizuoh.hatenablog.com%2Fentry%2F2023%2F11%2F08%2F205328" alt="" class="http-favicon" /></a><a href="https://tokizuoh.hatenablog.com/entry/2023/11/08/205328">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 現実のユースケースで困ったこと、グッとにらんだら解決方法が分かった、という発表でした。LT 映えする問題解決ですねー。</p> <h3 id="1116-Hatena-Engineer-Seminar-27-パフォーマンスチューニング編">11/16 <a href="https://hatena.connpass.com/event/301251/">Hatena Engineer Seminar #27 「パフォーマンスチューニング編」</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/rmatsuoka/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rmatsuoka/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rmatsuoka</a><br> 登壇タイトル: OpenTelemetry の Trace を中心としたパフォーマンス改善<br> <a href="https://speakerdeck.com/rmatsuoka/opentelemetry-no-trace-wozhong-xin-tosita-hahuomansugai-shan"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Frmatsuoka%2Fopentelemetry-no-trace-wozhong-xin-tosita-hahuomansugai-shan" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/rmatsuoka/opentelemetry-no-trace-wozhong-xin-tosita-hahuomansugai-shan">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a><br> 登壇タイトル: はてなブログのブログ表示に必要なJSを1/6にした話<br> <a href="https://speakerdeck.com/nanimonodemonai/6nisitahua"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fnanimonodemonai%2F6nisitahua" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/nanimonodemonai/6nisitahua">登壇資料</a></p> <p>ブログ: <a href="https://developer.hatenastaff.com/entry/engineer-seminar-27-report">Hatena Engineer Seminar #27 「パフォーマンスチューニング編」をオンラインで開催しました #hatenatech - Hatena Developer Blog</a><br> YouTube: <a href="https://youtu.be/H0UwKBhZdpM"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FH0UwKBhZdpM" alt="" class="http-favicon" /></a><a href="https://youtu.be/H0UwKBhZdpM">Hatena Engineer Seminar #27 パフォーマンスチューニング編 #hatenatech - YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> ISUCON13 が 11/25 なので、意識が向いているときにと思ってパフォーマンスチューニング編です。<a href="http://blog.hatena.ne.jp/rmatsuoka/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rmatsuoka/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rmatsuoka</a> さんからは OpenTelemetry の Trace を計装し、トレース結果を見ながらパフォーマンス改善をする具体的な手順、<a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:nanimono_demonai</a> さんからは ESM 化で配信 JS サイズを 1/10 まで削った話について発表しました。プロファイリングしないと見つけられなかっただろうなぁという部分をちゃんと潰せているのが勘や経験による改善と違っていて、ちゃんと計測しながら改善していく過程が非常に良かった。</p> <h3 id="1116-17-Agile-Japan-2023">11/16-17 <a href="https://2023.agilejapan.jp/">Agile Japan 2023</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: 生産性指標を可視化し、開発チームのボトルネック発見・改善を加速させる<br></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Findy さんと一緒の登壇です。イテレーティブな開発をしているので「1イテレーションだけ試しましょう」をやりやすい。生産性指標を取得していると、改善する必要があると説明する際に客観的な数字を持ち込めたり、数字があるので改善結果が分かりやすくゲーミフィケーション要素もあるので盛り上がったりと、さらに改善が加速するよ、という話をしました。</p> <h3 id="1119-JSConf-JP">11/19 <a href="https://jsconf.jp/2023/">JSConf JP</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/azukiazusa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/azukiazusa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:azukiazusa</a><br> 登壇タイトル: JavaScript なしで動作するモダンなコードの書き方<br> <a href="https://speakerdeck.com/azukiazusa1/javascript-nasidedong-zuo-surumodannakodonoshu-kifang"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fazukiazusa1%2Fjavascript-nasidedong-zuo-surumodannakodonoshu-kifang" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/azukiazusa1/javascript-nasidedong-zuo-surumodannakodonoshu-kifang">登壇資料</a> <a href="https://youtu.be/gaiCvYdVX3s"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FgaiCvYdVX3s" alt="" class="http-favicon" /></a><a href="https://youtu.be/gaiCvYdVX3s">YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://azukiazusa.dev/">https://azukiazusa.dev/</a> で書き溜めてきた内容を LT で。Progressive Enhancement は昔から言われてきましたが、昨今のフロントエンドフレームワークにおいても重要度が増しています、という話題から入っているのが面白かったですね。 Hydration 前などの JS 未ロードなタイミングでもインタラクションを受け付けられるようにしたいという欲求は (CWV でも測定されるし) よく分かる。そのための手段をいくつか紹介しています。</p> <h3 id="1121-今更聞けないAWSインテグレーション---Mackerel-Drink-Up-13-Tokyo">11/21 <a href="https://mackerelio.connpass.com/event/300583/">今更聞けないAWSインテグレーション - Mackerel Drink Up #13 Tokyo</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/lufiabb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/lufiabb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:lufiabb</a><br> 登壇タイトル: Mackerel開発者が使ってほしいAWSインテグレーションの機能4選<br> <a href="https://speakerdeck.com/mackerelio/mackerel-drink-up-13"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fmackerelio%2Fmackerel-drink-up-13" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/mackerelio/mackerel-drink-up-13">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 毎月開催している Mackerel Drink Up です。今回は AWS インテグレーションについて、使い方や、使うと便利な機能について紹介しました。AWS インテグレーションも継続開発していますので、取得可能なメトリックが増えたり、自動退役対象のサービスが増えたりしています。うまくご活用ください。</p> <h3 id="1127-出張版Kyotorb-Meetup-大阪だよ">11/27 <a href="https://kyotorb.connpass.com/event/296972/">【出張版】Kyoto.rb Meetup 【大阪だよ】</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a><br> 登壇タイトル: Rails 7.1 の複合主キー対応<br></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> ノー資料で LT しました。Rails 7.1 (2023-10-05 に 2 年ぶりのバージョンアップ) のキラー機能として複合主キー対応があります。複合主キーの使いどころや、今までの Rails ではどう複合主キーを扱っていたのか、本体にどのように入ったのか、<a href="https://rubyonrails.org/world/2023/speakers/nikita-vasilevsky">Rails World での発表</a>、といった話をしました。Kyoto.rb は普段はもちろん京都で開催しているんですが、平日に大阪開催するとやっぱり人が多いですね。</p> <h3 id="1128-29-Salesforce-World-Tour-Tokyo">11/28-29 <a href="https://event.salesforce-japan.com/wttnov23/catalog">Salesforce World Tour Tokyo</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a><br> 登壇タイトル: 感謝を伝え合う社内Slackアプリ『はてなピアスター』の取り組み<br></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 普段こういうビジネスっぽい会はあまり接点が無いので面白いですね。第2回Slack活用アワードで優勝した「はてなピアスター」の取り組みについて。また、開発において Bolt フレームワークを用いたので、Bolt で Slack アプリを作る解説も行いました。</p> <h3 id="1129-社内勉強会のノウハウ公開しちゃいますLT会">11/29 <a href="https://yumenosora.connpass.com/event/300021/">社内勉強会のノウハウ、公開しちゃいます!LT会</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a><br> 登壇タイトル: Team Topologies輪読会とScrapboxの活用<br> <a href="https://speakerdeck.com/stefafafan/team-topologies-reading-group-and-scrapbox"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fstefafafan%2Fteam-topologies-reading-group-and-scrapbox" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/stefafafan/team-topologies-reading-group-and-scrapbox">登壇資料</a> <a href="https://youtu.be/Q7WYlsm8_k0"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fyoutu.be%2FQ7WYlsm8_k0" alt="" class="http-favicon" /></a><a href="https://youtu.be/Q7WYlsm8_k0">YouTube</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 社内で開催した Team Topologies の読書会の進め方を紹介しています。Scrapbox でどんどんコメントを書いておくと、ただ本を読むだけじゃなく、参加者でコミュニケーションが発生するし実例をもとに深く会話できる。また、読み終えることそのものよりも参加メンバーの学びになっていることを意識しながら開催している、という話をしています。「ちいとぽ」の後は <a href="https://www.oreilly.co.jp/books/9784814400263/">Running Lean 第3版</a> の読書会がありました。最近は新しい読書会を開催できていないので、来年はやっていきたいですね。</p> <h3 id="122-Go-Conference-mini-2023-Winter-IN-KYOTO">12/2 <a href="https://kyotogo.connpass.com/event/285351/">Go Conference mini 2023 Winter IN KYOTO</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a><br> 登壇タイトル: 開発チーム横断タスクフォース「Goサブ会」の運用事例と今後の展望<br> <a href="https://speakerdeck.com/stefafafan/introduction-to-the-go-task-force"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fstefafafan%2Fintroduction-to-the-go-task-force" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/stefafafan/introduction-to-the-go-task-force">登壇資料</a> <a href="https://blog.stenyan.jp/entry/2023/12/05/001508"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.stenyan.jp%2Fentry%2F2023%2F12%2F05%2F001508" alt="" class="http-favicon" /></a><a href="https://blog.stenyan.jp/entry/2023/12/05/001508">ブログ</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/ne-sachirou/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ne-sachirou/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ne-sachirou</a><br> 登壇タイトル: 作ってよかったgraceful shutdownライブラリ<br> <a href="https://speakerdeck.com/ne_sachirou/zuo-tuteyokatutagraceful-shutdownraiburari-number-kyotogo"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fne_sachirou%2Fzuo-tuteyokatutagraceful-shutdownraiburari-number-kyotogo" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/ne_sachirou/zuo-tuteyokatutagraceful-shutdownraiburari-number-kyotogo">登壇資料</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 本編で <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a> が、LT で <a href="http://blog.hatena.ne.jp/ne-sachirou/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ne-sachirou/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ne-sachirou</a> が採択されて発表しました。<a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a> さんからは、Go サブ会の紹介。はてなで Go の採択は普通に行われているんですが、組織だった支援を実施できていなかったので、サブ会という形で横串の会を立ち上げました。サブ会で会話するだけでも困りごとは解消できていたんですが、調べないと分からないような困りごとに対して、個人技ではなく会として対応するために分科会を始めたり、ドキュメントを充実させていっている様子などをお届けしています。<a href="http://blog.hatena.ne.jp/ne-sachirou/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/ne-sachirou/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:ne-sachirou</a> さんの LT は、この Go サブ会から生まれた共通化レイヤーですね。手癖で書きがち(かつ間違えがち)な graceful shutdown についてライブラリ化して公開しています。</p> <h3 id="125-関西モバイルアプリ研究会A-1">12/5 <a href="https://kanmoba.connpass.com/event/300598/">関西モバイルアプリ研究会A #1</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/takuji31/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/takuji31/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:takuji31</a><br> 登壇タイトル: KSP を使ってコード生成<br> <a href="https://speakerdeck.com/takuji31/kspwoshi-tutekodosheng-cheng"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Ftakuji31%2Fkspwoshi-tutekodosheng-cheng" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/takuji31/kspwoshi-tutekodosheng-cheng">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/cockscomb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cockscomb</a><br> 登壇タイトル: Typed throwsについて<br> <a href="https://cockscomb.hatenablog.com/entry/se-0413-typed-throws"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fcockscomb.hatenablog.com%2Fentry%2Fse-0413-typed-throws" alt="" class="http-favicon" /></a><a href="https://cockscomb.hatenablog.com/entry/se-0413-typed-throws">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> <a href="https://kanmoba.connpass.com/">関西モバイルアプリ研究会</a> が 4 年ぶりのリブートです。はてなからも 5 名参加しました。</p> <h3 id="1213-Kyoto-Tech-Talk-3">12/13 <a href="https://moneyforward.connpass.com/event/301922/">Kyoto Tech Talk #3</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/noy72/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/noy72/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:noy72</a><br> 登壇タイトル: 開発合宿の裏側 - Web アプリケーションを素早く作る<br> <a href="https://speakerdeck.com/noy72/kai-fa-he-su-noli-ce-web-apurikesiyonwosu-zao-kuzuo-ru"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fnoy72%2Fkai-fa-he-su-noli-ce-web-apurikesiyonwosu-zao-kuzuo-ru" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/noy72/kai-fa-he-su-noli-ce-web-apurikesiyonwosu-zao-kuzuo-ru">登壇資料</a> <a href="https://noy72.com/articles/2023-12-26-kyoto-tech-3/"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fnoy72.com%2Farticles%2F2023-12-26-kyoto-tech-3%2F" alt="" class="http-favicon" /></a><a href="https://noy72.com/articles/2023-12-26-kyoto-tech-3/">ブログ</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 開発合宿に準備をして臨んで爆速で開発する。その準備と、当日のコミュニケーション設計、という話です。開発合宿中にそれぞれペアで作業したり、ペア用の Slack チャンネルを用意したり、@here し放題にしたりといった、コミュニケーションを爆速にするための工夫について発表しています。合宿前に CI/CD が用意されていたくだりでは、それが爆速の源泉だとかなりの共感を生んでいました。</p> <h3 id="1219-Mackerel-Meetup-15-Tokyo">12/19 <a href="https://mackerelio.connpass.com/event/302254/">Mackerel Meetup #15 Tokyo</a></h3> <p>登壇者: <a href="http://blog.hatena.ne.jp/wtatsuru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/wtatsuru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:wtatsuru</a><br> 登壇タイトル: Mackerelの2023年ふりかえりと 今後のロードマップ<br> <a href="https://speakerdeck.com/mackerelio/mackerel-meetup-15"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fmackerelio%2Fmackerel-meetup-15" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/mackerelio/mackerel-meetup-15">登壇資料</a></p> <p>登壇者: <a href="http://blog.hatena.ne.jp/masayoshi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/masayoshi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:masayoshi</a><br> パネルディスカッション</p> <p>登壇者: <a href="http://blog.hatena.ne.jp/heleeen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/heleeen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:heleeen</a><br> 登壇タイトル: クリティカルユーザージャーニーを利用したSLI/SLO の改善<br> <a href="https://speakerdeck.com/heleeen/slo-critical-user-journey"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fheleeen%2Fslo-critical-user-journey" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/heleeen/slo-critical-user-journey">登壇資料</a></p> <p>ブログ: <a href="https://mackerel.io/ja/blog/entry/meetup15-report">【開催レポート】チームとコミュニティで監視を育てる 〜Mackerel Meetup #15 Tokyoを開催しました! - Mackerel お知らせ #mackerelio</a><br> ブログ: <a href="https://mackerel.io/ja/blog/entry/meetup15-paneldiscussion">【開催レポート】SREバトル! 〜Mackerel Meetup #15 Tokyoでパネルディスカッションが開かれました! - Mackerel お知らせ #mackerelio</a></p> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 半年に 1 回の Meetup です。「SRE バトル」と言われたパネルディスカッションは最高に盛り上がっていましたね。メチャクチャ面白かったので、<a href="https://mackerel.io/ja/blog/entry/meetup15-paneldiscussion">書き起こし形式のブログ</a> を是非読んでください。LT も SLI/SLO を定義して終わりではなく、定義したあとに継続的に見ている/障害の時にふりかえっていることによって再編しようという動きが生まれたのは本当にいい話です。監視だけじゃなく SLI/SLO も見直して育てていくもの。</p> <style>q{font-size: 18.5px;font-style: italic;border-left: 3px solid #eaecee;color: #70797d;}</style> onk 「一番の下手くそ」かもしれないけれど、未経験の業務に飛び込んでみる | はてなで働く kmuto にアンケート [#25] hatenablog://entry/6801883189070140179 2023-12-30T11:00:00+09:00 2023-12-30T11:00:23+09:00 はてなで働くエンジニアにアンケートシリーズ第24回は、MackerelチームのCRE、id:kmutoです。CREチームのカスタマーサクセスとしての働き方、テックリードの心がけなどについて聞きました。 <p><strong>はてなで働くエンジニアにアンケート</strong>シリーズ第25回は、MackerelチームのCRE、<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a>に話を聞きました。</p> <ul class="table-of-contents"> <li><a href="#一番の下手くそでいようという本の一節から異なる環境へ">「一番の下手くそでいよう」という本の一節から異なる環境へ</a></li> <li><a href="#CREチームのEngineer成分が強化されてきている">CREチームの「Engineer」成分が強化されてきている</a></li> <li><a href="#カスタマーサクセスとしてお客さまとの商談に臨み技術的な挑戦をする">カスタマーサクセスとしてお客さまとの商談に臨み、技術的な挑戦をする</a></li> <li><a href="#学び考え育つことが常に期待される環境">「学び、考え、育つ」ことが常に期待される環境</a></li> </ul> <h2 id="一番の下手くそでいようという本の一節から異なる環境へ">「一番の下手くそでいよう」という本の一節から異なる環境へ</h2> <p><strong>── Q1. はてなidとその由来を教えてください</strong></p> <p>はてなidは <code>kmuto</code> です。</p> <p>大学の研究室配属時のUNIX(SunOS)アカウント発行ルールが「名1文字+姓」だったため、「Kenshi Muto」→「kmuto」となりました。以来、どこでもこの文字列を使っています。</p> <p>はてなidとして取得したのは比較的最近のことなので、他の人が使っていなかったのは幸運でした。呼ばれるときには、<code>k</code>は除いて普通に「むとー」さんですね。</p> <p><strong>── Q2. いつどんなきっかけで入社されましたか?</strong></p> <p>2022年11月に中途入社しました。</p> <p>前職は技術系書籍の制作プロダクションで、編集・DTP・情シス・フルスタックエンジニアリングとマルチロールを担っており、著者や訳者となるエンジニアとの関わりも多くありました。また、個人としては、<a href="https://www.debian.org">Debian Project</a>の開発者や、書籍制作に関連するOSS(<a href="https://github.com/kmuto/review">Re:VIEW</a>など)の開発者としてこれまで活動してきて、フリーソフトウェア・OSSの方面でも長い付き合いがあります。</p> <p>私の好きな本で行動原理の1つにもなっている『<a href="https://shop.ohmsha.co.jp/shopdetail/000000001848/">情熱プログラマー</a>』(オーム社)の中に「一番の下手くそでいよう」という一節があります。自分よりもずっと優れていると思う集団の中に身を置くことで、思考や行動が感化されて成長できる、という意味です。</p> <p>制作プロダクションで制作やエンジニアリングをする日々はコンフォートゾーンではあったのですが、残りそう長くない仕事人生を考えたときに、「一番の下手くそ」かもしれないけれども、いちITエンジニアとして別の会社に飛び込んで働いてみたいという思いが強くなりました。</p> <p>とはいえ、本を読んで知識がある・制作過程で少し触ったことがあるという程度で、先端的なエンジニアリングの世界において即戦力となるのは、さすがに無理があります。</p> <p>技術力の高いエンジニアの多い環境で、未体験の業務ではあるもののこれまで培ってきた技術や経験をある程度活かせて、プロダクトのコードに関わってユーザーを直接支援できる――そんな職はそうそう見つからず諦めつつあったのですが、転職サイトからふと舞い込んできた求人情報を端緒に、今はMackerel CRE(Customer Reliability Engineering)チームの同僚である <a href="http://blog.hatena.ne.jp/missasan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/missasan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:missasan</a> の<a href="https://developer.hatenastaff.com/entry/2020/10/30/093000">エントリー</a>を読みました。「CREの仕事、これから発展していって面白そう!」が第一印象で、そこからカジュアル面談、応募を経て入社に至っています。</p> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20230501/20230501125319.jpg" width="2000" height="1331" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <h2 id="CREチームのEngineer成分が強化されてきている">CREチームの「Engineer」成分が強化されてきている</h2> <p><strong>── Q3. 現在の仕事を教えてください</strong></p> <p>Mackerel CREチームにはカスタマーサクセスユニットとテクニカルサポートユニットの2つがあります。そのうちカスタマーサクセスユニットのメンバーとして、Mackerelをご利用中・あるいはご利用を検討中のお客さまに、Mackerelを活用したビジネスの成功(サクセス)を支援しています。</p> <p>具体的には、Mackerelの導入を検討中のお客さまとの商談に同席しての技術説明・質問回答、導入をスムーズに進めるためのオンボーディング支援、導入後のお客さまへの定期的なフォローアップが主な担当業務です。</p> <p>また、お客さまからのご質問やご要望に基づいて、機能実装を開発チームと協議したり、スクリプトなどで簡単にできそうなものであれば実装してご提供したりすることもあります。</p> <p>そのほか、前職の杵柄で、CREや開発チームが作成するヘルプや告知などのドキュメント類に目を通して、公開前の品質管理をしています。</p> <p><strong>── Q. チーム内の立ち位置を教えてください</strong></p> <p>CREチーム自体もうまくサクセスしていきたいので、CREチームのカスタマーサクセスユニット内だけでなく、もう1つのユニットであるテクニカルサポートのメンバーとも密に会話したり、テクニカルサポートの調査にくちばしを挟んだりしています。自分が介在することでチームがなんとなくまとまり、気軽な相談相手の立場になれているといいなと思っています。</p> <p>CREチームのテックリードとして、チームの技術選定に関わるほか、技術グループの方針をチームに伝達する、あるいは逆に「MackerelのCREチームはこういうことをやっています」と社内にアピールする、といった活動もしています。機能実装などでは先駆として背中を見せる行動を取ることで、CREチームの<code>Engineer</code>成分が全体的に強化されてきていると感じます。</p> <p><strong>── Q. 1日の仕事の流れを教えてください</strong></p> <p>朝8時頃に始業して、休憩の2時間で昼食や食材の買い出し、夜7時頃に終業、がおおよそ普段のサイクルです。</p> <p>日中はCREチームの毎日の昼会のほか、日によってCREチーム定例会、サクセスユニット会、開発チームとの機能検討会、社内横断の会合であるセキュリティ会、エンジニアメンターグループ会など、毎日何かしらのミーティングがあります。</p> <p>もちろん、商談の同席依頼やお客さまのヒアリングなどもどんどんカレンダーに入ってきます。そのため、集中することが必要な作業(ドキュメントの新規作成や技術勉強)は割り込みの少ない朝の時間帯に行い、日中はミーティングの合間にレビューや調査・提案検討、夕方以降は時間があれば開発設計やコーディング、といった具合に時間帯によってタスクを切り替えています。</p> <h2 id="カスタマーサクセスとしてお客さまとの商談に臨み技術的な挑戦をする">カスタマーサクセスとしてお客さまとの商談に臨み、技術的な挑戦をする</h2> <p><strong>── Q. 最近うまくいったことは何ですか?</strong></p> <p>入社して1年が経過し、カスタマーサクセスとしてようやく落ち着いてお客さまとの商談に臨めて、説得力のあるご回答・ご提案ができるようになってきたかなと感じます。</p> <p>開発チームと協力して、<a href="https://mackerel.io/ja/blog/entry/weekly/20230608#Mackerel%E3%81%AEWeb%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%89%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%8C%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F">Mackerelのサイドメニューの日本語化</a>や、<a href="https://mackerel.io/ja/blog/entry/weekly/20230906#Oracle-Linux-789-%E3%81%8C%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E5%AF%BE%E8%B1%A1%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F">Oracle Linuxへの対応</a>などを進めたり、Goプログラミングの指導を受けながら<a href="https://developer.hatenastaff.com/entry/2023/10/30/170000">途切れ監視プラグインを開発</a>したりなど、技術的挑戦も実を結んでいます。</p> <p>また、業務とは異なるのですが、エンジニアやデザイナーの方々を横断的に巻き込んで、皆で作った書籍を技術書典15で頒布できたのは良い体験でした。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2F2023%2F11%2F22%2F190000" title="「はてな技術書典部」が技術書典15で『Hatena Tech Book Vol.2』を頒布しました! - Hatena Developer Blog" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://developer.hatenastaff.com/entry/2023/11/22/190000">developer.hatenastaff.com</a></cite></p> <p><strong>── Q. 最近うまくいっていないと感じることは何ですか?</strong></p> <p>長くサーバー運用経験を持ち、かつお客さまから直接お声を聞く立場としては、お客さまのお困り事に「わかる~」と共感することがとても多くあります。</p> <p>とはいえ、諸事情でそのまますぐには実現できないことも多く、別の回避策をご提案せざるを得ないときには、心苦しい気持ちを覚えます。</p> <p>解決策や妥当な代替策をもっと提案できるよう、お客さまと私たち双方の成功のために必要な機能提案、具体的なコードPR、Mackerelの手の届いていないところやMackerelとほかのサービスとの隙間を埋めるツールの開発といった行動で対応していきたいと思っています。</p> <h2 id="学び考え育つことが常に期待される環境">「学び、考え、育つ」ことが常に期待される環境</h2> <p><strong>── Q. 普段大切にしていることは何ですか?</strong></p> <p>チームにもお客さまにも、誠実でプロフェッショナルであろうと努めています。</p> <p>また、自分自身の仕事を誰かが代替できるようになっていることも大切だと思っています。私の内部記憶領域があまり大きくないので、外部記憶に置くことを兼ねて、なるべく脳内をダンプして共有しておく(少なくとも他の誰かがそれを見ればヒントになる)ことを心掛けています。</p> <p>あとは心身の健康にも気をつけていますね。</p> <p><strong>── Q. はてなはどんな会社ですか?</strong></p> <p>「学び、考え、育つ」ことが常に期待される環境だなと思います。社員をどのように育てていくかについて真摯に考えている様子をうかがえますし、そのやりとりのプロセスもオープンですね。</p> <p>はてなの創業の歴史から、テキストで残す文化を強く感じています。ストックというよりはフローの集合体なのかもしれませんが、それでもテキストをたどっていけば、いろいろなことがわかります。私もテキスト大好き人間なので、日誌やマニュアルなど日々たくさんテキストを作成しています。</p> <p>最初に「自分よりもずっと優れていると思う集団の中に身を置く」という話をしましたが、その体験をするのに最適だと思っています。</p> <hr> <p>CREは、はてなのMackerelチームにおいて新しくてチャレンジングな職種。お客さまが抱える真の課題にフォーカスし、共に技術を軸として解決を図っていく仲間を募集しています。ご連絡をお待ちしております!</p> <p>▼ <a href="https://hatenacorp.jp/recruit/career/cre">CRE&#xFF08;Customer Reliability Engineer&#xFF09;&#x8077; &#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a><br></p> <p><a href="https://hatenacorp.jp/recruit/career/cre" target="_blank" border="0" width="100%"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20201224/20201224091010.png" alt="はてなでは、顧客の課題を一緒に読み解くCREの仲間を募集しています" title="はてなでは、顧客の課題を一緒に読み解くCREの仲間を募集しています"></p> blog-media はてなブックマークのステージング環境を支える技術 hatenablog://entry/6801883189064770818 2023-12-29T11:00:00+09:00 2023-12-29T11:00:22+09:00 id:cohalzです。この記事ははてなエンジニア Advent Calendar 2023 の29日目の記事です。 28日目の記事は id:SlashNephy さんの おうち Kubernetes クラスタ運用記 ~2023~ でした。 はてなブックマークにおけるステージング環境について紹介します。 はてなブックマークでは現在インフラをAWS上に構築しており、ECSやAurora MySQLのサービスを利用しています。 本番環境と同様にステージング環境も用意していますが、より良いステージング環境(例えば本番環境に近く、変更がすぐ試せて、費用が安い構成)にすることを目指し、いくつか工夫した点… <p><a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a>です。この記事は<a href="https://developer.hatenastaff.com/advent-calendar-2023">はてなエンジニア Advent Calendar 2023</a> の29日目の記事です。</p> <p>28日目の記事は <a href="http://blog.hatena.ne.jp/SlashNephy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/SlashNephy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:SlashNephy</a> さんの <a href="https://blog.starry.blue/entry/2023/12/28/100000">おうち Kubernetes クラスタ運用記 ~2023~</a> でした。</p> <p>はてなブックマークにおけるステージング環境について紹介します。</p> <p>はてなブックマークでは現在インフラをAWS上に構築しており、ECSやAurora MySQLのサービスを利用しています。</p> <p>本番環境と同様にステージング環境も用意していますが、より良いステージング環境(例えば本番環境に近く、変更がすぐ試せて、費用が安い構成)にすることを目指し、いくつか工夫した点があるのでそれらを紹介します。</p> <h2 id="AWSアカウントの分離">AWSアカウントの分離</h2> <p>はてなでは複数のサービスを運用していますが、はてなブックマーク単体でAWSアカウントを分けて他のサービスとリソースが同居しないようにしています。</p> <p>その中でもさらに用途別に3つのAWSアカウントを利用しているのでそれらを紹介します。</p> <ul> <li>production</li> <li>staging</li> <li>dev</li> </ul> <p>productionおよびstagingではAWS CDKでインフラを管理しています。</p> <p>ステージング環境はデフォルトブランチに変更があった際にGitHub Actionsで自動でcdk deployが行われるようになっています。</p> <p>AWS CDKの設定もスタックの実装には環境ごとに場合分けはできるだけせず、envfileのような設定置き場のファイルを作ってそこで差分を吸収するようにしています。</p> <p>デプロイ時には環境名を入力するプロンプトがあり、間違ったものが入力された場合にはデプロイが止まるような仕組みも入れています。</p> <pre class="code" data-lang="" data-unlink>$ make deploy env=production app=bookmark stacks=&#39;*&#39; Please type environment name to continue:</pre> <p>devのアカウントに関してはIaC管理せず、いつでもまっさらな状態に作り直して良いという運用で検証用に使っています。</p> <p>こういったアカウント分離をすることでCLIなどでオペレーションをする対象を間違えてしまうみたいなことを防ぎやすい効果があります。</p> <p>とはいえ後述する本番環境のデータを参照する仕組みをするなど権限周りの設定が難しいことがあるのでそこだけ注意が必要です。</p> <h2 id="ステージング環境は本番環境のスナップショット">ステージング環境は本番環境のスナップショット</h2> <p>はてなブックマークではデータストア層にElastiCache for Redis/Aurora MySQL/OpenSearchを利用しています。</p> <p>ステージング環境においてこれらのデータストアは全てある時点での本番環境のスナップショットとなるように構築しています。</p> <p>具体的には毎日の朝に本番環境のデータをコピーしてステージング環境のデータストアを作り直すという処理がStep FunctionsとEventBridgeで自動で動くように構築しています。</p> <p>これによりダミーデータを用意する必要がなくなったという利点のほか、不具合の修正に関しても本番環境とデータがほぼ同じことでステージング環境で再現させることや変更の動作確認がしやすいメリットがあります。</p> <p>また細かいメリットとしてステージング環境を気軽に壊せるようになるというのがありました。</p> <p>開発の際にステージング環境に対して間違った設定の変更をしてしまったり、変なデータを入れてしまったりしたとしても翌日には本番同等の設定とデータで作り直されます。</p> <p>そのため、ステージング環境に対して本番環境との差分があるかもしれないといった意識をほとんどしなくて済むようになりました。</p> <p>また、今年はAurora MySQLをv2からv3に移行する作業をいくつか行いましたが、その際にもこの本番のデータを使う仕組みが役に立ちました。</p> <p>ステージング環境を作り直す際にアップグレードする処理を追加することで、本番はv2でステージング環境はv3として本番環境のデータを元に動作確認も簡単にできるようになりました。</p> <p>しかもそのアップグレードする処理は毎日実行しているため、いざ本番をアップグレードする際の手順で失敗してしまったなんてことが起こりにくくなりました。</p> <p>前述の通りproductionとstagingでAWSアカウントが分かれているのでアカウントを跨いでデータをコピーできるようにするにはいくつか追加の手順が必要なのに注意してください。</p> <ul> <li>Aurora MySQLはResource Access Managerを使いステージング環境から参照できるようにする</li> <li>ElastiCache for Redisは自動バックアップをS3にアップロードする</li> <li>OpenSearchはLambdaで定期的に手動スナップショットを取得してS3にアップロードする</li> </ul> <p>こういった作り直す実装はStep FunctionsとそのAWS SDK統合を利用して作成しています。下の図はAuroraのクラスタを作り直して必要に応じてアップグレードを行うStep Functionsのワークフローです。</p> <p><figure class="figure-image figure-image-fotolife" title="Auroraクラスタを作り直すStep Functions"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231229/20231229110012.png" width="307" height="881" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>Auroraクラスタを作り直すStep Functions</figcaption></figure></p> <p>こういったコピーする実装は元々Lambdaで作成していましたが、Step Funcstionsでは時間制限もなくステップ数による課金なのでこういった処理の費用をより安く作成できます。</p> <p>上の図で言うとAuroraクラスタを削除するリクエストを実行した後に作成できるまでに数分待つといった処理をしていますが、場合によっては数分待ってもまだ実行できないことがあります。</p> <p>その際に組み込みのリトライ処理を使ってExponential Backoffで待ち時間を増やすといったこともやっています。</p> <p>Step Functionsで実装するメリットとして他には処理の流れや失敗した部分の確認もコンソールから確認しやすいというのもメリットの一つかなと思います。</p> <p>またLambdaではどの言語で書いたとしても将来的にランタイムの更新を考える必要が出てきます。そういったものの管理が不要になるのもメリットです。</p> <h2 id="夜間休日にステージング環境を止める">夜間休日にステージング環境を止める</h2> <p>はてなブックマークでは複数のマイクロサービスが存在しており、ステージング環境でも同様に各サービスを動かしています。 スペックは必要に応じて下げているものもありますが、サービスの数だけECSサービスやデータストアが必要になってくるため、それなりに費用がかかっていました。</p> <p>ステージング環境は基本的に開発をする日中だけ動かしておければいいので、それ以外のタイミングでは止めるといった仕組みをStep FunctionsやGitHub Actionsを使って実現しました。</p> <p>例えば定時後にAuroraクラスタを全て削除するStep Functionsはこのようになっています。</p> <p><figure class="figure-image figure-image-fotolife" title="Auroraクラスタを全て削除するStep Functions"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231229/20231229110009.png" width="313" height="474" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>Auroraクラスタを全て削除するStep Functions</figcaption></figure></p> <p>Step FunctionsでDescribe*のAPIを実行し、そこで帰ってきた複数の結果をMapを使って順番に削除するといった処理になっています。</p> <p>AWSアカウントが分かれていることで、AWSアカウント全てのデータストアを止めるみたいな単純な実装で済むというのもありがたいポイントでした。もしアカウントが分かれていない場合はタグなどでフィルターする感じになると思います。</p> <p>停止する処理を追加したところで今度は起動する処理を追加する必要がありますが、こちらはブックマークチームでは必要ありませんでした。</p> <p>というのも先に紹介した通り、ステージング環境にデータストアをコピーする実装が既に動いていたためです。</p> <p>データストアに関してはこれでやりたいことを実現できたので今度はECSのことを考えます。</p> <p>はてなブックマークではECSは全てFargateで動かしておりEC2はありません。そのため起動しているタスクを全て0台にする処理を実行するだけでよい状態でした。</p> <p>それを実現するためにGitHub Actionsで定期的に0台にするのと元の台数にする仕組みを入れるようにしました。</p> <p>こちらも他に合わせてStep Functionsで実行しても良かったですが、はてなブックマークではecspressoをGitHub Actionsから利用する仕組みが既に整っていたのと、管理しているECSを落とす仕組みは社内でも特に需要があったので真似しやすい形にしたというのが理由です。</p> <p>実装に関しては非常に簡単で <code>ecspresso scale --tasks=0</code> をステージング環境の全ECSサービスに対して実行するだけで実現できます。</p> <p>営業時間になって動かしたくなった場合は、現在の設定ファイルを元にただ<code>ecspresso deploy --skip-task-definition</code> を実行することで本来設定していた台数に自動で戻るようになっています。</p> <p>ちなみにFargate Spotも利用しているため、Fargateをそのまま24時間動かすのに比べて0.3(Fargate Spot) * 0.25(起動時間) = 7.5%の費用で済むようになっています。</p> <h2 id="ECSのデプロイ">ECSのデプロイ</h2> <p>ステージング環境の運用を軽く紹介したところで、ECSのデプロイについても軽く紹介します。</p> <p>はてなブックマークのリポジトリ構成はこのようになっています。</p> <ul> <li>各アプリケーションのリポジトリ(App Repo)</li> <li>CDKのリポジトリ(CDK Repo)</li> <li>ecspressoのリポジトリ(Release Repo)</li> </ul> <p>各アプリケーションのリポジトリmainブランチに変更をマージするとrepository dispatch経由でイメージのタグが更新される仕組みになっており、ステージング環境に自動で最新の変更がデプロイされるようになっています。</p> <p>こちらも各サービスでデプロイ方法が統一されており、図にするとこんな感じです。</p> <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231229/20231229110015.png" width="822" height="362" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>Release Repo(ecspressoのリポジトリ)のディレクトリ構成はこんな感じになっています。</p> <pre class="code" data-lang="" data-unlink>core └── main ├── base │   ├── container │   │   └── app.libsonnet │   ├── service-def.libsonnet │   └── task-def.libsonnet ├── production │   ├── deploy-config.json │   ├── ecspresso.jsonnet │   ├── image │   │   └── app.libsonnet │   ├── service-def.jsonnet │   └── task-def.jsonnet └── staging ├── deploy-config.json ├── ecspresso.jsonnet ├── image │   └── app.libsonnet ├── service-def.jsonnet └── task-def.jsonnet</pre> <p><code>ECSのクラスタ名/ECSのサービス名/環境名</code> という階層にしています。この例ではproductionとstagingのAWSアカウントにcoreというECSクラスタがあり、その中にmainというサービスがあるという感じです。</p> <p>baseでは環境で変わらないような設定(例えば <code>platformFamily</code> や <code>networkMode</code> など)を記述して、各環境のディレクトリでは環境ごとに変わる設定のみを記述するようにしています。</p> <p><code>deploy-config.json</code> というファイルを独自に追加しています。これはGitHub Actionsから読むファイルで、デプロイ時にMackerelにアノテーションするサービス名だったり、デプロイの依存関係(AをデプロイしたらBもデプロイする)などの設定をJSON形式で記述し処理を実行しています。</p> <p>GitHub Actionsで <code>deploy-config.json</code> を見てMackerelのサービスにアノテーションする設定の例はこんな感じです。</p> <pre class="code lang-yaml" data-lang="yaml" data-unlink><span class="synStatement">- </span><span class="synIdentifier">id</span><span class="synSpecial">:</span> get-mackerel-service <span class="synIdentifier">if</span><span class="synSpecial">:</span> ${{ hashFiles(format('{<span class="synConstant">0</span>}/deploy-config.json', github.event.client_payload.environment)) <span class="synType">!=</span> <span class="synConstant">''</span> }} <span class="synIdentifier">run</span><span class="synSpecial">:</span> | echo <span class="synConstant">&quot;service=$(jq -r '.mackerel.service // empty' ${{ github.workspace }}/${{ github.event.client_payload.environment }}/deploy-config.json)&quot;</span> &gt;&gt; <span class="synConstant">&quot;$GITHUB_OUTPUT&quot;</span> <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> Create Graph Annotation to ${{ steps.get-mackerel-service.outputs.service }} <span class="synIdentifier">uses</span><span class="synSpecial">:</span> cohalz/post-mackerel-annotation@v1 <span class="synIdentifier">if</span><span class="synSpecial">:</span> ${{ steps.get-mackerel-service.outputs.service <span class="synType">!=</span> <span class="synConstant">''</span> }} <span class="synIdentifier">with</span><span class="synSpecial">:</span> <span class="synIdentifier">api-key</span><span class="synSpecial">:</span> ${{ secrets.MACKEREL_APIKEY }} <span class="synIdentifier">title</span><span class="synSpecial">:</span> deploy ${{ github.event.client_payload.environment }} <span class="synIdentifier">description</span><span class="synSpecial">:</span> https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} <span class="synIdentifier">service</span><span class="synSpecial">:</span> ${{ steps.get-mackerel-service.outputs.service }} </pre> <p>ちなみにMackerelのサービス名に関しても本番環境とステージング環境で分けており、ステージング環境においてもメトリックの変化をアノテーションと合わせて確認できるようになっています。</p> <p>ステージング環境でMackerelの様子を見ることは実際はあまりありませんが、こういったアプリケーション以外の環境も分かれている事によってCI/CD自体の設定を変更した際に安全に動作確認ができるようにしているというメリットがあります。</p> <p>ちなみに設定を変更するプルリクエストを作成した場合は影響のあるECSサービスをうまく列挙し、それに対し <code>ecspresso diff</code>および <code>ecspresso verify</code> を行うようになっています。</p> <p><figure class="figure-image figure-image-fotolife" title="ステージング環境だけ変更した時のCI"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231229/20231229110018.png" width="1200" height="633" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>ステージング環境だけ変更した時のCI</figcaption></figure></p> <p>これによってステージング環境だけを変更したいのに本番環境が変更されてしまった、みたいな事故を防ぎやすくなっています。</p> <h2 id="おわり">おわり</h2> <p>はてなブックマークのステージング環境を中心にインフラを紹介しました。ステージング環境をより良く運用することで本番環境を安心して変更できるようになると思っているので参考にしてもらえると嬉しいです。</p> <p>明日の記事は <a href="http://blog.hatena.ne.jp/stefafafan/">id:stefafafan</a> さんの担当です。</p> cohalz 2025年度 新卒エンジニア採用をオープンしています! hatenablog://entry/6801883189070438904 2023-12-28T17:58:08+09:00 2023-12-28T17:58:09+09:00 はてなの2025年度の新卒採用をオープンしています。2025年度の新卒採用では、以下の4職種で採用を行います。 Webアプリケーションエンジニア iOS、Androidアプリエンジニア SRE はてなの事業や働き方については、以下の資料をご覧ください。 株式会社はてな エンジニア採用資料 / Engineers Recruitment - Speaker Deck以下のページでは、はてなの各チームが利用している詳細な技術を確認できます。また、この開発者ブログでもさまざまな記事を公開していますので、ぜひご覧ください!技術スタック - エンジニア採用 - 採用情報ご応募をお待ちしております! はて… <p>はてなの2025年度の<a href="https://hatenacorp.jp/recruit/fresh">&#x65B0;&#x5352;&#x63A1;&#x7528;&#x3092;&#x30AA;&#x30FC;&#x30D7;&#x30F3;</a>しています。</p><p>2025年度の新卒採用では、以下の4職種で採用を行います。</p> <ul> <li><a href="https://hatenacorp.jp/recruit/fresh/application-engineer">Web&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;</a></li> <li><a href="https://hatenacorp.jp/recruit/fresh/sp-application-engineer">iOS&#x3001;Android&#x30A2;&#x30D7;&#x30EA;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;</a></li> <li><a href="https://hatenacorp.jp/recruit/fresh/operation-engineer">SRE</a></li> </ul><p>はてなの事業や働き方については、以下の資料をご覧ください。</p><p><iframe id="talk_frame_802621" class="speakerdeck-iframe" src="//speakerdeck.com/player/73919842c53c4af3a7d4025702e399fc" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <a href="https://speakerdeck.com/hatena/engineers-recruitment">&#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A; &#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528;&#x8CC7;&#x6599; / Engineers Recruitment - Speaker Deck</a></p><p>以下のページでは、はてなの各チームが利用している詳細な技術を確認できます。また、この開発者ブログでも<a href="https://developer.hatenastaff.com/archive">&#x3055;&#x307E;&#x3056;&#x307E;&#x306A;&#x8A18;&#x4E8B;&#x3092;&#x516C;&#x958B;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;</a>ので、ぜひご覧ください!</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatenacorp.jp%2Frecruit%2Fengineer%2Ftechnology" title="技術スタック - エンジニア採用 - 採用情報 - 株式会社はてな" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><a href="https://hatenacorp.jp/recruit/engineer/technology">&#x6280;&#x8853;&#x30B9;&#x30BF;&#x30C3;&#x30AF; - &#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p><p>ご応募をお待ちしております!</p><p><p style="text-align: center; margin: 0em"><br /> <a href="https://hatenacorp.jp/recruit/fresh" class="btn btn-large btn-blue" target="_blank">はてなの新卒採用サイトへ</a><br /> </p></p> motemen はてなのポッドキャスト Backyard Hatena #31 - 社長とふりかえる2023年(id:chris4403) #byhatena hatenablog://entry/6801883189070409379 2023-12-28T16:30:00+09:00 2023-12-28T16:33:15+09:00 はてな「技術グループ」によるポッドキャスト「Backyard Hatena」を更新。第31回では、社長の id:chris4403を迎え、2023年について振り返りました。 <p>こんにちは、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> です。</p><p>はてなのエンジニア組織である技術グループでやっているポッドキャスト「Backyard Hatena」を更新しました。<br /> 「Backyard Hatena」は、株式会社はてなのメンバーの普段の様子や、サービス開発の裏側や技術、取り組みなどについて、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> を中心としたメンバーがカジュアルにお届けするポッドキャストです。</p><p><iframe src="https://anchor.fm/backyard-hatena/embed/episodes/31-2023idchris4403-e2do72g" height="102px" width="400px" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a href="https://podcasters.spotify.com/pod/show/backyard-hatena/episodes/31-2023idchris4403-e2do72g/a-aapkdt9">podcasters.spotify.com</a></cite><br /> <a href="https://anchor.fm/backyard-hatena">Backyard Hatena &bull; A podcast on Spotify for Podcasters</a></p><p>Anchor / Spotify / Google Podcasts / Apple Podcast で配信しています。お好みのプラットフォームから聞いていただけると嬉しいです。</p><p>今回のゲストは、社長の <a href="http://blog.hatena.ne.jp/chris4403/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/chris4403/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:chris4403</a> です。はてなやお互いの2023年について振り返りました。</p> <blockquote> <p>Backyard Hatena #31 - 社長とふりかえる2023年(<a href="http://blog.hatena.ne.jp/chris4403/">id:chris4403</a>)</p><p>Show Notes</p> <ul> <li>Backyard Hatena 1年ぶりの登場</li> <li>はてなの2023年 <ul> <li><a href="https://hatena.co.jp/press/release/entry/2023/11/16/153000">&#x306F;&#x3066;&#x306A;&#x3001;Nintendo Switch&#x30BD;&#x30D5;&#x30C8; &#x300E;&#x30B9;&#x30D7;&#x30E9;&#x30C8;&#x30A5;&#x30FC;&#x30F3;3&#x300F;&#x306E;&#x5927;&#x4F1A;&#x652F;&#x63F4;&#x30B5;&#x30FC;&#x30D3;&#x30B9;&#x300C;&#x30BF;&#x30A4;&#x30AB;&#x30A4;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#x300D;&#x306E;&#x958B;&#x767A;&#x306B;&#x5354;&#x529B; - &#x30D7;&#x30EC;&#x30B9;&#x30EA;&#x30EA;&#x30FC;&#x30B9; - &#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A;</a></li> <li><a href="https://hatenablog.com/guide/selling">&#x8A18;&#x4E8B;&#x306E;&#x6709;&#x6599;&#x8CA9;&#x58F2;&#x3092;&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;&#x3067;&#x306F;&#x3058;&#x3081;&#x3088;&#x3046;&#xFF01; &#x4EBA;&#x6C17;&#x30D6;&#x30ED;&#x30AC;&#x30FC;&#x304C;&#x66F8;&#x304F;&#x6709;&#x6599;&#x8A18;&#x4E8B;&#x306E;&#x6D3B;&#x7528;&#x4F8B;&#x3082;&#x591A;&#x6570;&#x3054;&#x7D39;&#x4ECB; - &#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;</a></li> </ul></li> <li>motemenの2023年 <ul> <li><a href="https://motemen.hatenablog.com/">&#x8A69;&#x3068;&#x5275;&#x4F5C;&#x30FB;&#x601D;&#x7D22;&#x306E;&#x3072;&#x308D;&#x3070;</a></li> <li><a href="https://developer.hatenastaff.com/archive/category/%E3%81%AF%E3%81%A6%E3%81%AA%E5%8D%92%E6%A5%AD%E7%94%9F%E8%A8%AA%E5%95%8F%E4%BC%81%E7%94%BB">&#x306F;&#x3066;&#x306A;&#x5352;&#x696D;&#x751F;&#x8A2A;&#x554F;&#x4F01;&#x753B; &#x30AB;&#x30C6;&#x30B4;&#x30EA;&#x30FC;&#x306E;&#x8A18;&#x4E8B;&#x4E00;&#x89A7; - Hatena Developer Blog</a></li> </ul></li> <li>chris4403の2023年 <ul> <li><a href="https://ossan.fm/">Ossan.fm</a></li> <li><a href="https://www.youtube.com/@chris4403">&#x304F;&#x308A;&#x3059;&#x3061;&#x3083;&#x3093;&#x306D;&#x308B; - YouTube</a></li> <li><a href="https://developer.hatenastaff.com/advent-calendar-2023">&#x306F;&#x3066;&#x306A;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2; Advent Calendar 2023 - Hatena Developer Blog</a></li> </ul></li> <li>ものづくりの話 <ul> <li><a href="https://developer.hatenastaff.com/entry/2023/10/17/170000">&#x65B0;&#x5352;&#x7814;&#x4FEE;&#x3068;&#x3057;&#x3066;&#x958B;&#x767A;&#x3057;&#x305F;&#x300C;&#x306F;&#x3066;&#x306A;&#x30D4;&#x30A2;&#x30B9;&#x30BF;&#x30FC;&#x300D;&#x304C;Slack&#x6D3B;&#x7528;&#x30A2;&#x30EF;&#x30FC;&#x30C9;&#x3067;&#x512A;&#x52DD;&#x3057;&#x307E;&#x3057;&#x305F; - Hatena Developer Blog</a></li> </ul></li> <li>はてなの2024年</li> </ul> </blockquote> <div class="section"> <h4 id="ハッシュタグは-byhatena-です">ハッシュタグは #byhatena です!</h4> <p>Backyard Hatena の感想・コメントは <a href="https://twitter.com/search?q=%23byhatena">#byhatena</a> ハッシュタグをつけてツイートいただけると嬉しいです!</p> </div> <div class="section"> <h4 id="収録後記">収録後記</h4> <p>あと3倍くらいなんかやっていたかったな。2024年もよろしくお願いします。(motemen)</p><p>Backyard Hatena を聞いて、はてなで働くことに興味を持たれたら、ぜひお話する機会を持ちましょう。</p><p><p style="text-align: center; margin: 2em"><br /> <a href="https://open.talentio.com/r/1/c/hatena/pages/51631/apply " class="btn btn-large btn-blue" target="_blank">カジュアル面談のお申込みはこちら</a><br /> </p></p><p>あわせて、こちらの採用サイトもご覧ください。</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatenacorp.jp%2Frecruit%2Fengineer" title="エンジニア採用 - 採用情報 - 株式会社はてな" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><a href="https://hatenacorp.jp/recruit/engineer">&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p> </div> hatenatech はてなブログから OSS blogsync への寄付のご報告と「HatenaBlog Workflows Boilerplate」でのGitHub Workflow の仕組みと工夫 hatenablog://entry/6801883189065286392 2023-12-25T08:11:48+09:00 2023-12-25T08:14:09+09:00 この記事は HatenaBlog Workflows Boilerplate を利用してレビュー・公開をしております。 はてなエンジニアアドベントカレンダー 2023 の 25 日目の記事です。 こんにちは。はてなブログのサブディレクターの id:AirReader です。 先日、組織でのはてなブログ運営を GitHub 上で行うためのテンプレートリポジトリ「HatenaBlog Workflows Boilerplate」を公開しました。このテンプレートをご利用いただくと、組織でのブログ運営に求められるワークフロー(下書きの作成、更新、内容のレビューや公開など)を GitHub 上で行うこと… <p><strong>この記事は HatenaBlog Workflows Boilerplate を利用してレビュー・公開をしております。</strong></p> <p>はてなエンジニアアドベントカレンダー 2023 の 25 日目の記事です。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fadvent-calendar-2023" title="はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>こんにちは。はてなブログのサブディレクターの <a href="http://blog.hatena.ne.jp/AirReader/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/AirReader/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:AirReader</a> です。</p> <p>先日、組織でのはてなブログ運営を GitHub 上で行うためのテンプレートリポジトリ「HatenaBlog Workflows Boilerplate」を公開しました。このテンプレートをご利用いただくと、組織でのブログ運営に求められるワークフロー(下書きの作成、更新、内容のレビューや公開など)を GitHub 上で行うことができます。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fstaff.hatenablog.com%2Fentry%2F2023%2F09%2F21%2F182000" title="組織でのはてなブログ運営をGitHub上で行うためのテンプレートリポジトリ「HatenaBlog Workflows Boilerplate」を公開しました - はてなブログ開発ブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>さて、本記事の前半は私より同機能の裏側で利用している OSS blogsync への寄付のご報告を、後半は <a href="http://blog.hatena.ne.jp/d-haru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/d-haru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:d-haru</a> から同機能の仕組みや工夫について共有いたします。</p> <ul class="table-of-contents"> <li><a href="#blogsync-への寄付について">blogsync への寄付について</a></li> <li><a href="#Workflow-の仕組みと工夫">Workflow の仕組みと工夫</a><ul> <li><a href="#reusable-workflow-の活用">reusable workflow の活用</a></li> <li><a href="#blogsync-の活用">blogsync の活用</a></li> </ul> </li> <li><a href="#公開してみてどうだったか">公開してみてどうだったか?</a></li> <li><a href="#まとめ">まとめ</a></li> </ul> <h2 id="blogsync-への寄付について">blogsync への寄付について</h2> <p>はてなブログより、OSS の <a href="https://github.com/x-motemen/blogsync">blogsync</a> (のメンテナの <a href="http://blog.hatena.ne.jp/Songmu/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Songmu/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Songmu</a> さん)へ寄付を行いました。 blogsync は、先日公開したはてなブログ運営を可能にするテンプレートリポジトリ「HatenaBlog Workflows Boilerplate」の機能を提供する上で中心となる重要なツールとして利用したため寄付を行うことにしました。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fstaff.hatenablog.com%2Fentry%2F2023%2F09%2F21%2F182000" title="組織でのはてなブログ運営をGitHub上で行うためのテンプレートリポジトリ「HatenaBlog Workflows Boilerplate」を公開しました - はてなブログ開発ブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>はてなでは、<a href="https://developer.hatenastaff.com/entry/2023/06/23/160000">core-js&#x3001;ecspresso&#x3001;Let&#39;s Encrypt &#x3078;&#x306E;&#x5BC4;&#x4ED8;</a>を行っています。その告知では、寄付の意図について以下のように記載しています。これははてなブログにおいても同様です。</p> <blockquote><p>ほかの多くの企業と同様、はてなのウェブサービスの大部分は、創業以来、多くの OSS によって支えられています。世のソフトウェア開発者がオープンにしてきた処理系やライブラリ、コミュニティのおかげで、初期のはてなから今にいたるまで、さまざまなプロダクトを開発し、事業として世の中に価値をもたらすことができています。 (中略) 私たちのプロダクトが依存する重要な OSS たちの多くは、個人のモチベーションと時間の捻出によって支えられています。その継続性を別の方向からサポートするためにも、直接的な手段としての金銭的な寄付を行うことにしました。</p></blockquote> <p>また、HatenaBlog Workflows Boilerplate の作成に当たっては、複数の企業が公開している技術ブログの運用エントリを参考にさせていただきました。技術情報だけではなく、組織の知見や悩みなどをオープンにしていただけたことで、はてなブログとして改善のお手伝いができたなと感じます。改めてご利用の皆様にお礼を申し上げます。 引き続き、はてなブログは利用者の皆様の情報発信を促進しつつ、共に発展していきたいと思います。</p> <p>元々、blogsync は弊社 CTO の <a href="http://blog.hatena.ne.jp/motemen/">id:motemen</a> が開発し公開したものですが、メンテナを移譲、リポジトリの変更などを行い、現在は <a href="http://blog.hatena.ne.jp/Songmu/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Songmu/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Songmu</a> さんが管理しています</p> <h2 id="Workflow-の仕組みと工夫">Workflow の仕組みと工夫</h2> <p>はてなのブログチームで Web アプリケーションエンジニア 及び スクラムマスターをしている <a href="http://blog.hatena.ne.jp/d-haru/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/d-haru/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:d-haru</a> です。ここからはその仕組みなどについて説明させていただきます。</p> <p>元々はてな内でも様々なブログの記事コンテンツを blogsync と ワークフローを利用して GitHub リポジトリで管理していました。</p> <p>しかし、チームごとにバラバラだったりと整理しきれていませんでした。また、インターネット上でもはてなブログの記事をリポジトリで管理する方法を公開されている方々がチラホラといらっしゃる状態でした。</p> <p>これらの知見を集約しつつ、改めて整理したものが今回の Boilerplate になります。</p> <h3 id="reusable-workflow-の活用">reusable workflow の活用</h3> <p>Boilerplate を公開するに当たって、根幹となる workflow の処理を reusable workflow として分離しました。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.github.com%2Fen%2Factions%2Fusing-workflows%2Freusing-workflows" title="Reusing workflows - GitHub Docs" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>実際のコードは下記になります。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fhatena%2Fhatenablog-workflows" title="GitHub - hatena/hatenablog-workflows: reusable workflows for hatenablog" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>素朴にテンプレートリポジトリを公開する形も考えましたが、これだと機能追加や軽微な修正をした結果を反映させることが困難になってしまい、変更に弱くなってしまいます。</p> <p>この課題を解決するために、workflow の処理は別のリポジトリに分離して Boilerplate はあくまで workflow の呼び出しにとどめることにしました。</p> <p>このおかげで Boilerplate 自体はいじらずにコアのロジックを変更を即座に反映させることができるようにしています。</p> <p>例として、Boilerplate にある workflow (呼び出し元)の 1 つである下書き記事作成の<code>create draft</code>アクションの設定は下記になります。</p> <pre class="code lang-yaml" data-lang="yaml" data-unlink><span class="synIdentifier">name</span><span class="synSpecial">:</span> create draft <span class="synIdentifier">on</span><span class="synSpecial">:</span> <span class="synIdentifier">workflow_dispatch</span><span class="synSpecial">:</span> <span class="synIdentifier">inputs</span><span class="synSpecial">:</span> <span class="synIdentifier">title</span><span class="synSpecial">:</span> <span class="synIdentifier">description</span><span class="synSpecial">:</span> <span class="synConstant">&quot;Title&quot;</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> <span class="synIdentifier">jobs</span><span class="synSpecial">:</span> <span class="synIdentifier">create-draft</span><span class="synSpecial">:</span> <span class="synIdentifier">uses</span><span class="synSpecial">:</span> hatena/hatenablog-workflows/.github/workflows/create-draft.yaml@v1 <span class="synIdentifier">with</span><span class="synSpecial">:</span> <span class="synIdentifier">title</span><span class="synSpecial">:</span> ${{ github.event.inputs.title }} <span class="synIdentifier">BLOG_DOMAIN</span><span class="synSpecial">:</span> ${{ vars.BLOG_DOMAIN }} <span class="synIdentifier">secrets</span><span class="synSpecial">:</span> <span class="synIdentifier">OWNER_API_KEY</span><span class="synSpecial">:</span> ${{ secrets.OWNER_API_KEY }} </pre> <p>重要なのは<code>uses: hatena/hatenablog-workflows/.github/workflows/create-draft.yaml@v1</code>の部分です。</p> <p>呼び出し元では reusable workflow を呼び出しているだけで複雑なことは可能な限りしないようにしています。</p> <p>実際に上記で呼び出している reusable workflow が下記になります。</p> <pre class="code lang-yaml" data-lang="yaml" data-unlink><span class="synIdentifier">name</span><span class="synSpecial">:</span> <span class="synConstant">&quot;[Reusable workflows] create draft and pull from hatenablog&quot;</span> <span class="synIdentifier">on</span><span class="synSpecial">:</span> <span class="synIdentifier">workflow_call</span><span class="synSpecial">:</span> <span class="synIdentifier">inputs</span><span class="synSpecial">:</span> <span class="synIdentifier">title</span><span class="synSpecial">:</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> <span class="synIdentifier">type</span><span class="synSpecial">:</span> string <span class="synIdentifier">BLOG_DOMAIN</span><span class="synSpecial">:</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> <span class="synIdentifier">type</span><span class="synSpecial">:</span> string <span class="synIdentifier">secrets</span><span class="synSpecial">:</span> <span class="synIdentifier">OWNER_API_KEY</span><span class="synSpecial">:</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> <span class="synIdentifier">jobs</span><span class="synSpecial">:</span> <span class="synIdentifier">post_draft_and_pull_from_hatenablog</span><span class="synSpecial">:</span> <span class="synIdentifier">name</span><span class="synSpecial">:</span> create draft and pull from hatenablog <span class="synIdentifier">runs-on</span><span class="synSpecial">:</span> ubuntu-latest <span class="synIdentifier">env</span><span class="synSpecial">:</span> <span class="synIdentifier">BLOGSYNC_PASSWORD</span><span class="synSpecial">:</span> ${{ secrets.OWNER_API_KEY }} <span class="synIdentifier">steps</span><span class="synSpecial">:</span> <span class="synStatement">- </span><span class="synIdentifier">uses</span><span class="synSpecial">:</span> actions/checkout@v4 <span class="synIdentifier">with</span><span class="synSpecial">:</span> <span class="synIdentifier">fetch-depth</span><span class="synSpecial">:</span> <span class="synConstant">0</span> <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> setup <span class="synIdentifier">uses</span><span class="synSpecial">:</span> hatena/hatenablog-workflows/.github/actions/setup@v1 <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> setup draft <span class="synIdentifier">run</span><span class="synSpecial">:</span> | envsubst &lt; draft.template &gt; draft <span class="synIdentifier">env</span><span class="synSpecial">:</span> <span class="synIdentifier">TITLE</span><span class="synSpecial">:</span> ${{ inputs.title }} <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> set blog domain <span class="synIdentifier">id</span><span class="synSpecial">:</span> set-domain <span class="synIdentifier">run</span><span class="synSpecial">:</span> | domain=${{ inputs.BLOG_DOMAIN }} echo <span class="synConstant">&quot;BLOG_DOMAIN=$(echo $domain | tr -d '</span><span class="synSpecial">\n\r</span><span class="synConstant"> ')&quot;</span> &gt;&gt; <span class="synConstant">&quot;$GITHUB_OUTPUT&quot;</span> <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> post draft to hatenablog <span class="synIdentifier">id</span><span class="synSpecial">:</span> post-draft <span class="synIdentifier">run</span><span class="synSpecial">:</span> | entry_path=$(blogsync post --draft ${{ steps.set-domain.outputs.BLOG_DOMAIN }} &lt; <span class="synConstant">'draft'</span>) echo <span class="synConstant">&quot;ENTRY_PATH=$entry_path&quot;</span> &gt;&gt; <span class="synConstant">&quot;$GITHUB_OUTPUT&quot;</span> <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> pull <span class="synIdentifier">run</span><span class="synSpecial">:</span> | blogsync pull ${{ steps.set-domain.outputs.BLOG_DOMAIN }} <span class="synStatement">- </span><span class="synIdentifier">name</span><span class="synSpecial">:</span> pull draft by title <span class="synIdentifier">uses</span><span class="synSpecial">:</span> hatena/hatenablog-workflows/.github/actions/create-draft-pull-request@v1 <span class="synIdentifier">with</span><span class="synSpecial">:</span> <span class="synIdentifier">title</span><span class="synSpecial">:</span> ${{ inputs.title }} <span class="synIdentifier">BLOG_DOMAIN</span><span class="synSpecial">:</span> ${{ steps.set-domain.outputs.BLOG_DOMAIN }} <span class="synIdentifier">ENTRY_PATH</span><span class="synSpecial">:</span> ${{ steps.post-draft.outputs.ENTRY_PATH }} </pre> <p>reusable workflow としての定義は下記のように記述するだけです。inputs や secrets などを設定しておくことで呼び出し元から値を渡すことも可能です。</p> <pre class="code lang-yaml" data-lang="yaml" data-unlink><span class="synIdentifier">on</span><span class="synSpecial">:</span> <span class="synIdentifier">workflow_call</span><span class="synSpecial">:</span> <span class="synIdentifier">inputs</span><span class="synSpecial">:</span> <span class="synIdentifier">title</span><span class="synSpecial">:</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> <span class="synIdentifier">type</span><span class="synSpecial">:</span> string <span class="synIdentifier">BLOG_DOMAIN</span><span class="synSpecial">:</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> <span class="synIdentifier">type</span><span class="synSpecial">:</span> string <span class="synIdentifier">secrets</span><span class="synSpecial">:</span> <span class="synIdentifier">OWNER_API_KEY</span><span class="synSpecial">:</span> <span class="synIdentifier">required</span><span class="synSpecial">:</span> <span class="synConstant">true</span> </pre> <h3 id="blogsync-の活用">blogsync の活用</h3> <p>冒頭でも書きましたが blogsync が記事の取得、登録、更新といったコアの部分を担っています。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fx-motemen%2Fblogsync" title="GitHub - x-motemen/blogsync: Push and pull blog entries from/to local filesystem" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>blogsync では <a href="https://developer.hatena.ne.jp/ja/documents/blog/apis/atom/">AtomPub API</a>の CLI クライアントで、記事の取得、投稿、更新などができます。</p> <p>下書きの投稿では下記のように指定することで投稿が可能です。</p> <pre class="code bash" data-lang="bash" data-unlink>blogsync post --draft &lt;blog&gt; &lt; &lt;path/to/file&gt;</pre> <p>これがあるおかげで Boilerplate では workflow そのものの作成に集中することができました。</p> <p>Boilerplate のリリース当初は blogsync や AtomPub API には特に変更せずに当時できることを前提に作成しましたが、最近では Maintener である <a href="http://blog.hatena.ne.jp/Songmu/">id:Songmu</a> さんともコミュニケーションをとっており API 側の機能追加を含めて協力的に<a href="#f-70717fd6" id="fn-70717fd6" name="fn-70717fd6" title="はてなブログ AtomPub API に固定ページを操作する機能を追加しました - はてなブログ開発ブログ">*1</a><a href="#f-3d3d7a48" id="fn-3d3d7a48" name="fn-3d3d7a48" title="AtomPub API から下書きプレビュー共有用 URL を発行できるようにしました - はてなブログ開発ブログ">*2</a>改善を図っています。</p> <h2 id="公開してみてどうだったか">公開してみてどうだったか?</h2> <p>特に Tech ブログを運営している企業の方から直接はてなの社員に「導入しましたよ〜」という声を頂いたりしており、大変嬉しく思っています。</p> <p>今年のアドベントカレンダーでもたくさんの利用者の声を見かけて、開発者冥利に尽きます。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.andpad.co.jp%2Fentry%2F2023%2F12%2F01%2F100000" title="HatenaBlog Workflows を導入してテックブログの執筆環境を改善しました - ANDPAD Tech Blog" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.smarthr.jp%2Fentry%2F2023%2F12%2F04%2F174144" title="テックブログを GitHub で管理できるようにしました - SmartHR Tech Blog" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdevblog.thebase.in%2Fentry%2F2023%2F12%2F03%2F110000" title="Hatena-Blog-Workflows-Boilerplateつかって BASEのブログ書いてみた - BASEプロダクトチームブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.gunosy.io%2Fentry%2Ftechblog_review_system" title="企業テックブログのレビューを GitHub 上でおこなっている話 - Gunosy Tech Blog" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe></p> <p>また、自分たちも課題に感じているもあれば、他にもハッとするような言及もありました。こういった意見を参考に、引き続きより使いやすくしていけるようにしたいと思います。</p> <h2 id="まとめ">まとめ</h2> <p>ブログを GitHub で管理するためのツールなどはプラットフォームごとに様々な形がありますが、OSS を組み合わせてこれらを形にして提供する取り組みはあまり経験のないことで、とても楽しく取り組むことができました。</p> <p>とはいえ、まだまだ自分たちが使っていても痒いところに手が届いていない部分や、こういう機能あったら便利だろうな〜というアイデアもいくつかある状態です。また、利用時の記事を読んでいると新たな発見や、執筆スタイルの多様性にも気付かされました。</p> <p>より多くの人が便利に利用できるように、引き続き良くしていきたいと思います。</p> <div class="footnote"> <p class="footnote"><a href="#fn-70717fd6" id="f-70717fd6" name="f-70717fd6" class="footnote-number">*1</a><span class="footnote-delimiter">:</span><span class="footnote-text"><a href="https://staff.hatenablog.com/entry/2023/09/20/112358">はてなブログ AtomPub API に固定ページを操作する機能を追加しました - はてなブログ開発ブログ</a></span></p> <p class="footnote"><a href="#fn-3d3d7a48" id="f-3d3d7a48" name="f-3d3d7a48" class="footnote-number">*2</a><span class="footnote-delimiter">:</span><span class="footnote-text"><a href="https://staff.hatenablog.com/entry/2023/10/16/102131">AtomPub API から下書きプレビュー共有用 URL を発行できるようにしました - はてなブログ開発ブログ</a></span></p> </div> d-haru はてなのポッドキャスト Backyard Hatena #30 - Embedded SREと福岡(id:cohalz) #byhatena hatenablog://entry/6801883189068087087 2023-12-20T18:45:00+09:00 2024-02-29T17:25:57+09:00 はてな「技術グループ」によるポッドキャスト「Backyard Hatena」を更新。第30回ではSREの id:cohalz を迎えて、はてなのSREの仕事についてや、福岡からのリモートワークについてお話を聞きました。 <p>こんにちは、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> です。</p><p>はてなのエンジニア組織である技術グループでやっているポッドキャスト「Backyard Hatena」を更新しました。<br /> 「Backyard Hatena」は、株式会社はてなのメンバーの普段の様子や、サービス開発の裏側や技術、取り組みなどについて、CTO の <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> を中心としたメンバーがカジュアルにお届けするポッドキャストです。</p><p><iframe src="https://anchor.fm/backyard-hatena/embed/episodes/30-Embedded-SREidcohalz-e2de3bc" height="102px" width="400px" frameborder="0" scrolling="no"></iframe><cite class="hatena-citation"><a href="https://podcasters.spotify.com/pod/show/backyard-hatena/episodes/30-Embedded-SREidcohalz-e2de3bc">podcasters.spotify.com</a></cite><br /> <a href="https://anchor.fm/backyard-hatena">Backyard Hatena &bull; A podcast on Spotify for Podcasters</a></p><p>Anchor / Spotify / Google Podcasts / Apple Podcast で配信しています。お好みのプラットフォームから聞いていただけると嬉しいです。</p><p>今回のゲストは、はてなブックマークチームのSRE <a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a> です。はてなのSREの仕事についてや、福岡からのリモートワークについてお話を聞きました。</p> <blockquote> <p>Backyard Hatena #30 - Embedded SREと福岡(<a href="http://blog.hatena.ne.jp/cohalz/">id:cohalz</a>)</p><p>Show Notes</p> <ul> <li>はてなの技術の標準化 <ul> <li><a href="https://hatena.co.jp/recruit/interview/sre">SRE&#x5EA7;&#x8AC7;&#x4F1A; - &#x63A1;&#x7528;&#x60C5;&#x5831; - &#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A;</a></li> </ul></li> <li>アプリケーションエンジニアからSREに</li> <li>福岡からのリモートワークはどうですか?</li> <li>福岡のエンジニアコミュニティ</li> </ul> </blockquote> <div class="section"> <h4 id="ハッシュタグは-byhatena-です">ハッシュタグは #byhatena です!</h4> <p>Backyard Hatena の感想・コメントは <a href="https://twitter.com/search?q=%23byhatena">#byhatena</a> ハッシュタグをつけてツイートいただけると嬉しいです!</p> </div> <div class="section"> <h4 id="収録後記">収録後記</h4> <p>いつも #fukuoka チャンネルを見て楽しそうだなって思ってます(motemen)</p><p>Backyard Hatena を聞いて、はてなで働くことに興味を持たれたら、ぜひお話する機会を持ちましょう。</p><p><p style="text-align: center; margin: 2em"><br /> <a href="https://open.talentio.com/r/1/c/hatena/pages/51631/apply " class="btn btn-large btn-blue" target="_blank">カジュアル面談のお申込みはこちら</a><br /> </p></p><p>あわせて、こちらの採用サイトもご覧ください。</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatenacorp.jp%2Frecruit%2Fengineer" title="エンジニア採用 - 採用情報 - 株式会社はてな" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><a href="https://hatenacorp.jp/recruit/engineer">&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p> </div> hatenatech Nexus FrontierTechで活躍中の id:mizuno_takaaki を訪問 | はてな卒業生訪問企画 [#7] hatenablog://entry/6801883189064800127 2023-12-13T17:30:00+09:00 2023-12-13T18:40:47+09:00 いま会いたい元はてなスタッフを訪問してお話を伺っていく連載「卒業生訪問インタビュー」。 id:onishiが担当する第7回のゲストは、ロンドン、シンガポール、ハノイを拠点とするAIソリューションプロバイダー Nexus FrontierTech のCo-Founder CTOであり、著書「Web API: The Good Parts」、訳書「プログラマー脳」「JavaScript: The Good Parts」「入門 自然言語処理」などの執筆・翻訳でもご活躍されている、 id:mizuno_takaakiさんこと、水野貴明さんに、はてな時代の思い出や書籍執筆の舞台裏、海外での開発支援など、お話を伺いました。 <p>こんにちは、取締役の <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a> です。</p><p>Hatena Developer Blogの連載企画「<a href="https://developer.hatenastaff.com/archive/category/%E3%81%AF%E3%81%A6%E3%81%AA%E5%8D%92%E6%A5%AD%E7%94%9F%E8%A8%AA%E5%95%8F%E4%BC%81%E7%94%BB">&#x5352;&#x696D;&#x751F;&#x8A2A;&#x554F;&#x30A4;&#x30F3;&#x30BF;&#x30D3;&#x30E5;&#x30FC;</a>」では、創業からはてなの開発に関わってきた取締役の <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>、CTOの <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>、エンジニアリングマネージャーの <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>が、いま会いたい元はてなスタッフを訪問してお話を伺っていきます。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>が担当する第7回のゲストは、ロンドン、シンガポール、ハノイを拠点とするAIソリューションプロバイダー <a href="https://nexusfrontier.tech/">Nexus FrontierTech</a> のCo-Founder CTOであり、著書「<a href="https://www.oreilly.co.jp/books/9784873116860/">Web API: The Good Parts</a>」、訳書「<a href="https://www.shuwasystem.co.jp/book/9784798068534.html">&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30DE;&#x30FC;&#x8133;</a>」「<a href="https://www.oreilly.co.jp/books/9784873113913/">JavaScript: The Good Parts</a>」「<a href="https://www.oreilly.co.jp/books/9784873114705/">&#x5165;&#x9580; &#x81EA;&#x7136;&#x8A00;&#x8A9E;&#x51E6;&#x7406;</a>」などの執筆・翻訳でもご活躍されている、 <a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizuno_takaaki</a>さんこと、水野貴明さんです。</p><p>mizunoさんは、SIerを経て2005年はてなご入社。2007年に卒業後は、バイドゥ株式会社の日本人開発者第一号としてご活躍されたのち、株式会社ディー・エヌ・エー(以下「DeNA」)、フリーランスを経て、Nexus FrontierTechを共同創業されました。</p><p>東南アジアでのスタートアップの開発やチーム構築支援、執筆・翻訳でもご活躍されている<a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizuno_takaaki</a>さんに、はてな時代の思い出や書籍執筆の舞台裏、海外での開発支援など、お話を伺いました。</p> <blockquote> <p>水野貴明さん(<a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizuno_takaaki</a>)<br /> 技術投資家/ソフトウエア開発者/執筆・翻訳家 /Nexus Frontier Tech Co-Founder CTO<br /> 2005年9月-2007年12月 はてな在籍<br /> X: <a href="https://twitter.com/mizuno_takaaki">https://twitter.com/mizuno_takaaki</a><br /> Blog: <a href="http://takaaki.info/">http://takaaki.info/</a></p> </blockquote> <div class="section"> <h4 id="はてな時代の思い出深いサービスは">はてな時代の思い出深いサービスは?</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>(以下「<a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a>」) 今日は楽しみにしてきました。よろしくお願いします。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizuno_takaaki</a>(以下「<a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a>」)こちらこそ、よろしくお願いします。</p> <figure class="figure-image figure-image-fotolife" title="id:mizuno_takaaki:detail こと、水野貴明さん"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231207/20231207121733.png" width="2000" height="1086" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizuno_takaaki</a> こと、水野貴明さん</figcaption></figure><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> mizunoさんは、書籍「プログラマー脳」や「The Good Partsシリーズ」などの翻訳者・著者であり、海外でも活躍されていることは知られていますが、はてなのOBであることをご存じない方も多いように思います。最近入ったはてなスタッフのなかにも知らなかったエンジニアがいたくらいです。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> だいぶ前ですから。当時一緒に働いていたメンバーも少ないですよね。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> mizunoさん在籍時にもいた現スタッフは、僕と<a href="http://blog.hatena.ne.jp/mitsuki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mitsuki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mitsuki</a>さん(はてな取締役 田中慎樹)、<a href="http://blog.hatena.ne.jp/riko/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/riko/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:riko</a>さん(はてなコミュニティマネージャー)くらいですから。CTOの<a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>も一応かぶってますね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> motemenは僕がいたとき、まだインターンでした。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> そうでしたね。なつかしい。では、最初はそんなはてな時代のお話から伺っていきます。</p><p>いろんなサービスに関わってらっしゃったので、mizunoさんが思い出に残っているサービスや開発についてぜひお聞かせください。入社して最初の頃は、はてなダイアリーのサブディレクターを担当されてましたよね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> そうです。やっぱり、はてなダイアリーの改善が一番思い出深いですね。はてなカウンターのリニューアルもよく覚えていますけど、はてなダイアリーが一番かな。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> やっぱり、はてなダイアリーですか。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 文字コードがEUC-JPだったので、その対策とかやりましたしね。キーワードがらみのランキング調整、組織票が入ってたときの対策などは、今でも詳細に覚えていますね。</p><p>あとはログインアクセスの障害も忘れられないです。フラグが変わっただけだったので、復活できてよかったですけど。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> ORマッパーのバグで実行されちゃう障害でしたね。それは操作と関係なく、どんな状況でも周りで起こるもので、たまたま引いたのがmizunoさんだったんですよね。</p> <blockquote> <p><a href="https://hatena-announce.hatenastaff.com/entry/2007/07/11/000000_1">2007-07-11 - &#x306F;&#x3066;&#x306A;&#x306E;&#x544A;&#x77E5;</a><br /> <span style="font-size: 80%">2007年に発生したログイン障害。当初オペレーションミスと告知したが、その後の調査でシステム障害であったことがわかった。そのバグをたまたま引いたのがmizunoさんだったというエピソード。</span></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> テストアカウントで退会を試していて、退会する操作になんでこんなに時間かかるのかって思っていたら、全員誰もログインできなくなってしまったのであせりましたね。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> はてなダイアリー編集の追加機能は、たくさん作りましたね。あとは広告関係のシステムも。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> かなり作っていました。簡単に全ページトラッキングできるように、Googleアナリティクスを仕込んだり、はてなのキーワードのページが出る広告のチューニング、アフィリエイトのAPI改善などやりましたね。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 広告の標準モジュールを作って、いろいろな広告やアフィリエイトを包括的に使えるようにする改善でしたよね。mizunoさんの在籍期間は2年3か月と短かったですが、たくさんの機能やツールを作っていたイメージがあります。あとは、よく議論してケンカしてた印象もありますけど(笑)。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> ケンカしてましたっけ。そういう印象があったからか、はてなを退職する際に「怒ってません」って書いてあるTシャツはもらいました(笑)。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 当時のはてなは、mizunoさんだけでなく、そういう感じはありましたよね。技術やサービスに関して、議論が多かったことも影響していると思います。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> たしかにそうですね。それは自分の中では、すごく良かった経験の一つです。はてなは、自分の欠点にちゃんと向き合うきっかけになった会社でした。何かあったときに「じゃあ、どうしたらいいか」を真剣に考えるようになった。当時のはてなで僕は年齢が高い方でしたけど、みんなから学ぶことはめちゃくちゃ多くて、濃い2年3か月だったと思っています。<br /> <br /> </p> </div> <div class="section"> <h4 id="バイドゥに日本人開発者第一号として入社">バイドゥに日本人開発者第一号として入社</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> はてな卒業後はすぐにバイドゥにご入社されました。当時は「検索エンジンを作る」というmizunoさんのポジション、かっこいいなって思っていました。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a>でも、入ってみたら、最初は検索エンジン作らせてもらえなかったんですよね。そこで揉めて、ネゴシエーションを重ねに重ねた結果、エンジニアになれって。それでモバイルの検索エンジンを作ってました。在籍は3年3か月ですね。</p><p>はてなでも文字コードのことはやっていたけど、バイドゥでも文字コードと戦う男として、キャリア絵文字を検索可能にする開発をやっていました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> ガラケーの絵文字対応してましたね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a>はてな、バイドゥとずっとガラケーの絵文字と付き合ってました。</p> <blockquote> <p><a href="https://internet.watch.impress.co.jp/docs/special/353586.html">Baidu&#x7D75;&#x6587;&#x5B57;&#x691C;&#x7D22;&#x306E;&#x82E6;&#x52B4;&#x8A71;&#x3001;&#x958B;&#x767A;&#x8005;&#x306E;&#x6587;&#x5B57;&#x30B3;&#x30FC;&#x30C9;&#x30DE;&#x30CB;&#x30A2;&#x304C;&#x8AD6;&#x6587;&#x306B; - INTERNET Watch Watch</a></p> </blockquote> <p>はてなにいた当時も、シリコンバレーに現地法人を設立したりした時期だったので、みんなで英語で話す時間があったりしてましたけど、バイドゥに入ってからは上司も中国の方でしたし、月に1度は中国に行っていて。この時から、本格的に英語を使って海外の方と仕事をするようになりました。<br /> <br /> </p> </div> <div class="section"> <h4 id="東南アジアとの接点を作ったDeNAでの経験">東南アジアとの接点を作ったDeNAでの経験</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> DeNAさんにはどういった経緯で移られたんですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a>その後バイドゥが日本のプロダクト事業をほぼたたむことになり、自分も抜けて、その後DeNAに転職したんです。</p><p>DeNAではスマホ向けゲームの開発チームで、社内で複数のゲーム向けライブラリを作ったり、困っているチームをサポートするチームのリーダーをやっていました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 基盤チームですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 基盤チームというか、顧問チームですね。ゲーム開発チームは20代若手がバリバリやっているんですけど、自分たちのチームだけ平均年齢36歳ぐらい(笑)。困っている若手チームを経験あるメンバーでサポートするチームを率いていたのですが、その後パキスタンの開発チームにアサインされたんです。そこから、ベトナムチームの買収を手伝ったり、オフショアなども担当するようになりました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> DeNAさんの中では、当時オフショア開発は活発だったんですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> まだ全然でしたね。パキスタンの会社を買収した直後で、とりあえず全チームに人員を割り当てたというタイミングでした。</p><p>汎用ライブラリを作る仕事をアサインされて、パキスタンのチームと一緒に作ったんです。いろいろあってライブラリの完成度はちょっと微妙だったかなとも感じてましたが、ともかく、プロジェクト自体は一応終わらせることができたんです。</p><p>他のチームは大体みんなうまくいっていなかったので、そのプロジェクトを完了できた、という実績によって、外国人とのやり取りができるというポジションを確立した気がしますね。</p><p>その時、ベトナムを買収するという話があったので、やりたいと手を挙げてベトナムに行きました。そのオフショア会社と、DeNAの開発カルチャーがの相性がうまくかみ合わなかったという経緯があって、シンガポールにゲームスタジオを立ち上げようという話になったんです。</p><p>そこでテックリードを務めることになり、シンガポールやベトナムとのネットワークもできました。その後DeNAは辞めたんですが、もう1回東南アジアで勝負したいと思い、東南アジアに戻って来ました。<br /> <br /> </p> </div> <div class="section"> <h4 id="東南アジアを拠点にしている理由">東南アジアを拠点にしている理由</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> そこからずっと拠点は東南アジアが中心になっていますよね。なぜ、最初に東南アジアを選んだのですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 当時シンガポールに一番知り合いが多くて。シンガポールでゲームスタジオを立ち上げるときに、面接などで人脈ができたんです。</p><p>会社を立ち上げたり、ビザを下ろしたりするのも一番簡単だったので、最初は東南アジアをベースにして、その後ヨーロッパとかアメリカとかも攻めてみようと考えました。東南アジアは面白いので、結果的にまだこっちに根付いちゃってます。</p><p>2年くらいフリーランスでやった後、知り合いと3人でNexus FrontierTechという会社を立ち上げ、CTOとしてAIのプロダクト作りをしています。今も個人でスタートアップなどの技術顧問や開発支援など、フリーランスっぽいことを続けてるところもあります。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> お助けCTOみたいなのをやられていますね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> そうそう。みんな困っているから。日本人が東南アジアで起業するときに、どうやって現地のチームを作ればいいのかわからないことが多いみたいですね。開発者の面接ができないといった相談も多い。私はベトナムやシンガポールで技術者の面接をずっとしてきたので、面接の手伝いはできるし、そうしたサポートを行っています。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> mizunoさんはシンガポールにいらっしゃることが多いんですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> シンガポールが中心ですが、仕事はシンガポールだけではないので、タイにもよくいっていて、日本によく帰っています。Nexus FrontierTechのメンバーやお客さんは日本にもいます。ただ、日本のチームメンバーはもともとリモート前提のチームで日本中に散らばってますし、セールスや経営メンバーはシンガポールやベトナムが中心で、タイにも仕事があるので、東南アジアにいる方が仕事はやりやすいです。</p> </div> <div class="section"> <h4 id="好きなことをやる">好きなことをやる</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 海外を拠点にし続けていることには、どういった理由があるんですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> そもそも外国人とコミュニケーションすることが好きなんですよね。昔から文化の違いや言語に興味を持っていました。例えば、同じ英語でも国によってなまりが全然違うんです。ベトナムなまり、シンガポールなまり、インドなまりなど、その違いを分析するのも好きです。</p><p>仕事で海外に開発チーム作りたい人たちのお手伝いをしていると、そういう興味も満たされるし、開発チームもできて、最高に一石二鳥なのが、海外で仕事している理由です。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 開発も海外での仕事も「好きだから」っていうのが良いですね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 大変なこともありますけどね。海外で働くことに関しては、いいほうも悪いほうも経験しているなと思います。ただ、やっぱり好きなことをやっているというのが大きいです。</p><p>以前、タイでハッカソンイベントを企画したことがあるんです。みんなで好きなものを1日かけて作って、最後にプレゼンするっていう。そのハッカソンをやっているときに、あまりにも楽しすぎて、涙が出てきて…(笑)。</p><p>自分にこんなこと起こるんだと驚きましたけど、その時、やっぱり自分は「開発が好きなんだ」って、実感しましたね。</p><p>いまでも、開発で人が足りないから自分でコードを書かなきゃいけないときはめちゃくちゃテンションが上がります。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> いろいろやられてるのに、いまも結構コード書いてますよね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> コードはバリバリ書いてます。結局コードを書いているのが一番楽しい(笑)。好きなことをやって食べていけるのは、本当に運が良かったと思っています。<br /> <br /> </p> </div> <div class="section"> <h4 id="Nexus-FrontierTechで金融関係向けのAIツールを開発提供">Nexus FrontierTechで、金融関係向けのAIツールを開発・提供</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> Nexus FrontierTechではどういったサービスを提供されているかお伺いしたいです。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> いわゆるファイナンシャルセクターといわれる銀行や証券会社などの金融機関向けに、AIを使ったデータ抽出・分析を行うツールなどを開発しています。</p><p>銀行は企業の財務諸表や財務報告書などのデータを取り込んで分析し、融資などの判断をしているのですが、これまでそれらの業務を手作業で行っていたんですよね。その業務を自動化するツールの開発に取り組んでいます。</p> <blockquote> <p><a href="https://nexusfrontier.tech/">Nexus FrontierTech | Accelerating Enterprises with AI</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> イギリス資本の会社なんですよね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> もともとはファウンダーのひとりがイギリスに住んでいたので、投資を受ける関係でイギリスの会社に投資していました。現在は、経営メンバーはシンガポールに一番多くいるので、顧客はイギリス、シンガポール、日本が多いですね。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> AI技術のニーズが高まっていますが、御社への影響はどうですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> いわゆるChatGPTのようなLLM(大規模言語モデル:Large Language Models)を使ってきたことで、世界でゲームチェンジが激しく起こっています。</p><p>我が社もLLMも活用しながら、既存技術と組み合わせていくことで何とか生き残りましたが、周りはバタバタと倒れていきました。うちも頑張って採用したエンジニアと泣く泣く契約終了といったことを何回もしなくてはならず、大変でしたね。現在は、とりあえず危機は脱しました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> それはよかったです。日本向けには、どのような事業展開をされているんですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 海外の日本企業や日本の銀行などの海外支店に向けて、事業を展開しています。トップや担当者が日本人というケースも多くて、そうすると僕が日本語で説明ができるので、安心して聞いてもらえるのは強みになっています。円安の影響もあり、海外でビジネスを展開する企業も増えていくのではないかと考えています。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> そうですよね。ますますニーズが高まりそう。はてなも海外に乗り出すときは、mizunoさんに相談させてください。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> ぜひ!<br /> <br /> </p> </div> <div class="section"> <h4 id="はてなで学んだことは技術に向き合う姿勢">はてなで学んだことは「技術に向き合う姿勢」</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> mizunoさんのキャリアはかなり変遷されていますが、戦略を立ててキャリアを積み重ねられてきたのですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> いや、全く考えていないですね。だいたい3か月先のことはわからないという感じでやっています(笑)。</p><p>今のところラッキーにも、はてなで学ばせてもらったことが次のバイドゥで活かせて、そこでまた学んだことがDeNAで活かせて、そこまで全ての経験・スキルが今また活かせています。結果として、良いキャリアが築けたなと思っています。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> はてなの宣伝をしてほしいみたいな感じに聞こえちゃうかもしれないんですが... はてなでの経験で役立ったことの最たるものは何ですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 「技術に向き合う姿勢」だと思います。はてなに入社後、onishiさんや<a href="http://blog.hatena.ne.jp/naoya/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/naoya/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:naoya</a>さん(株式会社一休 CTO 伊藤直也氏)、<a href="http://blog.hatena.ne.jp/secondlife/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/secondlife/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:secondlife</a>さん(株式会社くふうカンパニー 執行役CAIO 舘野祐一氏)から、技術ってこうやって学ぶんだって刺激を受けたし、こう向き合うんだなと学ぶことができた。SIerにいたころと全然違ったので、衝撃的でした。はてなに転職していなかったら、たぶん全然違う人生だっただろうなって思いますね。</p><p>danjouさん(株式会社ソフリット 代表取締役 檀上伸郎氏)をはじめとして、自分の中で1本筋の通った向き合い方をしていました。SIerにいたときは、自分がその中でできる方だと思っていたんですけど、はてなに入ったら全然そんなことなくて。そこから自分が変わった感があるんですよね。</p> <figure class="figure-image figure-image-fotolife" title="左から id:hideokiさん(LINEヤフー株式会社 吉川英興氏)、danjouさん、id:mizuno_takaakiさん、id:kawasakiさん(スマートニュース株式会社 川崎裕一氏) | 2006年)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20061126/20061126101117.jpg" width="750" height="563" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>左から <a href="http://blog.hatena.ne.jp/hideoki/">id:hideoki</a>さん(LINEヤフー株式会社 吉川英興氏)、danjouさん、<a href="http://blog.hatena.ne.jp/mizuno_takaaki/">id:mizuno_takaaki</a>さん、<a href="http://blog.hatena.ne.jp/kawasaki/">id:kawasaki</a>さん(スマートニュース株式会社 川崎裕一氏) | 2006年)</figcaption></figure><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> mizunoさんが入ってから、僕自身も結構影響を受けて成長できたと思ったことは結構あります。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> え?ほんとですか?</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 先日、YAPC::Kyotoで、モブが主人公となってメインキャラを目指す話を講演したのですが、自分ははてなでモブだっていう意識がすごい強かったんですね。</p> <blockquote> <p><a href="https://onishi.hatenablog.com/entry/2023/03/20/141549">YAPC::Kyoto 2023 &#x306B;&#x53C2;&#x52A0;&#x3057;&#x3001;&#x30AD;&#x30FC;&#x30CE;&#x30FC;&#x30C8;&#x558B;&#x3063;&#x3066;&#x304D;&#x307E;&#x3057;&#x305F;&#x88CF;&#x8A71; - &#x5927;&#x897F;&#x30D6;&#x30ED;&#x30B0;</a></p> </blockquote> <p>mizunoさんは、前職でのご経験などもあって、わりと客観的な立ち位置で話をしてくれてるなって思っていました。「onishiさん、すごいじゃないですか」なんて言われたことがなかったので、すごくうれしかったです。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> ほんとですか。僕はずっとonishiさんをすごい人だと思っていましたけどね。当時から言ってたけど、はてながまわっているのは大西さんのおかげだと。その思いは今も変わらないです。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> なんか褒めさせた感じになっちゃったので話題を変えましょう(笑)。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> onishiさんは、今どこを担当されているんですか?</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 組織・基盤開発本部長として、組織開発は人事領域全般、基盤開発はインフラ、サービス基盤、情報システムの開発を率いています。開発は指揮をすることはあるんですけど、サービスのコードは自分で書いていないですね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> そうなんだ。大西さんは僕が尊敬するプログラマーの1人なんだけど。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> そう言ってくれるのは、mizunoさんくらいです。ただ、プログラム自体は趣味で書いていますよ。あとは、人事部長をしていても、必要に応じてちょっとコードを書いて解決してみたり、みたいなことはよくやっています。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> たしかに、そういうこともできますよね。onishiさん、コミュニケーションに安心感があるし、人事部長とか今の役割みたいなのすごく向いてるなと思いました。<br /> <br /> </p> </div> <div class="section"> <h4 id="The-Good-Partsシリーズ書籍も大人気">The Good Partsシリーズ書籍も大人気</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> mizunoさんは、はてな入社前にはてなの解説本「はてなダイアリーガイドブック」も書かれていますよね。それがはてな入社のきっかけにもなったと聞いてます。</p> <blockquote> <p><a href="https://takaaki.hatenablog.com/entry/20040525/1085473966">&#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A;&#x306B;&#x304A;&#x90AA;&#x9B54;&#x3057;&#x3066;&#x304D;&#x307E;&#x3057;&#x305F;&#xFF01; - mizuno_takaaki&#x306E;&#x65E5;&#x8A18;</a></p> </blockquote> <p>その後もエンジニアとして忙しく働きながら、書籍や訳書を出していますので、そのあたりのお話を伺いたいです。執筆や翻訳のお仕事をされるようになったきっかけはどういったことだったんでしょうか。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> もともと書くのが好きなんですよね。昔は小説家になりたいなと思った時期もありました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> なんかわかる気がします。当時もハヤカワのSF小説の話とかふたりでずっと話してましたよね。</p><p>あとmizunoさんははてなのフレームワークの教科書を書いてくれたんですよね。はてなのグループウェアにも「フレームワーク教科書」が残っていますよ。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 当時は、入社したらまずはドキュメントに精通するという習わしみたいなのがあって、それの一環だったのかなと思います。</p><p>そもそも書くようになったのは、たまたま新卒2~3年目くらいのときに参加したプログラム言語のコミュニティで、アスキーの編集者と繋がりができたことからなんです。それから雑誌などに寄稿をするようになりました。小説家になりたかったけど、物語を作る力がなかったので、技術のことを書くほうに向かった感じです。</p><p>あとは「Interface」っていう雑誌などを出しているCQ出版に大学の先輩がいたので、いろいろな雑誌に書かせてもらっていたら、文章を書くのが面白くなってきた。そこから書籍の話も来るようになりました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 2014年の「Web API: The Good Parts」は大きく話題になりました。</p> <blockquote> <p><a href="https://www.oreilly.co.jp/books/9784873116860/">O&#39;Reilly Japan - Web API: The Good Parts</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 中国語にも翻訳されたんですよ。英語になればいいのにと思ったけど、英語にはなりませんでした(笑)。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 翻訳を担当された「プログラマー脳」も読みましたけど、あれもいい本でしたね。</p> <blockquote> <p><a href="https://www.shuwasystem.co.jp/book/9784798068534.html">&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30DE;&#x30FC;&#x8133; &#xFF5E;&#x512A;&#x308C;&#x305F;&#x30D7;&#x30ED;&#x30B0;&#x30E9;&#x30DE;&#x30FC;&#x306B;&#x306A;&#x308B;&#x305F;&#x3081;&#x306E;&#x8A8D;&#x77E5;&#x79D1;&#x5B66;&#x306B;&#x57FA;&#x3065;&#x304F;&#x30A2;&#x30D7;&#x30ED;&#x30FC;&#x30C1; - &#x79C0;&#x548C;&#x30B7;&#x30B9;&#x30C6;&#x30E0; &#x3042;&#x306A;&#x305F;&#x306E;&#x5B66;&#x3073;&#x3092;&#x30B5;&#x30DD;&#x30FC;&#x30C8;&#xFF01;</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 手前味噌ですけど、言いたいことが言語化されて、いい本ですよね。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 自分がプログラマー脳だと思っている人が読むと、「うんうん、こうだよね」ってううなずける本だと思います。子どもに勧めようと思っています。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> うちの子は中学生なんですけど、試験勉強は前日しか勉強しないから、あの本に書いた「人間は思い出す練習をしないと思い出せないから、前もって準備して、前日に思い出すだけにするといい」といったら、ものすごく納得していました。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> なるほど、認知科学的な根拠を示すことで納得したんですね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 社会心理学を専門としている妻が監訳に入ってもらっているほか、息子も監修に参加してるんですよ。主に校正などを手伝ってくれました。今年のお正月、家族みんなでバーミヤンに集まってやりました(笑)。それなのに子供は自分の名前がクレジットにないって怒ってましたけど。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 家族のサポートで書籍を出すって、とてもいい話ですね。あの本はどういう経緯で翻訳されることになったのですか?</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 実は、はてなダイアリーガイドブックを企画した当時の編集者の方から声をかけていただいたんです。2004年にはてなの本をやっていなかったら、今回の翻訳の依頼もなかったと思います。<br /> <br /> </p> </div> <div class="section"> <h4 id="いまのはてなはどう見える">いまのはてなはどう見える?</h4> <p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 最後の質問です。今のはてなに対して、外からの忌憚なき意見を聞かせてください。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> 私がはてなにいたときと比べて、やってることが全然違いますよね。もちろん、当時から継続している個人ユーザー向けのサービスもたくさんありますけど、どちらかというと企業向けだったりも増えて、裏方に回る事も増えてるのかなって印象があって。でも、はてなという会社の存在を積極的にアピールしたらいいのにと、思っています。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> アピールもそうだし、以前に比べてはてなの存在感が減っているんじゃないか、ということですね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> オブラートを外していただくと、そういうことでございます(笑)。特に海外では誰もはてなを知らないので、どうしても自分は「バイドゥにいた人」って呼ばれるんですよね。でも、僕のオリジンの一部は当然はてなにあるので、そのことを海外の方にもっと言えると嬉しいなと勝手に思っています。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 知名度やプレゼンスが上がると、元はてなであるっていうことのプレゼンスも上がりますよね。</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> そうそう、僕は自慢できるっていう。</p><p><a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="id:onishi" class="hatena-id-icon"></a> 前以上に自慢できるように頑張りますね!</p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="id:mizuno_takaaki" class="hatena-id-icon"></a> ぜひ、お願いします!</p><p><hr></p><p><a href="http://blog.hatena.ne.jp/mizuno_takaaki/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mizuno_takaaki/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mizuno_takaaki</a>さんこと水野さん、ご協力ありがとうございました。次回の「はてな卒業生訪問企画」は2024年2月更新予定、担当は<a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>です。</p> </div> <div class="profile-cards-list"> <div class="profile-card-container"> <section itemprop="author" itemscope itemtype="http://schema.org/Person"> <div class="prof-txt"> <p class="name" itemprop="name" style="margin-top: 0px;"><img style="margin:0" width="32" height="32" src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png"> id:onishi</p> <p itemprop="description"> 大西 康裕(おおにし・やすひろ)<br> 取締役 組織・基盤開発本部長 兼 人事部長<br> 2001年に創業メンバーの1人として有限会社はてな(当時)に入社。その後「はてなブログ」の立ち上げや事業化を指揮。はてなのサービス・システムの開発本部長を経て、2022年5月より現職。組織開発及びシステム基盤開発を統括する本部長と人事部長を兼任し、経験を活かした多角的な組織開発に取り組む。<br> Twitter: <a href="https://twitter.com/yasuhiro_onishi" alt="Twitter">@yasuhiro_onishi</a> blog: <a href="https://onishi.hatenablog.com//">大西ブログ</a> </p></div></section> </div> </div> hatenatech Working Out Loudの実践で作業効率をよくしていく | はてなで働く azukiazusa にアンケート [#24] hatenablog://entry/6801883189062802183 2023-11-30T19:00:00+09:00 2023-11-30T19:00:18+09:00 はてなで働くエンジニアにアンケートシリーズ第24回は、Mackerel開発チームのWebアプリケーションエンジニア、id:azukiazusaです。アウトプットの実践やチームメンバー間の知識共有、Working Out Loudの実践などについて聞きました。 <p><strong>はてなで働くエンジニアにアンケート</strong>シリーズ第24回は、MackerelチームのWebアプリケーションエンジニア、<a href="http://blog.hatena.ne.jp/azukiazusa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/azukiazusa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:azukiazusa</a>に話を聞きました。</p> <ul class="table-of-contents"> <li><a href="#お互いの技術力を高め合える環境で働きたいと思っていた">お互いの技術力を高め合える環境で働きたいと思っていた</a></li> <li><a href="#チームではそれぞれの得意な領域でメンバーをサポートし合う">チームではそれぞれの得意な領域でメンバーをサポートし合う</a></li> <li><a href="#アウトプットを推奨する文化があるので登壇に挑戦">アウトプットを推奨する文化があるので登壇に挑戦</a></li> <li><a href="#Working-Out-Loudを実践して分からないことはどんどん発言">Working Out Loudを実践して分からないことはどんどん発言</a></li> </ul> <h2 id="お互いの技術力を高め合える環境で働きたいと思っていた">お互いの技術力を高め合える環境で働きたいと思っていた</h2> <p><strong>── Q1. はてなidとその由来を教えてください</strong></p> <p><a href="http://blog.hatena.ne.jp/azukiazusa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/azukiazusa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:azukiazusa</a>です。由来は本名からです。同僚からは「あずきさん」と呼ばれていることが多いですね。</p> <p><strong>── Q2. いつどんなきっかけで入社されましたか?</strong></p> <p>2022年9月に中途入社しました。きっかけは以前カジュアル面談をさせていただいた際に、はてなの文化や働き方に興味を持ったことです。</p> <p>はてなには技術力が高いエンジニアが多いという印象を持っていました。そして、そのようなお互いの技術力を高め合える環境で働きたいと思っていました。また、お互いのことをはてなidで呼び合う文化があることを聞いており、インターネットが大好きということを掲げているという点で、カルチャーマッチを感じていました。</p> <p>転職を考えていた頃に、<a href="https://hatena.co.jp/press/release/entry/2022/05/02/160000">フレキシブルワークスタイル制度</a>の発表(2022年5月)があったことも要因として大きいですね。</p> <h2 id="チームではそれぞれの得意な領域でメンバーをサポートし合う">チームではそれぞれの得意な領域でメンバーをサポートし合う</h2> <p><strong>── Q3. 現在の仕事を教えてください</strong></p> <p>MackerelチームでWebアプリケーションエンジニアとして働いています。Mackerelチームではフロントエンドエンジニアやバックエンドエンジニアのように領域を分けていないため、基本的にほぼすべての領域に関わることになります。</p> <p>それぞれのメンバーで例えばGo言語が得意な人がいたり、フロントエンドが得意な人がいたりするので、得意な領域でメンバーをサポートしたり、自分が得意な領域でメンバーにサポートしてもらったりしています。</p> <p><strong>── Q. チーム内の立ち位置を教えてください</strong></p> <p>アプリケーションエンジニアの一人として活動しています。私はフロントエンドを得意としているので、MackerelのWebコンソール(=Web上からMackerelを操作するための画面)の開発を行うことが多いですね。</p> <p>特に好んでいるのは、ユーザー体験の改善に関するタスクです。例えばキーボードのみで操作できるようにしたり、コントラスト比を改善したりなど、Webアクセシビリティに関する改善に興味を持っており、積極的に取り組んでいます。</p> <p><strong>── Q. 1日の仕事の流れを教えてください</strong></p> <p>朝は大体9時くらいから活動を始めています。チームの朝会が始まるまでの間は、プルリクエストの一覧を眺めてレビューをしたり、自分の担当しているタスクの進捗を確認したりしています。</p> <p>11時にチームの朝会があります。朝会では、昨日やったこと、今日やること、困っていることなどを共有します。午前の時間は比較的空いている時間が多いので、自分のタスクに集中して取り組みやすいですね。</p> <p>チームの開発はスクラムで行っているので、午後の時間はスクラムイベントがある日によって流れが変わります。</p> <p><figure class="figure-image figure-image-fotolife" title="デスク周りの様子"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231130/20231130190009.jpg" width="2000" height="1501" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>デスク周りの様子</figcaption></figure></p> <h2 id="アウトプットを推奨する文化があるので登壇に挑戦">アウトプットを推奨する文化があるので登壇に挑戦</h2> <p><strong>── Q. 最近うまくいったことは何ですか?</strong></p> <p>最近は<a href="https://azukiazusa.dev/">&#x30D6;&#x30ED;&#x30B0;</a>や<a href="https://speakerdeck.com/azukiazusa1/mackerel-noakusesibiriteigai-shan-shi-li">&#x52C9;&#x5F37;&#x4F1A;&#x3067;&#x306E;&#x767B;&#x58C7;</a>など、アウトプット方面でうまくいっていることが多いと感じています。もともとは登壇の経験がなかったのですが、はてなにはアウトプットを推奨している文化があるので、挑戦してみようと思いました。</p> <p>2023年11月に開催された<a href="https://jsconf.jp/2023/talk/azukiazusa-1/">JSConf JP</a>での発表資料は以下の通りです。</p> <iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/d13020c55c1245628d228a0131af3af7" title="JavaScript なしで動作するモダンなコードの書き方" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe> <p><a href="https://speakerdeck.com/azukiazusa1/javascript-nasidedong-zuo-surumodannakodonoshu-kifang"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fspeakerdeck.com%2Fazukiazusa1%2Fjavascript-nasidedong-zuo-surumodannakodonoshu-kifang" alt="" class="http-favicon" /></a><a href="https://speakerdeck.com/azukiazusa1/javascript-nasidedong-zuo-surumodannakodonoshu-kifang">JavaScript &#x306A;&#x3057;&#x3067;&#x52D5;&#x4F5C;&#x3059;&#x308B;&#x30E2;&#x30C0;&#x30F3;&#x306A;&#x30B3;&#x30FC;&#x30C9;&#x306E;&#x66F8;&#x304D;&#x65B9; - Speaker Deck</a><a href="https://b.hatena.ne.jp/entry/https://speakerdeck.com/azukiazusa1/javascript-nasidedong-zuo-surumodannakodonoshu-kifang" class="http-bookmark"><img src="https://b.hatena.ne.jp/entry/image/https://speakerdeck.com/azukiazusa1/javascript-nasidedong-zuo-surumodannakodonoshu-kifang" alt="" class="http-bookmark" /></a></p> <p>はてなでは毎週エンジニアが集まる勉強会が開催されており、そこで発表する機会があるので、発表の練習が自然に行えます。また、エンジニアが技術ブログを書くとSlackのチャンネルに流れてくる仕組みになっているので、技術ブログを書くモチベーションにつながっていますね。</p> <p><strong>── Q. 最近うまくいっていないと感じることは何ですか?</strong></p> <p>先ほどMackerelチーム内ではそれぞれ得意な領域があると述べましたが、その結果、特定の人にタスクが集中してしまうことがありました。そうなると、チームメンバーの負荷が偏ってしまうことになります。</p> <p>チームメンバーの知識をどのように共有していくかは、チームの中でもよく会話に上がっています。Mackerelチームではペアプログラミングやペアレビューを行うことで、チームメンバーの知識の共有を図っています。</p> <p>とはいえ自分自身が最近ペア作業をあまり行えていないと感じているので、仕事の進め方も引き続き改善していきたいと思っています。</p> <h2 id="Working-Out-Loudを実践して分からないことはどんどん発言">Working Out Loudを実践して分からないことはどんどん発言</h2> <p><strong>── Q. 普段大切にしていることは何ですか?</strong></p> <p>現在チームメンバーがそれぞれリモートワークをしているので、コミュニケーションの取り方を意識しています。Working Out Loudという考え方があります。これは作業途中であっても今やっていることをガンガンアウトプットしたり、作業で詰まったらすぐに質問したりする実践方式です。</p> <p><a href="https://blog.studysapuri.jp/entry/2018/11/14/working-out-loud"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fblog.studysapuri.jp%2Fentry%2F2018%2F11%2F14%2Fworking-out-loud" alt="" class="http-favicon" /></a><a href="https://blog.studysapuri.jp/entry/2018/11/14/working-out-loud">Working Out Loud &#x5927;&#x58F0;&#x4F5C;&#x696D;&#xFF08;&#x3057;&#x306A;&#x3055;&#x3044;&#xFF09;&#x3001;&#x30C1;&#x30FC;&#x30E0;&#x30E1;&#x30F3;&#x30D0;&#x30FC;&#x540C;&#x58EB;&#x3067;&#x306E;&#x30C8;&#x30EC;&#x30FC;&#x30CB;&#x30F3;&#x30B0;&#x6587;&#x5316;&#x306E;&#x91B8;&#x6210; - &#x30B9;&#x30BF;&#x30C7;&#x30A3;&#x30B5;&#x30D7;&#x30EA; Product Team Blog</a><a href="https://b.hatena.ne.jp/entry/https://blog.studysapuri.jp/entry/2018/11/14/working-out-loud" class="http-bookmark"><img src="https://b.hatena.ne.jp/entry/image/https://blog.studysapuri.jp/entry/2018/11/14/working-out-loud" alt="" class="http-bookmark" /></a><br> <a href="https://developer.hatenastaff.com/entry/2022/12/09/170000"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fdeveloper.hatenastaff.com%2Fentry%2F2022%2F12%2F09%2F170000" alt="" class="http-favicon" /></a><a href="https://developer.hatenastaff.com/entry/2022/12/09/170000">&#x306F;&#x3066;&#x306A;&#x306E;&#x30DD;&#x30C3;&#x30C9;&#x30AD;&#x30E3;&#x30B9;&#x30C8; Backyard Hatena #18 - &#x4F1A;&#x793E;&#x7D39;&#x4ECB;&#x306B;&#x8F09;&#x3089;&#x306A;&#x3044;&#x306F;&#x3066;&#x306A;&#x6587;&#x5316;&#xFF08;id:onk&#xFF09; #byhatena - Hatena Developer Blog</a><a href="https://b.hatena.ne.jp/entry/https://developer.hatenastaff.com/entry/2022/12/09/170000" class="http-bookmark"><img src="https://b.hatena.ne.jp/entry/image/https://developer.hatenastaff.com/entry/2022/12/09/170000" alt="" class="http-bookmark" /></a></p> <p>リモートワークの場合、オフィスで仕事をする環境とは異なり、他のメンバーが何をやっているのかがなかなか見えにくくなってしまいます。Working Out Loudを実践することで、お互いにやってることが見えやすくなりますし、長時間1つの作業で詰まってしまうことも減るため、チームの生産性の向上にもつながります。</p> <p>自分の場合はとにかくSlackをX(旧Twitter)のようにして、今取り組んでいることを実況しながら使っていますね。自分で調べずにすぐ人にものを聞くことについて好ましく思われない風潮もありますが、会社では逆で、どんどん分からないことを発言していったほうがよいと思っています。</p> <p>もしチームメンバーの中に答えを即座に出せる人がいれば大幅な時間の節約になりますし、そうでない場合でも自分が調べる過程をログとして書き残すことで、後から同じことで行き詰まった人にとっても役立ちます。</p> <p><strong>── Q. はてなはどんな会社ですか?</strong></p> <p>やはり、インターネットが大好きな人が集まっている会社だと思います。社内のSlackの様子は世の中のインターネットの雰囲気とあまり変わりないので、「ここが会社だ」という感覚があまりないですね。それでいて仕事には真剣に取り組んでいで、ONとOFFの切り替えが上手な人が多いと思います。</p> <p>個々のメンバーの技術力が高いことはもちろんのこと、チーム開発におけるコミュニケーションも大切にしている雰囲気を感じますね。ふりかえりではどうすればより良いチームになれるかを真剣に議論する人が多くいて、そのことが当然の慣習になっているので、チームでの成長が早いと思っています。</p> <hr> <p>はてなのWebアプリケーションエンジニアには、自分の担当サービスに積極的に関わっていく姿勢が求められます。技術の進歩のスピードが速いこの業界では、品質の高いコードを書くだけでなく、新しい技術へのキャッチアップも必須。技術はエンジニアの共通言語であり、他職種と連携するための道具です。技術に対する向上心を持つ仲間を募集しています。ご連絡をお待ちしております!</p> <p>▼ <a href="https://hatenacorp.jp/recruit/career/application-engineer">Web&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x8077; &#x8EE2;&#x8077;&#x30FB;&#x4E2D;&#x9014; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a><br> ▼ <a href="https://hatenacorp.jp/recruit/fresh/application-engineer">Web&#x30A2;&#x30D7;&#x30EA;&#x30B1;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x8077; &#x65B0;&#x5352;&#x63A1;&#x7528; - &#x63A1;&#x7528;&#x60C5;&#x5831;</a></p> <p><a href="https://hatenacorp.jp/recruit/career/application-engineer" target="_blank" border="0" width="100%"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20201224/20201224090947.png" alt="はてなでは、技術に対する向上心を持つ仲間を募集しています" title="はてなでは、技術に対する向上心を持つ仲間を募集しています"></p> blog-media Fluent Bitでアクセスログをステータスコードやレスポンスタイムでフィルタリングする hatenablog://entry/6801883189052071168 2023-11-30T11:00:00+09:00 2023-11-30T11:00:09+09:00 こんにちは id:cohalz です。はてなブックマークのチームではWebアプリケーションのアクセスログを取るためにnginxを入れてCloudWatch Logsに送り、障害時などにCloudWatch Logs Insightsを使って分析を行うというフローが主流となっています。 しかし全リクエストのアクセスログを送るにはCloudWatch Logsの費用は高く、特に安定していてリクエストが多いようなサービスに関しては費用対効果を考えCloudWatch Logsに流すこと自体をやめてしまうこともありました。 そういった状況を解決するために、CloudWatch Logsにはエラーや時間… <p>こんにちは <a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a> です。はてなブックマークのチームではWebアプリケーションのアクセスログを取るためにnginxを入れてCloudWatch Logsに送り、障害時などにCloudWatch Logs Insightsを使って分析を行うというフローが主流となっています。</p> <p>しかし全リクエストのアクセスログを送るにはCloudWatch Logsの費用は高く、特に安定していてリクエストが多いようなサービスに関しては費用対効果を考えCloudWatch Logsに流すこと自体をやめてしまうこともありました。</p> <p>そういった状況を解決するために、CloudWatch Logsにはエラーや時間の掛かっているリクエストのみが送られるような仕組みを導入し、費用を抑えつつ障害対応に必要なデータを集められるようにしました。</p> <h2 id="Fluent-BitのLuaプラグインを使う">Fluent BitのLuaプラグインを使う</h2> <p>はてなではログのフィルタリングにFluent Bitを利用することが多いです。</p> <p>Fluent Bitでログのフィルタリングする場合はgrepやrewrite_tagを使いますが、これは正規表現でマッチする関係上特定の閾値を超えたものだけといったルールを作ることが非常に難しいです。</p> <p>そんな場合に使えるのがLuaプラグインで、数値の比較を始めとした細かいフィルタリングやレコードの追加の仕組みをLuaを使って実現できるようになります。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.fluentbit.io%2Fmanual%2Fpipeline%2Ffilters%2Flua" title="Lua - Fluent Bit: Official Manual" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://docs.fluentbit.io/manual/pipeline/filters/lua">docs.fluentbit.io</a></cite></p> <p>Fluent BitのLuaプラグインの使い方に関しては以下の記事が参考になりました。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fnokute.hatenablog.com%2Fentry%2F2020%2F05%2F31%2F095431" title=" fluent-bit の lua filter plugin 使用例 - 一寸先は/dev/null" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://nokute.hatenablog.com/entry/2020/05/31/095431">nokute.hatenablog.com</a></cite></p> <p>このLuaプラグインを使うことでステータスコードやレスポンスタイムを数値で比較して、マッチするログだけにフィルタリングすることができます。 下の例はレスポンスタイムが0.5秒以上もしくはステータスコードが500以上のログだけを残すLuaスクリプトです。</p> <pre class="code lang-lua" data-lang="lua" data-unlink><span class="synIdentifier">function</span> accesslog_filter(tag, timestamp, record) <span class="synStatement">if</span> record[<span class="synConstant">'reqtime'</span>] &gt;= <span class="synConstant">0.5</span> <span class="synStatement">or</span> record[<span class="synConstant">'status'</span>] &gt;= <span class="synConstant">500</span> <span class="synStatement">then</span> <span class="synStatement">return</span> <span class="synConstant">0</span>, timestamp, record <span class="synStatement">else</span> <span class="synStatement">return</span> -<span class="synConstant">1</span>, timestamp, record <span class="synComment">-- ここにマッチしたログは捨てられる</span> <span class="synStatement">end</span> <span class="synIdentifier">end</span> </pre> <p>このLuaスクリプトをFluent Bitから読み込むことで利用できます。</p> <pre class="code" data-lang="" data-unlink>[FILTER] Name lua Match *-firelens-* script /fluent-bit/etc/accesslog_filter.lua call accesslog_filter</pre> <h2 id="閾値を環境変数で変えられるようにする">閾値を環境変数で変えられるようにする</h2> <p>この閾値を変えるためには設定ファイルを変える必要があるという問題があります。</p> <p>閾値を変えたくなった時に毎回ビルドするのでは手間ですし、複数のアプリケーションから利用するといったことがしづらいです。</p> <p>これを解決する方法として、環境変数を使って変更できるようにならないか調べた結果、ワンライナーでLuaのコードを書くことで可能ということがわかりました。</p> <pre class="code" data-lang="" data-unlink>[FILTER] Name lua Match nginx_access_log code function accesslog_filter(tag, timestamp, record) if record[&#34;reqtime&#34;] &gt;= ${REQTIME_THRESHOLD} or record[&#34;status&#34;] &gt;= ${STATUS_THRESHOLD} then return 0, timestamp, record else return -1, timestamp, record end end call accesslog_filter</pre> <p>上の例では <code>REQTIME_THRESHOLD</code> および <code>STATUS_THRESHOLD</code> を環境変数として指定することで閾値を簡単に変更できるようになっています。</p> <p>フィルタリングをやめたい場合も<code>REQTIME_THRESHOLD</code> に0や <code>STATUS_THRESHOLD</code> に100など指定することで全てのログを流せるようにできるようになります。</p> <p>この方法は、Fluent Bitの設定ファイルに環境変数の埋め込みができる機能を利用しています。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.fluentbit.io%2Fmanual%2Fadministration%2Fconfiguring-fluent-bit%2Fclassic-mode%2Fvariables" title="Variables - Fluent Bit: Official Manual" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/variables">docs.fluentbit.io</a></cite></p> <p>ワンライナーをやめて見やすい形でLuaのスクリプトに環境変数を埋め込むと言ったことはおそらくできません。</p> <p>あくまで環境変数を埋め込めるのはFluent Bitの設定ファイルだけであってLua側に環境変数を埋め込むことができませんし、Luaスクリプトの引数の形式も決まっているため追加でパラメータを渡すといったこともできないという理由になっています。</p> <p>とはいえFluent Bit v2ではYAML形式での設定ファイルが使えるようになるので今後はYAML形式で書くことで埋め込みのコードも複数行で書けるようになるかもしれません。</p> <p>公式のYAML設定の例にもそういったLuaスクリプトを埋め込む例が存在しています。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Ffluent%2Ffluent-bit%2Fblob%2Fv2.2.0%2Fpackaging%2Ftesting%2Fsmoke%2Fcontainer%2Ffluent-bit.yaml" title="fluent-bit/packaging/testing/smoke/container/fluent-bit.yaml at v2.2.0 · fluent/fluent-bit" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://github.com/fluent/fluent-bit/blob/v2.2.0/packaging/testing/smoke/container/fluent-bit.yaml">github.com</a></cite></p> <p>ただし現時点では<a href="https://github.com/aws/aws-for-fluent-bit">aws-for-fluent-bit</a>はv1を利用しているのでYAML設定は使えないことに注意してください。</p> <h2 id="最後に">最後に</h2> <p>検証用にこのNginxとFluent Bitの動作確認をするサンプルのアプリケーションを用意しました。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fcohalz%2Ffluent-bit-nginx-filter-example" title="GitHub - cohalz/fluent-bit-nginx-filter-example" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://github.com/cohalz/fluent-bit-nginx-filter-example">github.com</a></cite></p> <p><code>docker compose up</code> して <code>curl 127.0.0.1:8080/500</code> などすると下のように特定のステータスコード以上のログだけfluent-bit-nginx-filter-example-fluent-bit-1に送られるというのが確認できます。</p> <pre class="code docker" data-lang="docker" data-unlink>fluent-bit-nginx-filter-example-nginx-1 | {&#34;time&#34;:&#34;19/Oct/2023:03:04:07 +0000&#34;,&#34;uri&#34;:&#34;/500&#34;,&#34;status&#34;:500,&#34;reqtime&#34;:0.000} fluent-bit-nginx-filter-example-nginx-1 | {&#34;time&#34;:&#34;19/Oct/2023:03:04:10 +0000&#34;,&#34;uri&#34;:&#34;/501&#34;,&#34;status&#34;:501,&#34;reqtime&#34;:0.000} fluent-bit-nginx-filter-example-fluent-bit-1 | [0] nginx_access_log: [[1697684650.000000000, {}], {&#34;uri&#34;=&gt;&#34;/501&#34;, &#34;status&#34;=&gt;501, &#34;reqtime&#34;=&gt;0.000000}] fluent-bit-nginx-filter-example-nginx-1 | {&#34;time&#34;:&#34;19/Oct/2023:03:04:13 +0000&#34;,&#34;uri&#34;:&#34;/502&#34;,&#34;status&#34;:502,&#34;reqtime&#34;:0.000} fluent-bit-nginx-filter-example-fluent-bit-1 | [0] nginx_access_log: [[1697684653.000000000, {}], {&#34;uri&#34;=&gt;&#34;/502&#34;, &#34;status&#34;=&gt;502, &#34;reqtime&#34;=&gt;0.000000}]</pre> <p>というわけでFluent Bitでアクセスログをフィルタリングする話でした。nginxに限らずJSONでアクセスログを出していて数値でフィルタリングしたいと言った場合には真似できると思います。</p> cohalz 「はてな技術書典部」が技術書典15で『Hatena Tech Book Vol.2』を頒布しました! hatenablog://entry/6801883189060500545 2023-11-22T19:00:00+09:00 2023-11-22T19:01:04+09:00 株式会社はてなのエンジニア、デザイナー、編集の有志が集結した「はてな技術書典部」が、技術書オンリーイベント「技術書典15」のオフライン開催に参加しました!技術書典15オンラインマーケット(2023年11月26日まで)では、「紙+電子」の新刊『Hatena Tech Book Vol.2』を頒布しています。 <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231122/20231122190058.jpg" width="1200" height="900" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>去る11月12日(日)、株式会社はてなのエンジニア、デザイナー、編集の有志が集結した「はてな技術書典部」は、新刊『Hatena Tech Book Vol.2』を引っさげ、技術書オンリーイベント「<a href="https://techbookfest.org/event/tbf15">&#x6280;&#x8853;&#x66F8;&#x5178;15</a>」のオフライン開催に参加いたしました!</p><p><blockquote data-conversation="none" class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">こ19 はてな技術書典部 準備かんりょー、お待ちしています! <a href="https://twitter.com/hashtag/%E6%8A%80%E8%A1%93%E6%9B%B8%E5%85%B8?src=hash&amp;ref_src=twsrc%5Etfw">#技術書典</a> <a href="https://t.co/i1DRrxaTwx">pic.twitter.com/i1DRrxaTwx</a></p>&mdash; kmuto (@kmuto) <a href="https://twitter.com/kmuto/status/1723512092089803152?ref_src=twsrc%5Etfw">2023年11月12日</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </p><p>技術(書|者)のための電子・紙書籍制作ツール「Re:VIEW」の開発者である、MackerelチームのCRE(Customer Reliability Engineer)・<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a>が制作を取りまとめた『Hatena Tech Book Vol.2』は、2019年に「技術書典6」で頒布した『<a href="https://developer.hatenastaff.com/entry/2019/04/24/180000">Hatena Tech Book</a>』からなんと4年ぶりの新刊となりました。</p><p>今回のテーマは「あなたの推しの技術を教えてください」。推しの言語やツール、エンジニアとしての生き方・向き合い方、はてなの採用の裏側まで、10人の執筆陣による推し技術が集まりました!</p> <blockquote> <p>序文 <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a></p><p>Perlの未定義動作110連発 <a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a></p><p>ラムダ計算で遊んでみよう <a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a></p><p>VSはよいものだ <a href="http://blog.hatena.ne.jp/koudenpa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/koudenpa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:koudenpa</a></p><p>すごいIAMアイデンティティセンター無料で使おう <a href="http://blog.hatena.ne.jp/rokoucha/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rokoucha/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rokoucha</a></p><p>Pythonでフォントを加工する <a href="http://blog.hatena.ne.jp/cockscomb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cockscomb</a></p><p>注目されない自分と付き合う技術 <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a></p><p>人事を支える技術 <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a></p><p>スクラムによる開発の理想と現実 <a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a></p><p>小説同人サークルを支える技術 <a href="http://blog.hatena.ne.jp/vilagia/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/vilagia/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:vilagia</a></p><p>ドキュメントを伝えやすくするための技術(校正編) <a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a></p><p>寄稿者のつぶやき</p> </blockquote> <p>技術書典15オフライン開催当日、その日になるまで刷り上がりが分からずどきどきだったという<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a>。段ボール箱を開けると、そこには新刊ならではの紙の匂いに包まれた『Hatena Tech Book Vol.2』が!</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231122/20231122190042.jpg" width="1200" height="801" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>ブースを着々と設営していきます。<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a>、<a href="http://blog.hatena.ne.jp/arthur-1/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/arthur-1/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:arthur-1</a>と一緒にブースに立っておりましたが、たくさんの方にお声掛けいただきました。特に、<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a>のところに「Re:VIEW」を使って技術同人誌を作った、という方が訪ねてきてくださっていたのが印象的でした。</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231122/20231122190052.jpg" width="1200" height="801" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p><a href="http://blog.hatena.ne.jp/mazco/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/mazco/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:mazco</a>のデザインによるポスターも華やかで、ブースを彩ってくれました。</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231122/20231122190055.jpg" width="1200" height="801" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>当日は大盛況で、入り口からはやや遠い配置だったはてな技術書典部にも多くの来場者の方々が立ち寄り、見本誌に目を留めてくださいました。そしてご購入いただいた皆さま、ありがとうございました!</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231122/20231122190046.jpg" width="1200" height="801" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231122/20231122190049.jpg" width="1200" height="801" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p>11月26日(日)まで開催されている技術書典15オンラインマーケットでは、引き続き「紙+電子」の『Hatena Tech Book Vol.2』を頒布しています。価格は電子版もセットでおトクな1,000円! 配送料は無料です!</p><p>紙版はオンラインマーケット終了までの頒布となりますので、お早めにご購入ください!!</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftechbookfest.org%2Fproduct%2F1LJGAQ52t3aL7qqhPpkvfr%3FproductVariantID%3D55xX2u6JxL1994PxqjbmR1" title="Hatena Tech Book Vol.2:はてな技術書典部" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://techbookfest.org/product/1LJGAQ52t3aL7qqhPpkvfr?productVariantID=55xX2u6JxL1994PxqjbmR1">techbookfest.org</a></cite></p><p>購入には「技術書典15」でのユーザー登録が必要となりますので、ご準備をよろしくお願いします!</p> ayakoya Hatena Engineer Seminar #27 「パフォーマンスチューニング編」をオンラインで開催しました #hatenatech hatenablog://entry/6801883189059279461 2023-11-17T12:30:00+09:00 2023-11-17T12:30:07+09:00 2023年11月16日(木)に開催した Hatena Engineer Seminar #27 「パフォーマンスチューニング編」のレポートです。サーバー監視サービス「Mackerel」チームとブログサービス「はてなブログ」チームのエンジニアが登壇し、取り組みについてご紹介しました。トークの発表資料と動画アーカイブを掲載しています。ぜひご覧ください! <p>2023年11月16日(木)に、 <a href="https://developer.hatenastaff.com/entry/engineer-seminar-27">Hatena Engineer Seminar #27</a> をオンライン開催しました。ご参加いただいたみなさま、ありがとうございました。</p><p>このエントリーでは、当日のアーカイブ動画や公開資料をご紹介します。</p> <ul class="table-of-contents"> <li><a href="#Hatena-Engineer-Seminar-27-について">Hatena Engineer Seminar #27 について</a></li> <li><a href="#発表概要と資料">発表概要と資料</a><ul> <li><a href="#OpenTelemetry-の-Trace-を中心にしたパフォーマンス改善Mackerelチーム-エンジニア-idrmatsuoka">OpenTelemetry の Trace を中心にしたパフォーマンス改善 Mackerelチーム エンジニア id:rmatsuoka</a></li> <li><a href="#はてなブログのブログ表示に必要なJSを16にした話ブログチーム-エンジニア-idnanimono_demonai">はてなブログのブログ表示に必要なJSを1/6にした話 ブログチーム エンジニア id:nanimono_demonai</a></li> </ul> </li> <li><a href="#さいごに">さいごに</a></li> </ul> <div class="section"> <h3 id="Hatena-Engineer-Seminar-27-について">Hatena Engineer Seminar #27 について</h3> <p>Hatena Engineer Seminar は、はてなのサービスを開発する上で、エンジニアがどのような事を考えているのか、どのような働き方をしているのかを語るイベントです。</p><p>今回のHatena Engineer Seminarでは「パフォーマンスチューニング」をテーマに、サーバー監視サービス「Mackerel」チームとブログサービス「はてなブログ」チームのエンジニアが登壇し、取り組みについてご紹介しました。</p><p>イベントの内容は、配信のアーカイブ動画もYouTubeでご覧いただけます。動画の概要や以下の説明で、各トークの開始時間にもリンクしていますのでご利用ください。</p><p><div><figure><iframe width="420" height="315" src="https://www.youtube.com/embed/H0UwKBhZdpM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Hatena Engineer Seminar #27 パフォーマンスチューニング編 #hatenatech"></iframe><br /> <figcaption><a href="https://www.youtube.com/live/H0UwKBhZdpM?si"><img src="https://cdn-ak.favicon.st-hatena.com/?url=https%3A%2F%2Fwww.youtube.com%2Flive%2FH0UwKBhZdpM%3Fsi" alt="" class="http-favicon" /></a><a href="https://www.youtube.com/live/H0UwKBhZdpM?si">Hatena Engineer Seminar #27 &#x30D1;&#x30D5;&#x30A9;&#x30FC;&#x30DE;&#x30F3;&#x30B9;&#x30C1;&#x30E5;&#x30FC;&#x30CB;&#x30F3;&#x30B0;&#x7DE8; #hatenatech - YouTube</a></figcaption></figure></div></p> </div> <div class="section"> <h3 id="発表概要と資料">発表概要と資料</h3> <div class="section"> <h5 id="OpenTelemetry-の-Trace-を中心にしたパフォーマンス改善Mackerelチーム-エンジニア-idrmatsuoka">OpenTelemetry の Trace を中心にしたパフォーマンス改善 Mackerelチーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/rmatsuoka/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/rmatsuoka/profile.png" width="16" />id:rmatsuoka</a></h5> <blockquote> <p><a href="http://blog.hatena.ne.jp/rmatsuoka/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rmatsuoka/profile.png" width="16" height="16" alt="id:rmatsuoka" class="hatena-id-icon"></a> 新卒最初のタスクとして Mackerel の開発中のコンポーネントのパフォーマンス改善を行いました。プログラムのパフォーマンス改善は、処理時間の大部分を占める「ホットスポット」を発見することが大切とされています。今回のタスクではオブザーバービリティの観点から最近注目されている OpenTelemetry の Trace を用いてホットスポットの発見をし、そこを起点に改善を行いました。登壇ではこのタスクから得られたプラクティスをお話しします。</p> </blockquote> <p>発表資料を以下で公開しています。</p><p><iframe id="talk_frame_1106978" class="speakerdeck-iframe" src="//speakerdeck.com/player/f290d1f90c194e69962ddf17d0fb1aa6" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/rmatsuoka/opentelemetry-no-trace-wozhong-xin-tosita-hahuomansugai-shan">speakerdeck.com</a></cite></p><br /> <p>配信アーカイブの該当部分は、<a href="https://www.youtube.com/live/H0UwKBhZdpM?si=pVngU0mo_tH7q6eC&t=77">1&#x5206;17&#x79D2;&#x304B;&#x3089;</a>です。</p> </div> <div class="section"> <h5 id="はてなブログのブログ表示に必要なJSを16にした話ブログチーム-エンジニア-idnanimono_demonai">はてなブログのブログ表示に必要なJSを1/6にした話 ブログチーム エンジニア <a class="hatena-id-icon" href="http://blog.hatena.ne.jp/nanimono_demonai/"><img alt="" class="hatena-id-icon" height="16" src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" />id:nanimono_demonai</a></h5> <blockquote> <p><a href="http://blog.hatena.ne.jp/nanimono_demonai/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/nanimono_demonai/profile.png" width="16" height="16" alt="id:nanimono_demonai" class="hatena-id-icon"></a> はてなブログのパフォーマンス向上のために、ブログの表示に必要なJSを削減しました。その方法について、パフォーマンス測定基盤を整え、説得材料を揃えるところから紹介します。10年モノのフロントエンドのコードのモダン化と最適化を行った結果、開発体験も向上し、新機能開発も行いやすくなりました。</p> </blockquote> <p>発表資料を以下で公開しています。</p><p><iframe id="talk_frame_1106975" class="speakerdeck-iframe" src="//speakerdeck.com/player/a0c4f59a05a94d47a209a78a8cdf163b" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> </p><p>配信アーカイブの該当部分は、<a href="https://www.youtube.com/live/H0UwKBhZdpM?si=oLEvFIFSXpLrQV8A&t=1032">17&#x5206;12&#x79D2;&#x304B;&#x3089;</a>です。</p> </div> </div> <div class="section"> <h3 id="さいごに">さいごに</h3> <p>ご参加いただいたみなさま、ありがとうございました。はてな技術グループでは引き続き、ブログやセミナーなどを通じた技術情報の発信に取り組んでまいります。</p><p>次回の Hatena Engineer Seminar は2024年1月開催予定です。ご期待ください。</p><p>はてなでは新卒・中途、東京・京都を問わずエンジニアを募集しています。今回のセミナー内容に少しでも興味をお持ちなら、ぜひともご応募ください!</p><p><a href="https://hatena.co.jp/recruit/engineer"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20201224/20201224090947.png" style="width: 100%; height: 368px; object-fit: cover; border: none;" alt="エンジニア採用 - 採用情報 - 株式会社はてな" title="エンジニア採用 - 採用情報 - 株式会社はてな"></a></p> </div> hatenatech SRE座談会を公開しました hatenablog://entry/6801883189059012310 2023-11-15T17:14:53+09:00 2024-02-29T17:25:57+09:00 はてなの採用サイトにて、SRE(Site Reliability Engineer)座談会を公開しました。今回の座談会では、id:masayosu、id:taxintt、id:cohalz、id:motemen の4人で、はてなのSREがチームを横断して行っている活動について話しました。影響範囲を所属するチームに限定せず、他チームまで含めたエンジニアリングに取り組んでいる様子を見ていただけると思います。ぜひご覧ください。SRE座談会 - 採用情報 - 株式会社はてな <p><a href="https://hatena.co.jp/images/recruit/interview/sre/sre-title.png" class="http-image"><img src="https://hatena.co.jp/images/recruit/interview/sre/sre-title.png" class="http-image" alt="https://hatena.co.jp/images/recruit/interview/sre/sre-title.png"></a></p><p>はてなの採用サイトにて、SRE(Site Reliability Engineer)座談会を公開しました。</p><p>今回の座談会では、<a href="http://blog.hatena.ne.jp/masayosu/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/masayosu/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:masayosu</a>、<a href="http://blog.hatena.ne.jp/taxintt/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/taxintt/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:taxintt</a>、<a href="http://blog.hatena.ne.jp/cohalz/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cohalz/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cohalz</a>、<a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a> の4人で、はてなのSREがチームを横断して行っている活動について話しました。</p><p>影響範囲を所属するチームに限定せず、他チームまで含めたエンジニアリングに取り組んでいる様子を見ていただけると思います。</p><p>ぜひご覧ください。</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fhatena.co.jp%2Frecruit%2Finterview%2Fsre" title="SRE座談会 - 株式会社はてな" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><a href="https://hatena.co.jp/recruit/interview/sre">SRE&#x5EA7;&#x8AC7;&#x4F1A; - &#x63A1;&#x7528;&#x60C5;&#x5831; - &#x682A;&#x5F0F;&#x4F1A;&#x793E;&#x306F;&#x3066;&#x306A;</a></p> hatenatech Chatworkで活躍中のid:daiksy を訪問 | はてな卒業生訪問企画 [#6] hatenablog://entry/6801883189057198652 2023-11-10T12:00:00+09:00 2023-12-13T20:50:10+09:00 Hatena Developer Blogの連載企画「卒業生訪問インタビュー」。第6回にお迎えしたゲストは、Chatwork株式会社でエンジニアリングマネージャーとして活躍されている id:daiksyさんこと、粕谷大輔さんです。 <p>こんにちは、エンジニアリングマネージャーの <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>です。</p><p>Hatena Developer Blogの連載企画「<a href="https://developer.hatenastaff.com/archive/category/%E3%81%AF%E3%81%A6%E3%81%AA%E5%8D%92%E6%A5%AD%E7%94%9F%E8%A8%AA%E5%95%8F%E4%BC%81%E7%94%BB">&#x5352;&#x696D;&#x751F;&#x8A2A;&#x554F;&#x30A4;&#x30F3;&#x30BF;&#x30D3;&#x30E5;&#x30FC;</a>」では、創業からはてなの開発に関わってきた取締役の <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>、CTOの <a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>、エンジニアリングマネージャーの <a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>が、いま会いたい元はてなスタッフを訪問してお話を伺っていきます。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>が担当する第6回のゲストは、ビジネスチャット「<a href="https://go.chatwork.com/ja/">Chatwork</a>」などを提供する<a href="https://corp.chatwork.com/ja/">Chatwork&#x682A;&#x5F0F;&#x4F1A;&#x793E;</a>でエンジニアリングマネージャーとして活躍されている <a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:daiksy</a>さんこと、粕谷大輔さんです。</p><p>SIer、フリュー株式会社を経て、2014年はてな入社。2021年の卒業までサーバー監視サービス「<a href="https://ja.mackerel.io/">Mackerel</a>」の開発チームで、エンジニア、サブディレクター、最後はディレクターを務めるとともに、はてなにおけるスクラム開発の浸透に大きく貢献していただきました。</p><p>23年8月には初の単著となる「<a href="https://gihyo.jp/book/2023/978-4-297-13661-1">&#x30B9;&#x30AF;&#x30E9;&#x30E0;&#x306E;&#x62E1;&#x5F35;&#x306B;&#x3088;&#x308B;&#x7D44;&#x7E54;&#x3065;&#x304F;&#x308A;</a>」が刊行されたばかりの<a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:daiksy</a>さんに、Chatworkさんでのスクラムコーチングやエンジニアリングマネージャーとしての仕事などについてお話を伺いました。</p> <blockquote> <p>粕谷大輔さん(<a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:daiksy</a>)<br /> Chatwork株式会社 エンジニアリングマネージャー<br /> 2014年-2021年 はてな在籍</p> <ul> <li>X: <a href="https://twitter.com/daiksy">@daiksy</a></li> <li>ブログ:<a href="https://daiksy.hatenablog.jp/">&#x3060;&#x3044;&#x304F;&#x3057;&#x30FC;(@daiksy)&#x306E;&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;</a></li> </ul> </blockquote> <div class="section"> <h4 id="エンジニアとして入社しディレクターへ">エンジニアとして入社し、ディレクターへ</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onk</a>(以下「<a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a>」) 今日はよろしくおねがいします。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:daiksy</a>(以下「<a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a>」) よろしくおねがいします!楽しみにしていました。</p> <figure class="figure-image figure-image-fotolife" title=" id:onk(左)と MackerelTシャツを着てきてくださった id:daiksyさん(右)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20230901/20230901181001.jpg" width="2000" height="1334" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption> <a href="http://blog.hatena.ne.jp/onk/">id:onk</a>(左)と MackerelTシャツを着てきてくださった <a href="http://blog.hatena.ne.jp/daiksy/">id:daiksy</a>さん(右)</figcaption></figure><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 単著もおめでとうございます。8月に出たばかりですので、その裏話も伺いたいなと思っています。</p><p>daiksyさんがMackerelチームで実践していたスクラムや、組織横断的に活動した開発プロセス改善やふりかえりの支援の取り組みは、はてなの開発文化に強く影響を与えています。今日は、そんなはてな時代の話から振り返るとともに、エンジニアリングマネージャーとしての転職や、いまのChatworkさんでの取り組みについてお聞きしたいと思っています。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> ぜひぜひ。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> daiksyさんは、はてな入社時はスクラムマスターやマネージャーではなく、エンジニアとしての転職だったんですよね?</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> そうです。たまたまコミュニティで繋がりがあった<a href="http://blog.hatena.ne.jp/chris4403/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/chris4403/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:chris4403</a>さん(はてな代表取締役社長 栗栖義臣) とお酒を飲む機会があったのですが、そのときにサーバー監視サービスの「Mackerel」をScalaで書いているという話を聞いて興味を持って。ちょうど転職を考えていた時期だったのと、はてなはもともと憧れの会社だったので、Scalaをきっかけに選考にチャレンジして、採用していただきました。</p><p>はてなではずっとMackerelチームに所属していましたが、最初の3年間はアプリケーションエンジニアとして、Scalaを中心にコードを書いていました。Mackerelの「Chatwork連携」の機能を作ったのはぼくです(笑)</p> <blockquote> <p><a href="https://mackerel.io/ja/docs/entry/howto/alerts/chatwork">Chatwork&#x306B;&#x901A;&#x77E5;&#x3092;&#x8868;&#x793A;&#x3059;&#x308B; - Mackerel &#x30D8;&#x30EB;&#x30D7;</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> まさか転職先になるとは(笑)<br /> エンジニアとしての3年の後、サブディレクターを経てディレクターですよね。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> はい。当時、ピープルマネジメントの要素もディレクターの役目にあったので、メンバーの評価を初めて経験することになりました。Chatworkではピープルマネジメントを主にやっていますが、その入口はMackerelのディレクター時代だったと思います。</p> <figure class="figure-image figure-image-fotolife" title="[https://mackerel.io/ja/blog/entry/event/mackerel-day:title=Mackerel3周年イベント]での集合写真(2017年)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20171005/20171005130530.jpg" width="800" height="453" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="https://mackerel.io/ja/blog/entry/event/mackerel-day">Mackerel3&#x5468;&#x5E74;&#x30A4;&#x30D9;&#x30F3;&#x30C8;</a>での集合写真(2017年)</figcaption></figure> </div> <div class="section"> <h4 id="はてなで立ち上げたすくすく開発会">はてなで立ち上げた「すくすく開発会」</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> はてな時代のスクラムとの関わりについて振り返っていきたいんですが、はてなに入社したときには既にスクラムの実践経験があったんですか?</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> はい。はてなの前のフリューという会社で実践を経験しました。もともとフリューに入ったのは、当時勤めていたSIerがウォーターフォール開発でカチッとした世界だったので、Web系でアジャイルな開発をしたいという理由からでした。SIerにいた頃からアジャイルに憧れがあって勉強をしていたので、アジャイル開発の現場に入りたいと思って転職したんです。</p><p>フリューではスクラムではなくXP(Extreme Programming)を採用していたのですが、そのチームで2年間開発者として仕事をしました。。当時身の回りでスクラムを採用しているチームは多くなかったですが、、今はたくさんの事例を見かけるようになりましたね。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> では京アジャ(<a href="https://kyoaja.connpass.com/">&#x4EAC;&#x90FD;&#x30A2;&#x30B8;&#x30E3;&#x30A4;&#x30EB;&#x52C9;&#x5F37;&#x4F1A;</a>)というコミュニティとの関わりは、フリューの頃からですか。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> フリューの頃からですが、はてなに入ってからの方が関わりが強くなりました。はてなはイベントの会場提供をすることができたので、それをきっかけに繋がりが強まりましたね。はてなに入社する前までは単に一参加者として参加する感じでしたけど、会場を提供するようになってからはスタッフとして一緒にお手伝いするようになりました。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> そして、はてな Slack の #scrum チャンネルのリブートが2017年でしたね。その頃は「スクラムで開発しています」と明言していたチームは社内でもMackerelだけだったんでしょうか。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> そうだったと思います。はてなブログの開発チームもプロセスはしっかりしていた印象でしたが「スクラムでやってます!」ということではなかったはず。</p> <blockquote> <p>2013年のYAPC ASIA TOYOで <a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a> がご紹介した「はてなブログ」の開発フロー<br /> <a href="https://www.slideshare.net/onishi/hatena-blogdevelopmentflow">Hatena blogdevelopmentflow | PPT</a></p> </blockquote> <p>2017年当時、僕はMackerelのディレクターをしつつスクラムマスター的な動きをやっていたので、認定スクラムマスター研修の資格を取りたかったんです。ただ、そのころのはてなにはまだ資格取得制度がなかったので、自腹で取ったんですけど、今後スクラムをやっていくのであれば、会社の支援を受けつつ取り組めるように、研修費用が出るようになってほしいなと思っていました。</p><p>それがきっかけで、スクラムの価値を社内にもっと発信するようになりました。スクラムマスターが複数いて、彼らが仕事をすることによって、会社がもっと良くなるということを伝えていく活動ですね。</p><p>そのために、ギルドのようなものをつくって、そこにスクラムマスターが集まって活動をするといったことに切磋琢磨していました。会社も理解してくれて、その後、資格取得制度が整って、会社に費用負担をしてもらい、認定スクラムマスター研修を受けられるようになりました。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 開発プロセスに関するサブ会である「すくすく開発会」を立ち上げながら会社を変えていった流れは、<a href="http://blog.hatena.ne.jp/shimobayashi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/shimobayashi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:shimobayashi</a>さんの発表が良かったですね。</p> <blockquote> <p><a href="https://speakerdeck.com/shimobayashi/komiyuniteiwoyu-tetehui-she-wobian-eru">&#x30B3;&#x30DF;&#x30E5;&#x30CB;&#x30C6;&#x30A3;&#x3092;&#x80B2;&#x3066;&#x3066;&#x4F1A;&#x793E;&#x3092;&#x5909;&#x3048;&#x308B; - Speaker Deck</a></p> </blockquote> <p>今では半期ごとに2~3人くらい認定スクラムマスター研修や認定スクラムプロダクトオーナー研修を受けるようになっています。daiksyさんがはてなに居た時代から撒き続けてきた種がやっと芽吹いたかな。今、デフォルトの選択肢がスクラムになっているのは、デフォルトがカウボーイだった時から考えると、本当にすごい変化だと思っています。</p> <figure class="figure-image figure-image-fotolife" title="[https://mackerel.io/ja/blog/entry/event/mackerel-day-2:title=Mackerel 5周年イベント] での集合写真(2019年)"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20191223/20191223231708.jpg" width="1200" height="800" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="https://mackerel.io/ja/blog/entry/event/mackerel-day-2">Mackerel 5&#x5468;&#x5E74;&#x30A4;&#x30D9;&#x30F3;&#x30C8;</a> での集合写真(2019年)</figcaption></figure> </div> <div class="section"> <h4 id="マネージャーとしての成長と挑戦を求めた転職">マネージャーとしての成長と挑戦を求めた転職</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> そんなはてな時代を経てからのChatworkさんでのお話を聞かせてください。Chatworkに入るにあたっては、初めてマネージャーという肩書きで入ったそうですね。エンジニアリングマネージャーとしての転職の記事、拝見しました。</p> <blockquote> <p><a href="https://note.com/chatwork_note/n/n6e9c925915a6">&#x3010;Chatwork&#x5165;&#x793E;&#x8A71;&#x3011; &#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x30EA;&#x30F3;&#x30B0;&#x30DE;&#x30CD;&#x30FC;&#x30B8;&#x30E3;&#x30FC; &#x7C95;&#x8C37;&#x5927;&#x8F14;&#x306E;&#x5834;&#x5408;&#xFF5C;Chatwork&#x682A;&#x5F0F;&#x4F1A;&#x793E;</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> ありがとうございます。ここでも話している通り、Mackerelチームでずっとマネージャーをやっていましたが、この能力に本当に再現性があるんだろうか、ずっと悩んでいたんです。</p><p>たまたまMackerelチームの人たちがみんな優秀で、はてなという会社の制度や構造が、自分にたまたまマッチしていただけじゃないかと。自分の能力というよりは、たまたまいいチームに自分がいるだけじゃないのかな、そういうことを思い始めたんですね。</p><p>もっと自分の腕試しをしたい、マネージャーとして再現する能力を持っているのであれば試したい、もう少し幅広く複数のチームをまたがるように仕事の影響範囲を広げていきたいという思いもあり、Chatworkに転職しました。ありがたいことに、はてなからははてな内でできる別のチャレンジの提案をもらったりもしたのですが… </p><p>Chatworkは当時エンジニアリングマネージャーを求めていて、全社横断的に組織を整える役割であったり、一部のチームでScrum@Scaleを導入しようとしているという、僕にとって面白そうなキーワードもあったので、ここは腕試しとしてチャレンジしてみようかと。</p><p>入社から2年たちますが、今のところ評価していただいてるようなので、どうやら自分のマネジメント能力には再現性があったようだ、と感じられるようになってきました(笑)</p><p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20230901/20230901181038.jpg" width="2000" height="1334" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> Mackerel のディレクターの頃からマネージャーとして最高の行動を取っていましたよ。僕がよく覚えているのは、daiksyさんがメンバーに対しての期待を毎期初に社内のグループウェアに書いていたことです。期待マネジメントや動機付けをしっかりやっていた。「観察と干渉のバランス」もそうですよね。この記事も大好きです。</p> <blockquote> <p><a href="https://daiksy.hatenablog.jp/entry/2021/06/12/112035">&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x30EA;&#x30F3;&#x30B0;&#x30DE;&#x30CD;&#x30FC;&#x30B8;&#x30E3;&#x3068;&#x3057;&#x3066;&#x4F1A;&#x793E;&#x306B;&#x30B8;&#x30E7;&#x30A4;&#x30F3;&#x3059;&#x308B;&#x306E;&#x306F;&#x96E3;&#x3057;&#x3044; - &#x3060;&#x3044;&#x304F;&#x3057;&#x30FC;(@daiksy)&#x306E;&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;</a></p> </blockquote> </div> <div class="section"> <h4 id="Chatworkで全社アジャイル推進を担当">Chatworkで全社アジャイル推進を担当</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> はてなに続き、Chatworkさんでもスクラムマスターギルドや社内コーチズクリニックといった支援制度を立ち上げたとか。 </p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 僕が配属された部署では、「Chatwork」のアーキテクチャを新しくしていくプロジェクトを担っています。Chatworkの負荷の高い部分を独立したコンポーネントとして切り出し、それを運用するチームを複数連携するという作り方をして、Scrum@Scaleで運用する体制を整えようと考えています。</p><p>僕が入社したときは、Scrum@Scaleを導入するということは決まっていたものの、まだやり始めの時期だったので、そこを支援してほしいといわれていました。スクラムマスターもそんなに多くなかったし、社員ではまだいなかったのかな。業務委託の方にスクラムマスターをやっていただいていたような時期でした。</p><p>僕らの活動を見て、他のチームでも興味を持つ人が出てきたので、社内のスクラムマスターを育てる意味でもスクラムマスターギルドという集まりを作りました。これは今でも続いていて、先日も2日間かけてアジャイルを勉強する「Agile Tea Party」という全社的なアジャイルのイベントを開催しています。</p><p>開発の人たちだけじゃなくて、社内からセールスやマーケティングなど、いろいろな職種の人たちからプロポーザルを集めて、セッションのタイムテーブルを作りました。全社的なイベントになってワイワイできて面白かったですね。</p> <blockquote> <p><a href="https://note.com/chatwork_note/n/nb99df10ff994">&#x3010;&#x30A4;&#x30D9;&#x30F3;&#x30C8;&#x30EC;&#x30DD;&#x30FC;&#x30C8;&#x3011;&#x5168;&#x793E;&#x3067;&#x30A2;&#x30B8;&#x30E3;&#x30A4;&#x30EB;!?!? Agile Tea Party 2023 - Day1 -&#xFF5C;Chatwork&#x682A;&#x5F0F;&#x4F1A;&#x793E;</a></p> </blockquote> </div> <div class="section"> <h4 id="エンジニアリングマネージャーの仕事とマネージャー足りない問題">エンジニアリングマネージャーの仕事とマネージャー足りない問題</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> daiksyさんの部署では、「Chatwork」のアーキテクチャを新しくしていくプロジェクトを担っているというお話がありました。所属されているチームでのミッションなどについてお伺いしたいです。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> プロダクト開発を担当するプロダクト開発ユニットという枠組みが組織上にあるのですが、その中で一部の領域を担当するマネージャーをしています。</p><p>ここではピープルマネジメント体制を設けていて、あるマネージャーが特定の領域を専任で持つのではなく、そのプロダクト開発ユニット全体を4人のピープルマネージャーで持ち合うということをやっています。</p><p>例えば自分が体調を崩して休んでも、別のマネージャーがフォローできる。マネージャー全員が部署全体を把握している体制を作ろうとしてるんですよね。逆に何が起きるかというと、その組織全体のあらゆる問題が自分の耳にも入ってくるといったことも…(笑)</p><p>ピープルマネジメントも直接の担当領域は4人で分割してマネジメントしています。とはいえ、他の人の担当者の分もふんわりと把握しているので、何かのときはフォローができるという、そういう体制ですね。</p> <blockquote> <p><a href="https://hatenanews.com/articles/2023/09/26/103000">&#x30D5;&#x30A3;&#x30FC;&#x30C1;&#x30E3;&#x30FC;&#x30C1;&#x30FC;&#x30E0;&#x306E;&#x5C0E;&#x5165;&#x3067;DevOps&#x3068;&#x30AA;&#x30FC;&#x30CA;&#x30FC;&#x30B7;&#x30C3;&#x30D7;&#x306E;&#x5B9F;&#x73FE;&#x306B;&#x6311;&#x6226;&#x3059;&#x308B;Chatwork&#x306E;&#x958B;&#x767A;&#x7D44;&#x7E54; - &#x306F;&#x3066;&#x306A;&#x30CB;&#x30E5;&#x30FC;&#x30B9;</a></p><p><iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/340a4d3e827347cbb74204218dacb93f?slide=29" title="フィーチャーチーム化への取り組みと、それを支える組織マネジメント体制" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> なるほど。はてなの技術グループのチーフエンジニアがそんな感じですね。あらゆる問題がやってくるというのもわかります(笑)</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> そうそう、たしかにそうでしたね。毎日結構大変なんですけど、すごい経験値を積むチャンスなので、面白いなと思ってやっています。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 大変で面白い仕事なんですが、チーフエンジニアにだけあらゆる問題に対応する経験値が溜まっているのはもったいないので、どんどん委譲したいなと考えています。<br /> ちょうどdaiksyさんが転職された頃に77人だったはてなのエンジニアは、今はほぼ100人になりました。この過程でエンジニアリングマネージャーの職種が増え、5人誕生したのも大きな変化です </p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> チーフエンジニアとエンジニアリングマネージャーの役割ってどう切り分けてるんですか?</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> チーフエンジニアは職能組織である技術グループのマネージャーなんですよね。エンジニアリングマネージャーはプロダクト開発側でプロデューサーの横にいる体制です。職能横断的な開発チームをエンジニアリングで育てていくのがエンジニアリングマネージャーの役目ですね。エンジニア職種のピープルマネジメントも役割の一部としていて、プロダクト開発チーム内のシニアエンジニアと協力してピープルマネジメントを実施しています。 </p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> チームの独立性は以前より高まっているんですか?</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> コロナ禍の影響もあり、サイロ化は不可避なので、自チーム内で完結するように変更しました。隣チームのメンバー育成を考えるメンターの役割を全うするのが難しい状況だったことが大きいですね。仕事のアサインに関わる方が業務を通じて育成しやすいですし。 </p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 実は僕、今週から新卒入社者のエンジニアリングマネージャーも担当することになったんです。僕がすごく頭を悩ませているのは、チーム内での徒弟制度をどのようにして作っていくか。やはり軸となるようなリードエンジニアの人たちがいて、そこに弟子入りできるような制度や徒弟制度を組まないと、エンジニアが成長しないと思っているんです。</p><p>会社のテックリードのような立場の人が、チームを横断して見るのは絶対無理なので、チームの中でどうやって徒弟制度をつくるかについては、今まさに悩んでいたところでした。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 各チームにエンジニアリングマネージャーを置きたいけど、マネージャーが足りないですよね。</p><p>はてなの場合はエンジニアのほとんどがS(スペシャリスト)コースに進みます。M(マネージメント)コースは7名しかいない状態です。エンジニアが約100人なので、せめてあと3人。9対1にできないかと考えています。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 僕らはエキスパートコース、マネージメントコースという呼び方をしているのですが、大体皆さんエキスパートコースにいきます。もうちょっとマネージャーに興味ある人が増えてほしいなと思いますね。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> こういうときにエンジニアとマネージャーの振り子の話を思い出します。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> ちょうど<a href="http://blog.hatena.ne.jp/Songmu/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/Songmu/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:Songmu</a>さんがこの前、Findyさんのメディアで記事を書かれてましたよね。まさに行ったり来たりしてもいいと思います。</p> <blockquote> <p><a href="https://findy-code.io/engineer-lab/songmu-henry">OSS&#x306A;&#x3069;&#x304B;&#x3089;&#x5B66;&#x3093;&#x3060;&#x30D2;&#x30E5;&#x30FC;&#x30DE;&#x30F3;&#x30B9;&#x30AD;&#x30EB;&#x3068;&#x7D4C;&#x9A13;&#x3092;&#x6B66;&#x5668;&#x306B;&#x3002;&#x4EBA;&#x751F;&#x6700;&#x5927;&#x306E;&#x632B;&#x6298;&#x3092;&#x8D8A;&#x3048;&#x3066;&#x306A;&#x304A;&#x3082;&#x6B69;&#x3080;&#x87BA;&#x65CB;&#x306E;&#x30AD;&#x30E3;&#x30EA;&#x30A2; - Findy Engineer Lab - &#x30D5;&#x30A1;&#x30A4;&#x30F3;&#x30C7;&#x30A3;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x30E9;&#x30DC;</a></p> </blockquote> <p>Chatworkでもマネージャーからエンジニアに戻った例はあるので、これからも増えていけばいいのかなと。</p><p>僕自身はマネージャー歴が長くなってきたのでエンジニアに戻れるという不帰投点は超えてしまった気がしていて、、そうならないようにもっと短いスパンでやれると面白いかもしれないですね。そうするとマネージャーの気持ちがわかる現場のエンジニアが誕生するので、もうちょっと動きやすくなると思うんです。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> そうですね。ここはずっと悩んでるところです。</p> </div> <div class="section"> <h4 id="はてなとChatworkの違い">はてなとChatworkの違い</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> daiksyさんが感じるはてなとChatworkの違いについても聞いてみたいです。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 個人的には、はてなはボトムアップがすごく強い会社で、Chatworkはボトムアップも上手なんですけども、トップダウンがしっかりしていると感じます。僕はトップダウン型の企業を体験してみたくて、Chatworkにそれを感じて面白そうだなと思っていました。これも転職した理由の一つです。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> どんなところがトップダウンだと感じるんですか?</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 経営層からのメッセージが明確です。目標設定をするにあたっても、会社全体の戦略が最初に決められて、それをブレークダウンした各部署の戦略をマネージャーが策定し、そこからさらに個人目標という言葉に落ちてくる。大変でもあるのですが、マネージャーとして面白がってやっています。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> はてなも会社の3カ年計画があって、チームの目標は降りてはいるけど、伝え方による印象の違いですかね。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 単に、僕がはてなのマネージャー時代に比べて解像度が高くなっただけという話かもしれません。</p><p>あとは、そもそも規模が違うので当然という気もするんですが、はてなよりはガバナンスが強めかなというところも感じます。これも個人的には別に全然ネガティブに思っていないんですけど。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> あと、Chatworkでは外部の力を入れることに抵抗がないというか、自分たちがわからないことは外の専門家に聞こうという考え方をしています。</p><p>先日は和田卓人さんに来てもらって、開発生産性の話をしてもらいましたし、外部の講師を呼んで話してもらうことは多いですね。僕の入社前ですが、Scrum Inc. Japan社の方に来てもらって、Chatwork向けにScrum@Scaleの説明をしてもらって、それで採用するかどうかを決めたみたいです。</p><p>はてなは自分たちで何とかやっちゃいますよね。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> やりたがる人が多いですね。ただはてなも、もう少し外の力に頼ってもいいんじゃないかとも思っています。オンプレからクラウドに移って、責任領域を任せるスタイルに変わっていっている面もありますね。</p><p>例えば、MySQLのチューニングなどを自分たちで頑張るようになるよりもSaaSに任せていった方が、より本質的なところに力を割けるようになるんじゃないかという期待があるんですよ。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> うちもそういう意味ではSaaS利用も進みつつあって、たとえば認証基盤はAuth0に置き換えてますね。どんどん本質じゃないところは外に出そうぜみたいな感じですね。</p><p>ただ、それに伴って組織から何から激変してる時期でもあるので、マネージメントとしてはすごく大変です。やりがいもあるんですけど、ありとあらゆるマネジメントの課題が日々押し寄せてきます。</p><p>5年後10年後、もしかしたらChatworkで仕事をしていないかもしれません。けれど、別の現場でマネジメントの仕事をしたとしてもさまざまな課題に直面するでしょう。そのときに、これはChatworkで経験したことがあると言えるような経験を今はしていると思っているんです。今はマネージメント経験のボーナスステージにいることが、めちゃくちゃ面白いですね。すごく恵まれたタイミングで仕事していると思っています。<br /> <br /> </p> </div> <div class="section"> <h4 id="はてなを外から見ていいこと悪いことは">はてなを外から見ていいこと・悪いことは?</h4> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 最後に、定番の質問を。今のはてなを見て何かいいこと・悪いことがあれば、ぜひ聞かせてください。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> Mackerelチームの人が、仮説検証型アジャイルでやってますみたいなブログエントリーを書いていて。すごくいい取り組みをされてるのに、アジャイルコミュニティで全然見ないなと思っています。僕が退職してからはスクラムフェスなどのイベントスポンサーを出してないしみたいですし、もっとコミュニティで一緒にやりたいです。</p> <blockquote> <p><a href="https://blog.arthur1.dev/entry/2023/08/29/093000">&#x4EEE;&#x8AAC;&#x691C;&#x8A3C;&#x578B;&#x30A2;&#x30B8;&#x30E3;&#x30A4;&#x30EB;&#x958B;&#x767A;&#x306B;&#x643A;&#x308F;&#x308A;&#x59CB;&#x3081;&#x305F;&#x30A8;&#x30F3;&#x30B8;&#x30CB;&#x30A2;&#x306E;&#x601D;&#x8003;&#xFF08;&#x3068; Mackerel Drink Up &#x306E;&#x5BA3;&#x4F1D;&#xFF09; - Diary of a Perpetual Student</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> たしかにアジャイルコミュニティのイベントに関してはスポンサーは出していない。聴講する人は 送り込んでいるんですけど、話す側にはなってないですね。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> はてなでは他に積極的に出られているイベントもあるので、アジャイルコミュニティでも出会いたいなと思っています。僕がはてなに持っている唯一の不満はそれです。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> ある調査データを見たんですが、はてなは技術力と比べて、チーム開発に対するイメージが全然ないみたいなんで、アピールはしていかないといけない(笑)</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 全然チーム開発が上手じゃないなんてことはないですからね。ぜひアピールしてください!</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 逆に、以前に比べてはてなが良くなったと思う点はありますか?</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> Mackerelチームはすごく良くなったと思っています。最近のリリースノートを見てもいい機能はたくさん出ているし、OpenTelemetry 対応など、モダンな世界に向かうこともできてるし、すごいなと思っていました。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> しばらく技術的負債の返済に力を注いでいたんですが、その結果として機能開発の貯金が無くなったので、ここで大型の開発を進めるぞと判断できました。負債を返し切らないと次に行けないではなくて、返しながら進もうと今は考えていますが、プロダクトオーナーとしての優先順位付けは本当に難しいですね。</p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> でも今は、その辺の優先順位付けるのが上手にできてるんだろうなという見方をしていました。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> まだまだですが、頑張ります。<br /> そして、本当に最後ですが 、単著の話も聞かないと!</p> <figure class="figure-image figure-image-fotolife" title="単著!"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20230901/20230901181719.jpg" width="2000" height="1334" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>単著!</figcaption></figure><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> ありがとうございます。『<a href="https://gihyo.jp/book/2023/978-4-297-13661-1">&#x30B9;&#x30AF;&#x30E9;&#x30E0;&#x306E;&#x62E1;&#x5F35;&#x306B;&#x3088;&#x308B;&#x7D44;&#x7E54;&#x3065;&#x304F;&#x308A;&#x2500;&#x2500;&#x8907;&#x6570;&#x306E;&#x30B9;&#x30AF;&#x30E9;&#x30E0;&#x30C1;&#x30FC;&#x30E0;&#x3092;Scrum@Scale&#x3067;&#x904B;&#x7528;&#x3059;&#x308B;</a>』という書籍を書きました。Chatworkで今まさにやってるScrum@Scale実践の紹介をしています。</p><p>Scrum@Scaleの公式ガイドは日本語化されているんですけど、日本語の解説書が存在しなくてですね。第1号を書くぞという意気込みで書いたので、今のところ日本に存在する日本語の唯一のScrum@Scaleの解説書になっております。2年ぐらいかかって頑張って書いたので、ぜひ!</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> 2年掛けて書いていく上でのプロジェクト管理の話がめちゃめちゃ面白かったです。</p> <blockquote> <p><a href="https://daiksy.hatenablog.jp/entry/2023/08/15/114245">Scrum@Scale&#x306E;&#x65E5;&#x672C;&#x8A9E;&#x66F8;&#x7C4D;&#x3092;&#x51FA;&#x7248;&#x3057;&#x307E;&#x3059; &amp; &#x57F7;&#x7B46;&#x306E;&#x69D8;&#x5B50;&#x306E;&#x8A18;&#x9332; - &#x3060;&#x3044;&#x304F;&#x3057;&#x30FC;(@daiksy)&#x306E;&#x306F;&#x3066;&#x306A;&#x30D6;&#x30ED;&#x30B0;</a></p> </blockquote> <p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="id:daiksy" class="hatena-id-icon"></a> 僕はアジャイラーなので、編集者さんと進捗を共有するために、バーンアップチャートを作って毎週進捗を見える化していました。ただバッファを用意したら、人間ってバッファを全部食いつぶすんだなと。結局バッファはすべて食いつぶしましたが、スケジュールをちゃんと守ろうというのは、かなり意識してやってました。</p><p><a href="http://blog.hatena.ne.jp/onk/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png" width="16" height="16" alt="id:onk" class="hatena-id-icon"></a> はてなでもみんなで拝読します。本日はありがとうございました!</p> <figure class="figure-image figure-image-fotolife" title="id:daiksyさん、ありがとうございました!"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20230901/20230901180700.jpg" width="2000" height="1334" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption><a href="http://blog.hatena.ne.jp/daiksy/">id:daiksy</a>さん、ありがとうございました!</figcaption></figure><p><hr></p><p><a href="http://blog.hatena.ne.jp/daiksy/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/daiksy/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:daiksy</a>さんこと粕谷さん、ご協力ありがとうございました。次回の「はてな卒業生訪問企画」は2023年12月更新予定、担当は<a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>です。</p> </div> <div class="profile-cards-list"> <div class="profile-card-container"> <section itemprop="author" itemscope itemtype="http://schema.org/Person"> <div class="prof-txt"> <p class="name" itemprop="name" style="margin-top: 0px;"><img style="margin:0" width="32" height="32" src="https://cdn.profile-image.st-hatena.com/users/onk/profile.png"> id:onk</p> <p itemprop="description"> 2018年4月 中途入社(3社目)。アプリケーションエンジニアとしてマンガビューワ「GigaViewer」や、Web小説サイト「カクヨム」「魔法のiらんど」の開発を担当。2019年4月よりチーフエンジニアとして技術組織全体のマネジメントにも携わる。<br> Twitter: <a href="https://twitter.com/onk" alt="Twitter">@onk</a> GitHub: <a href="https://github.com/onk" alt="GitHub">onk</a><br> blog: <a href="https://onk.hatenablog.jp/">id:onk のはてなブログ</a> </p></div></section> </div> </div> hatenatech 『Hatena Tech Book Vol.2』を技術書典15で頒布します! hatenablog://entry/6801883189055290952 2023-11-07T11:00:00+09:00 2023-11-07T11:00:25+09:00 はてなエンジニアの有志からなる「はてな技術書典部」は、2023年11月11日(土)〜2023年11月26日(日)にオンラインマーケットとオフライン会場のミックスで開催される「技術書典15」に出展いたします! <p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231107/20231107110017.png" width="1200" height="630" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span></p> <p>こんにちは、<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a> です。</p> <p>はてなエンジニアの有志からなる「はてな技術書典部」は、2023年11月11日(土)〜2023年11月26日(日)にオンラインマーケットとオフライン会場のミックスで開催される「<a href="https://techbookfest.org/event/tbf15">技術書典15</a>」に出展いたします!</p> <p>オンラインマーケットでは新刊『<strong>Hatena Tech Book Vol.2</strong>』電子版を頒布し、11月12日(日)の技術書典15オフライン開催会場(池袋サンシャインシティ展示ホールD)では製本した<strong>紙版+電子版</strong>も頒布します。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftechbookfest.org%2Fproduct%2F1LJGAQ52t3aL7qqhPpkvfr" title="Hatena Tech Book Vol.2:はてな技術書典部" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://techbookfest.org/product/1LJGAQ52t3aL7qqhPpkvfr">techbookfest.org</a></cite></p> <p>今回は「あなたの『推し』の技術を教えてください!」をテーマに、はてなのエンジニア10人がそれぞれの推し技術を執筆しました。</p> <ul> <li>Perlの未定義動作110連発(<a href="http://blog.hatena.ne.jp/papix/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/papix/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:papix</a>)</li> <li>ラムダ計算で遊んでみよう(<a href="http://blog.hatena.ne.jp/todays_mitsui/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/todays_mitsui/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:todays_mitsui</a>)</li> <li>VSはよいものだ(<a href="http://blog.hatena.ne.jp/koudenpa/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/koudenpa/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:koudenpa</a>)</li> <li>すごいIAMアイデンティティセンター無料で使おう(<a href="http://blog.hatena.ne.jp/rokoucha/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/rokoucha/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:rokoucha</a>)</li> <li>Pythonでフォントを加工する(<a href="http://blog.hatena.ne.jp/cockscomb/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/cockscomb/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:cockscomb</a>)</li> <li>注目されない自分と付き合う技術(<a href="http://blog.hatena.ne.jp/motemen/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/motemen/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:motemen</a>)</li> <li>人事を支える技術(<a href="http://blog.hatena.ne.jp/onishi/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/onishi/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:onishi</a>)</li> <li>スクラムによる開発の理想と現実(<a href="http://blog.hatena.ne.jp/stefafafan/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/stefafafan/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:stefafafan</a>)</li> <li>小説同人サークルを支える技術(<a href="http://blog.hatena.ne.jp/vilagia/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/vilagia/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:vilagia</a>)</li> <li>ドキュメントを伝えやすくするための技術(校正編)(<a href="http://blog.hatena.ne.jp/kmuto/" class="hatena-id-icon"><img src="https://cdn.profile-image.st-hatena.com/users/kmuto/profile.png" width="16" height="16" alt="" class="hatena-id-icon">id:kmuto</a>)</li> </ul> <p><figure class="figure-image figure-image-fotolife" title="『Hatena Tech Book Vol.2』表紙"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231107/20231107110008.png" width="850" height="1200" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>『Hatena Tech Book Vol.2』表紙</figcaption></figure></p> <p>なお、技術書典15オフライン会場への入場には入場券(無料)の購入が必要です。かんたん後払いアプリの設定もお勧めいたします(私たちの頒布物については現金のお支払いも受け付けますが、電子版をお渡しできないため、紙版+電子版と同料金で紙版のみのお渡しとなります)。詳細については<a href="https://blog.techbookfest.org/2023/10/29/tbf15-payment/">技術書典運営事務局の記事</a>をご参照ください。</p> <p>オフライン開催当日は、スペース「<strong>こ19</strong>」、サークル名「<strong>はてな技術書典部</strong>」のブースにぜひお立ち寄りください!</p> <p><figure class="figure-image figure-image-fotolife" title="オフライン会場「こ19:はてな技術書典部」"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatenatech/20231107/20231107110014.png" width="1200" height="331" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>オフライン会場「こ19:はてな技術書典部」</figcaption></figure></p> kmuto