らいむぎばたけ

つかまえなくてだいじょうぶ

Rails ガイドと MDN に PR を出した

日本語のドキュメントで表記が気になるところがあったので出した。はじめての経験だったので記録として。

放送大学の情報ネットワークの授業の中で、授業で学んだトピックのうち深堀りしたいことについて調べるという課題があり、 HTTP ヘッダについて調べていたときに見つけて気になっていた。

間違ったことが書かれているわけではないし、まあいっかくらいの気持ちで最初は見ていたのだけど、心のなかにあったもやもやが晴れなかったので出してみた。

github.com github.com

Fork して PR 送ることをほとんどしたことがなかったので、ブランチ名に自分で id: を入れないといけないのかなと思ってドキドキしたが、PR 作ってみたら自動で lime1024:fix_wording こうなっていてホッとした。

フィヨルドブートキャンプを卒業して転職していました

これは フィヨルドブートキャンプ Part 1 Advent Calendar 2020 の 24 日目の記事です。昨日は azitama さんの GitHubActionsでRubyのMinitestを実行する でした。Part 2 もあります。

はじめに

フィヨルドブートキャンプ を卒業して、 2019 年 6 月に転職し、気がついたら一年半が経過していました。そういえば卒業したことも転職したことも書いていなかったと思い、アドベントカレンダーを機に書くことにしました。RubyKaigi 2019 の 0 日目に内定の連絡をフィヨルドの @machida さん経由で頂いて、ふわふわした気持ちで RubyKaigi を過ごしていたのがなんだか懐かしいです。1

自己紹介

@lime1024 です。学生時代は高専の電気電子工学科でした。授業で C 言語はやりましたが当時は全く理解が出来ず、プログラミングの授業は大嫌いでした。通信に関わる仕事がしたいと小学生のときに思い、一陸特と 3 アマを取得し、学生時代はアマチュア無線同好会に所属していました。ちなみに、家族全員がアマチュア無線の免許を持っています。通信に興味を持ったのは、父と一緒にクーガー No.7 でラジオを聞いて、ベリカードを集めたことがきっかけで、将来の夢は「通信業界」で「エンジニア」として働くことでした。

前職

通建っぽい会社に新卒で入って、技術系というよりは管理系の業務をずっとやっていました。自分の思い描いていた「エンジニア」とはかけ離れていることが多く、日々おつらい〜〜〜〜!!と、なっていたところ、夫の勧めもあってプログラマとしての転職を決意しました。

勉強を始める

まず最初は向いているかわからなかったので Progate からはじめて、よちよち.rb や RailsGirls, more! に行くようになりました。はじめた頃 (二年半前) の日記を見たところ「mkdir はメイクディレクトリって読む」と書かれていて、そうか〜そこからだったか〜〜!!

フィヨルドブートキャンプに入る

転職する決意が固まったこと、コミュニティに参加して楽しかったこと、何よりプログラミングが楽しかったことから入ることを決めました。フィヨルドブートキャンプを選んだ理由は夫に勧められたからです。

当時は今のような有料制ではなく無料で、就職先の企業からフィヨルドにお金が入るという仕組み 2 だったので、卒業できなければフィヨルドにはお金が入りません。フィヨルドブートキャンプに入ってからプログラマに向いていないことがわかれば辞めることも致し方ないとは思いますが、途中でやっぱやめた〜となるのは違うかなと思い「絶対に転職するぞ」という強い気持ちで入りました。

転職を決意するにあたって、通信業界から離れる可能性が高いことは最後まで悩みましたが、それよりも「エンジニア」として働きたいという気持ちが強かったので入ることを決めました。

悪かったこと、良かったこと

フィヨルドブートキャンプの悪かったことを一生懸命思い出そうとしたのですが、最初は「悪い」と思っていても時間がたつにつれて「良い」に変わっていったことがほとんどだったと思います。例えば、良くも悪くも手取り足取り教えてくれないので、自分の思い描いていたスクールのイメージとは全然違いました。わからないことがあっても「まずはググろう!」「まずは公式ドキュメントを読もう!」という感じで「えっ、何も教えてくれない...」とはじめの頃はなっていたのを覚えています (勿論、質問すれば教えてくれるのですが) 。フィヨルドブートキャンプは道を示してくれますが、そこを切り拓いて進んでいくには自分の力が必要です。待っていても誰かが教えに来てくれるわけではありません。そのおかげで自走する力や質問する力がつき、わからないことは公式ドキュメントで調べることが大事だと理解できたので、結果的に良かったことだと思っています。

