tjinjin's blog

インフラ要素多めの個人メモ

OSS活動を始めました

大したことをしたわけではないですが、とあるプロダクトに対しPRを出し、それがマージされてcontributorになりましたというお話です。ポエム成分多めです。

やったこと

  • awspecのec2 typeにTermination Protectionの属性のテストができるmatcherを追加しました。

github.com

やるなかで学んだこと・感じたこと

意外に動くものができる

これまでインフラ周りの担当として業務を行って来ていて、chefだとかServerspecだとか各種ミドルウェアの設定だとかはよく書くのですが、実際にコードを書く機会がほとんどありませんでした。(コードの定義が難しいのですが、何かのサービスやプロダクト自体のコードというイメージ)ただ、業務中に何か問題が起きた際には実際にコードを見たほうが解決が早いと思ってコードを見るようにしていたし(これとか)、それが前職でお世話になったとある先輩から学んだことだったので、それを信じて行ってきました。そういった活動をしていたからこそ、Rubyがあまりわからないながらもなんとかコードを書くことができたのかなぁと思いました。(もっと良い書き方はあるとは思います)

マージされたときの嬉しさすごい

業務では日々PRを出してコメントをもらい、修正があれば再度コミットをpushしてマージされる、という経験を得ています。が、OSS活動は基本的に会ったことがない人同士のやりとりで、信頼関係を築いていない状態であって、コードベースでの会話がすべてなのかなと思います。そんな中で自分が書いたコードがマージされるということが自己肯定感がすごくあって嬉しかったです。(PRマージしていただき、ありがとうございました)

"欲しいものがなければ自分で作る"を体現できた

今回このmatcherのPRを出そうと思った経緯としては社内での会話がきっかけでした。terraformでproduction環境の構築したあとにどんな作業があるかという話の一つに、データを保護したいサーバはTermination Protectionを設定するというものがありました。基本的にはサーバにはデータはためないというのがベターだとは思いますが、顧客からデータを預かるFTPサーバなどはどうしてもデータ保護の必要があります。クラウドのサーバだとボタンの操作ミス一つでデータを消す可能性があるので、より安全にということを目的に設定するようにしています。

ただterraformで環境を構築してchefでプロビジョニング・Serverspecでテストして終わり、という流れになりがちでどうしても設定が忘れてしまいます。人は忘れる生き物ですので、忘れたなら忘れたことを検知したい。そこで、「awspecでtermination protectonの設定をテストできたりしないのかな?」というあるエンジニアの言葉がありました。じゃあそもそもAPIとか用意されているのかな?というのを調べたのが、ひとつの前のエントリです。

そんな経緯があって、今回PRを出したのですが、"欲しいものがなければ自分で作る"というエンジニア冥利というか自分の根底になる考え方を実現できたのが自信になっています。あとは、スピード感ですね。最近、スピード感をものすごく意識していて、PRでもなんでも相手からのアクションがあったものはできるだけ早くアウトプットするようにしています。スピード感は価値だと思っていて、とにかく早くアウトプットを出すことが物事をうまく前進させていく上で重要だなとひしひしと感じています。(機会があれば後日書きたい)

テストやsyntax checkは非常に便利

自分がほとんど書いていないコードに対して、変更を行う訳なので既存の機能が破壊されてないかな?既存のコードとの整合性とれているかな?という不安がありました。が、awspecはちゃんとテストも書かれていたし、ciでrubocopでのsyntax checkも走るようになっていたので、非常に安心感がありました。自分がプロダクト作るとしたらこういう部分もしっかり整備したいなと思います。

日曜の夜にコードを書き始めてはいけない

日曜にふとやってみるかと思い立ちやったのですが、朝の4時くらいまでかかってしまいました。コード書き始めると止まらないので、日曜夜に書き始めてはいけないと学びました。今週は生活リズムがぐちゃぐちゃです。

これから

もっとOSS活動にコミットしていきたい

まだまだちっぽけな活動なので、これからもっとコードを書いていきたいなと思っています。

英語力をなんとかしたい

OSS活動なので、今の自分が持っているあらゆる能力(ググり力)を駆使して英語でメッセージを書いたのですが、おかしな英語だった気がします笑