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

前編はこちら↓↓

Day10

お盆が明けて、3週目の月曜日(8月19日)がやってきました。先述した通り、グノシーではお盆休みは自分の好きな時に取るので、お盆休みの間もオフィスには普通に人がいました。よって、お盆明けでも特別やることが多いというわけでもないです。

先週の金曜日に新しいプロジェクトを開始してすぐ土日を挟んでしまったので、まずは復習をちょっとしました。
最初はVueとGoというなれないツールにコードを読むだけでもかなり時間がかかってしまったが、コードベースが比較的新しいということもあり、コード自体は非常にわかりやすくまとめられていました。
Goaというマイクロサービスストラクチャーフレームワークを使っているため、新しいサービスを追加するのが非常に簡単でした。

このプロジェクトで僕が担当するのはウェブUI側から簡単にユーザー情報を閲覧し、編集できるようにするというものです。
今日はとりあえず、ユーザー一覧を返すことができるエンドポイントを追加しました。これであとはフロント側の受け取りと表示機能を実装できれば、ユーザーの一覧をフロント側で見れるようになります。
個人的にはGoaで自動生成したファイル内で変更しないといけないものが多かった部分が少し面倒くさく感じました(笑)

余談ですが、今週は久しぶりに会う友達が多いので、結構楽しみにしていた週です(笑)

その一方で、土日の間にまたグノシーのミニ図書館の本を一冊読み終わりました。
この本はAIに何ができるのか書いていて、ロボットの村を作り、そこで感情を学習してもらうなどの思いつかなかった観点を知ることができてとても面白かったです。内容が二人の対話になっているので、すごく読みやすかったです。他にもいろいろな内容があるので、ぜひ読んでみてください。

Day11

今日は昨日の続きでフロント側のデータ受信とその一覧表示を実行していました。フロントの方は個人開発で書いていたコードよりもずっと複雑な構造をしていたので、それぞれが何をしていて、どこで必要になるのかなどを理解するのに少し時間がかかってしまいました。
例えば、Vuexをステート管理のために採用していたり、APIエンドポイントへのアクセスは何層に分けてリクエストしているかなどをファイルを一つずつたどって少しずつ理解していきました。

一方で、昨日のバックエンドのコードをレビューしてもらいましたが、結構ボロボロでしたね(笑)
やはり、初めてGoコードを書くので、Go特有のルールをあまり知らなかったんですね。例えば、JSONにパスする属性は大文字スタートじゃないと、パスできないとかですね。
このようにレビューを通して、色々と学ぶことができた一日でもありました。
次はもう少し指摘されるポイントを減らせたらなと思います!

Day12

一週間の折り返しまで来ました。今日はユーザーの一覧を表示できたので、いよいよ編集機能を追加するところです。こちらもバックエンドからやっていきます。結構なれたので、半日でエンドポイントは終えて、フロント側の方に突入しました。
エンジニアの方と相談した結果、エンドポイント側から編集し終わった際にはデータは送信してこないということだったので、フロント側で送信したデータをもとにステートをアップデートすることになりました。
しかし、これがなかなか面倒くさくて、ユーザーの一覧の方のその特定のユーザーを更新し、さらに、もしも、それが今ログインしているユーザーなら、ログイン中のユーザー情報を保持しているステートも更新しなくてはならなかったです。
後々考えると、ログイン中のユーザーをインデックスか何かにしておいて、ユーザー一覧の配列からとるという形を取っていればもっと簡単だったかもしれないと思いました(個人的見解なので正当性はなんとも)。

