美しいコードを書くために他人の良いコードを参考にしたいけど手元にそんなビューティフルなコードがないよ〜!ドラ◯も〜〜〜ん!という状況に陥った時のTips
「この番組は駆け出しエンジニアの順平と先輩エンジニアの海地則が送る駆け出しエンジニアを中級エンジニアにレベルアップさせるラジオでございますいい声してますね」
「やってまいりました今日もレベルアップをしていこうと思ってるんですけれども今日はですね現場で開発してて見つけたあれ実はこれ他の人あんまりやってないんじゃねえかノウハウをですね共有していこうかなと思っておりますめっちゃ気になるちょっとでもサクッとエピソードかもしれない」
「うんうんうんにぎやかしてます全力でもうバチバチにぎやかしてくださいはい今回ですね状況がちょっとマニアックなんですけどやっぱ人って美しい行動を書きたいじゃないですかはい書きたいなぜ美しい行動を書きたいのかっていうのはですねいろいろあると思うんですけど一つはかっこいいからかっこいい二つは楽しいからうん三つ目はあーあー」
「何?ないマジックナンバー3にとらわれちゃってるじゃんあまりにもまず3つかなと思ったんですけど僕はでも割とマジでこの2つのモチベーションでそう書いてる気がするんですよねまあなんかちょっと最初の2つに含まれるかもしれないですけど自己表現ですよね本当にそうめっちゃそう思う」
「でもこれを追求することによってよりプログラミングを楽しめてるっていう感じがするそうですねなんか書道みたいな書道ね綺麗に字書けるとおもろいしセオリーもあるけどオリジナリティちょっと破棄してこうやって書くんだみたいなそういうのもあるみたいなダンスですねダンス書道に詳しいねダンス?なんでもいいよなんでもいいよ」
「アートみたいなねアートねあとあれよねあの稼働とかねなんでもいいじゃんだから知らねえんだって稼働の知識針矢崎さんしかしね盆栽とかもそうですかねもういいよ分かったよもう構成分かったってもう美しいコードを書きたいんですけど」
「なんかこう微妙に調べても出てこないモヤモヤみたいなのがあった時に身近に解決策を持ってる人がいないぞっていう時のまあまあためになる解決方法結構良いんじゃないですか結構良いでしょ結構良いこれをね」
「提供したいなと思ってますありがたいもちろん前提条件としてちゃんときれいにコードを書けるためのベストプラクティスを勉強してますよっていうのは大事ですまあまあまあ暇プロ聞いてれば大丈夫ですよそうなんですよ聞いてれば大丈夫なんですよこの基礎ないとねやっぱり出てきた記事を理解できなかったりしたりとかねそういう問題が起きるんで」

「何がどういう風に書くのがいいのかっていうセオリーをちゃんと勉強しておくことは大事ですよとはい頑張りますその上でなんか微妙なことがあるんですよ調べてもなかなか出てこないそんな時僕はいつもこうしてますGitHubでその技術を使って作られているOSSを探すんですよなるほどなんか言ってる意味は分かるんですけど具体的にどうやるかちょっと気になるですね」
「これねステップRっていうかこれ実はOSSのプロジェクト探すのめっちゃ大変なんですよそんな気しますよ例えばララベルで僕普段ララベル使ってるんですけど」
「ララベルで作られてるアプリケーション探してきてそれを参考にしようみたいなスター数も多くて強い人が入ってたらいい行動になってるだろうっていうモチベーションで探すんですけどGitHubとかで何も考えずにララベルOSSとかで調べるとまずララベルがOSSなんですよララベルで使われてるライブラリがOSSなんですよ」
「なので非常に出てこない検索してもちょっとスクロールしていくとそれっぽいのがあるんですけど」
「正直いいかどうかよく分からないのが出てくるとそのイメージさらにスクロールしていくと何か知らんけど中国語のリポジトリがいっぱい出てくるんですよ知らないそこまでリグったことないですリグったことないですか中国語のリポジトリいっぱい出てくるんですねそうそうなるとリポジトリ名とかはもちろんアルファベットなんでなんとなく何をしたいのかっていうのは分からんくもないんですけど」
「ReadMe中国語で書かれてるんでちょっとよくわかんないなってなっちゃうんですねなんか折れますよね多分Googleのプラグインとかでいい感じに訳せんのかもしんないんですけどその訳本当に合ってるのかは検証しようがないですもんねそうなんですこれ探すのちょっと大変だなって思ってたところ先日100%見つかる確実な方法がわかりました本当?すごいっすねこれはこれね」
「チャットGPTに聞くといいんですよどういうことですか」
「どういうことですかめっちゃそのままなんですけどチャットGPTに聞くんですよいやいやいや違う違うそれは分かったってそれは分かったんですよ僕一応今ちょっとN2なんですけどガラベルとビュージェイスでやってみたんですねこれ実際やってみてほしいな手順説明しますねこれ2ステップ踏むんですけどまず」

