アジャイルプラクティスに学ぶ、全エンジニアの「暇」を作る方法!
「全人類を暇人プログラマー化計画出ました第2,3弾4弾ぐらいというので暇を作ろうというテーマを書いてですねまさか暇になると声低くそれでですね暇ってどうやったらできるかなんですよ知りたい2種類あるんですよ哲学1つ目仕事をサボる」
「いいですね簡単簡単ですただこれはですね全人類暇人プログラマー化計画にはのっとってないんですよなるほど誰かに負担がいくそうなんです他の人が忙しくなるだけです確かになので生産性を上げる生産性生産性これが大事ですなるほどで暇があるエンジニアとはアジリティがあるやつだと」
「出たアジリティってなんだっけ俊敏性みたいなもんですねサッカーとかで使われるらしいですよアジリティ使われますアジリティ出してきますアジリティ出していきましょう仕事を効率的に進めるためのエッセンスの話をしますエッセンス」
「いつもの話ですがアジャイルプラクティスガイドブックきた本でしたっけ2こすり目前回何こすりかできそうって言ってたやつですねこれラストこすりですラストこすりなんだ残念ながらめっちゃいい本だったんですけど仕事を効率的に進めるつまりスピードアップもしくは手戻りを減らすこれだと思うので手戻りを減らすって伝わりますかうん」
「ん?うん。だぶん。お?まぁまぁまぁ。ちょっと解説しろって言われてもちょっとムズいんですけど。うわぁ、ここまでやったのに、実はこっちだった。やり直さなきゃ。が手戻りです。はい。これを減らすのがですね、あの、仕事量を、仕事を効率的に終わらせる。うん。多分非常に重要です。うん。エンジニアはね、マジで手戻りいろんなフェーズで発生しますからね。あるある。その手戻りを最小限にする。うん」
「開発手法が僕はアジャイル開発だと思ってるのでそこから学び取れることはめちゃくちゃいっぱいあるなるほどねエンジニアとしてなので本日は時間ないんですが3プラス1トピック紹介させてください3プラス1おーつまり44はいというので早速いきますお願いしますはい一つ目はい長期的な開発運用ができるソースコードを書こうという話ですおーおー」
「過読性とかの話ですかこれは言うはやすしやるはがたしがたしっていうので長期的な開発運用ができないソースコードってまあまあどういうことなんでしょうねとどう思いますかいはいどうぞテストがないコードその通りそれは一つじゅんぺい出してみようじゅんぺいいけるよはい卒業式えー」
「テストテストを言おうとしてたんだそれは失礼ぶっこきました頑張れいける出るぞ俺出るよ分岐が多すぎるまあまあまあ楽天モバイルスタイルなんだ要因はいろいろありますけど設計が非常に複雑になってコードが複雑なものとか要するに複雑ですね多分全てにおいて命名が」