仕事が終わってからはバイトで来てた大学生の同僚と飯に行ってきました。仕事のランチの時間しか会話したことがなかったので、色々と話すことができてよかったです。
この子は学校ではプログラミングを習っていないですが、個人で始めて、一回のインターンを経て、グノシーでバイトをするようになったので、未経験でエンジニアを目指している方なら、このようにして上り詰めることもできるんだなと思いました(特に学生)。
会話の中でMac Proを買いたいよねって話をしたけど、24回払いという選択肢があることを知りました。今の僕にとっての20万って相当デカいけど、将来の20万は今ほどではないからこの方法なら未来の金を使って早いうちから高スペックのMac Proを使うことができるなと思いました。ちょっと今回は日本での滞在時間を考慮すると、難しい部分があるので、おそらく買えないですが、カナダに帰ったら、同じ制度がないか見てみようと思います。

Day13

今日遂にユーザーの編集に関する部分のフロントとバックエンドの両方を完成させることができました。フロントで苦労した部分もあったが、レビューも通ったので、とりあえずひと段落です。

ということで、今回のインターンのラストプロジェクトを始めることになりました。今度は動画の変換機能をこれまで編集していたサイトに追加するというものでした。例えば、.movファイルを.mp4に変えるなどのようなものです。
この機能自体は結構複雑なため、今回はAWSの提供しているElastic transcoderという機能を利用してこれを完成させようという話になりました。AWSを触ったことはなかったので、聞いたときは驚きました。いったいどのように外部の機能をコードの中に落とし込めるのか見当がつきませんでした。
今日は一応もうユーザー編集機能で半日は使っていたので、残りの時間でまず、Elastic transcoderがどのように機能しているのかについて学習しました。公式サイトのビデオが一通り見た中で一番理解しやすかったです。

今日はまず概念を理解するだけで終わりました。このプロジェクトに関してはまったく何も手を付けていなかったものなので、僕が0からコードの構造だったり、DBだったりをデザインするところから始まります。
ここまでの概念をもとに明日からメンターと相談しながらどのような情報を盛り込んでいくかを決めていこうと思います!

余談ですが、今日はグノシーの株主総会だったみたいで新卒の社員たちが案内をやるため、エンジニアでも年に数えるほどしかないスーツを着る日だったみたいでした(笑)

Day14

今日は昨日の続きでコードの構造などをデザインしていました。まず、今のウェブサイトがGoをバックエンドで使っているので、それと同様にGoを使っていきます。よって、Elastic transcoderの機能を使用するときに経由するAWSのSDKもGoのバージョンを使う必要がありました。これもまた公式サイトから見つけて、そこに書いてある英語を少しずつ読んで、何が必要で何が結果的に帰ってくるのかを確認してデザインを固めていきました。

https://docs.aws.amazon.com/sdk-for-go/api/service/elastictranscoder/

改めて英語ができてよかったとすごく思いました。プログラミングを極めたいのなら、英語は避けられないのかもしれないですね。

デザインはだいたい固まったので、早速まずこのAWSのSDKを使ってみるところから始めました。いろいろな設定があるので(セキュリティーの関係上)若干時間がかかりましたが、最初のテストがうまくいったときはこのSDKを使っていくことにすごく自信が持てるようになりました。

一方でエンジニアのマネージャーをしている方とシニアのエンジニアさんと今日はランチを食べるという風に予定を入れられていました。そんな大物と食べるとなると、さすがにすこし緊張しましたが、すごくしゃべりやすかったので、グノシーの優しい社員さんたちの内面を垣間見ることができてよかったです。エンジニアさんということだったので、色々と普段は聞かないグノシーで使われている技術について聞くことができました。
あと、この時に行った日本食がすごくおいしかったです。このあんかけ海鮮石焼ご飯、発想がユニークでしかもおいしかったので個人的にすごく高評価ですね。

あんかけ海鮮石焼きご飯

今週はこれで終わりなのですが、残りの部分を最後の週にがんばってなるべく仕上げていきたいと思います!

Day15

また週末が明けました。そして、ついにインターン最後の週がやってきました!
早いことでもう1カ月たったんだなって思わず感じました。まだプロジェクトが始まったばかりなので、終わるのかどうかという不安ももちつつ、今週も頑張っていきます。
昨日の夜に少し蕁麻疹が生じたみたいでかゆくて、なかなか寝れなかったので、今日の状態はあまりよろしくなかったです。昼前まではかなり眠かったです。でも、ごはんを食べてからはよくなったので、よかったです。

