fishのヒストリ重複が邪魔なので掃除するツールを作った

fishに乗り換えて不便に感じることも減ってきたのだけど、ヒストリの重複が邪魔だなーと思ったので重複を掃除できるようにした。標準の設定でそれらしいものは見つからなかったのでGoでさっと書いた。設定でもしあれば教えてください。

https://github.com/takaishi/fish-history-gc

以下のようにfish_postexecで実行して重複しているエントリを消すようにしている。実行時刻は新しいものを残すようにした。

function history-merge --on-event fish_postexec
  history --save
  history --merge
  fish-history-gc -overwrite
end

ヒストリサイズが大きくなったら遅くなるかもだけどその時考えることにする。

AtCoder1日目

というわけで始めて見ることにした。ありがたいことに現在所属している会社からはエンジニアとしてそれなりに評価されている。しかし、新しい知識や技術、スキルの獲得ペースは落ちていると感じていて、ちょっとコンフォートゾーンから抜けるためにあれこれ取り組もうと思ったのだった。

言語を何にするか悩んでいて、よく使われているぽいC++をちょっと触って見ようとまずはAtCoder Programming Guide for beginners (APG4b)を触っている。EX10までやった。Go 1.6も使えるようなので、どちらにするか悩ましい。C++は仕事では全く使わないのだけど、仕事と同じ言語じゃないといけないってこともないわけで…せっかくなのでAPG4bは一通りやってC++の文法などの知識は知って、そのあとC++とGoでやってみてどっちを使うか決めようかな。

10年食べる

少し前にTwitterで10年食べていける技術、それを見極める目が欲しいというのを見かけて、少し考えていた。考えた結果、

  1. 10年前から今まで使われている技術であれば10年後も使われている可能性は高いので、その技術のスペシャリストになる
  2. 10年前と今を比較すると、技術の移り変わりは非常に激しい。物事は変化するという前提で変化についていけるような基礎的・抽象的な力を身につけていく

といった戦略がありそうだ。自分の場合仕事を始めて5〜6年経つが、すでに仕事で使う技術が何回も変わっている。結果的に2の戦略に近い動きをしていたように思う。

今後10年間、需要があり続ける特定の技術って何だろうか?パッと思い浮かぶのはRDBとか?これは10年後になくなる、というのは想像できない。絶対残ると思う。他にもあるだろうし、そういう技術を突き詰めれば長い間食べていけるだろう。10年前でも今でもシステムにとって交換が難しい技術を考えると良さそうだ。とはいえ、RDBのような技術も10年間でアップデートはされてきているだろうから、常にキャッチアップし続ける必要はあるだろうなあ。また、20年後、30年後となると残っているかどうか不確実だというリスクもあるだろう。

自分の場合は変化し続けることでこれまで食べてきており、特定技術のスペシャリストではない。今使っている技術が今後10年間その使い続けられるという前提のみで行動すると変化した時に詰んでしまいそうだ。僕は今Kubernetes周辺の技術を仕事のコアとしているが、10年後もそれで食べていけるか?というとわからない。5年くらいはいけると思う。また、Kubernetes関係の仕事だけしかしないつもりもあまりなかったりはする。技術のコアに近い所にいて動けるならまた別の戦略があるかもしれないが、そういう立場になったことはないのでちょっとわからない。

具体的な技術ではなく、論理的な思考能力や抽象化能力、計算機科学の基礎知識も重要そうだ。10年前でも10年後でも重要だろう。これらを持っている人は技術トレンドが変わってそれまで使っていた技術が全く使われなくなったとしてもどうにかなる気がする。