「ララベルで書かれているOSSのリポジトリを教えてくださいってチャットGPTに投げかけるんですよちょっと待ってもらっていいですか何でやるのかなファーストAPIでしょ自分が使ってるやつとかいい書き方を知りたい技術フレームワーク系がいいですねリポジトリを教えてすると僕今カイチの画面見えてないんで僕の時の経験を話すんですけどライブラリが出てくるんですよちょっと共有しますはい」
「そうですねライブラリーが多い気がするライブラリー出てますよね今ライブラリーです終わるマッパーとかこれララベルの時もビュージェイスの時も起きたんですよだから次問いかけるんですね違う違うそうじゃないって本当に嘘だったそうですララベルで作られているアプリケーションのリポジトリですって言うんですよファストAPIだったら」
「PastAPIで作られているウェブアプリケーションのリポジトリですライブラリじゃないですっていうアピールをするんですねこれで投げかけてみてくださいさあどうだウェブアプリ出てきたっぽいどうすかこれちなみに僕の時も全く同じパターンでした1回目じゃ絶対ライブラリ出てくるただこの中でいいやつどれか分かんなくないですか」
「これはもう自分の目で確かめてください開くんですよとりあえずリンクをそうするとGitHubだいたいGitHubのリンクになってるはずそうですねGitHubのリンクになってますGitHubのリンクになってるんでGitHubでだいたい見るときってフォーク数とかスター数見るとそうですね404が多いねだいたい見れないえ?」
「だいたい見れない嘘でしょなんで?嘘でしょ見れないちょっと待って次じゃあそのアプリケーション名で普通に検索してみたらどうなります?確かに出そう出ないじゃないですかやばいN3個目にしてまあいいや1個出たから1個出たからいいかとりあえずチャットGPTは5つぐらい出してくれるんでうんうん」
「その中から存在するリポジトリをですね見てみるとちなみにちょっとこれはもしかしたらFastAPIがあれなのかなRailsでやってみてもらっていいですかRails正直Railsでこいつは絶対多いと思うんですよね確かにRailsは多そうですねどうしようお待ちくださいこれ最初からRailsのウェブアプリって言っちゃダメなんですかそれでもいいかもしれない」
「きたー英語うわー一発で出るやんレイルズは結構出るないいですねビュートララベルも出ました多分だからリアクトも出るはずうんうんうんめっちゃいいすごいこれを参考にすると結構自信がつくなんというか自分が書くコードの裏側の説得力というか確かにあのー」
「これ特に今回仕事で使う必要があったケースがVue.jsの時だったんですけどVue.jsってバージョン3からコンポジションAPIっていう全然今までと違った書き方で書けるようになったんですね一方で結構古い書き方のまま作られてるアプリケーションが多くて新しいのにした時になかなかいい書き方のサンプルっていうのが見つからなかったんですよ」

