育てようエンジニアの盆栽dotfiles
「さてここで問題ですエンジニアがまるで盆栽を育てているかのように大切に育て上げていくものとは一体何でしょうかはい正解はドットファイルズでございます考える暇なかったすぐ言うんだはいということでドットファイルズはい皆さんドットファイルズ使っておりますでしょうか使ってない何ですかそれはえーとねドットファイルズちょっとねツールではないんですよ」
「まずツールではないんですけど例えばPCが古くなっちゃった時とかもしくは別の組織に行くことになったっていう時にですねPCの中にある設定を持っていきたいなーって思うことないですかありますあるかなないタイプビムの設定とかどうしてますビムRCをリポジトリに取ってますねそれそれそれそれ」
「それなんですよ今回紹介するドットファイルズはね要はそれです要はこれですこれなんかテクニック的な話なんですけど基本的に設定ファイルとかって」
「なんかドットから始まってるじゃないですかビムの設定ファイルだったら.bimrcとかバッシュのやつとかだったら.bashprofileとかなんかそういうドットで始まってるやつってだいたい設定ファイルっていう監修があるじゃないですかそういう設定ファイルたちをまとめてるリポジトリを作って管理することによって」
「別のPCに行った時でも便利に使えるようにできるよねっていうのがこのドットファイルでございます今回紹介したいなとなるほど」
「これちょうどね僕最近自分のPCをめちゃめちゃ使うようになってきたんでいろんな設定を持っていきたいなと思って苦戦してたところですねそろそろ作るっけないかと思って最近作り始めたんですよこれがあるとどんなPC使ってても簡単に環境を移植することができるんで便利」
「GitHubに設定ファイルをまとめたリポジトリを上げてそれを引っ張ってくるって感じってことですかこれから説明しますはいすいませんなので.filesのやり方ということでですね」
「もしかしたらこれから環境を移動する人もいるかもしれないのでぜひちょっと参考にしてみながら独自のオリジナルの自分だけの便利なドットファイルズを育てていっていただけたらなと思ってます質問いいですかドットファイルズって結局何っていうところがまだ分かってなくてそういうドットが付いているファイルを総称してドットファイルズって呼ぶってことであってますかそういう設定ファイルをまとめて管理する手法みたいな感じかなうーん」

「手法なんですねなるほど知らんかったこれのめっちゃ簡単ですやり方ということでステップその1まずは.filesというディレクトリを作ってリポジトリをGitで管理しましょうGitで管理しますで適当にReadMeか何か作って」
「プッシュしたらもうまずこれで第一歩はスタート完了ですはいはいはいで続いてその.filesというディレクトリにですね設定ファイルをどんどん移していきますうん例えば.bimrcとか.zesshurcとかはいvsコードだったらvsコードの設定とかうんうんあとなんだろうなブリューのインストールのリストとかねあー」
「確かにそういうやつとかをとにかく思いつくやつ全部そこに移動していきますそしていきなり移動しちゃうと怖いんでまずコピーで移すじゃないですかそしたら元のファイル残るじゃないですか元のファイルを次シンボリックリンクに置き換えていきます」
「なんでしたっけシンボリックリンクってどういうあれなんでしたっけ説明しようお願いしますシンボリックリンクとはつまりショートカットのことですはいはいはいなのでだいたいこういう設定ファイルってユーザーのホームディレクトリに置くと思うんですよチルダで移動できる場所ですねはい」
「で大体そこでチルダスラッシュドット接種RCみたいな感じでファイルがあると思うんですけどそこにアクセスしようとしたらドットファイルズの中にある設定ファイルを参照するように次リンクを貼っていくんですねでそうするともうそのドットファイルズの中に設定ファイルがまとまった上で自分のPCの設定が読み込まれるようになっておりますとうん」
「ただこれだけだとファイルが増えてきた時に大変ですよねいちいちシンボリックリンクを全部貼り直さなきゃいけないんでしかもファイルもいっぱい増えてきたら手作業だとミスる可能性もありますとこれ抜けてるとかなので最後にその新しい環境でそれぞれのシンボリックリンクを作っていくためのシェルスクリプトを書くんですねうんうんうんうんうんうんうん」
「それをすることによってあとは新しい環境に行ったときに例えばinit.shみたいな感じで設定ファイルを次々と読み込んでいくシェルスクリプトを作っておけばあとはGitからクローンしてきてそのシェルスクリプトを起動するだけで全環境があなたの手にというこういうことができますよっていうのがドットファイルズでございますかっこいい」
「シェルを書くっていうのがもうかっこいいですねもうねそんなのネットにいっぱいあるからそれ取ってくるだけ自分で書くのしんどいよめっちゃ落ちてます落ちてるねもういろんな人がドットファイルザーとGitHubで検索したら多分公開されてるんでいろんな人がそれを持ってきて参考にするとかもいいかもしれないですねなるほどはいということで僕は昨日ねいそいそと設定ファイル作ってました素晴らしいはい」

