新しいMacのセットアップ 2025
新しいMacのセットアップメモ。
必要なものを最低限入れたかったので古いMacからの移行はしていない。
Ghostty
前はiTerm2だったがGhosttyを入れてみることにした。
GitHubへのSSH Key追加
Homebrew
dotfiles
以前はセットアップするためのシェルスクリプトを書いていたのだが、PCを買い替えた時にしか使わないので一旦消した。
その代わり実行するコマンドをREADMEに追記してある。
$ git clone git@github.com:178inaba/dotfiles.git ~/.dotfiles $ cd ~/.dotfiles $ eval "$(/opt/homebrew/bin/brew shellenv)" $ brew install git vim go ccat diff-so-fancy direnv nodenv stow $ stow git vim zsh $ zsh -l
その他、今は使っていないPATHやalias等を整理したりした。
GNU Stow
各ファイルをフラットに置いていたがStowは1ディレクトリ1パッケージとして認識して動くのでディレクトリ構成を変えた。
dotfiles
├── .gitconfig
├── .vimrc
├── .zprofile
└── .zshrc
↓
dotfiles
├── git
│ └── .gitconfig
├── vim
│ └── .vimrc
└── zsh
├── .zprofile
└── .zshrc
stow git vim zsh だけ打てばリンクされるのでかなり楽だと感じた。
Stowおすすめ。
diff-so-fancy
Usageに設定が追加されていたので追加した。
git-prompt.sh
今まではgit/gitからダウンロードしていたがbrewでgitをインストールするとついてくることに気づいたのでそっちを使うようにした。
. $(brew --prefix git)/etc/bash_completion.d/git-prompt.sh
インストールしなかったもの
- Google日本語入力
- OnScreen Control
- LG製の画面分割ソフト
- macOS標準機能のSplit Viewで賄えそうだった
両方とも一旦入れてないだけで今後入れるかもしれない。
go-cmpでuintが16進数で表示される問題を解決した
一ヶ月くらい前だがgo-cmpで uint が16進数で表示される問題を解決した。
go-cmpは差分がいい感じに表示されるので重宝していたのだがuint系の変数だけ16進数で表示されるのが気になっていた。
https://play.golang.org/p/uE2CalqpkTZ
main.Ints{
- Int: 0,
+ Int: 255,
- Uint: 0x00,
+ Uint: 0xff,
- Uint8: 0x00,
+ Uint8: 0xff,
- Uint16: 0x00,
+ Uint16: 0xff,
- Uint32: 0x00,
+ Uint32: 0xff,
- Uint64: 0x00,
+ Uint64: 0xff,
}
同僚も気にしていて需要がありそうだと思ったのでプルリクを出してみた。
プルリクがマージされて v0.4.1 以上でuint系の変数が10進数で表示されるようになったので同じく気になってた方はぜひバージョンアップしてみてください。
https://play.golang.org/p/dGhSMmjFVnS
main.Ints{
- Int: 0,
+ Int: 255,
- Uint: 0,
+ Uint: 255,
- Uint8: 0,
+ Uint8: 255,
- Uint16: 0,
+ Uint16: 255,
- Uint32: 0,
+ Uint32: 255,
- Uint64: 0,
+ Uint64: 255,
}
ちなみに uint8 のスライスだけは10進数になりません。
https://play.golang.org/p/Osxp1JT_Huc
main.Ints{
Int: []int{
- 0, 0,
+ 255, 255,
},
Uint: []uint{
- 0, 0,
+ 255, 255,
},
Uint8: []uint8{
- 0x00, 0x00, // -|..|
+ 0xff, 0xff, // +|..|
},
Uint16: []uint16{
- 0, 0,
+ 255, 255,
},
Uint32: []uint32{
- 0, 0,
+ 255, 255,
},
Uint64: []uint64{
- 0, 0,
+ 255, 255,
},
}
これは byte が uint8 の型エイリアスであり、go-cmpが設計思想を「byte スライスは16進数で表示すべき」としているためです。
#技術書典 応援祭で無料配布している技術書まとめ
技術書典8は中止になってしまいましたが技術書典 応援祭がオンラインで開催されています。
技術書典に行ったことがない人でもオンラインの応援祭であれば気軽に覗けるのではないでしょうか。
この記事では技術書典に興味を持つきっかけになればと思い、応援祭で無料配布されている同人技術書をまとめました。
ぜひ技術書典 応援祭を覗いてみてください。
Vim Pluginに入門してみた #vim
この記事はVim2 Advent Calendar 2019の19日目の記事です。
Vim Pluginを書こう書こうと思ってずっとできていなかったのでAdvent Calendarをきっかけにhello, world的なPluginを書いてみた。
:Hello foobar と打つと hello, foobar と返してくれるだけのPluginです。
今回はこのPluginを書くときにわからなくて調べた部分をご紹介します。
Plugin名
特に決まりは無くてvim-foobar、foobar-vim、foobar.vimの3つの流派が居るっぽい。
自分はvim-go、vim-lspを参考にvim-helloと名付けた。
Vim Pluginの開発ディレクトリは決まっている
Vim起動時に読み込まれるディレクトリが決まっている。
そのディレクトリは何個かあるが、ユーザが一番使いやすそうなのは ~/.vim/pack/*/start/ です。
* は1つのディレクトリ。
(複数ディレクトリあると読み込まれないので注意。)
自分は ~/.vim/pack/plugins/start/vim-hello に置いた。
ディレクトリ構成
plugin と autoload というディレクトリが必要。
├── autoload
│ └── hello.vim
└── plugin
└── hello.vim
plugin 配下にあるファイルはVim起動時に読み込まれるファイル。
autoload 配下にあるファイルは必要になった時に読み込まれる。
コマンド定義は plugin で関数は autoload というように覚えておけば良さそう。
-nargs で引数ありコマンドを定義
コマンドの引数を取得したい場合 -nargs を使って引数を何個取るのか設定できます。
-nargs=0 引数なし -nargs=1 引数 1 個 -nargs=* いくつでも -nargs=? 引数なし、もしくは 1 個 -nargs=+ 引数 1 個以上
自分は引数1個以上取りたかったのでこんな感じで書きました。
command! -nargs=+ Hello call hello#hello(<q-args>)
また、<q-args> は特殊文字が入っていても適切にエスケープしてくれる引数指定です。
クオートの例が紹介されていて、クオートを適切に表示するなら <q-args> の方が良さそうだったので使用しています。
関数の引数は a: でアクセス
Vim Scriptではよく g: や l: がついた変数を見ます。
これはスコープを指していて g: ならグローバル、l: ならローカルといった具合です。
しかし、引数はちょっと特殊で a: を使います。
a: をつけないで引数にアクセスしようとすると「未定義の変数です」と言われてしまうので注意。
まとめ
というわけで駆け足でしたが自分がhello, world的なPluginを書いた時に調べた箇所をご紹介しました。
一度hello, world的なPluginを作ってしまえばそこを足がかりに色々試したりできそうです。
そして試したことを切り出して新たにPluginを作っていけたらいいな。
Go言語で画像生成のテストを書く #golang
この記事はGo3 Advent Calendar 2019の18日目の記事です。
この記事ではGo言語における画像生成のテスト方法を紹介します。
画像生成というのはロジックに手を入れていなくてもライブラリがアップデートされたタイミング等でバグりやすい箇所です。
テストを用いてデグレの確認を常に行いましょう。
VimConf 2019参加レポートを書いた
自分のブログからもリンクしておきます。
VimConf 2019に参加した皆さんのブログを書くスピードが速くて自分もなんとか今週中には出したいと思っていたので間に合ってよかったです😎
今夜はVimConfのアイスクリームスプーンとハーゲンダッツで祝杯をあげようと思います。
#vimconf で貰ったVimアイスクリームスプーンでハーゲンダッツ🍨
— 178inaba (@178inaba_) November 6, 2019
(普段はハーゲンダッツに高くて手が出なくても「VimConfのスプーン試すためだから仕方ないよね」という言い訳ができます)
一口食べるとまるでVimConf会場に居るかのような気分 pic.twitter.com/1rfgj1y4Gs