こんにちは、皆さん!
2019年の夏に東京の六本木ヒルズにあるグノシーで1か月インターンしてきたので、その内容を日ごとの日記にまとめました。
よかったら、最後まで読んでみて下さい。

Day1

遂にインターン初日がやってまいりました。ワクワクしながら地下鉄の駅から出てきて、目の当たりにしたのが高くそびえたつ六本木ヒルズ森タワーでした。

六本木ヒルズ森タワー

来訪者専用チケットで25階に上がり、見えたのは「Gunosy」と壁に書かれたオフィス入り口でした。少し緊張もしながら電話をして、ドアを開けてもらい、ついにグノシー社に踏み入れました。

グノシー社の入り口

同じ時期にインターンを始める他のインターン生さん2名と担当者から説明を受けると、Mac Proを渡されました。幸せ過ぎて涙でそうでした。まさかこんなハイスペックなカスタマイズ付きのMacをこんな簡単に手渡してくれるなんて!!

初日だったということもあり、その後は、具体的にインターンしている間に何をするのか、そして、グノシーという会社について色々教えてもらいました。そして、開発するための準備として、PCのセットアップ、そして、Githubレポジトリからコードをダウンロードし、Dockerでのセットアップに勤めました。
来る前はGolangが人気だって聞いていたが、結局僕がやる部分はRailsだったので、開発は結構スムーズに行けそうな気がしました。Dockerも勉強しておいたおかげで何が行われているのかすぐに理解できました。日頃の勉強は大事ですね!
その後はMySQLにデータを挿入するだけでかなりの時間を取るようなので、タスクは明日からになりました。

タスクの内容には目を通したので、明日からハイペースでどんどん処理していこうと思います!!

Day2

さあ、2日目がやってきました。昨日よりは慣れた感じで電車に乗り、昨日もらったカードで六本木ヒルズに入りました。
着いて最初にしたことはやはり昨日からやっていたデータの読み込み作業でした。最後らへんに少しエラーがあったものの、データは無事に読み込まれました。

ここからは普通のエンジニアさんたちがよくやる朝の会議に参加し、チームのメンバーそれぞれが進捗状況をそれぞれ述べるという形をとっていました。そして、タスクが与えられ、いよいよコードを読み始めました。

最初のタスクはテーブルのヘッターのテキストを変えるという何とも簡単なものでしたが、本当にコードを編集し始めて、初めてどれだけ大きな会社の膨大化したコードをいじるのが難しいのかが分かりました。まず、修正する箇所を見つけるだけでもかなりの苦労でしたが、ここで編集しようとすると、これがなかなか繊細なもので、他のどの機能とかかわっているのかまるで分らない。最初に少し変更したものの、それは他の箇所で別のテストをフェイルさせてしまいました。その後、苦労しながらメンターに質問もしながら、何とか切り抜けました。
僕が所属しているチームでは火曜日締めのスプリントだったため、僕のチームのエンジニアは会議だらけで最後らへんで僕のPull Requestを確認する時間がなかったため、本当に僕の変更したコードがメインのブランチに反映されるのは明日以降になりそうです。

とりあえず、最初のタスクを通じて、今かかわっているプロジェクトのコードについて少し理解できたので、明日からはもっとすんなりいけそうです。

Day3

3日目にはもうこの自由な文化になれてきちゃっている自分がいまして、ついつい好きなネックレスをつけて出社しました。案の定、何も言われなかったので、より一層この自由な雰囲気が好きになりました。

今日は昨日、簡単なタスクでも意外と時間がかかってしまったことをしっかり頭に入れて、タスクをなめないように気をつけました。
しかし、苦労するのはこの部分だけじゃなかった。。。
本当に時間をたくさん使わされたところはコードの書き直しでした。チームが大きくなるにつれ、コードの書き方などには多くのルールがついていました。そのルールを満たせれていないコードを他の人が見つけると、そこを修正することになる。そして、何より大変なのはかなりの数まで増えた Rspec テストの処理でした。僕が所属しているチームでは CircleCI を採用していて、それが Pull Request を出したコードすべてに適用され、パスしない限りはマージできないようになっているのです。
そして、この膨張したテストはなんと、30分(ちょっと盛ってかな)もかかるんです(T.T)。なので、結果的に修正を食らうたびに30分もの時間を費やす必要がありました(もちろん、その間は次のタスクの準備をしているが)。