今日はいよいよElastic transcoderを実行するエンドポイントを作成するところをやりました。わからないところが多かったので、質問をすることが多かったですが、無事Curlからうまく作動していることを確認できるまでに持っていくことができました。
しかし、マージし終わった後に、S3への動画アップロード機能を入れていないことに気が付きました。このままでは、結局このサイトを使う人はS3であらかじめ直接S3のコンソールで動画をアップロードできる権利がないと、このサイトを利用できないことに気が付きました。(Elastic transcoderを利用するためには変換したい動画ファイルがS3バケットの中にあることが前提となるため)
自分のデザインが順序をしっかりと考えていなかったことに気づき、コードのデザインってすごく難しいんだなと痛感しました。

ちなみに週末の間にまたもう一冊の本を読み終わりました。こちらではよい質問の仕方について学習できました。主にどのように質問をしたら、よりよくなるのかなどのコツを知ることができました。いままで読んだ中ではかなりわかりやすく短くまとめてくれてたので、すごくおススメです!

Day16

昨日、Elastic transcoderを行ってくれるバックエンドを作ったので、今日はフロントの方から進めていきました。思っていたよりも順調にいったので、後半は忘れていたS3を導入していくことにしました。
それと同時進行で、先週ABテストが必要といわれていた部分が営業の方々から使っていて問題ないとのコメントをもらうことができたので、ついにマージすることができました。

一方で、今日は月に一度のシャッフルランチで会社内の参加者たちがランダムにチーム分けされて、ともにランチを食べます。これによって自分の部署だけでなく、他の部署の方とも知り合う機会ができるので、社内でのネットワークを広げるいい機会だと思いました。僕は他のチームのエンジニアさんと営業の方、そして、運がいいのか悪いのか同じチームの方1人と同じチームに分けられました(笑)
このランチに関しては会社側が一人1500円までカバーしてくれるので、結構たくさんの参加者がいます。僕たちのチームは焼肉を食べに行くことになりました。サラダとごはん、スープの無料おかわりがついて1300円というのはすごく安いなと思いました。

今回一緒になった他のチームのエンジニアさんはGoを極めた人らしく、以前、ポーランドでGoに関する講演も行ったことがあるみたいです(すげぇーー)。しかも、これは会社側からの要請になるので、旅費もカバーしてくれるという好待遇でした。僕も何か極めたいですね!
ちなみにこの方も大学生のころは文系だったが、自分でみんなの役に立つ何かを作り出したいという思いでプログラミングを始めたらしいので、現役で活躍しているエンジニアの中には文系の方も多く見受けられることが分かりました。

Day17

今日はS3の追加を終えて、レビュー待ちの間にフロント側の動画アップロード画面を整えました。これで両方ともマージした時点で一応機能としては完成という形になります。あとはもっと使っているユーザーに分かりやすくするためにユーザーがリクエストしたものを表示するということをしていこうと思います。
さらに、メンターから最後の日、つまり、今週の金曜日に社員の方向けにインターンの僕が発表会を行うんだよって伝えられました。突然の発表会通知にびっくりしましたね。大勢の人の前で発表することにはあまりなれていないし、まさかこういうのがあるとは思っていなかったので、急いでスライドの準備も進めていきました。
一応発表する内容としては何をインターン中にしたか、そして、それをやった後での感想といったものです。ちなみにこれは僕のインターンが1か月と十分に長かったからだそうで、1週間だけのインターンの場合は基本的にはやらないみたいです。

一方で今日は人事の方々と食事することになりました。人事ときたら、もうあれこれと聞いてくるのかなと思っていたのですが、終始落ち着いた普通の会話でしたので、安心しました。この食事会に関してはインターンで来ている方がみな一度はやるものみたいです。
もちろんいつも通り、会社側で食事代はカバーされました。今回食べたのはインド料理で、これまで食べたことのなかったインドの炊き込みご飯を食べることができました。