「物によってブレるとか責任分解点が複雑になってるとかね曖昧になってねとかが結局長期的な開発運用ができない複雑性が上がると長期的な開発運用ができないことだと言えますよねというところでそういう風にならないものを作っていきましょう」
「っていうのは優が優し優しいやるががたしがたし微妙に違う気もするがたし本当になんじゃっけがたし優しにがたしじゃないですかがたしなんだでも難しいって書いてあるなんとかがたしって言うけどあれありがついたことによってがになってたのかと思ってたそのパターンですかまあまあまあまあまあ言語の話は置いといて置いといて置いといてね」
「まあとはいえですよじゃあなんで現場で汚いことが生まれちゃうんでしょうって考えてみるとノリさん今なんか言おうとしたのでどうぞ働いてる人たちのコミュニケーション不足もう一深掘り欲しいレビューの時にわーこのコードなんかちょっとしっくりこないんだけど時間ないからマジしちゃえの積み重ね今非常に大事なことを言いました時間ないから」
「そうなんですよ結局脳機があるから妥協するんですよねその通りでつまり汚いコード書くと」
「ちょっとだけ開発が短期的に早くなるけどそれがくつみ重なってだんだん開発スピードが落ちると長期的視点の活性っていうのがよく言われるというか言うやつがいるですが全くもって違います違った全然違いました全くも違います初級に戻ります綺麗なコード書くやつが結局早いんです」
「ああああああびっくりしたそういうことね汚いコードだから早く開発がおるわけじゃないんです綺麗なコード書くやつが結局仕事早いんです手戻りがなくなるなくなるしでもそんなこと言ったって綺麗なコード書くのが難しいですはいそれ頑張って勉強しましょうという話なんですうわああああくそーただですよここでのりさんが言うことはごもっともで救うわけではないんですけどうんうん」
「その発生メカニズムをちょっと書いててこれはちょっとリスナーに届けたいと思ったのでそこの発生メカニズム的な話をちょっとさせていただくんですがコードレビューをやってるんで結局ちょっとずつはコード多分チームで慣らされるというか若干ねはいはいっていうのでクオリティを担保しつつも汚くなっていくのが実情だと思いますと」
「結果として自分が開発しているチームのコードは今は分かんないかもしれないけど後で振り返ってみると結局汚いなってなるわけなんですねこの本には書いてたちょっと一つパンチを送るんですけど本にパンチが書いてあったんですかこの本はね結構パンチがあって僕好きなんですよねそうなんだ」

「パンチがすごい」
「あなたが怠慢ぶっこくとシステムが長期的に保守できないものになります泣いてる?泣いてるんか?勘弁してくれこの本に書いてあるのはだからこそ各メンバーが継続的にいいソースコードを書けるようにソースコードレビューを通じたアドバイス読書会勉強会の開催をするべきだと相互に学習できる機会を設けようって話をしててなので死ぬ気で勉強しろと」
「なるほどねそのプロダクトの質っていうのはまあいろいろあるとは思うんですけどユーザー数が多いとか生存年数が長めのシステム作ってるあなた死ぬ気で勉強しましょうっていうのが結構パンチ強いなと思って一紹介でしたいやでもねそれ最近すごい感じたことがありましてコードレビュー」
「である程度指摘とかするじゃないですかで」
「今僕はですね社内でプロジェクトを見てることが一個ありまして入ってくるメンバーがですね基本的には新卒だったりとか入ってきて研修受けて研修終わった人とかそれぐらいの感じの人が入ってくるんですねもちろんレビューでこここう書くともっと良くなるよっていう指摘をしていかないとレベルアップしないのでめちゃくちゃそういうコメントを徹底的に書きまくってるんですよ結果」
「こうやっててもう何百プルリク見たのってぐらいの感じなんですけどすごい毎回毎回これぐらいなら許容範囲かっていうのを妥協じゃないですけどマージってやっててバグ発生して手足りないから自分が作業入った時に全体のコード見た時に統一感なさすぎて」
「破滅しましたね自分が昨日ってさ一部分でしかないから全体見たときと整ってないのがすごいあって確かにレビューで品質担保するの無理だなと思いましたそうなんですよね」
「最初から完璧なものを作るのって結構全員四天王レベルのやつが来ないと無理なんでそれはなかなか難しいとはいえそれは育てて作っていかなきゃいけないんで本当にね勉強会とか大事だなと改めて思った次第でございました確かになるほどレビュー確かにそうなんだ基準だるだるなんで言うて人間がやってるしそうなんだよねレビュー」