これらの反省を生かして、明日はあまり修正を食らわないようにがんばろうと思います!!

Day4

今日は昨日の夜渋谷でイベントに参加していたということもあり、少し朝からだるい感じがしていました(ちなみに参加したのは外国人と英語を話す機会をバーで提供してくれるというイベントでした)。
こちらのグループが運営しています↓

仕事の方は無事進めることができました。向こうの予定よりも早くタスクを進めてはいるものの、もう少しシステムの機能を開発できるようなタスクをこなしたいので、早くこれらのもともと用意されていたタスクを終わらせて、交渉してみたいなと思っています。
この三日間は毎日2個のタスクを完了しているといった進捗具合です(2個とはいえそんなに大きなタスクではないです)。

余談だが、通勤時間がおよそ30分あるため、道中で本を読むようにしているのですが、グノシーから借りた本がそろそろ読み終われそうです(飛ばし飛ばしに必要なところだけ)!
ちなみに読んでいたのはこちらの本↓

最近読んでいる本

Day5

今日は一週間最後の日!
明日から三連休って考えると、結構うれしいし、夜にはさらに友達との飲みもある。ということで、朝からテンションアゲアゲで出社すると、昼食がウェルカムランチということで無料にしてくれるのだとか。もうなんかうれしいこと続きで超幸せ!

昼前にはメンターのエンジニアさんと初めての1オン1があり、色々と相談しました。その結果、今アサインされているタスクを終えたら、何か面白そうなことをやらせてくれるかもしれないのだとか。楽しみですね。

ウェルカムランチは1500円まで援助ということで、近くにあるまあまあの値段がするすし屋に行ってきました。
マグロ尽くしのセットを満喫しました!

ウェルカムランチの寿司

そして、週の最後の日でもあるので、午後からはオフィスに人がいない状態で事が起こってはよくないので、マージは特にしないとのことでした。なので、まあ、あまり焦らずに火曜日(月曜日が山の日振替日であるため)にすぐにマージできるように準備だけしようと思いました。
というつもりだったが、仕事終わりのタイミングでの自分の書いたSQLだと、どうもスピードが足りないみたいなので、ここはまだまだ来週、書き直す必要がありそうだ。。。

まあ、そういうことは忘れて、とりあえず、週末を楽しもうと思います!

Day6

長かった3連休が明けて、火曜日です。今日明日はメンターのエンジニアさんがお盆休みということで、チームの他のエンジニアに質問することになりました。
グノシーではお盆休みは好きなタイミングに取るので、全員がいなくなるということはないです。今日来ていた他のエンジニアに聞いてみたら、9月にとるそうです(お盆休みじゃないやん笑)。でも、この制度だと、お盆中もオフィスに人がいるし、社員も便利なタイミングで休みを使うことができるので、Win-Winな感じがしますね。

さあ、タスクの方はどうかというと、一段目が終わって二段目に突入したというところです。今度はまたこの大きなアプリの違う部分をタッチするので、また最初にそのシステムを理解するのに少し時間がかかりますが、二個目のタスクをやるときにはすでにオッケーな感じでした。
しかしね、それでも4年前からあるコードを見ていると、「なんだこのとても Rails とは思えないようなコード」とついつい言ってしまうようなものがありましたね。

明後日にメンターが帰ってきたときにはほとんどのタスクを終わらせているような状況にしたいと思います!

Day7

今日もまたメンターのエンジニアさんがいないが、タスクを順調に進めていくことができました。
やはり慣れてきたということもあり、まさかの連続4タスクを一日で片付けることに成功しました。ただ昨日からのタスクがずっとPRにたまっているので、もう少し他のエンジニアさんとコミュニケーションをとって、マージできるようにコードの修正を頼むべきでした。
明日にはメンターも帰ってくるので、処理できていなかったタスクの質問ができます。おまけにもうタスクを一通り全部やったので、それに驚くメンターの顔も楽しみです。

