dotfiles管理方法まとめ

この記事は前職のブログに書いた内容を再構成してます。 前職のブログは これ

ここ数年の僕のdotfiles管理方法をまとめました。

先に結論

homeshick をつかってGitHubに登録したdotfilesを配置、管理してます。

homeshickとは

homeshickとは https://github.com/andsens/homeshick で公開されているdotfilesを同期するためのツールです。 homesick というRubyGemがあるのですが その機能をまねて作られたそうですbashで動くのでインストールの手間と環境依存が少ないので僕はhomeshickを愛用しています。

後述のdotfiles用のレポジトリの作成、ファイルの追加、追加したファイルのsymlinkを作成するなど、便利なコマンドがそろっているのがhomeshickの便利なところです。

dotfilesをGitHubで管理する

僕のdotfilesは https://github.com/jiska/dotfiles_castle で公開しています。 dotfilesをgitで管理することで設定変更時の差異を確認したりちょっと書きかけだけど保存しておきたいなど気軽に作業できます。 またGitHubで公開することで他の環境からも参照しやすくしています。 たとえば家で設定した内容を会社で使ったりなど、環境構築が楽できます。

特別な設定を行っているdotfiles

いくつかのファイルには特別な設定を行っているのでかいつまんで記載します。

~/.ssh/config

~/.ssh/config は公開はしたくないけどバージョン管理したいファイルのかなり上位に上がると思います。 こういったものは GitHubのプライベートレポジトリに保存しています。 手順は homeshick link するだけなので簡単です、環境によってブランチを変えるだけで設定を変えることもできるので便利です。

~/.gitconfig

~/.gitconfig では includeincludeIf で特定ファイルを特定条件で読み込むことができるので以下のように ~/.gitconfig.local を読み込むようにしています。

github.com

僕は会社とか自宅とか、git commitする環境でユーザー名やメールアドレス、GPGKEYを変更したいので以下のように設定しています。

$ cat ~/.gitconfig.local
[user]
    name = yusuke mori
    email = XXXXXXXXXXXXXXXXX
    signingkey = XXXXXXXXXXXXXXXX
# ...他にもつらつら記述してますが割愛

gitconfig 書き方の例

オワリ

皆さんもお試しください。

Claw44で自作キーボードデビューした

2019/09/07に 遊舎工房 さんで Claw44 を購入して組み立ててきました。 組み立てのサポートをしてくれた遊舎工房のスタッフの皆様に感謝します。

f:id:jiskay:20190908203723j:plain

Claw44

Claw44 はふく( @yfuku_) さんが設計したキーボードです。大きな特徴は 左右の親指で押すキーが円状に4つ配置されている デザインです。 みやおか さんが使ってるのを見てこの見た目に一目惚れしたので、今回無事に組み立てることができて最高です。

ビルドガイド も細かく詳しく記載されているので作業に困ることはありませんでした。 はんだ付け作業は20年以上やってなかったのでできるか心配でしたがなんとかなりました。

組み立て完成までのタイムライン

当日のタイムラインは以下の通りです。閉店時間間際まで作業していて時間ギリギリでした。

時刻 出来事
13:48 作業スペースに着席してビルドガイドに目を通す
14:00 ダイオードを曲げ始める
14:16 PCBにダイオードを差し込む
14:31 ┣ 1枚目終わり
14:43 ┗ 2枚目終わり
14:45 ダイオードのはんだ付け
15:04 ┣ 1枚目終わり
15:18 ┗ 2枚目終わり
15:20 キースイッチ用ソケット取り付け
16:11 ┣ 1枚目終わり
16:33 ┗ 2枚目終わり
16:35 TRRSとリセットボタンの取り付け
16:44 ┗ 2枚とも終了
16:45 ProMicroの取り付け
16:50 ┗ 2枚とも終了
休憩
17:20 PCBにプレートの取り付け
17:50 ┗ 2枚とも終了
キーユニットを取り付けて動作確認
18:50 動作確認完了!!!
18:53 作業スペースレンタル代を清算して退店

組み立て作業のはまりどころ