「ただまだね作り始めたばっかなんで微妙なんですよZESHRCとinit.beamかなNeoBeamの設定ファイルとブリューか」
「ホームブリューでインストールするためのリストのファイルとそれインストールする用のスクリプトだけ作って一旦温めてますねなんですけどこれを使えばVSコードの設定とかも移動すぐできますし他にももろもろすぐできますね」
「Gitignoreとかで絶対無視させる系あるじゃないですかそういうファイルとかを例えばグローバルで追加したりとかもろもろそういうことができちゃうっていうことなのでグローバルで追加するっていうのはGitignoreってだいたいさそのGitignoreっていうファイルを置いてそのファイルと同じディレクトリかそれ以下の階層しか見てくれないじゃないですか」
「ドットギットイグノアが置かれてる上のディレクトリって見てくんないじゃないですかとかじゃなくてマジでそのマシン全体で無視するファイルとか決めれるなるほどよくあるやつだとマックナのDSストアとか追加するよねなるほどねどうなんだろうわかりましたわかってるんですけどそれでも各イグノアに追加する方が親切ですよねDSストアはいいんじゃない」
「いらない?グローバルでやっちゃって他の人もみんなグローバルで追加しなきゃいけないってことですよねそれはそうなるね宗教の話かもしれないですけどそれは確かにそうなるなあとノードモジュールスとかねパッケージマネージャーでインストールする系のやつとかもあると便利かもねなるほどひょっとしたらですけどドットファイルズっていうリポジトリがあったとしてうん」
「ビームとかネオビームとかそれはそれでサブモジュール別のリポジトリを元のリポジトリにくっつける管理のやり方でやっとくとネオビームだけで公開できるじゃないですか公開したいやつは公開して公開したくないやつは公開しないみたいな運用ができそうですねなるほどね確かに」
「まあでも設定だからまあシークレット的な情報入ってないんじゃないですか基本は入ってないと思いますただなんか恥ずかしいなーっていうのは恥ずかしいなーはそれはもう別に最初からプライベートリポジトリで作ればいいですでも気になりません?なんかNeoBeamの設定とか気になるんですよ僕は憧れのエンジニアのBeamの設定とか見たいあーなるほどねと思うのでうん」
「そういうのは公開してもいいかもしれないですね公開するとちゃんとしなきゃってなるんでリードミー僕も公開してますよドットファイルズ全公開全公開してます全公開してますが見る価値ないぐらい量少ないよまだですね僕もネオビム確か公開してる気がするな真面目にリードミー書いてますはい」

