ぎんさんマインド

いち弱小エンジニアの思考とか趣味についてつらつらと書いてみるかもしれない。

Rubyのバージョンを上げた

どうもぎんさんです。
最近はコロナの影響でいろいろあって辛い思いをしています。
リアルな勉強会にいけないのはモチベーション管理的に困る
それ以外にも仕事もいろいろ変わり、6月から週2で1プロジェクトの面倒みつつOJTとして新人教育みたいなこともやってます。
そのプロジェクトは開発から2年ほど経っててある程度落ち着いてますが、課題としては多々あります。

まず一つにテストが書かれていないということ
カバレッジにしてみると20%くらい。開発時に忙しかったのかな?と思う。
次に各種Ruby,Railsなどの各種Gemsのバージョンが追従し切れてない点。
アサイン時で2.4.6でした。

とりあえずメインの目的は新人教育で、それはspecを書いてもらって、カバレッジの向上で何とかしようかなと思いつつ、私の方で各バージョンあげて行こうかなとなりまして、いろいろと相談しつつ、とりあえずまずrubyのバージョンあげて行こうかなということでやってきました。

一応環境的には

Ruby 2.4.6

Rails 5.1.4

CI/CD  circle ci

deploy先 heroku

githubでコード管理しつつ、dockerでどかっと(激うまギャグ)デプロイみたいなよくあるCI/CD環境

 

やったこと

 

 

とりあえずリリースノートとか漁りつつ、変更点とコードを舐めて、まぁいけるやろーって感じだったんで、

dockerfile,gemfile,おまけで.ruby-versionを更新して docker-compose build

-  FROM ruby:2.4.6
+ FROM ruby:2.6.6

カバレッジが低いので不安だが、いったんローカルはこれでうまくいった。

 

んで次にcircle ci の更新。

ci側も同様にimageの更新

-  image: circleci/ruby:2.4.6-node
+ image: circleci/ruby:2.6.6-node 

 ただこれで一度つまづいて、rubyのバージョンをあげるとnodeのバージョンも一緒に上がる。

2.4.6 https://hub.docker.com/layers/circleci/ruby/2.4.6-node/images/sha256-89766c25837d02700f79082ca6d1196c4333ee173a6b12d13709a61beea14c1c?context=explore

2.6.6 https://hub.docker.com/layers/circleci/ruby/2.6.6-node/images/sha256-285a7bd7ff370f3b9069895cc9bfdac23740a67dc5edd0f344f0335857719cac?context=explore

nodeのバージョンが上がるとwebpackのバージョン管理が代わり、webpackerの方も代わり、連鎖的に落ちていった。

 

一応これの解決法としてdockerのmulti stage buildを使って個別に管理するというやり方もあるが、私はそれを知らなかった 脳筋なので気合でいろいろアップデートかけて頑張った。  

dockerfileやpackage.jsonでnodeのバージョンを更新、とりあえず欲しがってるバージョンを指定して対応した。

後ほど、ci側のimageがしれっとnodeのバージョン上げてきてエラー吐かれたので、マイナーバージョンまで指定すると痛い目をみる。

で、いざpushしてみると`.circleci/config.yml`の方でcacheを使ってたので、それが古くて落ちる。

https://circleci.com/docs/ja/2.0/caching/

ここだとv1でやってるが、これをv2,v3を上げていくことで、ひとまず対応、その間新人くんが上げてくれたPRが尽く落ちた。だらしない先輩ですまない

 

ここまでやってようやっとciが通った。

で、一通り確認してからマージ(私は管理者だ)

するとheroku側で deploy failed何でかと思いみてたらbuild packにnodeが入ってない。

https://jp.heroku.com/elements/buildpacks

古いやつだとなくても動くのかな?とりま追加して対応。これで全てうまくいった。

この間4日(二週間)新人くんの面倒みつつ、rubocopの調教もしつつ(レビュー軽減対応)だったのでなかなか時間がかかった。

 