キースイッチ用ソケットは取り付け慣れるのに時間がかかりました。あらかじめはんだを盛っておいたところをはめ込む直前に溶かすのですが、ゆっくりしているとはんだが固まってしまうし、斜めに刺さったまま固まってしまったり…。

また、動作確認の際に反応がないキーが3つありました。原因はキースイッチの針を取り付け時に曲げてしまったことでした。スイッチを外してラジオペンチで針をまっすぐに直してから挿し直しました。

4時間ほど使ってみての感想

今まさにこの記事を書くのにClaw44を使っています。率直に言うと 慣れるまで大変そうだけど慣れたら強い相棒になる と感じています。 僕は初めて40%キーボードに触ったため、数字キーや一部記号キーがないことが大変に感じる原因だと思います。まずは配置に慣れること。この量の文章書くだけで200分くらいかかっている(文章推敲のぞく)のでしばらく練習が必要です。

  • 小指が無意識にenterやbackspaceを押そうとしてさまよう
    • 親指を使うよう意識する
  • aを押したつもりがsだった、eのつもりがfだった
    • この記事を書いているうちに慣れてきた 
  • 記号の場所がわからない
    • %とか#とか@とかどこにあるんだ
  • SHIFT + Command + [ などの入力がしんどい

慣れた先には快適なキボードライフがある予感がしています。

今後やりたいこと

  • OLEDモジュールを追加したい
  • キーマップを変更したい
    • 日本語キーはいらない
    • 右SHIFTを有効に使えてないので何か別のキーを割り当てたい
  • キーキャップ変えたい
  • 別のキースイッチも試してみたい
  • TRRSケーブルとプレートの色を合わせたい
  • なんならプレートの色を自分で塗装して変えてみたい

etc etc ...

やってみたいことがどんどん湧いてくる、なるほどこれがキーボード沼…。自分好みのキーボードを作る作業がこれから続きそうです。

See you next gathering

2012年3月24日に開催されたAgile Samurai Dojo Gathering 2012に参加しました。
原著者であるJonathan Rasmussonさんの基調講演から始まり監訳者の西村さんの講演に至るまでとてもとても濃度のこいイベントでした。

僕個人は2011年9月のアジャイルサムライ他流試合に引き続き当日スタッフとして参加できたことを光栄に感じています。
他流試合に参加したときのエントリーがはてダにあげてあります

さて、当日のことのふりかえりは様々な方がまとめていらっしゃるので僕個人はまとめません。

僕はJonathanに帰り際、「See you next Gathering, We well go to Canada.」と酔っ払いかつ拙い英語で伝えました。(ちゃんと伝わったかそもそも喋れていたか不安)
“アンタが書いてくれたアジャイルサムライを読んで俺らはこんなことやったんだぜ!”
と彼に恩返しをしたいのです。たとえば事例発表を彼の住む街へ乗り込んでやるなどのがいいかなと思ってます。
そのために次回以降もこの素晴らしいイベントの火種を燃やし続けて何かしらの価値を届けることができれば、できねばならぬ。

いまは単なる妄想ですが、いつか実現できるように考えています。

PHPUnit起動時のバージョン表示を消したい

自分用メモ。

PHPでのテスト駆動開発においてPHPUnitは大変便利でありどんどん使うべきですが、
たまにターミナルに出力されたテスト結果ログをいろいろ編集するときにPHPUnitのバージョン表示が邪魔だなぁと思うこともあります。

具体的にはこれです。

$ phpunit hogeTest.php
PHPUnit 3.6.7 by Sebastian Bergmann.

Configuration read from /home/jiska/Workspace/hoge/phpunit.xml

...I..

とりあえずPHPUnitのソースをいじることでこの表示を消したいと思います。
[PHPUnit]/TextUI/TestRunner.phpversionStringPrinted プロパティの初期値を TRUE に変更するだけです。

UbuntuPEARでインストールした場合、PHPUnit /usr/share/php/PHPUnit にファイルが配置されています。

$ sudo vi /usr/share/php/PHPUnit/TextUI/TestRunner.php
/**
  * @var boolean
  */
protected static $versionStringPrinted = FALSE;

これを TRUE に変更して保存します。

/**
  * @var boolean
  */
protected static $versionStringPrinted = TRUE;

これでコンソール表示もちょっとだけすっきりします。

$ phpunit hogeTest.php

...I..

余談

上記の編集を行うことでPHPUnitのバージョン出力そのものも表示されなくなってします。

$ phpunit --version
$ 

…だめじゃん。

Ubuntu ServerにJenkinsをセットアップしてGitレポジトリと連動するまでのまとめ

さくさく行きます。

前提条件

Jenkins, Gitレポジトリのあるサーバー共にUbuntu Server 11.10 (64bit) です。
Gitレポジトリの管理にはgitosisを使用します。
git clone, pullにはsshを使用するので公開鍵登録を行います。
sshのポートは標準の22ではなく10022を使用します。

Jenkinsのインストールとセットアップ

公式ページ ( http://pkg.jenkins-ci.org/debian/ ) を参考にしつつPPAを追加してapt-get installします。
Gitのプラグインも一緒にインストールします。

$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ echo "deb http://pkg.jenkins-ci.org/debian binary/" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get instal jenkins
$ wget -O jenkins-cli.jar http://localhost:8080/jnlpJars/jenkins-cli.jar
$ java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin git
$ java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart
$ rm jenkins-cli.jar

インストールが終わるとjenkinsユーザーが作成されます。
jenkinsユーザーにGitレポジトリのクローン時に必要になるssh鍵やgitconfigの設定を行います。

$ sudo -u jenkins -H git config --global user.email "jenkins@jenkins-server"
$ sudo -u jenkins -H git config --global user.name "jenkins"
$ sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@jenkins-server

/var/lib/jenkins/.ssh/id_rsa.pub がgitosisで必要になるのでコピーしておきます。
鍵の名前も変更しておきます。
作業しやすいように作業ユーザーにchownしておいてください。

$ sudo cp /var/lib/jenkins/.ssh/id_rsa.pub ~/jenkins@jenkins-server.pub

.ssh/configを編集してGitレポジトリサーバーのsshポートを登録します。

$ sudo -u jenkins vi /var/lib/jenkins/.ssh/config
Host git-server
  Port 10022

Gitレポジトリサーバーと通信するために一度known_hostsに追加する必要があるのでsshを試みます。接続する必要はないです。

$ sudo -u jenkins ssh git-server

(known_hostsに追加していいか聞かれるのでyesを答える)

Gitレポジトリの作成

gitosisを使ってアカウント管理とかレポジトリの管理をします。gitosisは便利です。
gitosisの説明や使い方は gitosisによるgitサーバーの管理 ( http://dora.bk.tsukuba.ac.jp/~takeuchi/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2Fgitosis%20%A4%CB%A4%E8%A4%EB%20git%20%A5%B5%A1%BC%A5%D0%A1%BC%A4%CE%B4%C9%CD%FD ) が参考になります。

gitosis-initで管理用のレポジトリを作ったところで作業を開始です。

$ git clone gitosis@git-server:gitosis-admin.git

gitosis-adminにJenkinsサーバーの公開鍵とユーザー情報を追加します。
Jenkinsがpushすることはない(あっても困る)ので読み取り専用権限でいいと思います。
そこでreadonlyグループを作成し、clone, pullができるGitレポジトリの名前を登録します。
サンプルではyourprojectとします。

$ cp jenkins@jenkins-server.pub gitosis-admin/keydir
$ vi gitosis-admin/gitosis.conf
[gitosis]

[group readonly]
members = jenkins@jenkins-server
readonly = yourproject

これでJenkinsからGitレポジトリへのアクセスができるようになりました。
gitosis@git-server:yourproject.git
でアクセスできるようになります。

Jenkinsにジョブを登録

Jenkinsのダッシュボードをブラウザで開き、新規ジョブ作成をします。

ソースコード管理システム で Git を選択し、レポジトリに gitosis@git-server:yourproject.git を設定すれば大丈夫です。
あとはそれぞれのプロジェクトにあった設定をしてください。

Enjoy!