ところで、今日行った焼肉屋さんがすごいお買い得価格でした。昼っていうのもあったかもしれませんが、900円の日替わりランチで、牛のハラミ、カルビ、なんちゃら(あと一個忘れました)がそれぞれ3枚ずつついてきて、ごはん、スープ、ドリンクバー付きという破格のセットでした。皆さんも六本木で働く機会がありましたら、ぜひ行ってみてください!

Day8

今日、ついにメンターが帰ってきました。しかし、連日休んでいたということもあり、どうもミーティングでの打ち合わせが多いみたいでした(一応、このチームの代表でもありますので、そういう管理面での作業もきっと多いことでしょう)。

オフィスに入って、最初に僕に質問をしてきたエンジニアさんがいました。どうやら、この前、僕がコードを編集した部分を営業部の方々が使用したのですが、僕の書いたコードによって他の部分の機能を妨害してしまうものが入っていたようでした。そのせいで、特定の作業をした際に、ウェブサイトがエラーを返すということが起きていました。
テストコードではこの部分はカバーされていなかったみたいだったので、PRを出した際にCircleCIにも引っかかることはありませんでした。
本来は営業部の人たちに自分の書いたコードを実行しているウェブサイトをテストしてもらい、エラーがなければマージするという工程だったところを僕がしっかりそれを把握していなかったので、このようなことが起きてしまいました。なので、次回からはもっとこのような少しの時間で完結できる確認をしっかりしていこうと思います。

一方で、たまっていたPRの処理に主に一日を費やしました。およそ6つのPRを残していて、現役エンジニアさんたちはそこからすごく細かい改善点までも検出することができちゃうので、やはりさすがという感じでした。一つ一つの修正点がまた学びになります!

明日からはどうも新しく別のプロジェクトに携わることができるみたいなので、とても楽しみです。VueとGoを使うということなので、今日できることを終えた後の最後の少しの時間でVueも基本を押さえておきました(Goは依然少しやったことがある)。
ちなみにこの時参考にしたのは、こちらのCodeSandbox!

Day9

インターン始めてから2回目の金曜日がやってきました。1週間の締めの日でもありますので、色々と1週間のタスクの確認などもありました。朝からはメンターがお時間があったので、以前からやろうとしていたABテスト(僕が書いたコード部分の)をメンターさんと一緒にやりました。あまり、調査結果は手助けになるようなものではなかったので、あれこれとその部分のコードをマージするかどうかの調査が必要になりそうです。

PRの処理はほぼ終わっていたが、ラストスパートをかけて最後の少しを終わらせていきました。ですので、残りは営業側と新しい機能の確認及びテストをして、問題なかったらマージする形になるでしょう(ちなみにこの確認作業はメンターさんが営業部の方としてくるようで、僕は直接的には関わらないみたい)。

さあ、そして、ずっと待っていたもう一つのプロジェクトが僕に対してオープンされました。グノシーのGithub上で僕が見れるものが増えるのは何ともほほえましい!
今回担当するのは完全に社内で使われるウェブアプリであるため、テストコードも特に書いておらず、コードベースも比較的新しく、小さいものでした。前の大きなプロジェクトと比べると、複雑さは落ちるが、今度はメインテナンスというより、もっと開発的なタスクが入っているので、一味違う体験ができそうです。
そのプロジェクトにおいて、今日はまだあまり時間をかけれなかったので、少しだけコードを編集し、コードベースになれるくらいのことしかできませんでした。月曜日からはまたじゃんじゃんタスクをこなしていきたいと思います!

一方で、金曜日の夜ということですので、まだ大学生の僕に予定がないわけがないのですが、まさかの2時間前ドタキャンを食らってしまいました。ということで、奮発してMeetUpで急いでイベントを探して、参加してきました。今回参加したのは中国語の言語交換イベントでした。英語でいつもバーでやっているものに比べ、すごくしゃべりやすかったので、とてもよかったです。仲良くなった人たちと遅い夕食を済ませて帰宅といういい感じの一日が過ごせました!

まとめ

今回はグノシーでのインターンを日記にまとめさせていただきました。
そのままですと、少し長いので、前編と後編に分けました。
よかったら、後編も読んでください!

では、また次回まで✌
記事更新はツイッターで告知するので、ツイッターの方でもフォローお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です