#えむけーろぐ

間違った事を書いていたらやさしく教えてください

「さすが○○出身なだけあるね」と言われるようなチーム

特に意味のない牛(星野リゾート トマムにて)

僕のチームの後輩氏について、何をするんでも事前のお膳立てをしっかりやるタイプだな〜と思って見ている。チームに新しく何かを導入するとき(開発プロセスに関するもの・アーキテクチャ等技術に関するもの問わず)、必ず定義や考え方とそれらをこのプロジェクト・チームにapplyするとなったらこうしましょうみたいなのが書かれたガイドのドキュメントを用意して、読み合わせしてくれる。

それはものすごく素敵なことだよなぁ、というのを今日上司との1on1で話したら、それは彼が元いたチームがみんなそうしてたからってのもあるとのこと。5月頭に書いた長文にもある通り、今のチームは4月に新しく出来たチームで、所属メンバーはみな前職ならぬ前チームがあるのだ。なるほど彼は前チームで得たやり方を自身の血肉とし、しっかりこのチームでも実践してくれているというわけだ。

思えば彼の元いたチームは、各種プラクティスをまずは定義から原理主義的に、僕の所属企業でよく使われる言葉で言えば「守破離の守」をしっかりやる文化のチームであった。もちろん彼自身の素質とか努力とかがベースにあってのことでそれを否定するわけではないのだけど、「さすが○○チーム出身なだけあるな〜」という感想を抱いた。

エンジニア組織をつくる文脈で、「いつかこの会社を旅立ち別の会社に転職していく人たちが、『さすが○○出身だね』と言われるような組織を作りたい」みたいな話をしていたりするのを見聞きする。ちょっと前には「○○マフィア」みたいな呼称も流行ったり*1。「さすが○○出身なだけあるね」と言われるような会社や、その状態を目指す会社はたくさんあるけれど、自分がいま関われる範囲でいうと、そういう状態のチームを目指すっていうのはひとつの指針としてありだなぁと。

かれこれこのチームも3ヶ月弱やってきて、スクラムの各スプリントについて、透明性・検査・適応のループを回していきながら日々自分たちの仕事・プロダクトを改善していくという流れには乗ることが出来てはいる。直近は属人化解消なんて言い訳をつけてスクラムマスター交代制みたいなのをやってみている。その取り組みの目指すポイントとして、いつかこのチームが解散してメンバーが散り散りになったとき、「さすが○○チーム出身なだけあって、良いスクラムマスターをしてくれているね」なんて言われるようなそんなチームにする、というのを設定してみても良さそうだなぁと思ったのであった。

近況:チーム開発、チームビルディング

最近は開発チームのリーダーを任せてもらいみんなでワイワイ楽しく仕事をしている。

特に意味のない青い池(北海道 美瑛町)

4月から結成されたチームで、最初の1週間はスプリントゼロと称して設計とドキュメンテーション、チケット作成・見積りを進めた。全員で同期的に、だ。2週目は実装に進んだが原則全員でモブプロ。3週目には二手に分かれて原則ペアプロで開発を進めた。4週目にはペアプロを基本としつつも、スプリントゴール達成・スプリントタスク完遂のために最適なアロケーションを適宜試す、みたいな感じでやっていた。結果、かなり良い雰囲気でチーム開発を進めることが出来ているような気がする。

 

これまで在籍してきたチームでは、スキルセットやドメイン知識、コードベースの理解の偏りがあり、タスクがお互いに交換可能になっていないという、いわゆる属人性の高い状態が続いていた。その状態を脱しようといろいろと施策を試してみても、いろいろな理由で結局うまくいかない。これは現職に限らずどこの職場でもそうだった*1

スキルや知識の平滑化には時間と体力がいる。一人で気持ちよくコードを書く時間を捨ててペアプロ・モブプロをするのは大変なストレスのかかる行為*2だし、さっさとコードを書いてリリースすれば良いと思ってしまうような実装タスクについてチケットを書くのはひたすらにめんどくさい。互いに「自分がやった方が早い」「○○さんにやってもらった方が早い」と思っているチームにおいては、多大な労力をかけてスキルや知識の平滑化をしたとして「その先に何があるの?」がよくわからず、このコストをかけることへの納得感が醸成されないのだ。

結果、スプリントゴールに紐づく重大タスクなのに1人しか出来る人がおらず、重大タスクにアサインされたメンバーが爆死するのを指をくわえて見つめることしか出来ないチームメイト……という構図が出来上がっていく。もちろん、代わりに問い合わせ対応を取るとかそういう間接的(かつ、超重要!)な貢献はしているのだけど。

 