「いいねセットアップネオビムっていうリポジトリ作ってましたセットアップネオビムかっこいいななんかこれはただシェルで書けばいいんですけどリードミーに全部コマンドがありますそのネオビムのインストールも自動化できますシェルでってことですかそうですよねシェルコマンドでいけますよねシェルコマンドシェルコマンドなのかなこれシェルコマンドだわ」
「シェルスクリプトかイニットシェルは書いてないな今のリードミーに書いてるやつを全部シェルスクリプトなんだらリードミーをコピペあ無理かリードミーのコマンドを全部ペタって貼るだけでいいんですけどねなんか宗教的な話なんですけどエディターは設定丸と思っていきたいです一方でブリューとかは必要になった時でいいかなって気持ちなんですよなるほどねわかります?言ってる意味わかる」
「ただまるっと持ってくる方が効率いい説も全然あるちなみに故に盆栽なんですよ必要になったやつは追加するしいらなくなったらちゃんと剪定して切っていくんですよっていうことによって常に自分の最適なドットファイルズを育てていくっていうのがこの醍醐味なんですよそうすると気になるのはいつその枝を切るのかってめっちゃ難しくないですか」
「そうなんあれ難しいない俺ブリューのインストールしたやついらねーって言って消したことないですえ嘘はい結構やるかも拡張し続けてますずっとそうなんだパソコンでそのパソコンで使い続ける限りはインストールじゃなくてデリートしたことないですなるほどねしたことあるいやないですないんだいつするんですかもう画面いらないやつあったらボンバン消していくそれなんか定期的に棚押しするってことうん」
「ブリューだけじゃなくてアプリケーションとかも全部そうそれどうやってるんですか気合いつやってるんですか暇な時暇だってなったらライブラリ整理しようってなってバーってリスト出して使わないなっていうのはどうやって判断するんですかもうこいつはこんなの入れてたなって思ったら消すねしばらく使ってなかったらそうそうそうとか新しいツール探したりするかも」
「なんかFTPクライアントとかだったらさファイルジラとかサイバーダックとかいろいろあるじゃないですかああいうの見ててそういえばこれってなんかすごいアイコンダサいけど新しいナウイツールあんのかなとか思っていろいろ検索してあったらそれインストールして古いやつぶち消してとかやったりしますねそうなんだそれは面白い話ですねそうなんだはい」
「やってないやったことない結構ツール飲み直しますね僕部屋の掃除は定期的にやる気になりますけどファイルのストレージはいっぱいにならないと消さないしアプリもいっぱいになったタイミングじゃないと消さないんでそれで言うと僕のこのMacBookProは2016年という結構古のMacBookProなんでこまめにそういうのやらないと非常に重たくなりますね」
「勉強になりましたありがとうございます年一ぐらいでもいいか1年の大掃除みたいなのにやるといいかもしれないですね確かにそのツールの見直しついでにドットファイルズを選定してより理想の環境を作っていくっていうねこの楽しみ一部の人にしか伝わらないと思うんですけどトリコのフルコースみたいなもんですね」

「トリコのフルコースみたいなもんです伝わってないかもノリさんにまあまあまあわかります順便に伝わったトリコね1ページも読んだことないクギパンチ知らないクギパンチトリコは美食バトル漫画なんですけど美食バトル漫画って噂は聞いてるわあの世界の人たちの美食家と呼ばれる職業の人たちは文字通り美味しいものを食べるのを生業にしてるんですけど美味しいものを食べたりそれを」
「取ったりする取って売りさばいたりするのを何よりしてるんですけど食べる場モンスターハンターってこと?でその美食家のポートフォリオうん」
「としてあるのがフルコースそのフルコースは何を表すかというと俺が今まで取ってきた食ってきた食べ物の中で一番うまい料理のコースオードブルとか主菜とか副菜魚料理肉とか飲み物を羅列したやつがフルコースなんですよそのフルコースがすごいやつは美食がすごいってなるんですよ前菜にこれみたいな驚きがあるんですねなるほどね」
「っていう意味であれはフルコースは一生をかけて完成させていくものなんですけどそういうことそういうことGitHubのリポジトリ見てドットファイル見てこいつの実力がだいたいわかるとわかるこんな設定ファイルいっぱいあるのみたいな俺じゃまだそこに乗れてなかったんだだからフルコース作っていかないとそうですねなるほどな」
「僕も昨日作り始めたんですけどめっちゃ前に最初のコミットだけはしてて昨日やっと本腰入れ始めた2月から職場変わるっていうのもあって環境一気に移行したいなっていうモチベーションもあり環境構築合宿したいです環境構築合宿いいじゃん」
「もう1日ずっとビームの設定いじるみたいなやばすぎるでしょそんなかかるんすねかかるかかるあれしかわかんないねえかかるよな昨日とかななんかちょっとこれさ負荷軽いせいかさなんかハマっちゃうんだよねハマっちゃう1回やり始めると昨日マジでお風呂冷めてたもんお湯入れてお湯入れて」
「作り始めて止めて切りいいとこまでってやってたらすっごいぬるくなってた奥さんに怒られますね大丈夫やりたいやりましょうビムの設定しましょうビムの設定合宿なあとドットファイル全体的にですけどねそれ確かに取っておいた方がいいかもっていうのありそういやそうなんだよな全然俺思い浮かばないですわそのブリューのインストールリストを」
「全然思い浮かばないですね最近いつ使ってインストールしたろうって感じですもんマジか言うて俺もよ結構キャスクとかも含めたら便利になると思うよいきなりだってレイキャストとかワープとか全部入れれるよレイキャストいいっすねワープは何ですかワープはターミナルっすねそれこそレイキャストの設定ファイルとかも出しておくんでしょうね」