インドの炊き込みご飯

Day18

今日はS3のアップロード機能をフロントとバックでつなげることに成功しました。プロジェクトが80%完成したも同然ということですごく嬉しかったです。あとはもっとユーザーが使いやすいように入力されたデータをユーザーが分かりやすいようにサイトに表示するだけです。
さらに、レビュー待ちの間に明日の発表で使うスライドも作っておきました。一応エンジニア以外の人も聞きに来るそうなので、なるべくエンジニア以外の人でもわかりやすいようにしておきました。

先週やっていたプロジェクトがプロダクションに上がって、そのサイトを使っているエンジニアさんからすごく使いやすいといわれたときは自分の仕事の成果が反映されたと思えてとても嬉しかったです!

明日は最後の一日なので、できる限りのことをして、インターンを良い形で締めくくりたいと思います!

Day19

遂に今回の選考インターンの最後の一日がやってきてしまいました。長いようで毎日すごく楽しかったので、すごく短く感じられました。特に残業もせず、(正社員のエンジニアもほぼ残業なし)ランチはたまに会社側からお金を出してもらえてと、すごくいい生活ができたと思いました!

最終日の今日はできる限りユーザーに分かりやすいようにウェブサイトのUIを整え、バックエンドから情報を受け取ることができるようにしておきました。
これらが完成する前に発表会が始まってしまったので、発表時のスライドではまだ未完成という形で発表することになりました(T.T)
発表会には思っていた以上にたくさんの人が来たので、正直すごく緊張しました(ざっと見積もって30~40人くらい)。
難しい質問があまり来なかったのは幸いだったのかもしれないですね(笑)

その後、メンターと僕を担当していた人事二人と合計四人で僕のインターンについて振り返るというようなミーティングを行いました。こうやって改めてメンターから僕への評価を聞くのは初めてだったので、どんな内容が出てくるのかなって感じでしたね。
メンターさんからはインターン生として、積極的に質問をしたり、コミュニケーションをとるようにしてくれた部分はすごくよかったといわれました。この方がメンターや他のエンジニアからも僕がどのような人で一緒に働きたいかを見ることができるためとのことでした。
そのほかにも質問の仕方が最初は「どうすればいいですか?」のような直接的なものが多かったが、だんだん「僕はこうだと思いますが、○○さんはどう思いますか?」というように自分でまず考えて、そして、その意見をぶつけに行くというような形に変わったのもすごくいい部分だと評価されました。
そして、今回の選考インターンは合格を頂くことができました!!

最終的には予定していたすべてのことを終えることはできませんでしたが、あと何をどうすればいいのかなどの詳細をタスクボードに書き残して、メンターと他のエンジニアたちが後で必要な部分を付け加えやすいようにしておきました。

最後に1か月使ってきた愛しのMac Proとその充電器などを担当の人事に渡して、今回のインターンは終了となりました。

仕事が終わってからは懇親会ということで飲み会を催してくれました。普段はランチだけだったので、チームのエンジニアさんたちの普段は見られない一面が見れてよかったです。楽しい飲み会でした。一人2980円の飲み放題だったが、会社側がこれまた負担してくれたので感謝です!!

まとめ

以上で僕のグノシーでの1か月を日記にまとめさせていただきました。業務内容はある程度までしか話せないので、このような形になりましたが、インターン生がどのようなことを経験することになるのかは少しつかめられたかと思います。
一緒に働いていた人たちは皆優しかったし、お互いに助け合うチームワークが見て取れましたので、すごくいい労働環境だと思います。もしも、夏にエンジニアとしてインターンを考えているのなら、グノシーもぜひ考慮してみてください!!

皆さんの役に立つことを願います。
では、また次回まで✌
記事更新はツイッターで告知するので、ツイッターの方でもフォローお願いします!

コメントを残す

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