アドベントカレンダー開始直前座談会みなさんアドベントカレンダーをご存知でしょうか?アドベントカレンダーとは、クリスマスまでの日数をカウントダウンするために使われているカレンダーで、12月1日からはじまり、25個ある「窓」を毎日1つずつ開けて中に入っている小さなお菓子やプレゼントを楽しむものです。Calendarはこのアドベントカレンダーの習慣に基づいて毎年期間限定で開催される技術に関する記事投稿イベントです。参加します!その前段として入社してから今日まで体験してきた出来事や技術の話など、ざっくばらんに振り返ってみることにしました。入社してから、CAMでやってきたことや技術について教えてください!まるけん:圧倒的に「Dear.M」!フジケン:確かに。サービスのリリース経験はもちろん、限られた期間でコミュニケーションを密にとって進捗管理して、その進捗を先輩にどうやって共有してアドバイスをもらうべきか。確実に終わらせるまでにはどういうスケジュールでやらなければいけないのか。いう勉強もしたし、技術の勉強も多かったね。むー:「Dear.M」というのは、新卒だけで作った女性の夢と幸せを応援するメディアで、最初のベース部分以外は新卒だけでバックエンドからフロントエンドまで全部作ったんだよね。何人くらいでやったんだっけ?まるけん:新卒はフロントエンド3人、バックエンド3人です。僕はフロント、フジケンはバックエンドで開発していました。「Dear.M」用に新しいAPIサーバーをたてて、それをFensiの基盤に乗せつつ、占い事業部の今までのロジックにも通信しつつみたいな感じで開発しました。※Fensiとは、2019年4月にリリースした公式サイト開設サービスのこと(https://www.cam-inc.co.jp/news/20190410/)KO:僕が本配属以前に所属していた占い事業部では、FORTUNEというCakePHPを占い用にカスタマイズしたライブラリをみんなで少しずつカスタマイズしてサービスを作っていました。同じようなものが入ってるけどちょっと違ったりする複雑なところには苦労しました。本配属はスタートアップ事業部になって、マイクロサービス化は処理に重複がなくていいなと思いました。フジケン:俺はKOと全く逆の境遇で、スタートアップ事業部から占い事業部に本配属になって、マイクロサービスを触った後にモノリスサービスになったから、同じようなことを痛感してる。マイクロサービスは処理の拡張性は高かったけどインフラが非常に難しかった(笑)。むー:モノリスとマイクロサービスでちょうど入れ替わったってことだよね?フジケン:あきらのエンタメ事業部はどうだった?あきら:エンタメ事業部では、社内でnode.jsを使い始めた頃に作られたであろう古いアプリケーションの運用を手伝っていました。全員:どんな感じで古かったの?あきら:社内の共通部分をフレームワーク化したライブラリが入ってないのと、openapiも使ってないし、node.jsのバージョンも結構古かったです。むー:でも、一番最初にそれをやれたのは良かったんじゃない?新卒だったらそういう構成から入るのも良いのかなと思うけどね。あきら:そうですね、すごく古いからこそコードを追っていくと、なぜ内製のライブラリがこういう形でできたのかとか、失敗から進化していっているその過程がわかったりして。結果的に仮配属のときにサーバーサイドのアプリケーションアーキテクチャを学ぶことができましたね。むー:サービスの規模が大きくなると、OpenAPIといったAPI定義のフォーマット統一だったり、SDKを払い出して通信を行ったり、複雑になっていくんだよね。前の部署とは違って、今いる部署はマイクロサービスだからバックエンドの処理まで全然追い切れない程、複雑になっていたり。あきら:僕も今はスタートアップ事業部でFensiという新規サービスのマイクロサービス化されたアプリケーション開発に携わっています。今まで触れてこなかった新しい技術にも沢山触れたり、前のアプリケーションと比較して改善されてるところなども見れるので勉強になっています。質問です!新しい技術を使いたい欲求はどれくらいありますか?まるけん:俺は全然そんなことないです。技術を使って何かを作ったとしても、それを使ってもらうのって最終的にはユーザーで、ユーザーはどんな技術を使ってるかなんてのは全然興味はないと思うんですよ。(アプリケーションの動きが)速くて使いやすいというのが一番大事なところなので、それを実現できるのであればどんな技術でもいいと思います。僕は元々デザイナーだったのもあって、サービスがすごく好きで、それを作るための手段としてエンジニアにシフトチェンジしてるので。ユーザーの使いやすささえ担保できていればなんでもいいかなって。フジケン:ベースは俺も同じです。「新しい=ユーザビリティが高い」っていうわけじゃないですし、新しい技術を取り入れるメリットって、技術的に前よりも使いやすくなったり、簡単にできるようになることだと思っていて。最終的にユーザビリティが下がるのは、本来の技術選定の本質から外れるんじゃないかと思います。あとは自分が”今”触っているサービスの技術をめちゃめちゃ深く知らないと新しい技術を用いるまでに到達しないかなと。あきら:僕は新しい技術を学ぶのは好きです。使う使わないは別として、キャッチアップしていくのはエンジニアとしての楽しみだと思うし、気になります。KO:多分、エンジニアはみんなそういうマインドだから、毎年新しく入ってくるエンジニア毎にトレンドが違って、変わっていく技術の中で良いものを取り入れていくのが良いんじゃないですかね。取り入れるどうこうよりかは、技術について知っていることと、それをサービスに導入できるかどうかを判断する力が大事だと思います。むー:実際にその技術を入れるかどうかは、組織の課題にもよると思うけど常日頃から調べておくのが大事ですよね。フジケン:社内外関わらず、優秀なエンジニアの方は新しい技術の情報収集を怠らないし、自分で実際に試してみてる。いう人とコミュニケーションをとるためには自分たちもやらなきゃいけないんだなと思いますね。むー:あきらとかは、よく新技術を教えてくれたりするんだけど、そういう人と働いていきたいなって僕は思いますね。新しい技術を知っている人と働く方が楽しいですよね。就活の時に”新しい技術が使えるかどうか”は大切な要素なのでしょうか?フジケン:僕は新しい技術を使いたいからどうこうっていうのはなかったと思いますね。どちらかというと実際に開発したサービスが魅力的かどうかっていうところだと思います。あとは自分がエンジニアとしてどれだけステップアップできるかっていうところかなと。まるけん:こればっかりは人によるかなと思います。技術が好きでエンジニアになった人と、何かを作りたくてその手段としてエンジニアを選んだ人の二つに分かれると思っていて、技術が好きでエンジニアになった人はどんどん新しいものに触りたくなると思いますね。あきら:僕はけっこう技術も見ちゃうかもしれないです。新しいかどうかは別としてなんの技術を使っているかとかはけっこう気になります。むー:僕も気になるかも。ーー他に技術者として気になる要素はありますか?KO:僕は就活のときに(CAMには)学べる環境があるなって思いました。レベルが高い人たちもたくさんいるし、サービスもたくさんあるし。あとは、きちんと教えてくれるけど、教えすぎない環境ですね。自分で考えて結果を出して、それが正しいか判断するように言われてきて、エンジニアとして自立できるような環境だなって思います。まるけん:社内でいろんな技術を使っているのは良いかもしれないよね。CAMはnode.jsやPHPを使っていて、いろんなサービスを作っているからいろんな技術に触れられる良さがある。会社によっては大きいサービスを一つの基盤で作っている企業もあるしね。むー:確かに、言語もそうだしDBとかもMySQLを使う場合もあれば、MongoDBを使う場合もあったりして。そこはけっこう面白いよね。KO:CTO自らTypeScriptのブランチ切ってるのはおろしろいなって思いましたね。CAMのnode側でやっていて。最新をしっかり見つつ、CAMに導入するかどうかっていうのをちゃんと精査してるし、それが本当にすごい。ーー導入する技術の判断ははやり難しいんですね。KO:新しい技術に食いついて「いいやん」って使っても、流行らなかったら終わりだし。フジケン:結局目的はサービスを作ることだもんね。KO:そう言った面でも技術的にどこが良くてこういうロジックだから流行っていくだろうとか、全体を見つつ選択するのは知識と経験が必要だと思います。Componentsから、Android、iOS、サーバーのアプリケーション、更にはインフラの話まで、どれをとっても最新を追っていて、そこを追いつつCAMに適正なものを見極めているんですよ。F氏だけできてもしょうがないから周りに教えたりとかしていて。フジケン:今まで見てきた会社の中でCTOが全領域知ってるパターンはあまりなかったですね。本当に全部めっちゃ知ってる!むー:それが本当にすごいし、ちょっと関係ないけど、この間FensiがリリースするときにLPを作る必要があって僕がお願いされて、作業が発生することがあったんですけど、僕がやれば良い仕事でもF氏が影でちょこちょこ作業していて。雑務っていうわけじゃないですけど、F氏が自らやらなくていいことも自分でやったりしているのがすごいなって。フジケン:背中で見せるタイプですよね。まるけん:そんなF氏にも意外なところがあって、「俺CSSは全然できないから!」とか言ってプルリクをバッと投げたらバチバチにコメントつけられてて(笑)。まるけん:面白いなーって。”学べる環境”と言えば!『もぐもぐ会』という勉強会もやっているとお聞きしました。フロントエンド陣で集まって、お昼にお弁当を用意して勉強会をやっていました。フロントの技術っていっても、流行りの技術というよりかはブラウザの基本的なレンダリングの順番であったり、JavaScriptの仕様元のECMAScriptのプロポーザルの段階をちゃんと追っていったりとかですね。まるけん:それをやることで可読性やコードの保守がよくなったり、CAMのフロント全体の共通認識ができました。CSS、HTMLの構成とかもやりましたね。コンポーネント一つ作るにしても、iOSもAndroidもノウハウは共通していると思うんです。Androidだとカスタムビューって話してたけど、そういうのがみんなの共通認識になって良かったかな。まるけん:トップが伸びたっていうよりか、ベースが上がりましたね。ベースが一緒になることでフロントでどんな表現がしたいのかがわかりやすくなって良かったです。あきら:サーバー側は、新卒だけで9月くらいまでISUCONの大会に向けて、朝週3くらいで勉強してましたね。結果としてはスコアがちょっと上がったくらいでした。研修のときにもISUCONの問題をやっていて、その時は1日やっても何も手を出せなくて。今回の大会では事前に勉強したことを生かしてスコアを上げられたので、成長した実感はあります。そこが大事なポイントなんで(笑)。フジケン:僕は有志何名かと一緒に、全体的なエンジニアとしての知識をつけるためにcourseraというサービスでデータサイエンスを学んでいます。僕自身が大学でITのコアな部分を学んでこなかったので、その辺は身につけて得しか無いかなと。KO:なんか、今年は自主的に勉強会とか、コンテストに参加したりとか、学ぶ機会が社内では多かったと思います。フジケン:そうかもしれないですね。周りでも常にスキルアップを意識している人が多くて、土日とかSlack見てもそういった方々はアクティブになってることが多かったりとか。自主的にSlackのTIMES(分報)で技術のこと呟いてたりして。わかる!フジケン:仕事でわからなかった疑問点を土日で解決させるパターンが多いですね、そういうのを見ると、みんな勉強してるなーって思いますね。むー:でも、仕事っていうよりみんな調べた内容とかを呟いてるよね?僕は土日もあきらのTIMES更新されないかなってたまに見るよ!実は、僕も地味に毎日、土日関係なくフロントエンドのSlackに何かしら投稿してます(笑)。土日でもスタンプとかリアクションつきますよ。フジケン:SlackはTwitter感覚で見ますからね。全員:見ます見ます!KO:毎日みんなから投稿があったら、1日10個以上新しい情報入ってきますもんね。フジケン:自分が拾えなかった情報を拾えるのはありがたいですね!ーーそんな学習意欲たっぷりの19新卒が中心となるアドベントカレンダーは12月1日からスタートですね!トップバッターはあきら、次の日はむーさん!どんな記事が投稿されるのか。公開を楽しみにしています。