「そうね本当はねあれなんかでもちょっとバイナリで出るらしいんでちょっとむずそうでしたそうなのいやちょっとごめんあんまちゃんと見てないまだわかんないけどどうせコマンドで実行できるんじゃないCUIでCY?CLIでインポートできちゃうんじゃない設定確かにできそうどうせできますよっていうあと他にもねVSコードの設定もあるでしょうしねVSコードの設定もありますだってJSONだもんな設定ファイルJSONJSON」
「別コードは簡単ですねペット貼るだけですねなるほどちょっとやりたいこれねやり始めたら止まらなくなるわかります僕は一回ネオビームでやったのでそれが全域に渡ってやることになるから途方もないあとこれで切るとあれだよね今ちょっとマックに特化した感じでやっちゃってるけど普通に」
「リモートのサーバーとかあるじゃないですかあの辺に設定必要なやつだけ持っていくとかも楽になるんじゃないですかそうなんですよビムの設定だけ欲しいなみたいなそうなんですよあるじゃん僕俺それがあったんで作りましたそれよね最初あとバッシュもちょっと欲しいなって時あるそうそうそうそういずれ分かる時は来るさじゅんぺん」
「なんだこいつらみたいな目で見てましたよ僕らのことSSH接続してビム開こうとしてさうわVIしかねえっていう時の絶望あるある絶望VIあってよかったと思います逆にだいたいあるでしょVIならよかったと思うVSコードねえっていう絶望の方がでかそうじゃないですか」
「VSコード?例えばですけどVSコード?リモートでできないじゃないですか普段VSコード触ってる人ってもっと絶望するはずじゃないですかビムとかネオビム触っててVIAやった時の絶望はまあ言うてです多分まあまあ言うてだよねでもなんか開いた時にプレーンな状態になってるじゃん行数も表示されてねえしみたいなそうそうそうわかる間違えてJJを押しちゃったりとかねエスケープの代わりにJJをキーバイルするんですけど」
「僕はエスケープ頑張りますわいつかついてきますまた脱線なんですけど100再生とかでいいんでビームディープダイブエピソードを一回誰もついてこれないみたいなYouTubeかそうなんだよな」
「ビムはでも今年ちょっともう一回本でちゃんとやろうと思ってますねマジっすかマジっすよいやあの1回目読んだ時マジでビム知らない状態でやったからあんまりいいだったね多分一応できるようになったけど多分見逃してるやついっぱいあると思うむしろ僕はネオビム極めた方がいいんじゃないかと思ってますその本は多分ネオビムもビムもあんま関係ない」
「一番基本的な部分だけ紹介してるやつだから基本的な部分ちゃんとするよりもいいプラグインを使ってノリさんは今やられてるかもしれないですけどパパッと別のファイル開いたりパパッと単体テスト回したりパパッとなんかのプレビューをブラウザに出したりとかJavaScriptを書いててブラウザに出るみたいなそういういろんなプラグイン使えるようになった方が生産性上がりそうじゃないですか」

