PLAID Engineer Blog

PLAID Engineer Blog


KARTEを提供する株式会社プレイドのエンジニアブログです。プレイドのエンジニアのユニークなパーソナリティを知ってもらうため、エンジニアメンバーたちが各々執筆しています。

PLAID Engineer Blog

プレイドのインターンで学んだことと、入社を決めた理由

Kosuke OyaKosuke Oya

こんにちは。プレイドで2019年8月から現在までDevインターンとして働いている大矢です。2020年4月からは正社員として働く予定です。
この記事では、プレイドのインターンでどんなことをしたか、何を学んだか、そして入社を決めた理由について書いていきたいと思います。

はじめに

簡単に自己紹介をします。僕は大学では情報工学を専攻していて、自然言語処理の研究をしています。
2019年の8月からプレイドでインターンを始めて、週4日程度で通い、今月で約半年になります。
プレイドでインターンをする以前にも、他社のインターンでWebアプリの開発をしたり、自然言語処理の技術を使った開発をする機会は何度かありました。研究が落ち着いた頃、開発経験を積みたいと思いインターンを探していました。

インターンを始めるまで

プレイドのインターンの求人( https://www.wantedly.com/projects/387546 )には

というように書いてあり、求められるレベルが非常に高いことにビビりつつも、ちょっと背伸びした環境にいたほうが成長できるということはなんとなく知っていたので、面接を受けてみることにしました。面接では、プレイドのインターンの制度について聞いたのが印象に残っています。
プレイドに参加したインターン生は、インターン担当の社員、メンターと数ヶ月おきに面談を行います。面談までの期間の成果や働き方をみて、継続が難しいと判断された場合には契約の更新が行われない場合がある、というものです。
最初は戸惑いましたが、この制度はとても良いものだと思いました。まず、求人に書いてあった「求められるレベルが非常に高い」「圧倒的に成長できる」に対する説得力が格段に上がりました。求人にこのようなことを書いてある会社は他にもありますが、この会社で働けば確実に成長できるなと感じました。
また、自分にとっても良い刺激になるなと考えました。3ヶ月おきに評価があるため、それまで気が緩むことなく常に全力で働ける。そして契約の更新が行われた場合には、一定の自信になりますし、更新が行われなかった場合にも、学生なので生活に困るということはないし、挫折を味わうことで成長につながるのではないかと思いました。
つまり、インターン生にとってもこの制度はプラスだと思い、インターンに参加することを決めました。

インターンでやった仕事

プレイドでは、エンジニアのチームは1チーム1〜5人程度に分かれ、そのチームで2〜3ヶ月の期間(フォーカスと呼びます)目標を立てて開発をしていきます。僕は、入社してから1ヶ月間はAPIチームというチームで働いていたのですが、フォーカスの区切りのタイミングで基盤チームというところを希望し、行かせてもらうことができました。
それぞれのチームでやった仕事について紹介したいと思います。

APIチームでの仕事

インターンに参加して初めに与えられたタスクは、KARTEが提供する、開発者向けのAPIを開発するというものです。社員が取り組むような実践的で非常にやりがいのある仕事であると同時に、このタスクに関してはほとんど仕様が決まっていなかったので、僕にとってはチャレンジングな仕事でした。また、Node.js や Mongo DB についても全く経験がなかったため、技術的にも初めての状態でした。
実際に取り組み始めてみると、そもそもKARTEのことをもっと知らないと、仕様を決めることもできないと感じました。以前に参加したインターンでは、仕様が決まったタスクが渡されることがほとんどだったので、そのプロダクトについて詳しくなくても、ある程度はできてしまうものでした。
KARTEについて学ぶには、KARTE Dojo という、わかりやすい動画が用意されています。僕はその動画を見て、KARTEとはどんなもので、どういう機能がよく使われているのかということを理解しました。とは言っても、実際のユーザがどのように使っているか、APIにどのようなニーズがあるかまではわからないので、社員と相談しながら仕様を決めていきました。
結果的に、無事に1つのAPIの実装を終えることができました。

基盤チームでの仕事

ちょうどフォーカスの区切りの頃、モノリシックなKARTEのシステムをマイクロサービス化するということを主に行なっているチーム(基盤チーム)があり、僕はとても興味を惹かれたので、9月からは基盤チームにジョインすることになりました。基盤チームでは他にも、開発環境をよくするための取り組みや、既存のサービスのパフォーマンスを改善するための取り組みを色々と行なっています。
僕はチームとしてこのような仕事に打ち込めることが非常に有意義だと思いました。なぜなら、APIの開発をしていた時に、テストの不便さや、開発環境のパフォーマンスの悪さを感じつつも、目の前の仕事を早くこなさなければという気持ちが優先してしまい、具体的な改善作業をするには至らなかったからです。
基盤チームでは、いろいろな事をしましたが、今は主にテストの改善をしています。まずは、不安定なテストを計測する仕組みを導入しました。 具体的には、github に push するたびにCircle CI で実行されるテストの結果を、Google BigQuery に送り、Google Data Portal で可視化しました。この可視化により、e2e(エンドツーエンド)テストの不安定なシナリオを特定できるようになったり、「不安定な気がする」ではなく「何%の確率で落ちているから不安定だ」と数値で示せるようになりました。
また、不安定なテストにはある程度共通の原因があることもわかりました。改善については、テストケースに一つ一つ修正を入れていくというよりかは、今あるテストを壊して、不安定になる原因を排除しつつ作り直すというような方針で進めています。
不安定なテストは開発スピードに大きく影響するため、非常にやりがいがあり責任のある仕事だと感じています。

photo1

インターンで感じたこと、学んだこと

仕事の進め方について

インターンでも社員と同様に信頼して仕事を任せてもらえているという実感がありました。
APIチームで開発をしているときに、プレイドで初めての仕事だったため、わからないことはどんどん質問するようにしていました。これまでのインターンやアルバイトなどで、そのように指導されていたからです。とにかく早く成果物を完成させるということに、重きを置きすぎていました。しかし、プレイドで仕事を始めて1〜2週間ほど経った時、メンターから「遠回りしても、自分一人で解ける範囲を増やすためにもっと時間を使って良いよ」という言葉をいただきました。
実際にこのことを意識しながら仕事をしてみると、より解ける範囲が増えていくことに気づきました。問題に直面したとしても、次に何をするべきか考え、手を動かすことができました。
こうして、自分が解ける範囲がどんどん増えて行くことを実感し、仕事が楽しく感じましたし、自信にもなりました。
この時に、メンターが、インターン生が作る成果物だけでなく、インターン生の成長にも大きな価値があるという風に意識しているのだと感じました。

APIについて

APIチームでは、仕様を考えていく際に色々なことを学びました。
APIはKARTEでできないことを外でしてもらうためのサービスなので、既存の管理画面からGUIで操作が可能なことを提供しても意味がありません。自分なりに、KARTEのユーザだったらどうするか、ということを意識しました。また、サービスの内部で使っているAPIは、仕様を変更した時の影響範囲が把握できるため、変更が難しくありません。しかし、外部のAPIの場合には多数のユーザがそのAPIをすでに利用している可能性があるため、破壊的な変更をすることが困難になります。そのため、APIにどのような機能を持たせるかは非常に慎重に検討する必要があり、必要最低限の機能を備えるのが良いということを学びました。

基盤(テスト)について

基盤チームでは、主にテストの改善をしていて、技術的に学ぶことが非常に多かったです。
テストにも何種類かあり、ユニットテスト、システムテスト、e2eテストなどがあります。僕は初め、e2eテストをたくさん作れば、コスパよく網羅的にシステムのテストができるとなんとなく思っていました。
しかし実際には、e2eテストはもろく、不安定になりやすいもので、テスト対象のシステムのソースコードが同じでも、成功するときもあれば失敗するときもあるといったものでした。そのため、外部の環境になるべく依存しないテストを多く作り、e2eテストはシステムのコアな部分を守る必要最小限のものにするのが理想的であるということを学びました。

プレイドへの新卒入社を決めた理由

入社を決めた理由はいくつかありますが、プレイドの文化には特に良い印象を持ちました。
例えばプレイドには「承認より謝罪」という文化があります。
これは、「自分で考えてやるべきと思ったことは、誰かの承認を得なくても、とりあえずやってみて良い」というようなものです。他にも色々な文化があるのですが、多くの文化に共通する考えがあると思っています。それは、「なるべくポジティブに考えたり、人のポジティブな側面を信じる方が、トータルで得られるメリットが大きい」というような考えです。
「承認より謝罪」の文化の話でいうと、承認を得るために余計なことを考える必要がなかったり、失敗したとしてもそこから得られる学びがあって、それと比較したら失敗することによるデメリットは(多くの場合は)小さい、といった考え方になると思います。
実際にプレイドに来て、このような考え方がプラスだと実感できた場面はいくつもありました。APIチームでメンターから「遠回りしても良いよ」という風に言われて実践してみたときもそうでした。このような文化のある会社で働けることは、自分の人生にとってプラスだと思いました。
正直、僕はプレイドから内定をいただいたときに、こんな優秀な人たちの中でやっていけるのだろうかと考えました。僕にはすぐに人と比較してしまったり、自信をなくしてしまったりしてしまう癖がありました。でも、最近はそんなこと考えても時間の無駄だなと思っています。優秀なメンバーと一緒に働けることは自分の成長に大きなプラスになりますし、たまに自信をなくすくらいがちょうど良いと考えています。
入社してからは今以上に多くの困難があると思いますが、成長の機会と捉えて、前向きに働いていきたいと思います。

最後に

CX(顧客体験)プラットフォーム「KARTE」を運営するプレイドでは、KARTEを使ってこんなアプリケーションが作りたい! KARTE自体の開発に興味がある!というエンジニア(インターンも!)を募集しています。
詳しくは弊社採用ページまたはWantedlyをご覧ください。 もしくはお気軽に、下記の「話を聞きに行きたい」ボタンを押してください!

photo2

Kosuke Oya
Author

Kosuke Oya

Comments