そんな中、4月から新しいチームで新しいプロダクトを作るというチャンスが舞い降りてきた。しかもリーダーを任せてもらえるということだったので、これは大チャンス。というわけで、冒頭に書いたような進め方をやらせてもらった。まずは遅さを許容し全作業を同期的に全員でモブプロ・モブ作業するという制約を設けた。チーム内での目線を合わせるためだ。ここでいう目線を合わせるとは、開発対象の事業やプロダクトはもちろん、プロセスや互いのスキルセットなどチームに関わる全てだ。そしてみんなの目線が合ったところで徐々に制約を外しつつ、最終的にはその瞬間で最善の手をチームで話し合って決めて取る、というやり方をとった。

その瞬間の最善を取る、を愚直に実行しているので、さっきまでやっていたタスクのペアを組み替えてやる、なんてこともある。そういえばスプリント初日に切ったチケット通りではうまくいかないということが判明して、いきなりチケットの書き直しをしたこともあった。それでもコンテキストスイッチのコストを最小限にすることが出来ていると思っている。これはスプリントゼロで設計・ドキュメンテーションをじっくりやったことに加えて、開発開始以降もチケット作成・見積りやプランニングにしっかりと時間をかけてみんなの目線を揃えたからこそだ。

スクラム開発の三本柱に透明性・検査・適応というのがあるけれど、この1ヶ月はまさにこのループをうまく回せていたんじゃないかという気がしている。やるべきことについてみんなの目線を揃えチケット化するというのは透明性を確保するということだし、透明性があれば問題が小さなうちから検査で発見することが出来る。正しい検査で小さなうちに問題を発見できれば、それだけ適応もしやすい。透明性・検査・適応が大事、という話はそれこそ耳にタコができるほどされてきたけど、それらが担保された状態がどういうものなのかを体験したことがなかった。そして今回、体験することが出来た。

これは僕たちチームにとって非常に大切な成功体験だと思う。僕に進め方を任せてくれた上司、スピード低下を受け入れ属人性排除のためのチャレンジをすることを許してくれたPdM、そして常に自分たちの仕事を良くしたいという気持ちを忘れず、共にプロセスにフォーカスして改善することに付き合ってくれたチームメイトに感謝だ。

あとは、この流れを今後も継続し改善していくことが重要だ。正直、今回は新しいチームかつ全く新しいプロダクトでまっさらな状態から始めることが出来たからうまくいった(と思っている)だけなのでは感もある。だから、今回得た成功体験を元に、なぜうまくいったのか・もっとよく出来るところは何かを振り返って、再現性を持たせる必要がある。たまたま今は新規プロダクトの開発に集中させてもらっているけれど、徐々に既存プロダクトの改善や運用保守業務も入ってくるし、この新規プロダクトですらしばらくしたら改善フェーズに入っていく。チームのメンバーだって今のまま変わらないとは限らない。

 

人間にとって、これまでのやり方考え方を変えるのは非常にコストがかかる。他人から求められるならなおさらだ。今までの僕は人にやり方考え方を変えることを求めるばかりで、そのコストを払ったその先についてきちんと説明出来ていなかった。今回のこの体験によって、コストを払ったその先のベネフィットを得ることが出来た。これで今までよりは少しくらい高精度な説明が出来るようになるだろう。

この1ヶ月とても大変だったけど、上記の成功体験を得ることが出来たのは、僕のキャリアにとって、そしてチームにとってなかなか良い通過点だったと思う。

*1:無駄にいろんな職場を見てきたおかげで、こういうことを言うことが出来る。偉そうに。

*2:ちなみに自分の場合は一人でコードを書くよりもペアプロの方が圧倒的に早い……。。

PCの外部ディスプレイの枚数制限を突破できるDisplayLinkというテクノロジーを知り、 Plugable UD-ULTC4K に辿り着いた

DisplayLinkについて

2021年にM1 MacBook Airを購入してから2年ほど。現在でも快適に利用できているのだけどひとつだけ不満があった。それは、外部ディスプレイを1枚しか接続できないことだ。机のスペース削減のためにMacをクラムシェルモードで使うようになってからこの問題がより顕著になった。

調べてみたところ、Synaptics社が提供するDisplayLinkというテクノロジーを利用すれば、PC本体の制限を超えて外部ディスプレイを接続出来るらしい。

www.synaptics.com

DisplayLinkというテクノロジーについては下記の記事がわかりやすかった。
DisplayLinkとは | 組込み技術ラボ

DisplayLinkドライバーが仮想GPUとして振る舞うことによって本体の制限を超えてディスプレイを接続出来る、ということのようだ。