「うんうんうんっていう時にこのOSSを探してみたんですけどGitHub上だと見つからなくてチャットGPTに聞いてみようってその時はララベルのララベルじゃないVue.jsの3とかだけじゃなくてちゃんとコンポジションAPIで書かれてるやつって聞いたら5件中5件ちゃんと存在するやつですげーそれで参考にしてなんか方針決まったみたいなところがあったので」
「めっちゃいいこういう使い方もできるんだと思って探し物にいいなって思いましたね検索で出てこない探し物に使えるんだっていうのが結構新たな発見だったのでスーパープチチップスでした検索の代わりに使うっていう使い方は結構メジャーだと思うんですけど行動を探すっていう切り口はすごい新しいですねうん」
「なので見つけたプロジェクトがいいかどうかは結構運次第かもしれないですけどこれ多分試行回数増やしたらまた別のやつ見つかるんじゃないかなって気がするので他にも教えてって言ってくれますよねだいたいそうそうそうとかもしかしたらもうちょい状況を詳しくしても出てくるかもしれないですねもともと10件教えてとか言ったらもともと10件教えてくれるでしょうしなるほどなるほど」
「そうですねなんでこういう使い方をして探すとより今の自分の状況に近い参考になるリポジトリが見つかるんじゃないかなとOSSやってるぐらいの人って結構レベル高い人が多いと思うので一般的な職業エンジニアよりはその辺の人よりはねはいと思うのでぜひこれを使って」
「美しいコードを書きたいけど何がベストプラクティスかわからなくてもやもやしてるよでも近くに解決策を持ってるドラえもんみたいな人がいないよっていう時の解決方法にですね生かしてみてくださいというエピソードでございましたチャットGPTでドラえもん探すんですねそういうことドラえもんだよねほぼ知識のドラえもんチャットGPTがねそうチャットGPTは知識のドラえもんだ」
「ちなみに質問なんですけど多分具体的にコードを書いてて分かんないってなった時ってこういうことやりたいけどどうやって書いたらいいんだろうみたいなものを探す時に多分OSS探しに行くと思うんですけどそのコードの中でそれを探すのってどうやってやるんですか伝わります?今リポジトリ見つけたとこで終わってると思うんですけど実際どうやってますか?」
「でもこれちょっと悩みの質としてちょっとね別の時かもしれないそうなんですね例えばフレームワークとか使うとこの書き方もできるしこの書き方もできるしこの書き方もできるけどどれがいいんだろうみたいな絶妙などれがいいのパターンみたいなどれがいいのパターンどれがいいのでいいじゃんそのまんまなんですけどどれがいいのパターンの時とかが」
「結構この参考にするタイミングかもしれないそもそも使い方分かんないときは使い方まず調べるかもっていうそっちの使い方に関しては結構出るじゃないですか普通に検索でまあそうですねただドキュメントとかもさこの書き方もできますしこの書き方もできますよみたいなの書かれてるけど実際どっちがいいのみたいなの分かんないじゃないですかっていうときの参考になるかも」

「どれがいいのがどっちで書かれてるかを見ると思うんですけどどっちで書かれてるかを探すのってどうやってやってるんですか例えばフレームワークとかだったらさそもそもディレクトリ構造同じケースが多いじゃないですかどこかに何か同じようなのが書いてますねそうそうそうなのでその箇所をまず見に行くでプラスリポジトリ1個だけだと」
「正直どれが参考になるのか分かんないのでそこはね統計と同じ手法をとって数が多いやつが正義なんじゃないかっていう発想でやりますね数が多いっていうとその2パターンあった時にどっちのパターンで書かれてるのが多いかってことですねそうそうそうそうリポジトリ全体で検索かけたりするってことですか僕はファイルツリーそのままたどりますねそうなんですねなんかディレクトリ構成を見たい気持ちがあるというか分かる分かる分かる」
「そうなんだよディレクトリ構成参考にするときとかもいいかもと思ってますそれはありますねやりました僕もリミックスのアプリ作るときにディレクトリ構成どうするかページングのURLとディレクトリ構造が一致してないとダメなんでそこは書きようがないんですけどそれ以外の部分どうしようかめっちゃ迷ってあー」
「リミックスはたまたま公式サイトからたどれるリミックスめっちゃ詳しい人たちはこうやってアプリを作りたいっていうリポジトリがあるんですけどそことか結構見たんでそれを見て思ったのは確かにOSS参考にしたらいいアーキテクチャのソフトウェア書けるかもっていうのは思いましたねそのリミックスのドキュメントめっちゃいいねめっちゃいいよかったです助かるってめっちゃ思いました」
「あんまり見たことないかもそういうのそう思います僕も他のアプリ見たときにあんまりなかったんでちょっと前にひまわプロにお便りくれたちょっと名前忘れちゃったんですけどなんとかサンプルとかシンプルはいはいはい普段で見るっていうのはありましたけどうん」
「公式でやってるやつはリミックスのフレームワークへのコントリビューターで作ってるリポジタルらしいんでそういうの初めて見ましたねめっちゃ良かったサンプルとかイグザンプルとかそういう系のシンプルなんちゃらとかってシンプルすぎてどうなんだろうみたいな時あるじゃないですか思いましたリミックスの時に一回シンプルのやつ見に行っていやー」
「こういうことじゃないんだけどなってめっちゃなりましたなんか世の中の課題を実際解決しようとして作られたアプリケーションがどういう試行錯誤してこうなったのかが見れるのがOSSだと思ってるというかそうですね」
「ちゃんと保守することを考えて作られてるはずなのでマジでそれいろんな人が書いても一貫性が壊れないように考えられてるというか動き続けられるような工夫が入ってるというかっていう感じですよね一方サンプルは保守されることは考えられてないでしょうからねとりあえず動かすなんでしょうねチュートリアル的にそれはあるかも」