ここまでで得た教訓としては

ciミスるとみんなに迷惑かけて人数多ければそれだけプレッシャーかかる。

エラーログ読みにくい。ローカルでうまくいくのに〜って感じで再現しにくい。

その間いろいろ迷惑かけるが、まずは落ち着け。デプロイに失敗しても落ち着け。

有識者がいたらきけ、それが一番早い

ということ。

以上

 

所要時間1時間くらい

病気メモ:1

4月6日

ごくまれに頭がふらっする時がある。

心臓周りに違和感が出るというよりも頭だけクる感じ。

意識が若干飛びそうになる。バランス崩して椅子から落ちそうになるけど、完全に倒れるレベルじゃないくらいの。

寝不足とかの可能性もあるけど、一旦メモだけ

 

走ってて足が痛くなった時の対応

 

普段ランニングをしてたら足が痛くなったので接骨院行ってマッサージしてもらった。その時教わった対応法を残す。

 

対象

運動全くしなかったけど最近ランニングをし始めた人

ランニングのフォームとかよくわからない。

運動後の対応とかてきとーにやっちゃう人

足が痛くなった人

その上で私は↑全部当てはまる。

加えて普段の歩く姿勢が内股気味

 

痛めた箇所

足根骨辺りの外側

 

原因

姿勢が内股気味になっているので、歩く時の負荷が外側に大きくかかるようになっていた。

 

対応

 

ランニングフォーム

足のかかとから地面に触れるようにする。

摺足にならない。ザッザッという音を立てて走ってる時はその分だけ足の負荷が大きくなってる。

なるべく音を立てないよう走ることを心がける。

 

マッサージ

足のすねとふくらはぎあたりを重点的に行う。

足の内側から骨と筋肉を話すような感じでツボを押して行く。

 

痛くなったらすぐ冷やす。

 

 

今年の総まとめと来年への抱負

どうもぎんさんです。

今年も後数日で終わるので、今年の総まとめと来年の抱負を提示して、頭の大掃除をしようかなと思った。

 

去年もこう言う事を書いてたので、今年もそう言うものを書いていこうかなと言う感じ

https://impuresilver11.hateblo.jp/entry/2018/12/29/131830

  

去年あげた抱負はどうだったの?

年収アップ

 今年はあんまり…ただそれをできるだけの技術は得たと思ってる。

元々2ヵ年計画で考えていたので、来年がんばるぞい!という思い。

 

ブログ書く量を増やす。

増えはした、がかなり乱丁なポエム文書ばっかり。

まぁ元々文字書くのは苦手だったりしゃあないと言えばそうだけど、もう少し文章の書き方を覚えた方がいいんじゃないかな?って自己評価する。

ダイエットの記録とか、これは練習にならんやろ。

情熱プログラマの要約ってだんだん飽きてきたよね?

遊戯王は、モチベの波があるからなー…気が向いてネタがあったら書くよ。

ブログだしそんな気負う必要はないと思うが、最低限の書き方は覚えるべきだな。要改善

 

スキルを身につける。

今年は業務でいろいろやってきた分いろんな技術は身についたと思う。

基本はバックエンド周りが多いかな?RailsAPI側だけとか仕事でやってたし、最近もGolangPythonのFlaskとかやってるけど、そっち側の知識が主になってる。

おかげで初見で触れるものについても物大路しなくなった。言語の気持ちというか、これはこういう事を目指してこういう事を表現したいんだろうなってのが汲み取れれば結構すらすら書けるようになってきた。これは大きな進歩だと思う。

サーバーサイドエンジニアとして私は食っていきたいなという思いが出てきた。

自分の得意な分野だからこそ、それを伸ばしていくことで、それを自信につなげていきたいという思いがある。

ただ画面はあまり作ってこなかったから、その辺はダメかな。誰かに見せれるようなものもないし。

まぁ纏めると、バックエンド側は目標達成、フロントエンドは微妙って感じかな。

 