「疲れてる時のレビューとかね精度落ちますから人間だものそりゃそうかけだしエンジニアのレベルに揃うってなってじゃあレビューちゃんとしてもらいたいなって思ったんですけどそれをしたところで品質全体としてはそのレビューでは直しきれてないので勉強会していこうねって話ですねそうそうそうそうそうそう」
「そうそうそうで結局そのチーム全体で同じ正解を用意することによってさっきのりさんが言ってた行動の統一感みたいなものも生まれてきますからねはい」
「っていうのも一つそれは書いた時であとはのりさんが結構前に紹介してた結局リファクタリングとかも大事でボイスカウトルールですねボイスカウトルールは自分が触ったコードは触り始める前よりも綺麗にしてプッシュしましょうというルールですねリファクタリングとかリファクタリングに限らずリアーキテクチャ設計変えるとかですね勝手にやって動かなくなったら大犯罪ですけど」
「確かにでもちょっとちっちゃく地道にやっていかないとね大きくぶっ壊すことになるのでっていうのを意識してやっていきましょうあとはそのリファクタリングの中でちょっと本に書いてて確かに俺やってるけどじゅんぺいやってほしいなっていうやってたらごめんなんだけどなんだちょっとエッセンスがあってですねはいタスクってチケットでもらえますか普段チケットでもらえますチケットでもらった時ってそのタスク細分化する」
「する時もありますうんうんうんでここから僕がこうやってるって話なんですけど細分化する時ってその機能を受け取った時に俺がやってた時はシーケンス図作るとかシーケンス図だっけ多分シーケンス図シーケンス図はあれですオブジェクトとのやり取りのやつじゃあそうだとかあとデータベースの設計図更新するとかAPI設計図オープンAPI作る」
「実装する純正情景実装する動作検証するみたいな感じでコタスクに分けてやってるんですけどその中でリファクタリングするっていう工程入れてるんですよそれをぜひやってほしい細分化まずしてなかったですそこまでははい」
「細分化するのはちょっと人によるかもしれないけど俺はその残りの作業ボリュームとかを見るために割と分けることが多い分けるようにしてる今回自分で追加したコードに対してのリファクタリングそれとも今回のタスクで触る部分のコードのリファクタリングどっちですか両方やるわ」
「とにかくそういうコードを触るタスクがあるときにとりあえず脳死でサブタスクでそれを作る何もやらないときはやるよもちろんいいやと思って時間ねえしとかこれでいいやって思うことはあるけど自分で新機能を追加するときとかもやってるテスト駆動で作るときもレッドグリーンリファクタリングでリファクタリングするけど最後にもう一回見直すみたいな意味を込めてやってたりとかする」

「こういうのはねタスク見積もりするときも少し多めにかかるって言ってリファクタリングするぐらいの方がみんな幸せだし自分の実力もついてウィンウィンなんじゃないって今は思ってますぜひぜひコードをきれいに保てるようにお願いしますってのが一つ目の長期的な開発運用ができるソースコード仕事が早く終わるコツなるほど」
「しみ入っていますはいじゃあ次いきますねはい2つ目経路が変わるんですがワーキングアウトラウドっていうのでうるさく仕事しろという話ですほうこれはですね何回の回で言ったかもしれませんがふんほうあーはいふんほうあれなんて読むのふんほうふんほうって読むんだ言いづらえっと自分のやってることをつぶやくうんチャットとかでつぶやくみたいな」
「意味合いですねこれなんだっていうと自分で言うのもそうですし言うことによって人を巻き込みながら仕事ができるというのがワーキングアウトライドのいいとこかなと思ってますまだちょっと具体的にどういうことかなって思ってるかもしれませんがその効果についてメリットについて例えばですよじゅんぺいがログイン機能のバックエンド開発し始めたよってなんかチャットで言うとろわとうんうん」
「あれデータベースのテーブル設計図どこにあるんだろうってツイートしましたとツイート?チャットで言いましたとなんかそのつぶやきから1時間なんかずっと困ってそうだぞって思った時にのりさんが手を差し伸べられるんですねなるほどここやで?そうここやでってリンクを送れるんですよもしくはそのつぶやきした瞬間に送れたりするわけですよなのでちょっとしたわからないことで詰まるっていうのがね」
「解消されるんですね確かにしかもそういうの見ると答えたくなっちゃうのがエンジニアですからねそうそうそうで本間かって思う人いるかもしれませんがそれはやってから反論してくださいちょっとチャットがクローズドな現場はもちろんあるんですけどチャットにオープンというかコミュニケーションチャットコミュニケーション慣れてる現場だったらおそらく結構サポートしてくれるんで実体験ありですこれはあるんだいいですおお」
「素晴らしいっていうのが一つもう一つ勉強会等のなんとなくやりたいことをラフに提案できるうんうんうんなんかこういう臨時会やりたいんだけどって思った時どこにいるんですかっていうのでねなかなかね」
「どのチャットに言うか迷うことあるかもしれませんが自分の訓報チャンネルとかなら何言ってもいいですからそれでええやんって思った人が2人いたらもうできますから1人とかいたら協力者いるわって別にそんな何十人も集めなくてもいいわけですからねそういうラフな提案ができるっていうのがいいところですねっていう感じですかね何が嬉しいので言うと他にもメンバーにとっては」
「あのこいつどこまで進んでるわっていうのが分かったりとかであとはあのそのふんほうチャンネル見てるのが自分のチーム以外にもいるとしたらねチーム外からのあのアドバイスとか飛んでくるかもしれないんでそういうデメリットあ違うメリットがあったりであとはそのチーム会社にとってもまあ嬉しいことがあって従業員のスキルアップにつながるって言われてます本人の本人のかそう本人のじゃない全体的な全体的な全体的なですねえーと」

