ビットの海

ゆるふわソフトウェアエンジニアしゃぜのブログ

bashで yyyy-mm-dd の連続生成

  • GNU dateを使用
  • なんかもうちょっとスッキリと書けないものか...。
#!/bin/bash

START_DATE="20201224"
END_DATE="20210103"
DATE_CMD="gdate"

for (( DATE=${START_DATE} ; ${DATE} <= ${END_DATE} ; DATE=`${DATE_CMD} -d "${DATE} 1 day" '+%Y%m%d'` )) ; do
  TARGET_DATE=`echo ${DATE:0:4}-${DATE:4:2}-${DATE:6:2}`
  echo ${TARGET_DATE}
done

実行結果

2020-12-24
2020-12-25
2020-12-26
2020-12-27
2020-12-28
2020-12-29
2020-12-30
2020-12-31
2021-01-01
2021-01-02
2021-01-03

Elasticsearch チートシート

クエリパラメータ

  • responseの整形
    • ?pretty
  • カラムヘッダの表示
    • ?v

Index操作

  • index一覧
    • GET /_cat/indices?v
  • index削除
    • DELETE /{index_name}}
  • index open
    • POST /{index_name}/_open
  • index close
    • POST /{index_name}/_close

Alias操作

  • alias 一覧
    • GET /_cat/aliases
  • aliasにindexをremoveして、add
POST /_aliases
{
  "actions" : [
    {"remove": {"index": "{index_name_v1}", "alias": "{alias_name}" }},
    {"add" :   {"index": "{index_name_v2}", "alias": "{alias_name}" }}
  ]
}'

検索

  • 無条件検索
    • GET /{index_name}/_search

neovim で vim-test から pytest を実行する

久しぶりにvimの話。 こんな感じでneovimで、vim-testからpytestを実行します。

f:id:shase428:20210218000200p:plain

pluginと設定

今回は2つのpluginを使用します。

name description
vim-test/vim-test 汎用テストRunner。様々なテストツールに対応。
kassio/neoterm neovim向けの高機能terminal

自分は dein の tomlでplugin管理をしているので以下のような感じで追記します。

  [[plugins]]
  repo = 'kassio/neoterm'

  [[plugins]]
  repo = 'janko-m/vim-test'
  depends = ['neoterm']
  hook_add = '''
    let g:neoterm_default_mod='belowright'
    let g:neoterm_size=10
    let g:neoterm_autoscroll=1
    let g:neoterm_shell = '$SHELL -l'
 
    let g:test#strategy = 'neoterm'
    let g:test#preserve_screen = 1
    let g:test#python#runner = 'pytest'
    let g:test#python#pytest#executable = g:project_pytest
  '''

少しだけ解説すると

let g:test#strategy = 'neoterm'

^ vim-testのstrategyとしてneotermを指定しています(ほかにもいろんなツールに対応しています)

let g:test#python#runner = 'pytest'

^ この部分でtask runnerを指定しています。

let g:test#python#pytest#executable = g:project_pytest

^ この部分は g:project_pytest をinit.vimのほうで定義していて、実際にprojectで使うpathのpytest(venv/binのpytest)を指定しています。

これらを設定した状態で、vim-testのコマンド( :TestFile など)を実行すると、neotermが立ち上がり、pytestが実行されるようになります。

キー周りのカスタマイズはおいおい...。

エンジニア35歳定年説を過ぎて36歳になって思うこと

はじめに

  • 10年前の2011年1月(当時26歳)にはじめての転職をしたんだけど、それから10年かーとしんみりしてしまった。
  • 初めての転職のときに、今何を考えているか、のブログを書いていて(現在非公開)10年後の46歳のときに振り返りしたら面白そうだなと思って書いてみる。
  • 別に36歳で転職するって話ではない。
  • 具体的な技術の話は出てきません 。

  • 2007年に新卒でSEになり、数社を転々としてまだソフトウェアエンジニアをしている
  • 子供が2人(3歳と0歳)
  • インフラやったり、開発やったり、プロマネやったり、データ周りやったり中途半端なキャリアとスキル

今考えていること、思うこと

人生の主人公が交代

子どもがいる人だとわかると思うけど、子どもがいると人生の主人公が交代していく感覚がある。将来ある子どもを差し置いて、自分のために投資するのがだんだん非合理に思えてくる(今の時点ではそこまでではないけど薄々)。