今年はどうだったの?

 

技術面

いろいろ実践やってきたおかげでいい経験はできた。が、ここからがスタートラインという考え、ここからどうやって自分の能力を伸ばしていくか悩んでる最中という感じ。

 

そのために、夏過ぎあたりからたくさん本を読むようになった。

例として挙げるならば

情熱プログラマ、達人プログラマ、エンジニアの知的生産術、クリーンアーキテクチャ、暗号技術入門、メタプログラミングRuby、実践TypeScript、PostgreSQL設計運用計画の鉄則、などなど本当にたくさん。

 

これによって、視野は大きく広がった、広がった代わりに、自分の持ってる技術力の未術さも知った。だからこそもっともっと伸ばしていきたい。

 

じゃあ何を伸ばしていくべきだろうか?Rubyは好きだからやる、Golangも好きだからやっていきたい。そしてそこから、そのコミュニティに貢献したいという気持ちも含めて伸ばしていきたい。

 

自分で自分を評価する際の基準をどこにおくべきだろうか?

今の自分は去年よりも大きく知識はついた、だが自己肯定感が低くなっている感じがする。

 

そのために会社ではなく社会的な評価の基準値を知りたい。何ができるのならばどれくらいの評価をされるのかという感じのもの。社会的に自分が認められる存在になりたいというのもある。

 

自分は昔から自己顕示欲は大きかった。ただ人前に立つような人間じゃなかったというだけで、

そういう意味だと社外でLTをどんどんしていきたいというのはある。ただ、いまの自分だけだとハードルが高そうではある。

私に対して客観的に評価し、判断してくれる人が身近にいるならば話はべつではあるが。。。

まずそういう環境におきたいなー

 

話を変えて、別の評価基準としてOSSがしたいという思いが出てきた。海外の人たちも含めて、世界中いろんな人から自分を評価され、そしてそれが自信に繋がり、コミュニティの一因にもなれる。これほどの場はないと思う。

まぁ実際のところ私は前にプルリクエスト送ってるんだけど、内容が誤字をちょっと直したよというだけだし、管理者放置気味だったのでほぼ無駄になった感があって、残念ではあった。

悔しさをバネにー的な思いも少しある。

 

という事で来年の目標としては OSSへの貢献、をあげていきたい。

まぁLTは今の自分の環境的に恵まれていないというのはあると思う。だからと言って逃げるのはよくないと思うし、いいネタがあったら発表するというスタンスで行きたい。

もしくは転職してそういう人の多い空間に移動する。これも目標の1つだな。

(社内LTは大きく活用していきたかったが、今年はなかったのが悲しいな…ネタはあったのに…)

 

 

体調面

4月に左人差し指を剥離骨折、8月のお盆期に失神して入院、その結果高度房室ブロックと診断される。

過去最低なほどに良くなかった一年だった。手術までして、体に機械埋め込むようになったし。

元より歳を取れば身体にガタが来るのも必然ではあるが、今後のために無理をしない生活と、何があっても大丈夫な蓄えは用意しておくべきだと感じた。

 

また、ダイエットは概ね成功した。100kgあった体重が70kg前後にまで落ちて、脂肪を落とすだけじゃなく筋力もつけた。おかげでそれなりに食っても体重が太りにくい体は得たと思ってる。

 

来年はどうするの?

技術面

まず第一に年収上げていくのは目標とする。この辺は貪欲に行きたい。

そして、OSSへの貢献、英語とか苦手なんだけど、まぁ頑張っていこうかなという思い。

 

体調面

健康体でいること、と言ってもどうすることもないけどなー。とりあえずランニングして心拍数をあげていくって考えかな?心拍数に関してなら具体的な数値的目標はないけれども

ランニングの距離的にはハーフマラソン走るくらいのトレーニングはしていきたいな。

ただし、怪我をしない事を第一とする。健康を維持するために怪我をしちゃ、元も子もないからな

 

