Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発環境&shell芸晒す会 / kzrb_meetup#107
Search
muryoimpl
July 17, 2021
Programming
0
2.4k
開発環境&shell芸晒す会 / kzrb_meetup#107
Kanazawa.rb meetup#107 の 開発環境&shell芸晒す会 での LT です。
https://meetup.kzrb.org/107/
muryoimpl
July 17, 2021
Tweet
Share
More Decks by muryoimpl
See All by muryoimpl
人魚とたわむれる
muryoimpl
0
18
Kanzawa.rbのLT大会を支える技術の裏側を変更する Ruby on Rails + Litestream 編
muryoimpl
0
1.3k
Kanazawa.rb LT大会用/kzlt コマンドの説明 2024/01版
muryoimpl
0
2.9k
kzltコマンドの新たなソリューションについて
muryoimpl
0
2.9k
俺とTODOアプリ~Linearの変~
muryoimpl
0
2.4k
POSIX文字クラスでの躓き
muryoimpl
0
2.3k
/kzlt コマンドとは
muryoimpl
0
950
meetup.kzrb.org の更新を考える 事前激闘編
muryoimpl
0
1.5k
meetup.kzrb.org の更新を 考える ゆるふわ編
muryoimpl
0
1.5k
Other Decks in Programming
See All in Programming
兎に角、コードレビュー
mitohato14
0
150
Infer入門
riru
4
1.6k
Laravel Boost 超入門
fire_arlo
1
130
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
500
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
23
9k
🔨 小さなビルドシステムを作る
momeemt
2
530
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
ゲームの物理
fadis
5
1.5k
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
270
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
150
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
200
ワープロって実は計算機で
pepepper
2
1.4k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Music & Morning Musume
bryan
46
6.7k
Being A Developer After 40
akosma
90
590k
Navigating Team Friction
lara
189
15k
Transcript
開発環境&shell芸晒す会 ~ muryoimpl software編 ~ 2021-07-17(Sat) Kanazawa.rb meetup#107 #kzrb muryoimpl
おしながき • 自己紹介 & 環境の概要 • アプリ、ターミナル周りの設定管理 • よく使っている自作 shell
script • さいごに
自己紹介 & 環境の概要 • 石川県金沢市在住のフルリモートワーカー • 普段は、Desktop Linux (Arch Linux)
を使って作業をしています。 • デスクトップは、i3wm (Tiling window manager) + Polybar (ツールバー) を使って います。 ◦ Tiling window manager であること、マルチディスプレイに強い 、ディスプレイ毎に表示の出し分け が簡単なところが気に入って使っています ↑縦に配置しているモニタには、ツールバーの要素全部を表示できないため • キーマップはキーボードのファームウェア側(QMK Firmware)で制御しているため、 それ用のユーティリティは使っていません。
アプリ、ターミナル周りの設定管理 • アプリの設定は 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 製のスクリプトを実行してシンボリックリンクを目 的の場所に作成しています。
シンボリックリンク作成スクリプト 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
実行結果 dotconfig もだいたい同じような symlink.rb が用意されています。 FileUtils.ln_s に force: true が設定されているので、毎回強制上書きされます。
dotfiles の管理について 私はオールドタイプな感じで自力で管理していますが、 https://wiki.archlinux.org/title/Dotfiles を見るといろいろと管理ツールがあるみたいな ので、そちらを使うのが実はビッグウェーブなのかもしれませんね。 今のところ、複雑なものを持ち込む気力がないので永遠のTBDになってます
よく使っている自作 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 を使用)
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 fi vim $basedir/$year/$today.md # vim は $EDITOR がいいかも
daily-memo.sh のいい点 • 重複したファイルが作成されない、ファイル名考えなくてよい ◦ 引数不要にしているので、思考停止で実行できるのがよい • 複数台マシンでメモを共有できる、クラウドで共有しないも選択可能 ◦ 業務的な内容のメモはクラウドで共有しないほうがいいよ
• 手に馴染んだエディタでメモを書ける ◦ エディタによっては、途中で落ちてもエディタの機能でバックアップが取得される • 好みの検索コマンド(grep, ag, pt, rg 等) で高速に検索できる • 日付がファイル名に入っているので、検索時にいつ書いたものかがわかる
daily-memo.sh のよくない点 • 自分で環境をわざわざ設定しなければならない ◦ (不満がなければ)チャットの分報、Obsidian 等のほうが手軽ですね • 専用アプリではないので、開いているエディタが他のバッファに埋もれがち •
検索時は、ディレクトリ移動もしくは指定が必要である ◦ 検索用の実行ファイル作れば解決しますけどね … • クラウド共有する/しないをディレクトリで判断しているので、共有する/しないメモを 混在させる場合は、実行するshell自体を分ける必要がある ◦ スクリプトに判定入れて、 alias で引数渡すって手もアリ
さいごに • 私は環境構築は面倒だけど、仕組みが単純であることに振った管理の仕方をして います。 • Tiling window manager いいよ!私は好きよ! •
各種設定は GitHub で管理し、公開しているので何使ってる?どんな設定してる? はそちらを見て! • daily-memo.sh 気に入って使ってます。カジュアルなものは分報、がっつり調べた り考えたりするときはdaily-memo.sh を使っています。 更にまとめて残しておきたい/共有したいときは、esa.io のページにまとめていま す。