「何の本だっけ何かの本のソースがあるっていうのがちょっと説明欄に載せておくんですけどノウハウマネージャーを生みますとノウハウマネージャーっていう話があってノウハウマネージャーとは何かっていうと管理者とかじゃなくて専門性とかのスキルとかノウハウを現場に普及していく人その普及することによって他の周囲の人のレベルも上がるみたいなそういうのをノウハウマネージャーと呼ぶらしいんですけど」
「インテル社創設に関わった元CEOのコ・アンドリュー・S・グローブ氏が提唱してたやつハイアウトプットマネジメントジャネジャーそうなのかなちょっとその本読んでないんですけどノウハウマネジャーっていう風にブログ記事で書いててそれは確かにそうだなと思って読んだけどピンときてねえなチームメンバー同士でのトレーニング文化が調整されるのでこういう風にこういうのが興味あるとかチームとしてこういうことやったほうがいいと思うみたいな話をしてると」
「そういう文化が生まれてくると刺激を受ける人がちょっと少なからずいると思うのでいるすごいつぶやく人いるんですよねすごってなりますねそんなこのシステムそんなのあるんだみたいなそうそうそうそうそういう部分もつぶやくの結構あらゆることをつぶやいてます一般的な世間の」
「あの流行りの話とかもそうですしはいはいはいその人はワーキングアウトラウドを実践してる人ですねなるほどねこれのめっちゃ偏見だけど仕事量すごい人とか仕事できる人はこれやってるイメージがありますわかるなので仕事できるようになりたいなと思う人まずは形から入りましょう入る入るっていうのが2つ目ワーキングアウトラウドでしたはい3つ目はいはい」
「AIフレンドリーなドキュメントを書こうAIフレンドリーこれは面白いなと思ったんですけどGitHubのねちょっとなんとかっていう人がコラムで寄せてた記事でAIが好むドキュメントを整備しようって話をしてますAI向けAIが読みやすいやつはいはいはいこれはですねちょっとした未来の話なんですけどパイロットとかやっぱりソースコード見てコードの提案してくれるわけなんですがそういうなんでしょうねそういうGPTベースの」
「ソースコード読み込むAIマンが理解できる形でドキュメントを残しておくとそのドキュメントの情報も参照して仕事が早く進められるように今後なるよっていう話ですなのでパワポとかワーボみたいなバイナリベースのドキュメントだとそのGitに上がった時には多分AIは読み取ってくれなくてしっかりとテキストベースの形マークダウンとかですかねそれこそ」
「そういう風な形式でシステムのドキュメントを残しておくと将来AIがもう少し進んだ時に本当に多分あともう少しだと思うんですけどもう少し進んだ時により効率的に開発できるようになるから今のうちにテキストベースでドキュメント残しておけよってGitHubの人が言ってましたなるほどねなるほどと思って確かにAIライクAIフレンドリーAIフレンドリーっていうのはその形式の部分なんですね書き方とかじゃなくて」
「あるでしょExcel使用書あれ読み取れないから多分っていうのでそうこれはね面白いなと思ってなるほどね使用書めっちゃXDに入ってるなそうなんですよねそうここら辺りはある以上3つでこれがメインの3つですねプラス1いきますねユニットテスティングアンチパターンズカタログ」