良さそうな商品たち

Synaptics社はDisplayLinkというテクノロジーとチップセットを販売しているだけで、実際のアダプタやドッキングステーションは各メーカーがチップセットを用いて実装し販売するという形らしい。

日本のAmazonで安定して購入できかつ怪しくないメーカーとしては、PlugableCable MattersStarTech.comあたりだろうか。

単なるアダプタで良ければ下記のようなものが良さそう。ただし、商品によって4Kを出せなかったり、出せても30Hzになったりするので要確認。

自分はThunderbolt 4対応のドッキングステーションを使って、私用・会社PCをケーブル1本で切り替えみたいなことをしたかったので、下記を購入した。PlugableのUD-ULTC4Kだ。

Plugable UD-ULTC4K

2023-04-29時点でのAmazon価格で36980円とお高めだが、この手の変態技術を利用するかつ映像まわりのものはケチらない方が良いという経験則がある。

運用し始めて1週間ほどだが、無事に動いてくれている。仮想GPUということはメモリやらCPUやらめちゃくちゃ食って重くなるのではという気持ちもあったが、いまのところ1440pのディスプレイ2枚 + M1 MacBook Air クラムシェルモードで運用しているぶんにはまったく問題を感じていない。

macOSで利用する場合は、Plugable社が提供しているドライバをインストールする必要があるので注意が必要だ。

kb.plugable.com

DisplayLinkのドライバ自体はSynaptics社が提供しているのだが、Plugable社は上記ページでそのドライバを検証してから公開している旨を宣言している。StarTech.com社も自社ページでドライバを提供している。(検証しているという明言はしていなさそうだが、このページを見た感じはしていると思って良さそうだろう)

なお、Cable Matters社はドライバのページに行ってもSynaptics社のページにリダイレクトされるだけだった。

ChromeでNetflixが閲覧できない問題はハードウェア アクセラレーションをオフで解決

一点、ChromeでNetflixが真っ黒画面になって閲覧出来ないという問題にあたった。この手の問題はたいていHDCPという著作権保護の仕組みのせいで起こっているはずだ。

ググってみたところ、Plugable社公式のフォーラムにドンピシャな話題を発見した。

support.plugable.com

上記のページによると、やはり原因はHDCPであるようだった。バグとかではなく仕様らしい。

DisplayLink または Silicon Motion 技術を使った製品で、コピープロテクトされたビデオコンテンツや暗号化されたビデオコンテンツの再生ができない(HDCP 非対応) - Plugable ナレッジベース

そして、Chromeのハードウェアアクセラレーションをオフにすると改善するらしい、という回答があったので試してみると、たしかに改善した。

その代わり、ハードウェアアクセラレーションが必須の機能が使えなくなるので、その辺はトレードオフとなりそうだ。自分の場合はGoogle Meetのバーチャル背景とFigmaのWeb版が使えなくなってしまった。前者はKrispの仮想カメラを利用することによって、後者はFigmaのmacOSアプリを利用することによって回避している。

おわりに

唯一2枚目のディスプレイが繋げないという点だけが不満だったM1 MacBook Airだが、これで不満が消えてしまった。会社のPCに続いて、私用PCもMacBook Proにしようかなぁなんて思っていたのだけど……。

30万円の出費が10分の1で済んだのだから、DisplayLinkはすごいテクノロジーだ。

侍ジャパンが優勝したのでJetBrains IDEのライセンスをサムライズムで買った #侍割

4回ほどの挫折→Vim回帰を経て、5度目の正直でRubyMineを使えるようになり早2年強。

年額払いをしてしまってからまた挫折したらやってられんわということでずっとJetBrains公式の月額払いでやっていたのだけど、気がついたらWebStormやPyCharmとともに手放せないツールとなっていた。今後はもうJetBrains IDEをやめることはないだろう、ということでディスカウントの効く年額払いに切り替えることにした。

日本でJetBrains製品を買うとなると、公式か代理店のサムライズムで買うかの2択だろう。かなり前からサムライズムのことは認知していた*1ものの、月額払いの選択肢が無かったのでJetBrains公式でライセンスを買っていた。

今回、年額払いに切り替えるタイミングだし、侍ジャパンが優勝したしで、サムライズムでライセンスを購入することにした。

JetBrains IDEは継続年数によって20%、40%と割引が効く。JetBrains公式で2年10ヶ月ほど継続していた僕は、このタイミングで年額払いにするとどういう扱いになるのか不安だったのだけど、そのへんがいい感じに計算・按分されたような見積もりをいただくことが出来た。すごい。