フィヨルドのお二人はスクールの先生というより、同じ会社の同僚 (先輩) みたいなイメージがわかりやすいかなと思います。先生っぽくないのは、以前書かれた @komagata さんのブログのタイトル「 スクールをやっているけど教えるのが好きなわけじゃない」 からもわかりますねw

転職して変わったこと、わかったこと

夫と技術的な会話ができるようになった

フィヨルドブートキャンプにいる間、夫のことはルー大柴だと思っていました。わからないことを聞いたり相談したときに返ってくる言葉に横文字が多くて、いつも???となっていました。夫曰く、就職してから会話のレベルがぐんと引き上がり、今まで教えてもらうだけの関係だったのが少しずつ変わってきていて、夫から相談を受けることも増えてきました。そして段々と自分もルー大柴に...

Ruby, Rails 以外にやらないといけないことがたくさんある

AWS, Docker, CI ... まあなんかたくさんありますよね。入社前の仕事のイメージは「RubyRails を使って新機能の開発をする」でしたが、いざ仕事としてはじめるとそんなことはありませんでした。最初の頃は AWS 周りの話を見聞きすると Elastic hoge が多すぎてよくこんがらがっていました。

コンピュータの知識がなさすぎてつらい

スレッドって何?プロセスって何??CPU 、メモリ.......???という状態を指しています。知らないことは以前から自覚しており、漠然とした不安はありましたが、はじめの頃は特に困ることはありませんでした。ただ、インフラに興味を持ち始めてからはそういうわけにはいかないと特に強く感じるようになりました。以前にインターネットのどこかで「コンピュータがわからないのにプログラマやってるやつは〜」みたいなくだりを見て胸がぎゅっと締め付けられたのを覚えています。

おまじないは無いし、魔法使いもいない

デプロイ周りの話を例に出すと、フィヨルドにいたときは master にマージしたらデプロイされていたので、なんかそういう機能があるんだなくらいの気持ちでした。転職してからも「あるブランチにマージするとデプロイされる」けど「そういうもの」としてしか認識していませんでした。なので、当時の自分はデプロイが失敗しても、なんでデプロイできないんだろう?でも、デプロイを管理している人が誰かいて、どこかのファイルなり設定なりを直してくれるんだろうくらいの気持ちでいました。勿論、そんなわけないんですが。便利な仕組みは誰かが書いたコードであって魔法ではないことを知ってから、自分が理解できていない状態で動いているものがあることが怖くなりました。ちゃんと理解した上で便利に上手に使えるようになりたいと思っています。

テストを書くのは大事だなと思った

フィヨルドブートキャンプにいた頃、夫に「テストは書いたほうがいいと聞くから書くけど、何で書いたほうがいいの?」と聞いたら「テストは自分のために書くものだよ」と言われ、(こいつ何言っとんじゃ、意味わからん) ってなったのを覚えています。その意味は、転職して実際に仕事としてはじめるまでわかりませんでした。想像の話にはなってしまいますが、フィヨルドブートキャンプ内のアプリを開発していた頃は、ユーザも身内みたいなものだったので自分が書いたコードに対する責任感は薄く、品質に対する意識が低かったのかなと思います。今はなんならテストを書いてから実装するほうが個人的には好きです (個人差があります) 。

さいごに

悪く言えば、きっかけは「エンジニア」というものにすごく固執していたことがはじまりでした。なので、はじめはプログラマになりたいというよりエンジニアになりたいという気持ちでこの道を進んできた感じではありますが、今となってはそのおかげでこの仕事に就けているので、それはそれで良かったなと思います。

この業界に来てから、日々わかることが増え、成長してることが実感できて楽しい日々を送っています。最近は RubyRails よりもインフラ周りのほうに興味があります。プログラマになって本当に良かったですし、フィヨルドのお二人には感謝しかありません。これからも何らかの形でフィヨルドブートキャンプに関わっていけたらいいな、と思っています。


  1. @machida さんが内定の連絡を受けて、電話でやり取りをしていたらナイトクルーズに乗り遅れたそうです、すみませんでしたw

  2. プログラミングスクールを作ってみた - Speaker Deck

🐟ISUCON10 の予選に参加した🌼

ISUCON10うなすけやまま の三人でチーム名「たんぽぽの上の刺身」で参加した。結果はスコア 1302 でおおよそ 100 位くらいだと思われる。初参加でどきどきしたので記録として残しておきたい。結論としてはとても楽しかったので、来年も同じメンバーで出られたら良いなあと思っている。

f:id:lime1024:20200917004030j:plain

インフラ周りの話はこちらへ ISUCON10 の予選に参加した - きりきりやま