肉体的には太らない。筋肉つける。体脂肪率はなんかうまく図れないから目分量になっちゃうけど、体重は具体的な数値を出していきたいな。

 

こんな感じかな。

今年はいろんなことがあったね、来年はもっといろんな事を起こしていこうね、ハム太郎

 

今年は人に教えたりコードレビューすることが多かったので備忘録まとめとく

どうも。

もう年末になって、個人的にはそろそろ今年一年を振り返ろうかなーと思い始める時期です。

そうして自分の一年を振り返ってみると、仕事で客先の方のコードみたり、最近でも自社の新人のコードみたり、なんだかレビュアーとしての作業が多かったかな?という感じです。(まぁ自分でもたくさん書いてますが)

その経験を元に、人からちょっとコードみてくださいと言われたときに自分ならどうみるかというのを、備忘録がてらまとめてみようかなと思いまふ。

 

とりあえずMUSTなもの

要件に沿った実装が行えているか

エラーメッセージが決まっている場合はそれらも含めて実装できているか。

作ったものが、どんなに素晴らしいものでも、相手が求めているものじゃなきゃ意味がない。

ここがはずれてたら大きく修正が入るので、まず真っ先にみなきゃいけない部分、手持ちの資料とかと並行して見ないといけないので、量が多ければそれなりに時間も根気もいる。

面倒だけど必須。これ見逃すのはアカン

 

テストが網羅できているか。

C0C1とかプロジェクト開始時の規約として決まると思うので、それが網羅できているかどうか。

そもそも抜けたテストがあるかどうかも含めてよく確認しておく。

抜けてたテストの部分にバグが潜んでたとかもたまにあるし、そもそもテストしにくい部分にバグが潜んでたとかもまぁある。

バックエンドなら一回実際にcurl叩いて見たり、フロントなら打鍵して見たりするのも良いかもしれない。

時間はかかるけれども。 

 

臭いを嗅ぐ

なんのこっちゃ?突然抽象的になったな。

実際うまく文章化も言語化もできないから辛い。でもこれがとても重要。

長年コード書いて人の見てりゃあざっとみて、「ん?なんかこの辺臭うぞ?」って思う時はままある。

新人の場合は人のコードを見様見真似で書いて見たとか、そういう場合はきな臭い。

「違和感あるけどなんだかうまく伝えられないし、まぁ言わなくても良いかな?」とか思ってスルーしてるとどんどん臭くなってくる。

 

ここから下はRailsで教えることが多かったからというのもあるかもしれない。

 

コードの可読性

ただでさえ、できる人のコードは魔法みたいだとか言われるのだから、どのレベルで記述するのかは予め定めておくべき(コーディング規約の統一)

ただ、そんな事言ってられない時もあるので、その時は各言語に定められている規約に沿って書いているかどうかを見る。

Rubyなら、true falseを返すメソッドなのに疑問符がついてないとかそんなものを見る。

mustではないけれども、新人が多い環境でそれをみんなが真似し始めるとヤバイ。

https://ja.wikipedia.org/wiki/%E5%89%B2%E3%82%8C%E7%AA%93%E7%90%86%E8%AB%96

 

レールに沿っているか

Railsは設定より規約という考えに沿っているので、もちろんその規約を知っていなければ道を外れていく、あまり経験がない新人相手ならこの辺は丁寧に教えていかなければならない。

その人個人の事前知識はバックグラウンドに大きく左右されるので、アレは知ってるけどコレは知らない。とかもありうるからここは丁寧に教えていこうね。

自分の知識の薄さにも気付かされるから勉強にもなる。

 

 

テストの可読性

Rspecは書き方が多様なので規約を付けないと十人十色のテストコードが出来上がる。これが本当に見辛くて、見てるだけでとても時間を取られてしまう。

 コーディング規約とか付けれたら良いけれども、開発中は忙しいからそっちに手が回らないなんてのもよくあるからなかなか辛み。