「いやいいことを聞きましたありがとうございます探すの難しいんでチャットGPT使ってみてくださいという素晴らしいでしためっちゃいいめっちゃいいわGoogleより優秀そうだそういうところ本当にそう思うGoogleとかでもやっぱね英語の記事出てくると読むのしんどい気持ちになっちゃうからなこの程度のモチベーションの時わかるわかる」
「一方日本の記事はほぼないからなこういうのないっすね逆にチャンスかもしれないですけど作文も自分もないんですねOSFマニアみたいな最高ですニッチだなめっちゃニッチですね情報重複してるしな和訳しやすくなったらいらなくなるそうまあそうねその通りだわありがとうございます本当に仕事で使いたい」
「そういうこといいねフレームワークの勉強するときもいいかもしれないですねそれもある自分でアプリケーション作りたいときとかにこのリポジトリを参考にしてみるみたいないいかもねですねありがとうございましたお便りですかお便りを呼びますラジオネームアランケーキさんからのお便りですアランケーキさん元ネタなんだケーキって何」
「元ネタありそうだけどわからない多分ないチューリングをケーキに変えただけ多分アランチューリングとケーキが大好きなんじゃないかななるほどね勉強しただけなんだね勉強しただけで教えてください感想からいきますいつも犬の散歩中に聞いてますキクノウンに夢中でつい散歩しすぎてしまいますワンちゃん大歓喜ですね犬はいっぱい歩きたいんだねいっぱい歩きたいんで」
「モチベーションが下がっているときお三方の声を聞くだけで不思議とモチベーションが上がりますこれからも頑張ってくださいということでありがとうございます今プロは散歩と相性がいいと噂ですからねそうですねポッドキャストが基本的にそうですよね散歩とか家事本当に広げてください散歩はやったほうがいいんでね運動してみてもらうね」
「ポッドキャストで話してほしいことGitBattlerについて話してほしいです現在はベータ版を公式サイトからダウンロードして使うことができますバーチャルブランチ機能などのGitの通常ブランチ操作とは違った機能を提供していて複雑な操作をより直感的に行いますのりさんなら興味あるはず使ってみた感想を聞きたいですと」
「ということにのりさんに興味あるはずというのでのりさんが使ってみました本当にありがたいありがとうございますそうですねちょっと使うのに時間がかかってしまったんですけど」
「真摯な対応です素晴らしいと思います本当にこれですね使ってみたところですね僕は結論使わなくなりました何なんですかちなみにGitBattlerってGitBattlerは次世代GitGUIツールだと思ってくださいGUIのクライアントGUI次世代なんですね次世代でしたねGUIのツールってだいたいUI違うだけで機能ほぼ同じなんですよ」