「アンチパターンカタログっていうのが付録に載ってて世の中にあるんですけどユニットテスティングアンチパターンカタログっていうのがこれが面白かったのでちょっとシェアしますそれ絶対俺やってるわ」
「いらないテスト書いてるなって実感を持ちながらテスト書いてる時あるもんそこが実際どうなのかはなんとも言えないんですけどなんで面白いと思ったかっていうとドキュメントとしても非常に面白いですこういうのがアンチパターンだよっていうのがいっぱい並んでるドキュメントなんですけどそんなのラジオで言っても面白くないんで変な名前ってやつ紹介しますなるほど今バグ界を思い出したわ変な名前のバグ出すやつありさてですそんな感じ」
「そんな感じですなので名前を言うんで名前大喜利みたいになっちゃった名前を言うんでどういうことかを言ってくださいいいっすねこれSQLアンチパターンでもちょっとやりたいな確かに確かにじゃあ簡単なとこからいこうかなユニットテスト誰でしたっけユニットテストの定義は何でしたっけユニットテストはメソッド単位」
「クラスタイムメソッド単位のテストですねはいはいはいいきますザ・ジャイアントはいもうあの莫大な行動どっちだどっちだって確かにテストですもんねでもテストの方だからテストも細かくテクストしてこうねっていうのでだからめっちゃ莫大な量の行動量になるテスト行動になっちゃってるやつザ・ジャイアント」
「一つのテストケースで複数のことをテストしちゃってるやつどっちかというとじゅんぺいが正解かなうえーいやっぱ初級に戻んなきゃいやまあちょっとのりさんでも含まれるんですけどとにかくでかいテストです次ローカルヒーローローカルでしかやっぱり動かないローカルヒーロー誰かの環境でしか動かないみたいなやつ」
「同じく環境に依存しちゃってるやつはいお二人とも正解です特定の開発環境に依存したテストケース他の環境でやると失敗するやつ次いきますねあと二つにしましょうかな次フリーライド誰でも乗りこなせちゃうただ乗りってやつですねあんまり想像つかないなフリーライドえーと」
「こんなもん意味ないやろうっていうテストフリーライド?やべ何も出てこない正解はですね既存のテストコードにアサーションを追加して別のテストをやることですね既存のメソッドかテストメソッドテストケースに追加してテストやっちゃうのをフリーライドと言います本当はテストケースを分けなきゃいけない」
「なるほどそれってちなみにもともとテストしてたテストコードがそもそも元のコードが変わって目的が変わった場合でもそれはリファクタリングの範囲だったらそうじゃないんじゃないですかなるほどそこの要件は変わってないにも関わらずそのテスト内で別のテストのケースを追加しちゃったパターンだとかそうそう最後アナルプローブ」

