Slide 1

Slide 1 text

No CUI, No Life めぐろLT #22 「 LT忘年会2024 」 mozumasu

Slide 2

Slide 2 text

CUI は良いぞ

Slide 3

Slide 3 text

最も自分の思考について来れるもの それは CUI

Slide 4

Slide 4 text

生活を豊かにするもの それは    CUI

Slide 5

Slide 5 text

自己紹介 好きなもの: Wezterm, Neovim, zsh, IaC インフラ4ヶ月目 X: @mozumasu

Slide 6

Slide 6 text

CUIってなんだっけ キーボードでコマンドを入力して操作する画面 CUI: Character User Interface

Slide 7

Slide 7 text

CUI CUI 使いこなせてる?

Slide 8

Slide 8 text

CUI CUI 生活を始めてみよう✨

Slide 9

Slide 9 text

なにから始めればいいの?🤔

Slide 10

Slide 10 text

dotfilesを始めよう dotfilesは設定ファイルを管理するリポジトリのこと

Slide 11

Slide 11 text

設定 = 呼吸

Slide 12

Slide 12 text

Q. 設定ファイル、何秒で開ける?

Slide 13

Slide 13 text

一緒に測ってみよう! time cat

Slide 14

Slide 14 text

A. 10秒未満

Slide 15

Slide 15 text

爆速で設定ファイルを開く Step1. 管理ディレクトリに移動 Step2. ファイルを開く 使用ツール https://github.com/junegunn/fzf https://github.com/ajeetdsouza/zoxide z [ 移動したいディレクトリ名の一部] # control + t でファイル名をfzf で選択

Slide 16

Slide 16 text

dotfilesによって得られる恩恵 別の端末になってもgit cloneでいつもの環境 設定ファイルに詳しくなる ツールに詳しくなる 名刺代わりになる 設定を変更するハードルが下がる

Slide 17

Slide 17 text

趣味にもピッタリ dotfiles❤️10ヶ月目 気づいたらコミットが積み上がっていく

Slide 18

Slide 18 text

dotfiles 入門

Slide 19

Slide 19 text

準備 参照 https://formulae.brew.sh/formula/gh https://formulae.brew.sh/formula/ghq https://formulae.brew.sh/formula/fzf https://formulae.brew.sh/formula/bat https://github.com/jesseduffield/lazygit?tab=readme-ov-file#homebrew CUI生活を快適にするツールをインストール brew install gh # GitHub CLI brew install ghq # ローカルでのリポジトリ管理 brew install bat # cat をより便利にカラフルに brew install jesseduffield/lazygit/lazygit # git 管理をクールに brew install fzf # ファジーファインダー: 曖昧検索して選択 brew install zoxide # ディレクトリ移動の履歴を保存・移動

Slide 20

Slide 20 text

準備 Control + g でプロジェクトに移動できる 設定を反映 クローンしたリポジトリに爆速移動できるようにしよう # ~/.zshrc function ghq-fzf() { local src=$(ghq list | fzf --preview "bat --color=always --style=header,grid --line-range :80 $(ghq root)/{}/README.*" if [ -n "$src" ]; then BUFFER="cd $(ghq root)/$src" zle accept-line fi zle -R -c } zle -N ghq-fzf bindkey '^g' ghq-fzf exec $SHELL -l

Slide 21

Slide 21 text

dotfilesを用意 dotfilesというGitHubリポジトリを用意 GitHubリポジトリをローカルにクローン Control + g でプロジェクトディレクトリに移動 gh repo create dotfiles --private ghq get dotfiles

Slide 22

Slide 22 text

Brewfileを管理しよう 早速Git管理だ! GitHubリポジトリを確認してみよう 現在インストールしているパッケージをBrewfileに書き出す brew bundle dump git add Brewfile git commit -m "Add Brewfile." git push gh browse

Slide 23

Slide 23 text

まとめ CUI入門はdotfilesがおすすめ 設定 = 呼吸

Slide 24

Slide 24 text

