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
20
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.5k
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
CSC509 Lecture 01
javiergs
PRO
1
430
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
Le côté obscur des IA génératives
pascallemerrer
0
120
猫と暮らすネットワークカメラ生活🐈 ~Vision frameworkでペットを愛でよう~ / iOSDC Japan 2025
yutailang0119
0
220
明日から始めるリファクタリング
ryounasso
0
110
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
450
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
920
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.6k
XP, Testing and ninja testing ZOZ5
m_seki
2
280
プログラミングどうやる? ~テスト駆動開発から学ぶ達人の型~
a_okui
0
190
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
1.2k
Breaking Up with Big ViewModels — Without Breaking Your Architecture (droidcon Berlin 2025)
steliosf
PRO
1
330
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Docker and Python
trallard
46
3.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Gamification - CAS2011
davidbonilla
81
5.5k
Documentation Writing (for coders)
carmenintech
75
5k
Designing for humans not robots
tammielis
254
25k
A better future with KSS
kneath
239
17k
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 のページにまとめていま す。