というわけで無事に年額払いへの切り替え完了です。

特典でついてきたCIcloneというプラグインもさっそく便利に使わせて頂いてます。

なにやら紹介プログラムをやっているようなので、ご購入予定の方はぜひ。僕とこのリンクからライセンスを買っていただいた方双方がお得になる系のやつだと思います。

secure.samuraism.com

*1:数年前のOSC北海道に出展されていた記憶

MacBook Pro 2021 16インチ (M1 Max / 32GB)

ワケあって会社のPCを交換してもらったら、MacBook Pro 2021 16インチ(M1 Max)だった。

もともとは16インチのIntel Macだったのだが、ファンがずっと回っていて各種Webアプリケーションも激重。特に最近流行りのNotionやClickUpなんかは画面共有してMTGのファシリテーションしながらだと気まずいくらいの重さだった。*1

それが、新しいマシンだとなんということでしょう。はやすぎて感動した、というと嘘になる。だってこのはやさは私物のM1 MacBook Air(2020)で体感済なのだから。Intel製CPU -> Apple Siliconの差分は感動モノだったけど、M1 -> M1 Maxの感動はそこまででもなかった。当たり前にはやい、という感じ。

それよりも感動したのが、ファンが全然まわらないということ。冬だからというのもあるかもしれないけど、RubyMineとWebStorm、そしてたまにPyCharmを起動しながらビデオ通話して、画面共有でNotionやらClickUpやらをこねくり回してもファンが回る気配がない。

「音が聞こえないだけで低速で回ってるんじゃないの?」と思う人もいると思うが、TG ProというファンコントロールAppもFans Offといっている。

www.tunabellysoftware.com

私物のM1 MacBook Airはそもそもファンを搭載しておらず、Podcastの音源を書き出しているときなど極稀に「CPUの温度が上がりすぎています」と怒られるくらいだったので、ある程度ファンがなしでも大丈夫なくらいのチップであるという認識はあったのだが、ここまでとは。

いやはや恐るべしApple Siliconという気持ちになった2月の終わりでした。

*1:ファシリ中、なにかの処理待ちで無言になる時間ってこわくない?

CSSフレームワークの件

久々にそこそこ反響をもらうツイートをした。

これに関する反応は様々で、賛成・反対どちらの方向にも過激めの思想をお持ちの人、気持ちはわかるけど、採らないは言い過ぎ……な人、など様々。一番多かったのは、「フレームワーク使ってる != CSS書けないなので、CSSが書ければ問題ない」という意見だった。

おもしろかったのはこの意見。

前職ではBootstrapを使っていて、デザイナさんはBootstrapをウザがりながらもその特性を踏まえたデザインをしてくれていた気がする。なるほどそういうスキルの方向もあったのだなぁと思うなど。

 

この話を踏まえて、うーむ、自分がそのあたりの技術選定をする機会があったとしたら、やはり普通にCSSフレームワークを使うかなぁという気持ち。たぶんこれまでの経験的にも、今後仕事・プライベート問わずプロダクトを作るときにも、デザイナさんがキレイなデザインを作ってくれてそのとおりに実装するというよりは、少ないリソースで早く出すことを求められると思うから。もちろんフレームワーク無しでも早く実装できるようにすべきというマッチョな考え方も出来るけど、自分がそうなりたいかと言われると別にという感じ。マッチョ思想し始めたらキリがなくてプロダクトが完成しないと思う。

一方で現職の今のチームはフロント周りのリードをしている人がそういう思想で、かつデザイナさんのリソースもちゃんとある状態であれば生CSS書くのを拒否する強い理由もない。かつCSS力自体上げられるチャンスがあるなら活用しない手は無いので、ペアプロなどでスキルを盗むなどしていきたいなぁと思っているところ。

Podcastがラジオで紹介された

趣味でやっている「ゆるふわPodcast 」が北海道のラジオで紹介された。

紹介されたのは道民の皆さんにはおなじみの放送局であるAIR-G'の「ドミきゅん」という番組の中で、放送は1月25日(水) 19時〜19時半だった。

自分はradikoプレミアムを使ってほぼリアタイで聞かせていただきました。イマドキのラジオらしく番組はほぼ全編をPodcastで公開しているので、気になる方はどうぞ。

open.spotify.com

紹介された箇所が気になる方はぜひ聞いてみてください。「あ、そこ紹介するんだ」という感じではあるものの、紹介されたこと自体とても嬉しいです。一瞬だけかなと思ったけど結構な尺を使っていただいていて嬉しい。

いやはや長く続けてるとこんなこともあるんだなあ。