OSS
勉強会・LT
あと、資料は出してないですがPHP勉強会@東京でも喋りました
2024/01/12 - 01/13に開催された、PHPカンファレンス北海道2024(前夜祭+本編)に参加しました。
今回はLT枠で出したプロポーザルを採択していただき、参加&発表&懇親交流&北海道グルメ・・・の4泊5日の旅程を大変に満喫し、「はぁ〜〜カンファレンスまた行く〜〜」「はぁ〜〜札幌また行く〜〜」という気持ちになりました。
登壇した話についてはコッチに
PHPカンファレンス北海道2024に登壇しました #phpcondo - 大好き!にちようび
今回は、カンファレンスに参加して楽しかったな〜というのと暴力的に食事が美味しかったなぁぁあ〜〜〜〜〜〜という話に触れます
以下、食事の写真を脈絡もなく挟み込むスタイルです。
続きを読む2024/01/12 - 01/13に開催された、PHPカンファレンス北海道2024(前夜祭+本編)に参加しました。
今回はLT枠で出したプロポーザルを採択していただき、参加&発表&懇親交流&北海道グルメ・・・の4泊5日の旅程を大変に満喫し、「はぁ〜〜カンファレンスまた行く〜〜」「はぁ〜〜札幌また行く〜〜」という気持ちになりました。
この記事を書きながら色々と思い出して、また楽しい気持ち&幸せな気持ちになってきたな・・・
マネジメント(ロール)とかEMみたいな話をド直球でテーマにして、外で発表したのが初めてになります。*1
自分の状況を鑑みて、マネジメントやEMとかいっトピックで新鮮味をもって喋れるのは、1月か粘ってもギリギリ2月の関西か・・・と思っていた背景がありました。
そのため、このプロポーザルが採択されたのは、とても有り難かったです。良い機会をいただけたな〜と感じます。
個人的に、今までに「この人からマネジメントを教わった!」とか「マネージャーになってから、”やり方”を教えてもらった」とか「こういうマネージャーを目指したいな」とかとか・・・といった体験を持っておらず、どちらかというと自己流だし、試行錯誤をしながら何となく掴んでいったなーという感覚があります。 *2
その裏返しで、自分が経験したもの・目にしたものは「外に出せる事がありそうだな」とも感じる節があり。偉そうに教えを説いたり心理を掴んだぞ・・みたいな事では勿論なく、単純に「経験をdumpできそうだな」「いま、その時の自分が目の前に居たら、経験を少し積んだ自分からは何を伝える?」という部分です。
あと、PHPカンファレンス福岡でZOEさん(@for__3さん)が発表していたのが、自分から見て良すぎた&カッコよかったんですよね〜。
「俺も!ああいうの欲しい!!」って思っちゃって、やりたくなっちゃった面もありました。出来上がったものはぜんぜん違うけど。
良いプロダクト作りのための組織育成 健全なコードは、 健全な組織・健全なチームから - Speaker Deck
*3
そうした背景があり、提出したプロポーザルになります。
テーマ的に50分でも1日講義でも行けるものではありそうですが、LTを選んだのは、「結局は正解なんてないし、本人や組織・環境の状況によって全く知るべき事が違いすぎるよな」という性質を気にしての結果です。 1人ずつ話を聞かないとわからないよ!!って感じで。
完成度の高い「万人向けでエッセンシャルなおすすめリスト&プレゼンテーション」ができない、そうであれば、中身や課題設定に中途半端に突っ込むよりはLTでやるか・・・!と。
当初は「幅広くやる仕事である」ことを反映して雑多なトピックを織り交ぜようとも考えていたのですが、やはり25冊は多いようで全然少ない・・・・
発表内容を考えている内にそう実感してきたこともあり、「今まで知らなかったこと」と「自分が知って役に立ったという実感が強いこと」に焦点を絞りました。これは発表中にも述べた通りです。
(実際にEMやってみると、「教えるために読む本」「色々なレベルに合わせるためのレパートリー」みたいな本も知っておかないとなぁと言う感じで、プログラミングとか設計とかテストとかの本がゴソッと削られているのは、自分的には違和感も有るわけですが。。)
積読も含めて「候補になりうるかな」と考えたリストが、最終選の6倍以上あったのですが、そのままお蔵入りさせるのも悔しいし折角なので晒しておきます😏
12月に可処分時間が莫大にあった際に、全書籍にメモ入れて公開したいな・・・と思っていたのですが。全く叶わず。
また、発表時間的にギュウギュウだなぁ・・・と何度も素振りしながら感じていたんですね。
その中で、前夜祭の@ogi_chotdake_seさんの発表を聴いたら内容が素敵でして、どうしても入れたくなったのが「おまけ」のパートです。人から刺激をもらったり助けられたりって凄い大きいし、尊いことだよなぁ・・・と改めて心を動かされたので。
時に「マネジメント」って孤独な仕事とも思われがちなんですけど、全然そんなこともなくて、社内でも社外でもいいから仲間を集めて「チーム」としてコトに当たっていけたら、安心できるし強くもなると思うのですよね。
仲間の数だけ強くなれる、自分が強くなった分だけチームを幸せにできる!!!っていうのが、マネジメント職、本当にあると感じます。
自分も、元同僚でマネジメントをやっている・経験がある人(=EM業の先輩)に突然DMを送って「おすすめの本教えて!」「どうやっていたか教えて!」なんて聞いたりして、とても救われていました。
そういう経験ができる人は、増えてほしいです。
(折角なので、もしここ読んでくれている人で、自分でも良かったらドシタン?ハナシキコカするので、お気軽にご連絡ください〜〜😃)
で。
何度も素振りをして「勢いさえつければ5分でどうにかなるか・・・」と整えてあったスライド、コレを入れるために前夜祭〜当日に何枚も削られていった訳ですがw
時間にも収まったし良かったです。
イベント本番中に起きていることに呼応して変化・進化が起きるのは、生で同じ時間を過ごしている醍醐味ですよね!!
「5分間ずっと高速にスライドをめくり続ける」みたいな発表をあまりやったことがない(少なくとも外ではやってないはず)ので、いつものカンファレンスに比べて発表準備や発表後の疲労に独特なものが・・・
苦しくも感じつつ、プロポーザル提出時にこうした反響(↓)を頂いていたこともあり、最初に出したタイムライン(の書籍紹介に入るところまで)を意地でやり通したろう!!という気持ちで臨みました。
こんなプロポーザル初めて見たwww https://t.co/vtRsy1ZCjo
— ことみん (@kotomin_m) 2023年9月12日
実際の発表時には、現地の勢いで喋っているため秒刻みのタイムマネジメントは行われていませんが*4、プロポーザル記述内容と当日の発表資料と見比べてみてください!!!
(あと、各スライドの左下に想定経過時間を書き込んであります)
そういう他人には全く関係ないコンテキストでのチャレンジがあったのですが、SNSや懇親会でも温かい反応をいただけてホッとしました。
ホッとしたっていうのは控えめな表現で、「やりきったなーよかったなー!」と感じます。懇親会で出たご飯の美味いこと!! *5
中には「LT慣れを感じました」というような言葉ももらったりしたのですが、今回のは全然そんな感じでもなく・・・終わってお声がけいただいてやっと胸をなでおろした、っていう方が近いですw
(ゆっくり聴いてくれている人の雰囲気を感じながら喋りたい・・)
でも、やったことがないスタイルに挑戦できてのは面白かったです。いい機会をいただけました。
「マネージャーこそ1番必死で学んでくれ」というのは、時間の関係で削るかな・・・と最後まで悩んだ部分だったのですが、チラホラと反応を頂いており、残してよかったなと思います。*6
在籍していた会社で「新しくEMになる人に」というテーマで話した際には、「同じ職種(Webエンジニア)からの信頼を勝ち取ることが何よりも大事、自分と一緒に働けることがが胸を張れる出来事と感じられるか?を自問する」みたいな事を話したりしました。
また、Tech Leadに就任した時から「この組織の中では自分が1番成長し続ける」と決め、公言していたので、それを引き続きやっていた背景もあります。
・・・それ故に、「当たり前になりすぎている」ことだったので、5分の中でわざわざ言わなくてもいいかなぁ削るか??とも考えたのでした。
最終的には、「なぜ25冊もの本を(最初から)読まないといけないのか」に対する回答として使い勝手が良さそうだったので、残す判断に。
現地にいた人(オンライ視聴者も含まれてるかな?)にも、記録に残る形で反応をいただきました。
マネージャーこそ必死に学べ
— ℤ𝕆𝔼𝟛𝟘𝟚 (@for__3) 2024年1月13日
わかる #phpcondo
マネージャーこそ1番必死で学んでくれ、いい言葉すぎる・・・・・・・・・・ #phpcondo
— あすみ (@asumikam) 2024年1月13日
マネージャーこそ一番必死で学んでくれ#phpcondo
— おぎ@にわかPHPer🐘 (@ogi_chotdake_se) 2024年1月13日
マネージャーこそ学ぶ #phpcondo
— Y-Kanoh(かのう) (@YKanoh65) 2024年1月13日
#phpcondo マネージャーこそ一番必死で学んでくれ、すごくわかる(不安になってほしい)。
— 山岡広幸|合同会社テンマド (@hiro_y) 2024年1月13日
ツールやアウトプットは陳腐化するけど、自分の中に入った経験と知識は盗まれないし、そこから生み出されるアウトプットは無限に生成できるので学習することが一番効率の良い成長方法だよな。 #phpcondo
— そーだい@初代ALF (@soudai1025) 2024年1月13日
所属していた学部の関係で20歳前後の時代は「メディアは身体の拡張である」と言われ続けて育っていますが、生身の経験が追いつかない部分を先取りするのが「読書等のインプット」なのかなぁ〜という感覚はあり。経験値の先取りが、地理・時間を超えて出来るのですから、「本を読める」とか「講義を聴講できる」っていうのは恐ろしい武器になるよなぁ〜とは思うところです。
特に、EMになってからその感覚は強くなりました。
そーだいさん、懇親会で「自分が読んだことがない本が少なかった!」とクレームを頂いたのですが、「発表タイトル見てくださいよ何を言っているんですか!!」などと会話をして笑っておりました (”新しくEMやってみる人”なのになぁ・・w)
あと、「失敗の本質よりも、失敗の科学をおすすめしたい」とのコメントも頂いています。
俺のおすすめ本!!みたいなのを聞いてみたいなぁーって思いながら資料を作ったりもしていたので、ありがたかったです。 (積んであるので読まないとなぁ)
紹介した書籍の中で、いくつかの共感的なリアクションをいただいています。
わかる〜〜〜〜良い本ばっかだもんね〜〜そうなんだよな〜〜〜〜〜という気持ちになりました。
「具体と抽象」読みやすくてよい! #phpcondo
— 青ごへいもち (@blue_goheimochi) 2024年1月13日
High Output Managementはいい #phpcondo
— ℤ𝕆𝔼𝟛𝟘𝟚 (@for__3) 2024年1月13日
他者と働くまじでおすすめ #phpcondo
— しめじ/Kaga (咳喘息) (@TAKA_0411) 2024年1月13日
エンジニアリング組織論への招待、いい本#phpcondo
— 0yu(おゆ) (@yud0uhu) 2024年1月13日
紹介された中では、個人的にはピープルウェアを激推ししたい。#phpcondo
— 武田 憲太郎 (@KentarouTakeda) 2024年1月13日
SNS上での反響については、特に「自分がいままで一方的に活動やアウトプットを見たりお世話になっていた人」「本読みました!!」「Podcast聴いてます!!」な人からのリアクションが付いたのは、恐れ多いし嬉しくて舞い上がっちゃいますねぇ〜〜
(多分、@asumikamさん → @ryuzeeさんをきっかけに跳ねた感じが)
現時点でそれな of the year「マネージャーこそ1番必死で学んでくれ」/ #phpcondo 新しくEMやってみる人にオススメしたい本を5分で25冊紹介する - Speaker Deck https://t.co/NmgbZVKB2a
— Ryutaro YOSHIBA (@ryuzee) 2024年1月13日
言及していただいただけでも凄い嬉しいのですが、「それなof the year」をもらいました。今年入って10日くらいの時点での出来事。
25冊の中にも、その前の候補リストにも、チーム・アトラクタな人たちの本がめっっちゃ入ってます。
furoshiki.fm、いつも面白く聴いてます!!の人だ・・EMじゃないけど割と読んでた https://t.co/Mc5kVAcLZ1
— HIROMITSU (@hiromitsuuuuu) 2024年1月13日
自分より遥かに先の位置にいる人に「納得感ある」と言われるのは、ガッツポーズものでしたここに紹介されている本、たしかにひと通り読んでるのでとても納得感がある。 https://t.co/JKqwnZRds4
— だいくしー (@daiksy) 2024年1月13日
「スクラムの拡張による組織づくり」も入れるか??と思ったりしつつ、「はじめてEM」だと25には入らないかもなぁ・・・という感じになりましたが、読んだ方が良い本だよなぁと思っています
「マネージャーこそ1番必死で学んで」ほんそれ。自戒を込めて。習慣化すると苦にはならなくなる(N=1) 紹介されている本は6割くらい読んでた。感覚的に合っているし、良書ばかりだな。未読は2,8,12,13,14,16,18,19,23,24。 / “#phpcondo 新しくEMやってみる人にオススメし…” https://t.co/Sbzt6NlItG
— Kent Ishizawa (@agnozingdays) 2024年1月16日
ブログ「勘と経験と読経 」、ここの記事をきっかけに何冊の本を買うことになったか分からないくらい大きく影響を受けているのですが、その中の方の目に留まって「感覚的に合っているし、良書ばかり」なんて嬉しすぎます。ありがとうございます。
私のスライド紹介いただいて嬉しい、リンク押せないけど ><https://t.co/7zVKhK0xwq pic.twitter.com/nYxGruqC6Y
— Yuichi TSUNEMATSU (@tunepolo) 2024年1月13日
本を知る切っ掛けになった素晴らしい発表、引用紹介させていただいたらオリジナルの発表者にリーチするとは!
"これから学ぶ" システム思考 / System thinking introduction - Speaker Deck
— こにふぁー (@konifar) 2024年1月13日
見てる: "#phpcondo 新しくEMやってみる人にオススメしたい本を5分で25冊紹介する - Speaker Deck" https://t.co/o4BSLtyZ7Y
— azu (@azu_re) 2024年1月13日
一方的に知っているだけの人に届くので、いんたーねっとってすごい
#phpcondo 新しくEMやってみる人にオススメしたい本を5分で25冊紹介する - Speaker Deck https://t.co/WVVSEkO5Ev
— Futoshi Endo 🎮 (@Fendo181) 2024年1月14日
Podcastの人だ!!(違う)
という感じで、いい経験になりました。機会をいただけてありがたかったです。
長くなったので「登壇以外の」については記事を分けます!
*1:会社のブログで触れたり、読んでもらったPodcastで喋ったりはしましたが!
*2:もちろん、すごく助けになったり仕事をしやすくしてくれた直上はチラホラいます!!どちらかというと、マネジメント志向がなかったが故に、あんまり意識的にマネージャーたちの振る舞いを見ていなかったのかな〜って気がする。気付いていないことが多くありそう
*3:えっ!デブサミでもアップデートが聴ける?! https://event.shoeisha.jp/devsumi/20240215/session/4859
*4:用意していたスクリプトをバサッと削ってアドリブしまくっているのでねぇ
*5:もちろんココで言っているのは心理的な意味合いですが、実際に出てきたオードブルのクオリティも高かったw
*6:それこそ、「ほう〜こういう見方もあるのか〜」というのは自分になかった視点なので、面白かったなと感じます。 https://twitter.com/for__3/status/1746086437752340788
という訳で、どーん
前に記事を書いたやつです。
daisuki.nichiyoubi.land
を書いた後に、先月のPHP勉強会@東京でもお喋りさせてもらったやつでもあります。
(コマンドしか提供しないので、ワークフローファイルを自分で用意する必要がありますが)PRのコメントで起動する使い方が便利じゃない・・・?って思っています。
ブログや勉強会で話をできたことで、「読みやすい簡単なコードにして、面白がってもらおう〜!」という欲は消化されまして、複雑なコードにしました。
クラスが分割されています。(テスト書きにくい部分とかコーディングが面倒くさくなっている部分から逃避していったら、何となく行き着いた〜って感じ)
原型となったプロトタイプ的なスクリプトも同一のレポジトリ上に同梱されております。
どこにそんな時間があるのでしょうか・・・・・・・という感じではあるのだけど、何となくイメージをしていた所までは書いて。
で、ズルズルと時間を費やしていってもなぁ!!と思ったので見切りです。
とりあえず、PHP勉強会のLTで「今後やりたい」と触れていた内容はコレでクリア! 本当はLTに間に合うようにコード晒しておきたかったけど、時間切れしちゃっていましたね
gistで済むようなスニペットレベルではなくて「コード晒してみるか〜」となったのは、流行りのAIさんの力が大きいですね!面倒くさいことはhogehogeにやってもらおう。
Jetbrains AIが来たので、利用しています。
やってもらったことは・・・
逆に言えば、「AI使ったドキュメンテーションってどのくらい使い物になりそうなの?」というのに興味がある人は、このレポジトリを覗いてもらうことで雰囲気がつかめるかもしれません。
個人的な感じとしては、「(英語で書く関係もあって)ドキュメントを書く部分は9割以上はやってもらった!!」という一方で、「他人と開発するもの(OSSへのコミットとか、業務でのチーム開発とか)には、ノーチェックで使うのは厳しいのかな」というところ。
コレは「人間の手で侘び寂びを加えて・・・」とかって話ではないですけど、やっぱり情報の足し引きが出来ていないと、意味のあるドキュメントって書けないよねーという感じです。単純に自分が使いこなせていない!コンテキストを適切・十分に渡せていない!!が正しいのではないか、と思う。
(逆に言えば、そのための操作方法やコツを調べながらやるのが面倒くさいな・・・ってなっている状況ですね、と。)
他方で、やっていない(やってもらえなかった)こととしては、テストの作成とかですかねー。
これも「もっと適切に情報を引き渡せれば」という面が大きそうですが、自分としては「まだ自分で書いた方が全然早いし使えるな」って感覚です。
ブラッシュアップとか細かい所をついたりとか、「叩きをこちらが書いてフィードバックをAIにもらう」って形ならマッチするかも?
今回、設計面とかテスト面を磨くつもりがそんなに無く、「とりあえず気になっている所を動かしてくれる程度のが備わっていればOK〜」ってノリだった(=あんまり拘っていない)のですが、そっち側で活用の余地がありそうかな?って期待です。
「ここはDIコンテナを使って外部から注入できるようにしましょう」とか言われるんじゃないかな、どうなんだろ。
あと、(同様の理由で)Jetbrains AIにある「Find Problems」「Suggest Refactoring」のメニューも使っていません。こいつら面白そうですよね。どっかで使ってみたい
この記事は積読 Advent Calendar 2023、2日目の記事です。
昨日はげんえいさんの まだ読んでないけどおすすめしたい本 2023年版 | gennei's blogでした。
随分と面白そうな書籍が紹介されていて・・・というかこの中から実際に”積んで<購入して>"しまったのですが、これが25回続くんですか。恐ろしい…
ChatGPTさんに挿絵も書いてもらいました。
本に飲み物を置かないでおくれ。
さて、私からは、「この言葉を浴びたい!!!!」と思って買ったbut積んでいる本たちの紹介です。
思想や知識と出会うのは「旅」のようにも感じます。
そんな可能性を予感する本が「もう自分の家に積んである!」というのは、すなわち、「旅に出る準備」は出来ているという事です。
積んでしまえば安心、いつでも出発できますので。
・・・・これを「安心」と呼ぶのか「慢心」と呼ぶのかは、人次第でしょう。
という訳で、5冊ピックアップしてみました。
順不同で紹介します。
翻訳の発売当初から一気に話題になっていた『Team Toplogies』で、こんな言葉が引用されています。
自分以外にも、強く印象に残っている人が多いのではないでしょうか?
ハイパフォーマンスなチームを解散するのは、単なる破壊行為では済まない。企業レベルのサイコパスと呼ぶべきものだ
この出典が、こちらの『Project Myopia』になります。
プロジェクト単位での「コツ」「ノウハウ」は、日本語でもアクセスできるリソースが充実していると感じます。
しかしながら、プロジェクトを超えた先の、「機能する安定したチーム」を実現し、育むには・・?という情報がもっと欲しいな、とも思います。自分も組織周りの仕事をしながら、良い文献がないかなぁと探していました。
そんな時に、チームを解散させる事に対して強い言葉で批判している本がある!!!となれば、気になっちゃいますよね。
「サーバントリーダー」、十分に普及していてよく耳にする言葉だと思います。
何となくは分かる。が、しかし「理解がふんわりしていないか?」とも感じます。
ロバート・K・グリーンリーフ博士は、サーバントリーダーシップの提唱者です。
その人の著述が書籍化されている、よし当たってみよう!という次第です。
自分の周りでも、「自分はサーバントリーダーである(を目指している)」と発言している人を目にすることがあります。
しかし、その実、「自身の考えを述べない」「しっかりと周りを導いている感じがしない」といった振る舞いが見られて、これは機能不全的な中立と何が違うのか?とも感じました。
ただの「執事のような親切なお世話係」であれば、それで良いのだと思うのですけど。「リーダーシップ」を持っているとは言えないのでは・・・?という違和感です。
多分、本来はそうじゃないんでしょうね。
この言葉を嫌いになる前に自分の目でちゃんと見ておこう、と考えて積んだ1冊。
ワインバーグのシステム思考法 ソフトウェア文化を創る〈1〉は興味深く刺激に溢れる本なのですが、その中で次のような一節があります。
クロスビーの『品質はタダである』という本を読んだ方々は, ソフトウェア品質についてのわたしの見方がクロスビーの見方とおおむね一致していることに気がつくだろう。
G.M.ワインバーグ・大野 徇郎訳 (1994)『ワインバーグのシステム思考法 ソフトウェア文化を創る』共立出版, p.17
「品質はタダ」という言葉自体もキャッチーですが、ワインバーグ氏の品質に対する考え方の軸みたいなものを深く眺められるのであれば、それは触れておきたい・・・と思ったのです。
加えて、この言葉を聞いた時に、このブログ記事を想起しました。
「品質“実質”無料キャンペーン」を開始しました - pixiv inside
当時も「すごいインパクトのある呼び方だ〜」と思っていたのですが、元ネタがあるのか!!!と。 今、改めて読んでみると、本文でも触れてありました。
実際のテーマにする際には、クロスビーの「Quality is Free」にあやかる面もありました
当然、「質とスピード」のt-wadaさんも言及があり。
品質を犠牲にすることでソフトウェア開発のスピードは上がるのか? 和田卓人氏による 「質とスピード」(後編)。デブサミ2020 - Publickey
ここまで来たら、もう原典にも興味津々で、買うぞ!!!と意気込んでいたのですが・・・
日本語訳のクオリティ・マネジメント―よい品質をタダで手に入れる法も、原典のQuality Is Free: The Art of Making Quality Certainも手に入りにくそうな雰囲気でした。
なんとか、「Quality is Still Free」は中古で入手できたので、読むぞ!!!と思っているところです。
業務上、あるいはアジャイルソフトウェア開発やリーダーシップについての学びを進める中で、組織や企業における「文化」は自分の中で最重要なトピックの1つになりました。
「良い文化を作ろう」「文化を強く浸透させよう」と、こんな調子ですね。
しかしながら、「じゃあ企業における文化とはどんな存在なのか・・・説明できるのか?」と思ったタイミングがありまして。
気になってしまったものは仕方ないので「元ネタと呼んで差し支え無さそうな存在に当たってみよう」です。
エドガー・H・シャイン博士の書籍は、一気に家にやってきては増殖を続けているような印象がありますね・・・・
「組織文化とリーダーシップ」も気になっているのですが、こちらはまだ手に入れておらずにいます。
これは「読む」という感じなのか・・・?という気もしつつ。
それこそ「UnitOfWork」とか「ActiveRecord」とか、色々な名称・パターンの元ネタといって差し支えないはず。
なぜ読みたいのか?も、なぜ読めていないのか?も、同業の皆さんだと思い浮かぶ話はありそうで、多分それはその通りなのではないかとも思います・・・😇
まぁでも、本当にどこかで目を通しておくべきだとは思っています。がんばろう
「元ネタ(原典)に当たってみよう」というのは、割と大事にしている気持ちです。
『チームが機能するとはどういうことか?』を呼んだ時には「心理的安全性って言葉(を口にする人)、何か嫌いだな〜」って思っていたのが覆りましたし、「顧客が本当に必要だったもの」も『オレゴン大学の実験』を読んだりアレグザンダーのパターン・ランゲージについて知って行くことで、より面白く感じられるものになりました。
割と最近になってから読んだ『人月の神話』も、非常に刺さると同時に発見もありましたし、XPなんかも『エクストリームプログラミング』を読んでみると「単なるプラクティス集ではなく、とても豊かな物語が込められているかもな」とすら思えたりもします。
これは、決して「古典」に限った話ではなくて、「みんなが知っている言葉」は「ひとまず本を読んでみておく」というのは大事だなぁと感じます。
例えば最近で言えば「4keys」「チームトポロジー」も(ややバズワード的に?)よく出回っている印象もあり、表面的に切り取って「何となく分かったつもりになって真似をする」なんて勿体ないですよね。
労を惜しんだり高を括って損をするのは悔しいので、謙虚に色々な知識・情報に触れていきたいものです。
つまり、これまでもこれからも本が増え続ける・・・・!
お疲れ様でした。
会社などでPHPStanを導入したり荒らしたりする事があるのですが、「まずは入れてみた」状態においては、baselineの記述量をなくしていくぞ!!!!という取り組みがあります。
最終的にはbaselineがなくなるのが健全な筈ですので、その解消作業の進捗やトレンドを分かり易くしておきたいのです。
そんな時に、ふと見つけたのが staabm/phpstan-baseline-analysis でした。
ほーん、気になるhttps://t.co/izhpFQuqj2
— 今日も誰かのにちようび(おいしい鮭親子丼) (@o0h_) 2023年10月22日
コレは、「baselineファイルをソースとして、分析することで、見えてくるものがあるのではないか?」という面白ツールです。
とっても素敵なアイディア!
Software Architecture Metricsを読んだ時に、「GItのデータを用いて、各種活動の発生状況や対象について分析する」といった観点が紹介されていて、なるほど〜と思った*1のですが。
「普段の活動の中で何かしらの動機をもって作成されたり修正されたデータや、あるいは”品質だ!!!管理だ!!!"という意図がなくとも生み落とされる記録」みたいなものであれば、自身の成果物や活動についての状況を示唆するはずだな〜確かに〜〜〜!という。
で、実際にphpstan-baseline-analysisは使えそう・・というか「(ignore)エラー総数だけでも追いたい、俺が欲しい!」と思ったので、セットアップしてみました。
データは加工していますが、出力イメージはこんな感じになります↓
集計を実行するレポジトリを github-org/phpstan-baseline-watch
、集計対象のレポジトリを github-org/nanika-no-pj
という名前だとします。
github-org/phpstan-baseline-watch
には、
github-org/nanika-no-pj
をcloneしてくる && 集計を実行するという機能をもたせます。
github-org/nanika-no-pj
は、 .phpstan-baselines
に(複数の)baselineファイルを持てる構成になっています。
こんな構成になります。
. ├── .github ├── .gitignore ├── composer.json # phpstan-baseline-analysisを取り入れる ├── composer.lock ├── nanika-no-pj-src # 分析対象レポジトリ ├── docs # gh-pagesの出力対象 ├── main.sh # 集計実行のロジック ├── tmp # 集計時一時ディレクトリ └── vendor
$ cat .gitignore /vendor/ /nanika-no-pj-src/ /tmp/ !/tmp/.gitkeep
実際に集計をキックしたり、その前段階のデータ集めをする実態は、GitHub Actionsのワークフローに委ねることになります。
処理の流れは
というものになります。
actions/checkoutは他レポのcloneは可能ですし、fetch-depth
を指定することで最新のコミット以外も取得可能です。
今回は「サブディレクトリを掘って、そこにcloneする」という方法を取りましたが、submoduleなんかでも自然だと思います。
ローカルで作業する際に、submoduleではない「自由にいじり放題なディレクトリがあると楽だった〜」くらいのフワッとした理由で、このような形にしています。
workflowファイルに直接書くにはやや煩雑になるので、シェルスクリプトを別出しします。
ざっくりした流れを掻い摘むと、
.php
ファイル*2ごとに、集計の実行を行い、一時ディレクトリに結果を出力するとなります。
ちなみに、このスクリプトの要素要素については、殆どChatGPTさんが書いてくれました。ありがてぇ
いくつかポイントを説明していきます
nanika-no-pj-src
の下で一時的に作成しているので、イテレーションの冒頭でお掃除していますgit rev-list -n 1 --before="${day_before} days ago" HEAD
ってHEADにならない?・・・については、ほぼデフォルトのまま(強いて言えばディレクトリを /docs
になるように変更したり、スケジュール実行を入れたり)なので、特に言うこともないです。
GitHub上で、PJの settings > pages に行って Build and deployment
を GitHub Actions
にしてあげれば、雛形を出してくれます。
君も鬼になって、baselineをゴリゴリに削っていこう!