はじまりと予習

うなすけから「三人で ISUCON に出ませんか?」と誘われる。わたしを誘うの?正気か?と思ったが、プログラマになって一年、ちょっと挑戦してみたい気持ちが無かったわけではなかったので、参加することに。本人に直接伝えるのは恥ずかしいのでここに書き留めますが、声をかけてくれてありがとうというお気持ち (既に酔っ払って伝えている可能性はありそう) 。

事前に予習として、過去回のコードを見ていたが、何をやっていいものかさっぱり。そもそも Sinatra だったことを知らなかったので、大丈夫かなと不安に思った。何より不安のタネは ActiveRecord がそこにはなかったこと。やままに毎晩のように「ActiveRecord に甘やかされるな」と言われながら SQL を勉強した。毎晩はちょっと盛ったけど、結構言われたので頑張った。

全員では、オンラインで集まって ISUCON8 の予選を予習した。このときにおおよそチームの動き方とか担当も決まって、当日もその流れが踏襲できていたと思う。

当日

予定より遅れた開始時間 (遅れたことを責める意図は全くもってない) により、緊張がピークに。止まらない手汗、多くなる口数。うなすけとやままにうるせえと言われながらも、なんかもうどうしようもなくなってとりあえず縄跳びをした。開始前から全身汗まみれになってしまい気分が落ち込み、ちょっと口数が減った。良かったのか良くなかったのかわからない...

環境

  • わたしとやままは一緒に自宅。うなすけも自宅
  • 通話は作業用の端末ではないもので Zoom で繋ぎっぱなし
  • テキストコミュニケーションは Discord
  • 予習したときにまとめたものや残して共有しておきたいものは Scrapbox

担当

  • やまま: インフラ
  • うなすけ: インフラとアプリ
  • らいむ: アプリ

わたしとやままはお互いに相談したいことがあれば、うなすけに聞くような感じの体制だった。PR は自分以外のどっちか手が空いているほうが確認。やままはほとんどアプリを見ていなかったので「これなに?」って聞かれたらわたしが答えるようにしていた。

やったこと

  • うなすけとやままが、コードを clone してきたり、デプロイやインフラ周りの整備をしている間に当日マニュアルに目を通して、必要そうなことを伝える
    • とはいえ POST /initialize のレスポンスに実装言語書かないとベンチ通らないよ!としか言ってない気がする
  • うなすけが GitHub にコードをおいてくれたので、そこからはアプリのコードと DB の schema を見る
    • インフラ整備中の二人にざっくりこんなアプリだよ!っていう話をした
    • たぶんここ改善したほうが良さそうみたいなところをピックアップ
  • やままがローカルでの立ち上げに成功したので、伝授してもらう
    • 各々であーだこーだやるとあれなに?これなに?と会話が発生して時間がかかるので、単独では進めないようにした
  • ローカルの環境が整ったので explain をひたすら叩いて type を確認しながら必要そうなところに index を貼る業をする
    • pt-query-digest の準備が整ってからは slow query を見ながら必要そうなところに index を貼っていた
  • なんかやばそうだけど自分では対処できないと思ったところはうなすけとやままに投げたりした

反省点

get '/api/recommended_estate/:id'

  • index が使われていないのはわかってたけど、どうしたらいいかわからなかった
  • 条件を減らせば index が使えたので分割した
    • その代わり DB への接続回数が増えるのでまあ多分厳しいかなと思いつつ
  • そんなに点数は変わらなかったので、まあそうだよねというお気持ち
  • 終わってからうなすけと、一番小さい面積 (一番短い辺と二番目に短い辺) で見たらよかったのかな?という話をした

ORDER BY popularity DESC, id ASC

コードしか見てなかった

  • ブラウザからアプリ見てなかったので金額が Range だったことに気づいてなかった
    • たぶんおそらく自分だけじゃなくて、チーム全員ブラウザでは確認していなかったはず

まとめ

わたしは最初の環境整備とかをほとんどすっとばしてアプリを見ていたので、デプロイもベンチまわすのも二人に完全にお願いしていました。おかげでバッティングしなかったので前半は良かったが、終盤になってくると二人が忙しくなってわたしの手が空いてしまったので、デプロイまわりも共有しておけばよかったなあと。

戦力にならなかったらどうしようと不安に思うこともあったが、気づいたらあっという間に一日が終わっていた。次回はもっと強くなって頑張りたい。わからなくて倒せなくて二人にお願いしたところも自分で倒せるようになりたい。そして、そのときにはまた三人でできたらいいなあと思う。とにもかくにも楽しかった。