そんなのもあって結局、細かいフォーマットはどうしても良い。だがなるべく見やすいコードを書けという意味でコメントするようにしている。

でも実際のところ読みやすいテストコードに関しては私も勉強中。できる人に教えを乞いたい所。

 

ここからはコメントの書き方や言い方

 

なるべく丁寧な文章でかく

文字ベースだと思った以上に高圧的に捕らえられる可能性があるので、できうる限り丁寧にかく。日本人特有の、言葉だとこうだけど、裏ではこう思っているみたいな表現はなるべく避ける。

例えば

「どうしてこういう実装をしたんですか?○○だとダメなんですか?」

なんていうのは、書き手からしたら純粋な疑問なのかもしれないが、読み手からすると

「なんでこんな汚い書き方してんだよ!もっとこう書けよ!」

って意味合いに捕らえられる事もある。

というかそういう意味合いで使ってる人もいると思う。 

 

なのでこういう表現は避けて、IMO(私ならこう書くかなー)やIMHO(IMOの謙虚にした版)とか加えて言っておいた方が無難ちゃ無難かな?もっと良い言い方はあると思う。

 

教える場合は参考となるリンク等を提示し、答えだけを書かない。

書き方がおかしいとか間違ってるとかそういう時はよくあるし、それはどんどん言うべきだと思う。ただその場合、答えだけを教えるんじゃあ相手のためにならない。

教育の観点で言うならば、できるだけ相手に考えさせて答えを導き出せるようになってもらわなければならない。

なぜなら、これを覚えた後にその人が他の人に説明するというフェーズが必ずしも出てくる。

これはこうなんだという問題と答えだけ暗記したって、相手が「じゃあこういう時はどうなんですか?」「なんでこんな事してるんですか?これじゃダメなんですか?」とか質問されたときにスムーズに答えられないんじゃあやっていけない。教える側としてはそれは避けたい。

 

なるべくソースとなるリンクを加えておく

この辺は情報モラル的な考えも含めていくらか当たり前な事だとは思う。

自分がこういう考えを持ってコメントするのであるならば、それ相応の理由があるし、それを提示しなければ、相手だって、なんでこうしなきゃいけないの?って思う。

それを突き詰めていくのは時間の無駄だし、レビュアーの責任でもあると思うので、これは大事。

  

 

こんな感じだろうか。足りなければ後で増やしていく。

というか来年以降もどんどん増やしていきたいな。

 

ふと自分の寿命について考えてみる

 

持病で自分の心臓が弱いということがわかって、ふと考える事。

 

自分はどのくらいまで生きるのだろうか。

 

私の家系は元より心臓が弱い人が多い感じだ。

というか母方の家系がそう。

 

去年叔父さんが亡くなった。心筋梗塞によって、早朝に突然、苦痛を感じず安らかにということを聞いている。

齢確か51か53くらいだったかと思う。

人の年齢は興味がない人間なので大雑把ではある。(ただ数字には一定の興味が出るので、奇数情報だけは頭にある)

 

もっと遡れば約20年前、母方の祖父が亡くなった。

私は小学校にも上がる前の、とても小さい時だったので殆ど覚えちゃいないが、ペースメーカー入れるくらいには心臓が弱かったと言うことを最近聞いた。

年齢は6,70くらいだったろうか?後で聞いてみよう。

祖父ということでかなり老けていた記憶ばかりあるが、今思えばそこまででもない気もする。

 

そう考えると私の持病はそういうものの遺伝で巡ってきたのだなぁと感じる。

 

それで私は今後どれくらいまで生きるのか、

だいたいこれまでの家族を考えれば5,60代だろうか。

ただ私は今27でそれなりに若い。その上でこういう持病が出てきている事を考えると、もっと悲観的に見る方がいいだろう。

 

となると50代か、もっと悲観的なら40代くらいか。

 

どちらにしろもう人生の半分を過ぎてると考える方が妥当か…