ご清聴ありがとうございました

Slide 25

Slide 25 text

Tips という名の使用しなかったスライドの供養

Slide 26

Slide 26 text

zshの設定ファイルを追加 ホームディレクトリに.zshrcのシンボリックリンクを作成 mv ~/.zshrc [dotfile のパス] ln -s [dotfile のパス]/.zshrc ~/.zshrc

Slide 27

Slide 27 text

ディレクトリに戻るとき、これやってない? もっとスマートに 直前にいたディレクトリに戻る プロジェクトのルートディレクトリに移動 cd ../ を連発! cd ../../../ cd - git rev-parse --show-toplevel

Slide 28

Slide 28 text

コマンドが長い?覚えられない?

Slide 29

Slide 29 text

aliasで短く aliasの設定 こういうふうにもかける # alias 設定前 git rev-parse --show-toplevel # alias 設定後 proot # ~/.zshrc abbr -S proot='cd $(git rev-parse --show-toplevel)' >>/dev/null abbr -S -qq proot='cd $(git rev-parse --show-toplevel)'

Slide 30

Slide 30 text

aliasの設定にもいろいろ 入力後にスペースを入力したり、コマンド実行すると元のコマンドが表示される (Zshの独自機能) 元のコマンドを表示しない abbr -S -qq ll='ls -l' alias ggrks='google'

Slide 31

Slide 31 text

覚えられないなら参照しちゃおう サクッと概要を知りたいな 詳しく知りたいな fzf --help man fzf

Slide 32

Slide 32 text

zshのキーバインドを確認してみよう bindkey

Slide 33

Slide 33 text

謎の記号だらけ…? これで確認できる キーバインドを割り当てたいけど、記号がわからない cat

Slide 34

Slide 34 text

オレオレキーバインド思想 デフォルトのキーバインド必ず確認 emacs/vimのキーバインドを潰さない 使わないキーバインドは無効化 できたら守ったほうがいいもの ウィンドウマネージャー(例: AeroSpace)のキーバンドを潰さない ターミナルのキーバインドを潰さない キーバインドの設定で守る方針

Slide 35

Slide 35 text

CUIに影響するキーバインド設定の場 シェル ターミナル karabiner 影響範囲は下に行くほど大きい 影響範囲が大きいものから設定するのがおすすめ

Slide 36

Slide 36 text

案件掛け持ちあるある 管理しないといけないサーバーが増える 接続情報を入力するのが大変😵 ssh -i ~/.ssh/hoge-key [email protected] -p 22

Slide 37

Slide 37 text

~/.ssh/config before after エイリアスでssh接続できて楽ちん # ~/.ssh/config HOST __hoge_prod HOSTNAME 127.0.0.1 User hoge-user Port 22 IdentityFile ~/.ssh/hoge-key ssh -i ~/.ssh/hoge-key [email protected] -p 22 ssh __hoge_prod

Slide 38

Slide 38 text

案件ごとにファイルを分けて管理 Step1. configファイルを分割 Step2. Includeで読み込む .ssh └── config .ssh ├── config └── conf.d └── hosts ├── 案件1 └── 案件2 # ~/.ssh/config HOST __hoge_prod HOSTNAME 127.0.0.1 User hoge-user Port 22 IdentityFile ~/.ssh/hoge-key

Slide 39

Slide 39 text

余談: 〇〇.dのdって何? UNIX系あるある 〇〇.d みたいな謎ディレクトリ名ありがち ~/.ssh/conf.d /etc/cron.d ディレクトリ (directory) を示す慣習的な命名 設定を分割して管理するのに使われる

Slide 40

Slide 40 text

zshであそぼ hogeディレクトリとtestディレクトリを作成 拡張子 .hogehoge のファイルを100個作成 まとめて消す 後片付け 3回も打てばあらかた覚える mkdir hoge test touch hoge/{1..100}.hoge test/{1..100}.hoge ls hoge test rm -f **/*.hoge ls hoge test rm -rf hoge test ls hoge test