「ちょっと待ってアナルプローブこれ和訳するとケツの穴の検査ですねはいはいはい待って分かったかもしれないな一点集中みたいなあ、一個しかないから一点集中もうそこのえ?一点集中おもろい」
「めっちゃ狭い範囲のテストをしてるもしくはよくわかんないコードに対するテストちょっとニコになっちゃいましたけど曖昧なコードそんなことないか一点集中にしますめっちゃ狭い範囲ここだっていうところだけのテストいいテストっぽいけどなそれ汚いソースコードのテストで無理やりテストしちゃってるみたいなケース」
「本当だったらコードをリファクターしてきれいにしてからテストすべきなのにその汚いまんまそれを無理やりテストしてるやつノリさんが近からず遠からず遠からずって感じなんですけど不健康なやり方でテストをやってるっていうことらしくて例えばなんていうかっていうとプライベートな引数とかフィールド何かしらの値を読む」
「ために無理やり別のメソッドとか別のライブラリを使って無理やりそれを読み込んで頑張ってテストするとか隠蔽されてるってことはコードの詳細をそこまで検査する必要がないかもしれないのに無理やりガチガチにやっちゃってるとかそういうのを含んで不健康な方法でなるほどね」
「多分PHPとかだとリフレクションクラスっていうのを使うとプライベートメソッドとかも無理やり動かせたりするんですけどそういうのを使って本来開かない場所をバカッて開いてそうすることですねそうそうそうそうそれをアナリクロームって言いますそうなんだすごいな使っていこうはいっていうので色々あるんですよスローポークっていうノロマナツッコミとかね」
「っていうなんかちょっとアナルプローブちょっとネーメンすごいなと思ったんですけどだいぶねアメリカンな感じでアメリカンなのかどうか分かんないですけどちょっとあのネーメン面白いのはそうなんですがユニットテスティングアンチパターンズっていうもうトピックだけでも面白かったのでこれもちょっとスベランに載せようかなと思うのでぜひぜひ見てみてください日本語で訳してくれてる人もよくいるので結構いたのでうん」
「そこも見てもろてユニットテスト書いてる人は一度眺めてみるといいんじゃないでしょうかはいこれが付録にあったんですかえっと何でしょうね」
「ブロックにあのリンクを乗ってたって言うんですかあーなるほどねはいアジャイル開発で使いそうななんか情報のリンクみたいながいっぱいあって本とかブログとかなんかその中の1個ですねあーなるほどでブロックをパラパラ見ててうんあ面白そうって思ってググったら面白ってなってますよね」

「これを本に詳細に書いてたっていうよりは本当にリンクがペンって書いてたやつですなるほどというので以上最後はクイズ大会にしましたけどアジャイルプラクティスガイドブックで刺さったことを話すっていうところで暇を作るためのライセンス綺麗にコードを書こうとあとワーキングアウトラウドあとAIフレンドにドキュメントを書こうっていうところでした確かに」
「プラウドいいですねいるんですよねワーキングアウトラウドラウドプローブと混ざっちゃいましたアナルプローブアナルプローブに引っ張られてる」
「いいですね男子全員好きだからね確かにねえってなったもんねあの音声でも伝わってると思うんですけど僕がアナルプローブって言った後のノリさんとじゅんぺいの喜びはすごかったこれ音声に配信していいのかなってちょっと思いましたけど大丈夫じゃない本に書いてるし怒られたら消えるわこのエピソードが怒られたらそいつをアナルプローブしてやる」
「しょうもないよねやめましょうしょうもないんではい2回にわたってアジャイルプラクティスガイドブック紹介しましたが結構面白くてすごく読みやすい本だったのであと本の構成も面白くて普通にアジャイルの章立てがあるんですけどその章の最後にコラムでアジャイル業界でブイブイ言わせてるっていう言い方があってるかわかりませんがアジャイル開発を長らくやってて」
「エキスポートの人がそのトピックに関連する実践地みたいなのをコラムで書いてくれてたりしててそのコラムは結構面白くてコラムから引っ張ってきたのもこの2エピソードの中でも2つか3つくらいあったんでぜひぜひ読んでみてくださいはいじゃあちょっと時間ないんで締めちゃいますねそれではハッシュタグひまじんプログラマーでXでフィードバック募集しますので感想何とか何でもお願いしますご忌憚な意見を」
「待ってますあとは説明欄からGoogleフォームでお便り募集してますのでそちらもお願いしますはい待ってますでは暇を作って全人類明るい未来に一直線スローガンみたいなじゃあひまじんプログラムはこれからもみんなの暇を作ろうという情報を発信しますのでフォローとかお願いしますよろしくお願いしますまた次回バイバイこのキーボードは一生もの」
「ハッピーハッキングキーボード公式ラインスタンプ販売開始」