とはいえ、同級生で早く結婚して子どもがでかくなった友人曰く「10歳でかなり自立した(例:親と買い物とか行かなくなった)」って話なので、10年ぐらい子育てしたらまた違う景色が見えていそう。なので、過度に自分を殺しすぎずなんとか10年を過ごしたい。

40歳がリアルに見える

22歳で社会人になって30歳の状態みたいなのがまったく見えなかったけど、26歳になると(なれるかはともかく)理想の30歳時点の自分みたいなのがぼんやり定義できるようになった。

で、30歳のときは40歳を想像できなくて、キャリアも多少迷走感があったんだけど、35歳すぎると、40歳がリアルになってくる。他の人はわからないけど、自分は5年後ぐらいになるとリアリティが出てくるらしい。介護保険料の徴収開始やだな、とかも思っている。

なので、50歳の自分はまったく想像できない。親の介護問題に悩んでいるのかもしれない。

いきのこれるのか

手を動かすのを辞めなければ(あと健康であれば)エンジニアで食っていく、という最低ラインはなんとかなるかなと楽観的。とはいえ、最低ライン以上のスペシャリティを持った存在になれる(それを維持できるか)は見通せない。

周りと見渡すとエンジニアを卒業してしまった同年代も多いし、景気変動はあるし、若い人が知の高速道路を通ってやってくる。

強い専門分野が無いのが本当に致命的だなと思っている今日このごろ。

今はとりあえず40歳前後までエンジニア行けるところまで行こうかなと。

他の仕事もできないので、広い意味でIT業界/IT関連職種でなにかやっているんだろうなとは思う。

スキルのアンラーニング

新卒の頃一番やってたのは、OSとVMwareとハードウェア(サーバ・ストレージ・ネットワーク)周りのインテグレーションで、クラウド全盛の時代、このあたりの知識を活かすポジションはどんどんなくなっているし、キャリアチェンジしたのもあってもう10年ぐらいこういう基盤触っていない。

(例えば、とあるベンダーのSANストレージとLinuxのDevice mapper multipath の設定で悩んだ経験とかもう一生知識の引き出しからは出さないと思う)

パタヘネみたいな計算機の仕組みとかCとかTCP/IPみたいな枯れたものはともかく、ちょっとした製品知識、クラウドの知識、プログラミング言語知識、フレームワーク知識みたいなのは、速攻で陳腐化する運命なので、絶えず気合でアンラーニングするという気持ちでいれば食えるぐらいのスキルはなんとかなるかなと。単に食える以上となると難しいんだけど。

根本的には大学院とか行って、がっつりインプットしたい気持ちはあるけど、子どもとの兼ね合いになってくる。

健康

健康を気にするって時点で、オッサン化したなって気はする。幸い今の段階で持病等はない。1つあるとすれば、代謝が落ちてるせいか太りやすいのと運動不足な点。

40前後で1回ガッツリ人間ドック行ったほうがいいかなとは思っている。

20代は死ぬほど残業してたけど、もうあんな生活はできない。

遠い将来

人生をかけてxxを実現したい、みたいな大目標はまったく無いので、中目標、小目標を適時設定して日々それを達成して楽しく過ごしたい。

急成長スタートアップを立ち上げて〜みたいな志向もまったくないんだけど、人生のどこからスモールビジネス(開業)はやってみたいなとは思っている。

2020年振り返り

(結局簡単に書いとく)

これまで

2019年を振り返る - ビットの海

2020年の振り返り

  • コロナのせいもあるし、関係ないのもあるが、全般的にだめだめであった。
  • 仕事は雑に言うとデータ基盤周りと、検索基盤周りのことをしていた。
  • プライベートでいうと子供が+1
  • 振り返りと目標を書く気にならないほどにだめだめ

2020年毎月の振り返り

会社のブログ書いた

qiita書いた

ただのメモだが

子育てソフトウェアエンジニアの継続的な学び方のエッセンス

この記事は 子育てエンジニア Advent Calendar 2020 の 7日目です。

はじめに

  • コロナ渦での働き方、みたいな話は世に溢れていると思うのでしません。
  • 子育てエンジニアも、自分のモチベーションを大切にして、学びを続けるための自分の工夫について書いてみます。

昨年からのアップデート

shase428.hatenablog.jp

^ は2019年の記事です

  • 家族構成のアップデート
    • 子どもが+1したので、3歳(♂)と0歳(♀)の2児の父となりました 🎉
    • 夫婦、子ども2人の4人家族です。
    • 私(36歳)、新卒でIT業界に入ったのでなんやかんやで14年も仕事してる、転職は2回ぐらいしています。いまはEdtech企業でデータエンジニアをしています。
  • 働き方のアップデート
    • 例によって、ほぼフルリモート生活になりました。
    • 都内オフィスに行く頻度は月1回あるかないか、というレベルです。
    • 自宅の片隅に作業スペースをつくってひっそりと仕事をしています。

