Upgrade to Pro — share decks privately, control downloads, hide ads and more …

開発環境&shell芸晒す会 / kzrb_meetup#107

開発環境&shell芸晒す会 / kzrb_meetup#107

Kanazawa.rb meetup#107 の 開発環境&shell芸晒す会 での LT です。
https://meetup.kzrb.org/107/

muryoimpl

July 17, 2021
Tweet

More Decks by muryoimpl

Other Decks in Programming

Transcript

  1. 開発環境&shell芸晒す会
    ~ muryoimpl software編 ~
    2021-07-17(Sat)
    Kanazawa.rb meetup#107 #kzrb
    muryoimpl

    View Slide

  2. おしながき
    ● 自己紹介 & 環境の概要
    ● アプリ、ターミナル周りの設定管理
    ● よく使っている自作 shell script
    ● さいごに

    View Slide

  3. 自己紹介 & 環境の概要
    ● 石川県金沢市在住のフルリモートワーカー
    ● 普段は、Desktop Linux (Arch Linux) を使って作業をしています。
    ● デスクトップは、i3wm (Tiling window manager) + Polybar (ツールバー) を使って
    います。
    ○ Tiling window manager であること、マルチディスプレイに強い 、ディスプレイ毎に表示の出し分け
    が簡単なところが気に入って使っています
    ↑縦に配置しているモニタには、ツールバーの要素全部を表示できないため
    ● キーマップはキーボードのファームウェア側(QMK Firmware)で制御しているため、
    それ用のユーティリティは使っていません。

    View Slide

  4. アプリ、ターミナル周りの設定管理
    ● アプリの設定は https//github.com/muryoimpl/dotconfig に、
    dotfiles は https://github.com/muryoimpl/dotfiles に保存して、ホームディレクト
    リにシンボリックリンクを作成して利用しています。
    ● dotconfig には、グローバルな gitignore である git/ignore や、i3wm、 Polybar、
    peco、tig、starship 等の設定ファイルがあります。
    ● dotfiles には、zsh、tmux、gitconfig、vim 等の主にターミナルで使うものの設定
    ファイルがあります。
    ● 設定ファイルの配置は、次のRuby 製のスクリプトを実行してシンボリックリンクを目
    的の場所に作成しています。

    View Slide

  5. シンボリックリンク作成スクリプト
    require 'fileutils'
    IGNORE_FILES = %w(. .. .DS_Store .git .config install.d)
    current_dir = Dir.pwd
    dotfiles = Dir.glob('.*').reject {|f| IGNORE_FILES.include?(f) }
    dotfiles.each do |dotfile|
    # 毎回強制上書きする。src/dest の変数に入れればよかったな
    FileUtils.ln_s("#{current_dir}/#{dotfile}", "#{ENV['HOME']}/#{dotfile}", force: true)
    puts "#{current_dir}/#{dotfile} -> #{ENV['HOME']}/#{dotfile}"
    end

    View Slide

  6. 実行結果
    dotconfig もだいたい同じような symlink.rb が用意されています。
    FileUtils.ln_s に force: true が設定されているので、毎回強制上書きされます。

    View Slide

  7. dotfiles の管理について
    私はオールドタイプな感じで自力で管理していますが、
    https://wiki.archlinux.org/title/Dotfiles を見るといろいろと管理ツールがあるみたいな
    ので、そちらを使うのが実はビッグウェーブなのかもしれませんね。
    今のところ、複雑なものを持ち込む気力がないので永遠のTBDになってます

    View Slide

  8. よく使っている自作 shell script
    $HOME/local/bin に PATH を通して、そこに自作 shell script を配置して利用すること
    が多いです。
    日々のメモ作成スクリプトとして、daily-memo.sh を使っています。仕様的には以下のよ
    うなものです。
    ● 年ごとにディレクトリを分ける
    ● ファイルがなければ、%Y/%Y%m%d.md 形式でファイルを作成する
    例) 実行日が 2021年7月17日 ならば、 2021/20210717.md を作成する
    ● ファイルがあれば、そのファイルを vim で開く
    ● ファイルは クラウドストレージアプリで監視し、変更検知でクラウドストレージに保存
    されるようにしている(MEGA https//mega.io を使用)

    View Slide

  9. daily-memo.sh の中身
    #!/bin/bash
    today=$(date "+%Y%m%d")
    year=$(date "+%Y")
    basedir=~/local/MEGAsync/memo # MEGA( Cloud Storage app) の監視下に保存先を設定する
    mkdir -p $basedir/$year
    if [[ ! -e $basedir/$year/$today.md ]]; then
    cat - << EOS > "$basedir/$year/$today.md"
    # $today
    EOS

    vim $basedir/$year/$today.md # vim は $EDITOR がいいかも

    View Slide

  10. daily-memo.sh のいい点
    ● 重複したファイルが作成されない、ファイル名考えなくてよい
    ○ 引数不要にしているので、思考停止で実行できるのがよい
    ● 複数台マシンでメモを共有できる、クラウドで共有しないも選択可能
    ○ 業務的な内容のメモはクラウドで共有しないほうがいいよ
    ● 手に馴染んだエディタでメモを書ける
    ○ エディタによっては、途中で落ちてもエディタの機能でバックアップが取得される
    ● 好みの検索コマンド(grep, ag, pt, rg 等) で高速に検索できる
    ● 日付がファイル名に入っているので、検索時にいつ書いたものかがわかる

    View Slide

  11. daily-memo.sh のよくない点
    ● 自分で環境をわざわざ設定しなければならない
    ○ (不満がなければ)チャットの分報、Obsidian 等のほうが手軽ですね
    ● 専用アプリではないので、開いているエディタが他のバッファに埋もれがち
    ● 検索時は、ディレクトリ移動もしくは指定が必要である
    ○ 検索用の実行ファイル作れば解決しますけどね …
    ● クラウド共有する/しないをディレクトリで判断しているので、共有する/しないメモを
    混在させる場合は、実行するshell自体を分ける必要がある
    ○ スクリプトに判定入れて、 alias で引数渡すって手もアリ

    View Slide

  12. さいごに
    ● 私は環境構築は面倒だけど、仕組みが単純であることに振った管理の仕方をして
    います。
    ● Tiling window manager いいよ!私は好きよ!
    ● 各種設定は GitHub で管理し、公開しているので何使ってる?どんな設定してる?
    はそちらを見て!
    ● daily-memo.sh 気に入って使ってます。カジュアルなものは分報、がっつり調べた
    り考えたりするときはdaily-memo.sh を使っています。
    更にまとめて残しておきたい/共有したいときは、esa.io のページにまとめていま
    す。

    View Slide