スピーカー 1
スピーカー 2
{openStarringSelector = false;})"
wire:loading.class.remove="cursor-pointer"
wire:loading.class="cursor-wait"
aria-label="出演者を紐付ける">
ken
{openStarringSelector = false;})"
wire:loading.class.remove="cursor-pointer"
wire:loading.class="cursor-wait"
aria-label="出演者を紐付ける">
Yosuke Asai
スピーカー 1
例えば、昼休みを自由に取れるタイプの人もいれば、
2時だとちょっと昼休みかぶんないですみたいな人もいるだろうし。
スピーカー 2
うん。
だからその、今回あの、あ、そうだもう一個取り組みとしては、
まあ僕が基本的にモデレーターとしてたんですけど、
それを回していくみたいなことをやろうと思ってて、
立候補制でこのショーはこの方がみたいなのをやりたくて、
で、そのショーが方がタイミングがいい時間でやっていきたいなっていうのは思ってますね。
その方優先というか。
スピーカー 1
うん、確かに。それは分かりやすくていいかもしれないね。
スピーカー 2
はい。
スピーカー 1
僕も後半2ショーぐらいモデレーターする予定だから、ちょっと頑張っていこうかな。
スピーカー 2
お、ぜひ。よろしくお願いします。
スピーカー 1
あとは、そうだね、それでモデレーターが強い気持ちがある人のショーだけ読むってことで、
なんか全部読むわけではないんだよね。
スピーカー 2
はい。そうですね、一応これも投票制にして、
ショーが12、3ショーあって、そこに対して投票してもらって、
今は投票が3票くらいあるところだけを選んでとりあえず進めていく。
スピーカー 1
で、2票以上のところは後回しでやるか後で決めるみたいな感じで考えてて、
スピーカー 2
全部は選ばないという風にしてみましたね。
スピーカー 1
はい、これもちょっとやってみて、いろいろトライアンドエラー試行錯誤しながらやってるっていうのはいいですね。
うん。ということで今日の感想というか、やっていきますか。
スピーカー 1
どうですか?初回モデレーとして見て、全体の感想は。
スピーカー 2
やっぱり新しい人が入ってきてまた雰囲気が変わったというか、それが楽しかったですね。
かつこの本自体が、あ、そっか本の話もした方がいいですね、先に。
読んでいる本が、ソフトウェアミステイクス&トレイドオフっていう本で、
日本で言うとソフトウェア設計の失敗と謝りみたいな、とトレイドオフみたいなタイトルと思うんですけど、
それを読んでいて、で、今回の章の内容は、コードの重複は常に悪いわけではないというタイトル。
で、まあその内容について議論していくという感じですね。
スピーカー 1
いやもう、チョイスがいいよね。
なんかこう、過去の収録でアサイさんと2023年振り返り編だったかな、
ロンドンテックトークは失敗をしていくポッドキャストですよみたいな、なんかちょっと盛り上がったじゃん。
スピーカー 2
確かに。
スピーカー 1
それとマッチするような、まさにこう失敗から学んでいきましょう、トレイドオフを議論していきましょうみたいな本なんで、
なんか今回も第2章はね、こうコードディプリケーションのところで、
重複は必ずしも悪いことじゃないよねっていうのを結構読んでみたけど、
なんか現場の経験を思い出しながら、うなずきながら読めるような、
なんか本当に地に足ついた本だなっていう印象をさらに強くしました、私は。
スピーカー 2
うん、確かに。やっぱりいろんな失敗、
その結構章自体はシンプルというか、話の内容はシンプルで、
まあ読んでるとそのまま流しちゃうような話もあるんですけど、
実際にそれをいろんな人の失敗をっていうか、失敗の経験みたいなのを今回人力会議で聞くことができて、
まあその学びがやっぱり改めて大きかったなっていうふうに個人的に思いましたけど。
スピーカー 1
そうそう、それすごいわかる。なんか書いてることはそんな難しくないんだよね、書いてるサンプルコードとかもさ。
スピーカー 2
はい。
スピーカー 1
なんかこう議論の問いかけ方が上手いというか、なんかめちゃくちゃ難しいことがあって、
書いてあって、頑張って理解して読んで知識を得るタイプの本というより、
問題提起の仕方が上手くて、例えばドライ、Don't Repeat Yourselfは絶対解じゃないよね。
じゃあ何だっけ?っていう議論を問いかけられて、それを周りの人と議論するっていう本当に議論向きの本だなと思いましたね。
だから、読みやすいってのも一つ、ブッククラブを運営する意味では、読みづらくて途中でドロップアウトしづらいっていうのも一つ、なんだろうね、アドバンテージになってるかもしれないよね。
スピーカー 2
確かに。そういう意味では、前回のDDIってちょっと対照的というか、もっと読みづらかったですね、DDIは。
スピーカー 1
読みづらかった、超難しい。
スピーカー 2
うん。それを一緒に紐解いていくみたいなところと、今回はもっと議論を活発にしていくみたいな側面で、全然いいですね、今言ったように。
スピーカー 1
そうですね。ちなみに何で読んでるんですか?アサヒさんは。英語版をKindleで読んでる感じ?
スピーカー 2
英語にしましたね、Kindleで。Kindle最近買ったんで、それを活用してます。
スピーカー 1
何買ったんだっけ、Kindle。
Kindleの一番シンプルなペーパーパックって言うんですかね。なんだっけ、あ、それ名前忘れた。はい。8ギガのやつ。
ペーパーホワイト?
スピーカー 2
ペーパーホワイト、はい。
スピーカー 1
だったかな?
スピーカー 2
はい。今回その、この本を選んで議論がしやすいよねっていう話をしたと思うんですよね。
スピーカー 1
あ、そうでしたね。議論がしやすい本でしたね。
じゃあ簡単にどんな議論をしたか、なんか気になったディスカッショントピックとかを2人それぞれピックアップしていく感じにしようか。
スピーカー 2
そうですね、はい、確かにそうしましょう。
スピーカー 1
どうする?アサヒさんの方からいく?
そうですね、じゃあ僕から。
スピーカー 2
自分が読んだところでもいいし。
そうですね、僕やっぱりさっきも話しましたけど、議論を通して、なんだろう、自分が分かりづらいなと思ったことが
言語化されたような気がしていて、その分かりづらいっていうふうに思ってたけど、言語化されてなかったことを言語化できたような気がしていて。
例えばですけど、その継承対コンポジションっていうのがあって、
その継承をするとなんか分かりづらいっていう話があって、
それ自分でもJavaって書いてて継承したときに、先のコードを理解するには継承元のコードを理解しないといけないっていうことが結構あって、
それを分かりづらいなと思って言ったんですけども、それをあまり分かりづらいっていうのを言語化できてなくて、
そういう友人さんが今日それについて言及されて、確かになみたいな。
友人さんじゃなかったでしょうか。
そういうところがなんていうか、結構当たり前のことなんですけども、
はっきりと自分の中に入ってくるみたいなところがあったのが面白かったなと思いました。
スピーカー 1
それいいですね。
当たり前を疑うっていう問いかけをしてくれる本だなと本当に思ってて、
例えばドライの原則、Don't repeat yourselfの法則はいいよねみたいななんとなく雰囲気があるじゃないですか。
ドライ当たり前じゃないみたいな。
でも現場でソフトウェアを書くっていう文脈で考えると、
重複してもいい場面って実は結構あるよねっていうふうにスポットライト当ててくれる。
その具体的な例は全本に書いてくれるんですけど、
そこが何だろうね、例えば今後会社で同じような議論をした時にも、
この本にはこういうこと書いてるからとか、相手を説得しやすくなるような、
自分の中での理論とか言語化を手伝ってくれるような本だったので、
これDDIAの時もそうだったけど、結構現場に思ったより生きてくるなっていう印象ですね。
設計議論したりとか、あとはデザインドックレビューしたりするような時に。
スピーカー 2
確かに。
なんかその場で、これおかしいよねっていうのに気付けるというか、
トレードオフ、これは良くないんじゃないっていう方向もあるんじゃないみたいなところに、
気付きやすくなるみたいなメリットはありそうだなと思いました。
スピーカー 1
そうですね。
これも僕の失敗だけど、なんかジュニアエンジニアでいろんな本を読んで、
ドライドライってどこにも書いてるから、
ドライ最高じゃん、なんでもドライしていこうぜみたいな思ってた時期もあるんですけど、
じゃあそれでドライをしてみた結果、
その数ヶ月後とかに自分が共通化した共通化の仕方が間違っていたりとか、
必要以上にドライにしすぎたりしてしまって、
スピーカー 2
一人で決められる問題ではないところも多いと思うので、
トップダウンの必要ないかもしれないですけど、議論が必要なことは多そうですね。
チーム内での議論とかチームのメンバーの理解状況とか、
そういうところを踏まえて決めていく必要がありそうなことではありますね。
スピーカー 1
そうですね。
マイクロサービスに関しても参加してる人みんなみんなが自社ではこうしてます。
うちではこうしてますみたいな、どんどんどんどん入れてくれたのがめちゃくちゃよかったね。
スピーカー 2
そうですね。
まさに世間的にマイクロサービスが流行っているから、
それを導入してみたけど失敗しちゃったみたいな事例も話してくださった方がいて、
その結果人が辞めてマイクロサービスのメンテができなくなってしまったものがある。
個人のオファーサービスがあるみたいなことを言ってる方もいて、
そういうのまさに本当にこの本で言ってる内容とかなり近いのが実際に起きてしまったみたいなのが出てきて面白かったなと思いました。
そうですよね。
スピーカー 1
オーナーシップの明確感みたいなのを意識して、
やっぱプロセス、サービスとか作っていったりしないといけないなっていうのは改めて思ったし、
はい。
でもそれも結構やっぱりチームの移動とかモチベーションマネジメントとかによって変わってきたりしちゃうので、
なんか自分一個人が悩めば解決するっていう話でもないなとは思いましたね。
やっぱり。
自分がオーナーシップを発揮したところでじゃあオーファーサービス全部管理できますかって言うと別にできないし。
うん。
スピーカー 2
そうですね。
スピーカー 1
そこで評価精度がね、ちゃんとついてこないとバーナウトしてしまうし。
スピーカー 2
うん。結構やっぱり大きい問題ですね。
そうですね。
進めようと思うと。
スピーカー 1
うん。
でもなんかこう現場でマイクロサービスちょっとやってみたけど、この本を読んでちょっと自分の思考っての抽象レイヤーを一個上げて見れるような客観視して見れるようないい本かもしれないなと思いました。
確かに。
例えば僕とかもインディビジュアルコントリビューターでずっとやっているけど、なんかその戦略を立てる側から見るとこういう観点もあるよねとか。
うん。
チームを採用する観点ではこういうのもあるよねみたいな。
一つくらい。
うん。
なんだろうね、こうレイヤーを上げて見れるというか、なんかそういうのが面白かったな。
スピーカー 2
確かに。
そういうのもやっぱりこのTakeawayのノートがあるからこそ見えてくるところもあった気がしますね。
スピーカー 1
うん。
いやーこのフォーマット最高じゃないですか。
スピーカー 2
いいですね。
スピーカー 1
うん、今も見ながらさ収録してるけど。
これすごいよね。読むの楽しい、こっち読む方が楽しいもんだって。
いや本当にそうですね。
スピーカー 2
数週間前に読んどいて書いといて、前日に読むとうわめっちゃ書いてあるみたいな。
スピーカー 1
めちゃくちゃ学びが多いですね。
スピーカー 2
うん。
あと本の内容で具体的に気になったというか面白いなと思ったところは、
スピーカー 2
そうですね、個人的にはマイクロサービスとかに分割するとか、
もしくはコードのレベルの抽象化を上げるっていうのを早い段階にしない方がいいというか、
っていう話があったと思うんですけど、
そういうのは結構マイクロサービスといってはドメインがAMIな時に早めに分割しない方がいいっていうのは結構読んだことがあったんですけど、
コードの抽象化とか継承するみたいなのも同じだっていうのは個人的に勉強になって面白かったですね。
マイクロサービスの場合は早めに分割しない方がいいみたいな話ですけど、
コードレベルの場合はなるべく早い段階では重複していた方がいいっていうことになると思うんで、
それがある意味逆のように見えるというか、逆じゃないんですけど、それはちょっと面白いなと思いました。
スピーカー 1
撤退コストの違いとかっていうのもあるんじゃないですかね。
例えばライブラリー、一つのライブラリーのコードの中だけだったら、
グレップして探して戻して、ユニットテストでデグレーションがないかカバーして、
そんなに難しくない。30分くらいもあれば多分戻せるようなもの。
だけどマイクロサービスにして作っちゃうと、
例えばデータの移行をしてとか、それを依存しているユーザーへの悪影響がないか考えたりとか、
移行プランとかも考えるし、
クローズしてからちゃんとリソースを全部消せてるかみたいなバリデーションフェーズもしっかり入ってくるし、
下手したらワンクォーター使うし、少なくとも数週間、数日、ものによっては使うかなと思うんで。
スピーカー 2
はい。
スピーカー 1
やっぱ撤退プランみたいなのも考えるかどうかとか、
撤退コストの違いでその判断にもなってくるのかなと思いましたね。
スピーカー 2
いや確かに。
本当に誰がメンテするのか、もしこの人が辞めたらどうするのかみたいな話とか、
そういうところも考えておかないとメンテしず、
それは本当にチーム、どうチームを運営するかみたいなところにつながってくる気がするんですけど。
スピーカー 1
そうですよね。
この本を受けて聞いてみたいのは、
じゃあ明日、今日から仕事するときに、
どう自分の中で変わりそうなものありますか?
なんかスタンスでもいいし、
逆に現場でこういう課題抱えてたからこれやってみようかなとか。
スピーカー 2
そうですね。
やっぱりマイクロサービスはかなり取り入れているというか、
そういう的なことをすごいしているので、
また新しいサービスが生まれようとすることが結構あるんですけども、
そのときに本当にそのサービス必要なんだっけみたいな議論に入っていって、
そのプロトコンをどんどん探して提案していくというか、
こういうネガティブな面もあるよねみたいな話をできるようになるかなというふうに思いました。
スピーカー 1
そうですよね。
やっぱり多分SREとかだと他社の作っている、
他のチームの作っているサービスの設計議論に呼ばれたりとか、
デザインドックをレビューすることも多いと思うんですけど、
スピーカー 1
そういうときにオーナーシップ今後ちゃんと運営していけるのとか、
つつかなければいけないクリティカルなデメリットを、
設計段階、なるべく早い段階で叩くことによって、
実際運用してから、やっぱ駄目なんでSREちょっとお願いみたいな最悪のケースにならないように、
自分たちの首を守るというか、自分たちの時間を守るためにも早い設計段階でいろいろ突っ込めるような、
なんだろうね、ツールが勉強してるみたいな感じで、
僕も読んでましたね、同じような感じ。
スピーカー 2
なんかけんさん他にもあります?明日から使えそうだなみたいな。
スピーカー 1
そうですね。
コードサンプルとかはすごいシンプルだったから、とりあえずまだ第2章しか読んでない。
あとはマイクロサービスの文脈もちょっと絡んでくるけど、
OSSのライブラリを使うかどうかというところでも似たようなディスカッションができましたね。
今回ブッククラブでもOSSのライブラリはどういうときに使うべきかとか、
どういうときに避けるべきかという議論がありましたけど、
普通にサービス変えてても簡単にサードパーティーの依存で注入できるじゃないですか。
NPMだったらNPMインストールみたいな感じでさ。
でもそれをするのって簡単だけど撤退コストってそんな簡単じゃなくて、
運営していくとセキュリティ絡みでのインシデントも発生するリスクもあるし、
あとはやっぱりインストールしたサードパーティーのライブラリちゃんと読み込んでますかというか、
理解してインストールしてますかみたいなところもあると思うので、
なんかそこが一つ観点としては、
開発していくときに便利だからこのインストールしてみましたみたいなプルリクが出てきたときに、
ちゃんと建設的に批判できるような言語をここで学んだみたいなところは一つあると思います。
スピーカー 2
確かに。
そのOSSを使うべきか、自分で実装すべきかっていう話はすごいいろんな方からもコメントとか議論になって、
やっぱりドキュメントがないからそのOSSを自分で実装しようと思って実装したけど、
その人が退職してしまってメンテができなくなってしまった。
結局OSSを使い断ったみたいな事例があったりとかしたのでやっぱりこれもマイクロサービスとかの議論と似てますけど、
入れた後に、自分で実装した後にどうするかとか、