子育てソフトウェアエンジニアあるある

子どもがいると、人生の主役の交代、そこまで言わなくても生活の中心が子どもになりがちだと思います。

必然、自分の学びというのは後回しになりがちです。

とはいえ、日進月歩のIT業界

この10年で、仕事の仕方(使っている技術、文化)は大きく変わってきましたし、この先の10年も大きく変わっていくことでしょう。

自分が新卒だった時代にトレンディだった技術は枯れたり、使われなくなったりしていて(もちろん変わらないものも多くありますが)、「ふつうに仕事をする」これだけでも常に知識のアップデートが必要だなと感じことが多いです。

(ここでいう「ふつう」は 「世の中的なスタンダードな技術や知識」を指します)

また、インターネットの高速道路を通った優秀な若者は、30代/40代よりも現在の環境にうまく適応できることが多いように思います。

そういったとき、10年選手は「経験がある」「昔学んだ」だけでは、おそらく日々の仕事すら難しいでしょう。やはりエンジニアとしての継続的な学びが必要だと感じます。

学びの方法論

方法論は世にいくらでもあると思うので、個人的にやっていることについて簡単に書きます。

まず、学びたいと思っているテーマを書き出してみます。その中で、仕事で短期的に必要なこと、仕事で短期的には必要ではないことに分けてみます。

仕事で短期的に必要なこと、は、あまり工夫をしなくてもインプットが捗ると思います。これは、仕事というアウトプットの機会、仕事というモチベーションの後押しがあるからです。

(逆説的ですが、学びたいと思っている分野があるのであれば、それを仕事にしてしまうのが手っ取り早いです。もちろん、それが難しいケースも多いですが)

問題は、仕事で短期的に必要ではないが、長期的に自分の好奇心やキャリアのために学びたいと思っていること、これが意識的に工夫をしないと学びが進まない領域だと思います。

失敗したこと

ここ数年を振り返って失敗したと思っているが、学ぶことの取捨選択のやり方、です。

子育てエンジニアは時間が無いので、どうしても学ぶことの取捨選択を強いられます。去年の記事にもそのようなことを書いたのですが、この取捨選択のやり方で失敗したと感じることがありました。

自分の好奇心よりも、世の中のトレンドとしてやるべき、とか、一般的に考えてやるべき、みたいな外部環境的なモチベーションのものを「やることリスト」の上の方にもってきてしまいました。

この結果起こったことは、単純な学びの停滞でした(笑)

時間が無いのはどうしようもないのですが、そもそものモチベーションを殺してしまっては何にもならないのですね。

どうしても外部環境的なモチベーションを、内部的なモチベーションにつなげたいときには、テーマ同士を融合できないか、頭を悩ませることもあります。

苦手なことの学び

学びが進まない分野があるかと思います。

そういった分野は(自分にとっては数学なんですが、笑)切り口を変えてみる努力をしています。

例えば、入門書を読んでもわからないとしたら、別の入門書を読んで見る、雑誌の特集(読みやすい)を読んで見る、などです。また、分野によっては、Youtubeで良質なコンテンツもあったりするので、概要を掴むのに重宝しています。

学びでうまくいったこと

コロナでの在宅勤務により、狭いながら自宅での作業スペースを用意することになりました。

これによって、以前よりも学びのペースが確実に上がったと感じます。

これはコロナによる嬉しい誤算でした。自宅で作業できるスペースは本当に大切です。

他人と比べない

子育て中はなかなか自分の学びの時間を取るのが難しいと思います(自分も上の子が0歳のときは、正直何もできていませんでした)。

ペースがつかめてくると、どうにかこうにか、深夜や早朝など時間を確保できるようになる、という感じだと思います。

人と比べると辛くなるだけなので、昨日の自分、去年の自分との差分で、変化を見ていったほうがモチベーションを殺すこと無く継続できると思います。

まとめ

  • 子育てエンジニアにとっても継続的な学びは大切だと思います。
  • 学ぶテーマは自分の好奇心を大事にしたほうが継続的な学びにつながりやすいです。
  • 他人と比べず、過去の自分と比較するようにして、自分のモチベーションを殺さないように工夫してがんばっていきましょう。

学び方で参考になった本

各方法論は各書籍を読んでいただいたほうが良いと思います。