GVFS(Git Virtual File System)のインストールが異様に簡単になっていたので、Windows 10 userは入れとくべきではないかと言う話

GVFSの存在を知ったのは、確か一年ぐらい前の下記の記事で、日本語に翻訳されたのを読んだ記憶がある。www.infoq.com
Microsoftが開発しているGitのパフォーマンスを改善する仮想ファイルシステムで、WindowsのGitのパフォーマンスに不満を持っていた自分は興味を持っていた。しかし、ビルド方法が当時面倒だったせいで、当時は放置していた。

モノリシックに膨れ上がった自社のProjectでgit commandを押すたびに地味に待たされ、git gc --aggressive等試すもののわずかな改善しか見られないことに嫌気がさし、ふとこの存在を思い出した。

GitHub - Microsoft/GVFS: Git Virtual File System: Git at Enterprise Scaleを見るとGit for WindowsGVFS版対応と、GVFSインストーラへのリンクがあり、驚くほど簡単にインストールが完了してしまった。モノリシックに膨れ上がったプロジェクトのレポジトリも一瞬で操作でき、Linuxで操作しているときのような快適な操作感があっけなく手に入ってしまった。

一週間ほど通常使用しているが手元では大きな問題もなく、快適に動いている。
Windows 10 使っててWindowsのGit操作の遅さで困っている人にはおすすめです。

なんで会社でコード書いて、家でもまた書いてんの?

相方から「会社でもずっとプログラミングしてるのに家帰ってきてからもまたやってる。面白いね。」と言われた。「会社でプログラミングしていることは確かなんだけど、会社では先人が築き上げた巨大なソースコードを読み、少しづつ改良しながら新商品に適合させているので、比較的コードを読んでいる時間が長くて、フルスクラッチでコードを書きまくるみたいな体験はなく、家ではそれを補うために素振りしてる。」と答えた。

最近は普通にCで簡単なLinuxコマンドをmanのみを頼りに再実装するのをやっているのだが、結構面白い。*1大体一発ですんなり動かなくて、ちょっとしたミスをする。

もっと、スッと正確なコードがかけるようになりたい。

*1:Rui UeyamaさんのライブコーディングYoutube動画を観て触発された。この動画はかなり得る所があるのでおすすめ。

小説家という職業

先週、すべてがEになるを読んでいた。*1 森さんの小説を書くスピード、小説家としての姿勢、兼業で短い時間で沢山の仕事をすることに興味があったので読んだ。期待を裏切らない良い本だった。短い本だったので、一気に読める。

自身に照らし合わせると、転職して10ヶ月でやることなんでも成長につながるフェーズは通り過ぎようとしていて、目的を明確にして技術を磨いたり、技術をお金に買えることを戦略的にやらないといけない。小説家とソフトウェアエンジニア、職業は違うので直接的な参考になるわけではないが*2、戦略を見直すきっかけになった。

小説家という職業 (集英社新書)

小説家という職業 (集英社新書)

*1:まだ継続して呼んでいる

*2:そもそも具体案は自分で考えるのでいらない

Your name

近所の映画館で公開されたので見に行ってきた。日替わりで"日本語音声、スウェーデン語字幕"のパターンと"スウェーデン語音声、字幕なし"のパターンが選べたのだが日本語音声日には他の予定が入っていたので、スウェーデン語音声版を見に行った。

日本の片田舎に住む、絶対スウェーデン語をしゃべらないであろう登場人物がスウェーデン語を喋る姿がおかしく、映画が始まって数十分は周りに迷惑をかけないよう、笑い声を殺しながら観ていた。特にスクーターに乗ったおばあちゃんが、ガキ二人に"Hej på er!"と言いながら通り過ぎて行く姿が最高にクールだった。

映画は最高に良くて、上映中にもう一度行きたい。次は日本語で。

Yak shaving day

今日はひたすらyak shavingしていた日だった。最近開発を始めたプロジェクトが本番環境がDocker 化する予定で、開発環境も本番環境と差異をなくすためにDocker化している。開発環境のDocker imageが何でも入りのモノリシックになってしまったため、Buildするのに多大な時間がかかるようになってきた。そこでDocker repositoryを自前で持ってBuild済imageをcacheし、それを使うことでBuild時間を短縮しようと考えた。

docker registry立てるだけなら簡単で、docker run一発で動く。まずはlocalで立ち上げて、それに対してpull / pushできることを確認し、そこまでは順調だった。

さて、共用サーバーにログインして、localでやった手順を流して同じように環境構築して、クライアントからアクセスするとうまくいかない。logを読むと、client側のdocker deamonはデフォルトでHTTPS通信するので、registry側もHTTPS通信するように設定する必要があるようだ。client側でHTTP通信させるようにすることもできるがそれだと、開発者全員にその設定強いることになるので、サーバーに側を正しく変更したいと判断。共用サーバーは社内だけで使ってるので、ホスト名はないのでオレオレCAを作成することに。オレオレCAなのでcertificate signed by unknown authority error。まぁそうだわなとcrtをclientに入れて…結局開発者に設定強いてしまい、振り出しに。

結構こういうの頻繁にあるのですが、どのように解決するのがいいのでしょうか?一日が終わって振り返ると、そもそも自前でDocker registry持つ必要があったのか?から始まって、色々と考えるわけです。

Yak shavingしている時は自分がループのハマっていることに気づきにくいことがあって、目の前の問題さえ解決すれば全て解決すると思いがちで、実際はその問題を解決すると次の問題が現れることはよくあります。私自身もその状態にはまらないために色々と指標があるのですがムキになると忘れがちになります。自戒ため、問題に直面した時の自分の指標をまとめておきます。

  • 解決する前に本当に今解決すべき問題なのか考える
  • 試行する前に、まずは何が問題で解決する手段はどのようなものがあるのか紙の紙の上もしくは、エディタに書く。頭の中で考えない。
  • 15分自分で考えて、思考してわからないときは人に聞く。ポモドーロテクニックや作業開始時刻を記録することでムキになってダラダラと試行しないように。

参考

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

ゼロ秒思考  頭がよくなる世界一シンプルなトレーニング

ゼロ秒思考 頭がよくなる世界一シンプルなトレーニング

umenon.com

SFI(Swedish for immigrants)が始まった

9月に申し込んで、7ヶ月待ちでようやく参加できた。昼間は仕事しているので週二回の夜間コース。本格的にスウェーデン語を学び始めた。
先生に続いて、声に出してリピートするのが学校っぽくて良かった。

娘が近頃マインクラフトをやりたいと言い出したので、iPadにインストールしてやらせてみたのだが、どうもこのゲームある程度サポートしながらやらないとわけがわからないということに気がついた。ただ木を切って穴を掘っているだけのゲームでこれではポケモンやらせてるのと何にも変わらないので自分も一緒にやってみた。著名Youtuberの方々の動画をググって、道具を作ってみたりした。

昼からパンクしていた自転車のタイヤの修理。後輪のチューブ交換初めてやったのだが、タイヤ外すのに案の定苦労した。タイヤのパンクの修理を自転車屋に頼むと数百Krかかり、しかも数日預ける必要があるので最近自分でやるようにしているのだが、最近はYoutubeで調べればいっぱいやり方出てくるのでなんとでもなる。

夜に4kmほどジョギングをした。