自己紹介
はじめまして。2019/02/21 から フューチャーでアルバイトとして働いている。小林澪司と申します。現在は大学四年生で普段は法政大学理工学部で情報工学について学んでいます。
フューチャーではTIG DXユニット 1に参加しています。
他のアルバイト生から見たフューチャーがどのような会社かについては元アルバイトの棚井さんが書いた記事を是非ご確認ください。
今回は秋のブログ週間連載とのことでAtCoderJobsで入社して以来、フューチャーで一年半を働き、変わったことや学びについて書いていきます。
フューチャーに入って変わったこと
スキルセットが大きく増えた。
アルバイトとして参加するにあたって、参加し始めの時は知らない技術が沢山ありましたがアルバイトを通して様々な技術を学ぶ必要があり、沢山の学ぶきっかけを得ました。
私がアルバイトで初めて触った技術は以下のもの全てです。
- Go
- Typescript
- Vue.js
- Docker
- Postgres
- Auth0
- OAuth 2.0
- Open ID Connect
学ぶきっかけがアルバイトを通して沢山得られるため、様々な技術の存在を知ることができ、知的好奇心が満たされ続けます。
さらに学生のうちにこのような技術を身に付ける事によって、ハッカソンなどのイベントでも賞を頂く事が出来るレベルまで到達しました。
技術好きの友人が出来た。
学生アルバイト目線ですが、フューチャーには同年代のアルバイト生が何人かいます。今はコロナの問題で全社リモートワークに移行しているため中々出来ないですが、出社していた時はお昼ご飯を一緒に食べに行ったりして交友を深めていました。 漏れなく皆、技術好きだったり、競技プログラミングをしていたりで共通の趣味が必ずあるのでとても楽しく過ごすことが出来ます。
また、毎年夏にはフューチャーのインターンシッププログラムSummer Campでインターン生が入ってくるので、インターン生の方々とお話するのも楽しいです。
私は2019年の夏に行われた「Engineer Camp」で知り合った方と仲良くなり、ISUCON10に参加したり、ハッカソンに出て賞を頂いたり、そのハッカソンで作成した成果物を技育展で発表したりしました。
このように交友関係がとても広がったのはフューチャーでアルバイトしていたからで、とても良い環境だと思います。
過去~現在までで担当したタスクについて
- GitHubの公開リポジトリで特定の文字列、コードを含んだファイルを抽出するツールの作成
- Vuejsで出来ているアプリケーションのコンポーネント開発
- 全体構成図を見つつ、設計からコーディングまで幅広く担当するタスク
GitHubの公開リポジトリで特定の文字列、コードを含んだファイルを抽出するツールの作成
フューチャーで働き始めてまず最初に頂いたタスクが「GitHubの公開リポジトリで特定の文字列、コードを含んだファイルを抽出したい」というLinterツール作成でした。指定言語は当時まだ一度も触っていないGo言語でした。
おかげでGo言語を学ぶ機会になり書いてみてはレビューをお願いしてを繰り返し段々と良いソースコードになっていきました。当時右も左も分からなかった私に真摯にレビューして頂き本当に感謝しています。
また、このタスクを通して以下のことが出来る様になりました。
- ハマった際に海外サイト(StackOverflowなど)を参考に問題を解決すること
- ライブラリの挙動が分からない時にソースコードを読みに行くこと
趣味で何かを作っている際は辞めてしまえば問題は解決されるのですが、アルバイトでお金をもらっている以上全力を尽くして問題解決を行う必要があります。そのような泥沼にはまった時に問題を切り分けて解決する力が大きく付いたと感じるタスクでした。
また、Dockerfileを作成したり、Google Cloud Functions上で使える様にしたり、結果をSlackで通知出来る様にしたりと今っぽい技術を沢山触らせて頂きました。
学んだ技術
- Go
- 0からAPIを叩く所、読みやすいコードの書き方まで。
- 当時使われていない変数があるとコンパイルコケることに不便さを感じていましたが今思うと便利ですね。
- Docker
- 0からDockerfileを作り、Docker上でアプリが動く所まで学びました。
- DockerコンテナのAlpineからHTTPS利用するために証明書が必要なことに気付くのに時間がかかった印象があります。
- GCP
- こちらも0から触り、Google Cloud Functionでアプリケーションが動く所まで触りました。
Vue.jsで出来ているアプリケーションのコンポーネント開発
その次に頂いたタスクはVue.jsでコンポーネントの開発でした。内容としては比較的単純明快で、作業指示者の方から「この機能を持つコンポーネントを開発してください」といった内容でした。
当時タスク始めたての自分はフロントエンドのフの字も知らず、Webの仕組みを何も分かっていないためとても苦労しました。例にもれず沢山の質問をしたのですが、1つ1つ教えて頂き、少しは貢献出来る様になったと思います。
学んだ技術
- Vue.js
- v-modelの理解にかなり時間がかかりました。
- Node.jsとパッケージ管理
余談ですが、タスクの1つに「v-iconに自作のSVGアイコンを設定できるか調査してまとめてほしい」があり調べていたのですが、公共性もあり、困っている人が多そうだと思ったのでQiitaにまとめた所、良い評価が貰えました。 ↓がその記事です。
Vuetifyのv-iconに自作SVGアイコンを(楽に)使いたい!! - Qiita
公共性があり、他のエンジニアが助かりそうな話を公開すると評価されるのは風通しの良い企業だな感じました。
今やっていること
- 現在は先程紹介した2つとは別に2019年の8月頃から上2つとは別のプロジェクトに参加しています。
今のプロジェクトでは全体構成図を見つつ、設計からコーディングまで幅広く色々な仕事をさせてもらっています。
学んだ技術
- Go
- DBとの接続
- PostgreSQLを用いた、DBとGoの接続について学びました。
- O/Rマッパーについて学び、プロジェクトで利用するO/Rマッパーとその他のO/Rマッパーについて調査しました。
- その際の調査内容を技術ブログに載せているのでぜひご確認ください。
- go-swaggerの調査
- 本プロジェクトではバックエンドにgo-swaggerと呼ばれる、Web APIの定義からソースコードを生成するツールを利用しています。go-swaggerについては過去真野さんが書かれた記事をぜひ確認ください。
- また、実際にswagger.yamlを記述し、プロジェクトで利用するサーバのコードを生成しました。
- 個人的にはソースコードの自動生成、とても便利かつ知的好奇心がくすぐられるのでとても楽しいです。
- 初めは作成されたコードのどこを弄れば良いのか分からず戸惑っていたこともありました。
- DBとの接続
- Vue.js + Typescript
- プロジェクトではWebページをVue.jsとTypescriptを利用しています。
- 技術検証やコンポーネントの修正・追加など一通りやらせてもらっています。
- プロジェクトに入る前からすると明らかに成長し一通り書ける様にはなったと思います。
- Auth0
- Auth0とは認証プラットフォームです Auth0については過去に山田さんが書かれた記事をぜひご確認ください。
- 認証認可を理解するにあたって、OIDCのフロー、OAuth 2.0のフローについて学びました。
- いざ機能を実装したり、理解するに当たって、次はJWT(JSON Web Token)について学びました。
- JWTの形式や中身が理解出来るとぐっとAuth0の認証認可が理解しやすくなって楽しいと思います。
- 他にもAuth0 Rulesと呼ばれる認証認可後に走るスクリプトなど様々な機能について一通り触らせてもらいました。
- チーム開発
- チケットを立ててブランチを切って開発をしてレビューを受けてマージする一連の流れを学びました。
- ハッカソンに参加する際、これらの流れを理解していると非常にスムーズに事が進むのでとても良い学びです。
- これはまだ成長途中ですが、事実と予想をごちゃ混ぜにしてコメントを書かない様意識し始めました。
- チケットを立ててブランチを切って開発をしてレビューを受けてマージする一連の流れを学びました。
後はMicroCMSなど様々なサービスにも触らせて頂き、楽しい限りです。
また、たまに機能の設計や資料作りがタスクとして流れてくるので本当に幅広く関わらせて頂いてます。
私はサービスの構成図などを見るのが好きなのですが、今のプロジェクトは構成図を見る機会が多いのも好きなポイントです。
学業や研究に役立つか
学業や研究でプログラムを書く機会がある時全般で役に立ちました。例えば、大学の授業で開発を行ったりする際にはとても役に立ちます。
研究については、私の研究内容はブロックチェーンの応用可能性についてなので直接的に役立っている訳ではありませんが、ブロックチェーンの情報を送受信するのにJSON-RPCでブロックチェーンのノードに接続する 2ので、プログラムを書く機会はそれなりにあり、間接的に役立ってはいます。
とはいえ分野やタスクによりますが、研究に直接役立たせようとするのはやはり難しいと思うので研究目的でアルバイトを始めるのはあまりオススメ出来ません。
これからについて
まずは目の前の研究から進めつつ、フューチャーで力をより蓄えていきたいと思います。
今後ともよろしくお願いいたします。
最後にフューチャーでアルバイトして思ったこと
- 社員さんのコードレビューが親切
- コメントが親切で学びになる。
- コメントを頂く際、大体問題点とその理由、改善提案を同時にコメントしてくれるため、「なぜ問題なのか」や「どうすれば良いのか」を教えてくださいます。
- コメントへの心理的安全性が高い
- 分からないことや自分の考えを出しやすい空気感が出来ていると思います。時折、何かの課題について自分の考えを語ると社員さんは真摯に受け止めてくれ、会話をしてくれます。
- 気軽に相談や提案がアルバイトでも出来るのはとても良い環境だと思います。
- コメントが親切で学びになる。
- 出社するとたまに席が無い
- 誰も専有していないフリースペースをアルバイターが利用するのですが、たまにそこが埋まっています。
- 大体社員さんが席を借してくれるのですがかなり申し訳ない気持ちになるので席がもう少し増えると嬉しいです。
- 今リモートワークなので席が無い問題からは解放されています。
- 時給がとても良い
- 現在(2020.10.15時点)はAtCoder Jobsには求人出ていませんが、時給1500円スタートです。
- 前職はあまり働いてなかったというのもありますが、前職と比べて年収が4倍以上になり色々な事が出来る様になりました。
- 五反田のご飯が美味しい
- 今はリモートワークのためしばらく行けてないですが、五反田にある「地獄の担担麺 護摩龍」という店が辛い物好きにはおススメです。是非行ってみてください。
まとめ
私はフューチャーでアルバイトをして
- スキルセットが大きく増えた
- 技術好きの友人が出来た。
- 好きなことでお金が貰える様になった。
という変化がありました。
結果として大学生活丸ごと変わったと言っても過言では無いです。
引き続き精一杯努力してまいります。これからもよろしくお願い致します。
- 1.TIG: Technology Innovation Groupの略で、フューチャーの中でも特にIT技術に特化した部隊です。DXユニット: TIGの中にありデジタルトランスフォーメーションに関わる仕事を推進していくチームです。 ↩
- 2.例えば、go-ethereumでEthereumのノードを立てると、ノード自体がJSON-RPCサーバとしても機能するので立てたノードを通して外部のアプリケーションからブロックチェーンの情報を持ってきたりすることが出来ます。 ↩