「見え方とか違うから使いやすい使いにくいの個人のあれはあると思うんですけど特的にはフォークとかソーストリートがすごい使いやすいタイプでビットクラーケンみたいなやつはね高機能すぎてよくわからなかったんですよねVSコードとかについてるやつも正直あんまり好きじゃないあーそうなんですねでこのGitBattlerは操作感まずすごくいいっすなんかヌルヌル動くでえーとなんかその」
「これまでのGUIツールと結構違ってバーチャルブランチみたいなブランチじゃない仮ブランチみたいな概念があったりとかあとコミットとかでブランチ名とかを結構自動でやってくれるんですよそうなんですねそう」
「僕はねそれがねすごいチャレンジだなと思う反面本当に自分でやりたいなと思ってしまっていやーなんかプロジェクトごとに規約あったりしますしねコミットの段階とかねブランチメーターもそうですねそうなんですよそれがちょっとねなかなか現場で使うのもあれだし個人でやっててもなんかあれコミットメッセージ入ってるって言って全消ししてコミットメッセージ書くみたいな感じだったのでうんうん」
「そこがねあんまり肌感合わなかったっていうのはありますかねなるほどなプロジェクトとしてはすごい良いと思っててどこが作っても同じようになってしまうGitのGUIをさらに次のステップに進めようとしてる感じというかチャレンジですねすごいその辺がすごいいいなと思いましたねそれ系の」
「それ系のツールだとさDBクライアントとかも進化の幅あるんじゃないかなと思いましたねDBクライアントで自動今鬱陶しいのって何なんですかねコミット名とかブランチ名とか付けるのめんどくさいでしょ付けてあげるよってことなんですよねGitHubの質の通りDBクライアントないかDBクライアントはあれかもちょっと質が違う使いにくさを感じてるかもそうなんですねうん」
「このボタン何?みたいなやつがめっちゃ並んでるのが一番嫌だなるほどな僕ちょっと恥ずかしながらDBクライアントあんま使わないんで使わなきゃと思ってるんですけどコマンドでやってるんですか?コマンドでやってますねDBクライアントって何ですか?例えば有名なやつだとMySQLワークベンチとかPHPで系だとPHPMyAdminとかあとWindowsだったらなんだろうな」
「英語SQLってWindowsだっけやなWindowsだったと思います使った記憶ありますねMacだったらCKLSとかその辺じゃないですかね合ってないな合ってないんだ今使ってるのか使ってるかもしれないですクライアントじゃないか単純にAzureポータルのAzure上でCosmosDBをいじりにいってるというかポータルでやれるんだ」
「割といじれますねポータル上からそれがまさにGUIのクライアントなんじゃないかなそうですね使ってるかという意味で新しい価値観を作ろうとしているのはすごいいいアウトしたなって思いましたねなるほどね」

「いやいいですねナイス感想新しいものに触れる機会をくれたアランケイキさんありがとうって感じですねありがとうございますありがとうございますアンテナ高いですねしかしねすごいですね言っていいのかわかんないけど歴1年って書いてるから素晴らしいですね正直僕ギットバトラーはこれ来るまで知らなかったですね僕も聞いたことなかった恥ずかしながらめっちゃいいと思いますバトラー羊うん」
「羊みたいにいろいろやってくれる感からきっとついてるんでしょうねそういうコンセプトなんでしょうねジラとかチケット管理ツールとかと連携したりとかあとタグまでさせてくれる機能があったら最高ですねコミットメッセージのタグっていうんですか新機器の追加だなのかバグ修正だなのかどこまでできるんだろうな僕も使い切れてはいないと思うんですよね」
「とはいえ自分で入れたい気持ちはめっちゃわかる英語圏で勝つジュニアエンジニアとかだったら最初めっちゃいいかもしれないですね正直ブランチ名とかもちょっと楽しみ覚えちゃってるんで考えるときに奪わないでほしいそんな楽しさ僕がやろうと思ってたのにって思ってたそれはね」
「コパイロットにも言えますけどね確かに明々考えるのが楽しいんでねそれはありますね投げちゃうな助かっちゃうなもちろん投げるよありがとうございますありがとうございますアランケイキさんもありがとうございましたまたなんか面白いツールあったら教えてくださいぜひ使ってみますんで超な情報源このお便りが」
「では締めますハッシュタグひまじんプログラマーでSNSのXでフィードバック募集してますのでおすすめのOSSの検索の仕方とか活用の仕方ありましたらお願いしますお願いしますあとは番組の説明欄からGoogleフォームで番組のお手入れ予防質問感想何でもお待ちしてます感想だけでもいいのでお気軽にお願いいたします」
「こんなツール使ってみてくださいもお願いします感想だけではい大丈夫です各種ポッドキャストプラットフォームでのフォロー高評価お待ちしてますのでこちらもお願いしますお願いしますお願いしますはいではのりさんノウハウありがとうございましたありがとうございましたじゅんぺんもくださいお願いします頑張りたいですはいではまた次回バイバイ」
「ラーのバグ侵入の特殊能力でマスターザブレンジが焼き払われたら闇のスパゲティコードと密結合しているジュンペーチの心までクラッシュしちゃう汚いでジュンペーチここでクラッシュしたら先方との契約はどうなっちゃうのソースコードはまだ修正の余地があるここを耐えればコードを納品できるんだから次回納期マニアズデバッグスタンバイ」