「うわどうなんだろうそんなことないちょっとねその本読むとその思想ちょっと飛ぶかもじゃあ読んでみようかな基礎を一番固めろっていう本だからだよそれそうなんだ僕」
「ビーム遠く止まんねー止まんないなドットファイルズどっか行っちゃったけどちょっとこの辺にしておきましょう僕もまだまだ話したいことあるんですけどちょっと止めます時間稀なんでぜひ皆さんも盆栽育てる気持ちでまずはドットファイルズ作って一番いいのはまずシェルの設定から管理するのが一番とっつきやすいんじゃないかなと思うんでバッシュプロファイルとかですねそうですね」
「バッシュプロファイルか最近のMacだと絶種になってると思うんですけどその設定ファイルはまずは.ファイルズに移動してシンボリックリンク作るというのから始めてみてほしいですね熱い視線が感じます汚ねえからな俺公開したくねえ綺麗にして公開しますちょっとこのエピソード出るまでにやるか分からないですけどおはようございますおはようございます」
「じゃあちょっとお便り来てるので一つお読み読ませていただきますラジオ電話JHさんからありがとうございますヒマワプロに対してちょっとご提案をいただいてますどんなですかちょっとまんま読んでいきますねヒマジンプログラマーの皆様お世話になっておりますいつも素晴らしいコンテンツをありがとうございます最近のエピソードを聞いてお役に立てるかもしれないと思い提案をさせていただきます」
「カイチさんのシステム設計の面接試験の参考資料としてウェブサービス開発徹底攻略という本を提案したいと思いますこれは日本の企業が実際に提供しているサービスがアーキテクチャレベルでどうなっているかというのを扱っている本です実際の場合どのような問題がありそれをどのように乗り越えたかを把握するのに役立つと思います古い本ですが今に比べて」
「全体的に大きく変わった内容はなく古い技術スタックを採用するなどの違いがあるという印象を受けました僕に対してねこれちょっと面白そうでしたねちょっと見てみましたけど確かに安定のWebDBプレスあとはのりさんのコードという本に対しても私も韓国語版をざっくり読んだことがありましたが図を使って説明すべきところが文だけで説明されていたり説明が不十分だったりして理解に困ったことがありました」
「論理回路からコンパイラやオペレーティングシステムを経てアプリケーションまで作る内容の本がありますがこれは役立てるのではないかと思いますというのでコンピューターシステムの設計取り実装」
「理論と実装ですね理論と実装という本とあとはNandtoTetrisというサイトを紹介してくれてますねこれはですねコンピューターシステムの理論と実装という本の中で出てくるNandtoTetrisというアプリケーションですねそうなんだちなみに僕この本積んでますオライリーのね紫色のやつなんですけど」

