Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

Pythonしか知らない新卒がGunosyに入るとこうなる

この記事は Gunosy Advent Calendar 2019 16日目の記事です。

前回の記事はサンドバーグさんのドライブレコーダを作り始めて見た Pt. 1でした!

はじめに

こんにちは。広告技術部の中村(@johnmanjiro13)です。
19卒のエンジニアとして4月に入社しました。
今年のクリスマスでの個人的な楽しみは水曜どうでしょうの新作です。はい、キュー!

今回は新卒として入った筆者が4月から12月まで働いてみて(実際には1月から内定者アルバイトをしていたので実質1年間)、入社時と現在で触れる技術にどのような変化があったのかを書こうと思います。

入社以前

入社以前の知識は以下のような感じです。
タイトルにもある通り、ほぼPythonしか知らないという状況でした。

  • 言語
    • C(授業で書いた程度)
    • Java(授業で書いた程度)
    • Python(バイトや研究で使っていました。歴2年)
  • インフラ
    • EC2?ALB?何もわからない
  • その他
    • 基本的なSQL構文(JOINが使える程度)

なので、これから紹介する技術はほぼ未経験でした。

入社後

ここからは、実際に筆者がこの一年間で触れて、ある程度扱えるようになったものを紹介します(一部触り始めのものもあります)。

なお、ここでの「扱える」とは、「こういう機能つくってね」と言われたら一人で調べたりしつつ実装できる(程度の差はあれど)というレベルです。

プログラミング言語(サーバーサイド)

Go

Gunosyでは、サーバーサイドのコードの大半がGoで書かれています。

筆者はサーバーサイドのエンジニアとして入社しているので、必然的にGoを書く機会が多く、入社後もっとも書いている言語だと思います。Pythonと違い静的型付けの言語ですが、型があることでコードが理解しやすいのに加え、コンパイル時にエラーを見つけてくれるのでとても好きな言語です。また、基本的な文法が少なく初学者でも理解しやすいというのが個人的な魅力のひとつでもありますね。

Ruby

Gunosyではいくつかの管理画面にRuby on Railsが使われています。筆者が在籍している広告技術部にもRails管理画面が存在するので、必然的にRailsを書くようになりました。 RubyはPythonと似ていると感じる部分も多くある一方で、思想やコードの見た目で違う部分も多く、「PythonだとこうだけどRubyじゃこう書くんだな」という新たな学びがありました。

また、現在開発しているプロダクトでは、fluentdから直接Redisへデータを書き込むプラグインを書きました。自分でプラグインを実装すると、今まであやふやだったfluentdのバッファやチャンクといった概念をより具体的に理解できるようになりました。

管理画面で使われているRailsについては、以下の記事が参考になります。 tech.gunosy.io

プログラミング言語(フロントエンド)

React.js・Vue.js

フロントエンドのフレームワークとして、React.jsとVue.jsを触りました。ここでは同時に紹介させていただきます。

React.jsは前述した管理画面のフロントエンドの一部で使用されています。また、Vue.jsはGoと組み合わせたSPAの社内管理画面で使われています。 特にVue.jsは筆者が初めて触れたJavaScriptフレームワークで、stateなどの概念もVuexで学びました。その後にReact.jsも触ることになったのですが、Vue.jsの経験があったため比較的楽に理解することができました。

SPAの管理画面については以下の記事に詳しく書いてあります。 tech.gunosy.io

TypeScript

広告技術部でJavaScriptを実装する際には、TypeScriptを採用しています。

これはGoと同じように型があることでコードを追いやすくなるという利点や、コンパイル時にエラーを検知してくれるというところが大きいです。先日広告のタグを作った際にもTypeScriptを採用しました。 tech.gunosy.io

その他

Terraform

Terraformはインフラリソースをコードベースで管理することができるツールです。例えば、TerraformでEC2インスタンスを一つというようなコードを書けば、実際にAWS上にEC2インスタンスが作成されます。

もともとはインスタンスなどはOpsworksで管理されており、コード管理はされていなかったのですが、最近導入されました。 Terraformで管理すると、実際に必要な設定などをコードとして記述しなければならないので、自分が今扱っているリソースがどのような構成・設定になっているかを経験として知ることができます。そういう意味では、Terraformによる管理は非常に勉強になります。

Digdag

DigdagはTreasure Data社が開発しているワークフローエンジンです。広告の配信側で必要になるバッチなどは、ほぼすべてDigdag上で運用されています。 なので、新しいバッチが生まれると必然的にDigdagのファイルを扱うことになります。

Digdagの運用に関しては以下の記事が詳しいです。 tech.gunosy.io

最後に

今回は筆者が新卒としてGunosyに入社した後に扱えるようになった技術と、その参考になるテックブログの記事を紹介しました。サーバーサイドだけでなく、フロントエンドやインフラ系も幅広く扱うことができたと思います。もちろんこれは筆者という一例なので、入社した方がすべて同じ技術を扱うかというとそういうわけではありません。ですが、社内の風潮として、自分のやりたいことをやれるよう最善を尽くしてくれるというものがあると思っています。ちなみに筆者の場合は「チームで使っている技術は言語等問わず積極的に触っていきたい」というものでした。

もし興味が湧いた方がいらっしゃったら、ぜひお声掛けください!

明日は大関さんです!お楽しみに!