「分厚さの割に1年かかるって言われてる本なんで手出せずにいたんですよね1年かかるってやってるの?いやそう1年かかるなんかそのちゃんと中身やろうとすると1年かかるってレビューでは言われててちょっと去年はですね1ヶ月1冊チャレンジやってたんでできなかったんですよねへーなるほど多くの人々がこの本を読んで作ったプログラムもGitHubにアップロードされています例として簡単なオペレーティングシステムを作ったGitHubのリンクを貼っておきますうんうんうん」
「OS作るんだこれすごいこの本ランドトゥーテトリスってのがすごいねロンリゲートからテトリスっていうゲーム作るよってことでしょうこの本にも詳しく説明されてない部分があるのでその場合は大学の教科書などを参考にしながら読むと良いと思います1年かかるなこれはやりたいけどねやりたいけどなあとはじゅんぺいさんはいろんなシステムのコードを読みたいと言ってましたが背景知識を得ることが複雑なシステムのコードを読むとき大事だと思います」
「その方法はいろいろあると思いますが例としてGitHubでシンプルアルファベットでねというキーワードをつけて検索し簡単なプログラムのコードをソースコードを見て背景知識を得ることもできます例えばWebサーバーについて知りたい場合は私の場合はGitHubでシンプルWebサーバーのようにシンプルをつけて検索していますシンプルWebサーバーで検索した内容のリンクも貼っておきますというところでありがとうございます引き続きよろしくお願いしますとすごい」
「これすごい初知識だわシンプルなんちゃらそうですね他にもありそうじゃないこういうのありそうステイトオブジアートとかステイトオブジアートわかんないレイティストそういう相対的なのあれかシンプルはいいですね確かにサンプルとかあるのかなサンプルもありそう確かにありそうサンプルもありそうインフンできたのかと思ったけどありそうだったありそうなのを言っただけですびっくりした突っ込もうと思っちゃった」
「そのGitHubでのコードリーディングぶっちゃけそこまでやってないんですけど僕はなんか出会ったOSSちょっと読むぐらいなんでこういうコード読もうって言って検索しようとは正直なかったんですがやってる人はこうやって読んでるんですねっていうのをすごい思いましたいやーそうねソスコード読むのやりたいかっこいいからっていう理由です僕はかっこいいもあるし」
「めっちゃいいって言ってた誰が誰が誰が97のプログラマーが知るべき97のことの60番目ぐらいに出てくるすごそうな女性の人が言ってました実際に言うとしたらあれなんですかね例えばですけどこういうアプリ作りたいって技術選定した後にそのコードサンプルを検索するみたいな使い方になるんですかね実際だとその工数を予測するみたいな作業がいると思うんですけど」
「予習としてウェブサーバー作らなきゃシンプルウェブサーバーって調べてシンプルウェブサーバープラスフレームワークかなとかで検索して見てみてこうやってやるのねみたいな使い方になるのかなモチベゼロでコードを読むっていうのがまだあんまりよく分かってなくてモチベゼロというかなるほどねコードを読むために読むのがあんまりよく分かってないどうなんだろうな」
「本読む気持ちなんでしょうけどねいい例出てこないなリバースエンジニアリング的な感じなのかなめっちゃ機械好きな人がラジオ分解して中見るみたいなその行動に近い気がするOSS見るのは近い気がしますけどシンプルウェブサーバーとかだと微妙じゃないですかまずはハローワールドからというじゃないですか」

「97のことのうちの何かどこかの1個取ってきましたね最後の1個だったっけ分かんないちょっとあったよねすごいこの人は本当に学ばれてるので今後とも僕らにアドバイスをくださいって感じですちょっとね監督としてありがとうございますありがとうございます非常に参考になりましたちょっと読んでみようと思いますというので」
「終わりますか終わりますかはいではハッシュタグひまじんプログラマーでSNSのXでフィードバック募集してますのでドットファイル作った方リポジトリのリンクをとともにお願いいたしますハッシュタグと一緒にねそうですねはいどしどしはい」
「あとはGoogleフォームですね説明欄のリンクからGoogleフォームでお便りフィードバック募集してますのでそちらもお願いいたしますお願いします最後ポッドキャストプラットフォームでの高評価コメントお待ちしてますぜひ高評価お願いいたしますランキング上狙ってますお願いしますではドットファイルズ育てていきましょうぜひ立派なドットファイルズをノリさんのドットファイルズ見てプレッシャーを受ける気がしますが」
「いやいやいや俺まだ全然書いてないよまあでもそうですよねでも時間あるうちにしかできないんで今月正午だわではまた次回バイバイバイ初めて触ったMacBook思い出がいっぱいのチーム開発再起動したら治った謎のバグ僕たち私たちは卒業します」
「駆け出しエンジニアを卒業したいあなたへひまじんプログラマーの週末エンジニアリングレッスン各種ポッドキャストで配信中」