【ScalaMatsuri 2023登壇!】公教育で活躍するCOMPASSのScalaエンジニアの魅力【メンバーインタビュー#22】
こんにちは、採用広報の五ノ井です。新年度がスタートしましたね!
ということで、今年もこの季節がやってまいりました!!今年もScalaMatsuri 2023にCOMPASSが将軍スポンサーとして参加し、CEOの小川が登壇いたします!
今年も昨年に引き続きオンラインで開催されますので、Scalaエンジニアのみなさん、Scalaに興味があるみなさん、お気軽にご自宅から是非ご参加ください。(オンライン参加は無料です。)
さて、本日はScalaMatsuri参加に合わせて、COMPASSのScalaエンジニアに、COMPASSでScalaエンジニアとして働く魅力について迫ります。
今回のメインインタビュアーはScalaMatsuriにも登壇するCEOの(小川)正幹さん、そしてインタビューを受けてくださるのはCOMPASSのScalaエンジニアのお二人です。
Q. COMPASSがScalaを採用した理由
ーーはじめにCOMPASSがScalaを採用した経緯を教えてください。
小川:
元々QubenaはPythonで作られていたのですが、実行速度が課題としてありそれを解消したかったというのが一番の理由です。
一般的にデータベースは、リレーショナルデータベースを採用することが多いのですが、COMPASSではQubenaの肝であるナノステップのアダプティブラーニングを実現するために、グラフデータベースを採用したんです。
そのデータベースへのアクセスを速めるために、JVMと同居して動く言語を使おうとJavaかScalaかで検討して、Scalaとグラフデータベースを組み合わせて使い始めてみました。
実際、開発スピードや実行速度が今まで使っていたPythonと比べると明らかに速くなったので、全体的にScalaに置き換えていったというのが経緯です。
Q.Scalaエンジニアの経歴と入社の決め手は?
■Scala経験者からの転職
小川:
ーー佐藤さんはScala経験者としてCOMPASSに入社されましたね。経歴とCOMPASSに入社しようと思った決め手を教えてください。
佐藤:
私は元々広告業界でScalaエンジニアとして働いていました。COMPASSは教育業界という事もあり、カジュアル面談でもそこまで教育に興味はないと話してはいたんですが、なぜかトントン拍子に面接が進み入社していました(笑)
入社の決め手の1つは技術面でも新しい事や色々な事に挑戦したり、先進的な事への関心が強い会社だと感じたこと。
もう1つは面接が手厚く人をしっかり選んでいるので、入社前・入社後でミスマッチが少ないだろうと言うことですね。
実際に面接で話すと、教育やプロダクトについてとても真摯に取り組んでいるのが伝わってきて、自分もその中に参加してみたいと思いました。
なので入社して初めの3ヶ月くらいは真面目に教育について考えたり勉強してました。でもCOMPASSは教育に対する熱意が大きい人が本当に多く、中途半端に私の出る幕ではないな(笑)結局、私は良いプロダクトを作ることに専念、教育そのものは有識者の人にお任せするというスタンスになりました。
小川:
ーー教育のために良いプロダクトを作るというのも、一つの会社のMVV(ミッション・ビジョン・バリュー)への共感の形ですよね。
小川:
ーーScalaを採用している会社の中でも、どういう環境を希望されていましたか?例えば、Scalaの最新を追随している、Scala2からScala3へアップデートしている、Scala2のままで色々なフレームワークを使っている現場など。
佐藤:
理想を言えば、最新の最新が良かったですが。2021年11月〜3月まで転職活動をしていて、私が面接を受けた中ではScala3を採用している会社はまだ1社もなかったですね。
QubenaもなんとかScala3にバージョンアップできないかとずっと思っています。
小川:
ーー社内でもScala3の話は度々出ていて、取り組みたいことの一つですよね。
■Scala未経験からの挑戦
小川:
ーー平野さんは、Scalaは未経験で入社されましたが、Scalaについては当初どんな印象でしたか?
平野:
元々JavaとKotlinは触ったことがあり、同じ系統の言語としてScalaをやってみたいと思っていたので、COMPASSの環境はありがたかったですね。
小川:
ーーCOMPASSでは、Scala未経験者も積極的に採用していますが、JavaやKotlinあたりを経験されている方はScalaは親和性が高いですよね。
平野:
関数型という意味だと、学校で少しOCamlを触って関数型のさわりを学んでいたんです。純粋な関数型言語とオブジェクト指向の組み合わせがどういう感じで実現されてるのか、入社前から楽しみだなと思っていました。
小川:
ーーScalaにチャレンジしてみて良かったこと、逆に大変だったことなどありますか?
平野:
良かったところは、今まで関数型言語でプロダクト開発をしたことがなかったので、関数型で書いていく嬉しさですね。副作用をしっかり局所化する考え方で、プログラミング言語の機能を用いてどのように実現していくか考えるのは面白いです。
個人によって書き方がばらつきやすいのは大変なところかもしれないですね。表現力が高いというのは良さでもありデメリットにもなり得るということです。
小川:
ーーScalaを未経験から扱っているメンバーもたくさんいますが、複雑な概念もたくさんあるし、それを理解するのも結構大変で難しいと言っていますよね。
Q.Scalaの特徴は?
ーーScala自体の特徴はどうでしょうか。良い点でも悪い点でも。
■「型」が強いのは、トレードオフ
佐藤:
良い点は安全に書けることですね。型付けが厳密に制御できるので、限界まで厳しくすると型に従わない構文が入る余地がほぼないことかなと。
ただそのおかげで、やればやるほど安全に書ける反面、複雑な型合わせが発生してパズル化して辛くなってくるところがあり、その辺はトレードオフだと思います。
平野:
型でいうと、メソッドとかインターフェースのシグネチャーの情報量が豊富なところはいいなと僕も思います。例えば「Future」って書いてあるだけでも、非同期処理を実行してるんだなと、型1つだけで分かるのがすごく良いですよね。
小川:
ーー型に助けられている部分もあり、型に苦しめられている部分もあるということですね。
■「謎」しかないけど、優しい世界
小川:
ーー先ほど、Scalaは難しいという話が出ましたが、佐藤さんや平野さんのように現場でバリバリ書かれて活躍されているエンジニアからしても、まだまだScalaには謎が残っているのでしょうか?
佐藤:
いや、「謎しかない」ですね(笑)
小川:
ーープロから見ても言語としてすごく謎が残っている中でそれを使い続けているって、とても面白い状態ですよね。
佐藤:
圏論とかをベースに、理論があってこういうアーキテクチャだ、とか難しい話はあるんですが、書く側はとりあえずAPIの使い方さえわかれば書けてしまう。
けどライブラリのコア部分の設計とかは、やっぱり深い理解が重要になってくるので、その辺はコード読んでるだけでも、まだまだ謎が深いなーといつも思いますし、他の言語よりマスターするのが大変な感じはします。
Scala界隈はあまり広くないので、上にいる人は割と見えるのですが、そこに辿り着くのは果てしなく遠く感じますね。
JavaとかPHPとかは、そもそも上がよく見えないからマスターした気になってるのかもしれないですが(笑)
平野:
Scalaは上の人との距離が近いってことですよね。Twitterとか見てると、自分の位置は大体この辺だなってわかりますしね。
Scalaを始めたばかりの頃に「Scala怖い」と思いながらScala Matsuriに参加したら、案外初心者用セッションを開催していて、優しい世界だなと思って感激した記憶がありますね。
佐藤:
そうなんですね!2017年とか18年あたりは、まだ初心者セッションとか少なかったかも。
小川:
ーーScala仲間を増やす活動として始められたのかもしれないですね。Scalaには「みんな一緒にやろうよ」という空気感があるということですよね。
ーーCOMPASSの中にもScalaを完全に熟知している人がいるかというと、そうではなくて、どんどん謎に迫っていこうというスタイルで、Scalaの社内勉強会を開催したりしています。みんなで色々深掘るのが好きという人には合いそうですね。
佐藤:
私もまだまだ勉強して、Scalaを深掘りしていきたいなと思います。
■sbtが優秀だけどビルドが長い問題
平野:
あとは、sbtが結構優秀で、こっちで意識することなくバージョン管理してくれるんですよね。それは他のプロジェクトにはない良さだと思います。
小川:
ーーsbtといえば、ビルド時間が長いという問題もあって、それに対してはM1搭載のMacを販売開始と同時に全員に配りましたよね。
平野:
M1Macの配布は本当によかったです。周りのエンジニアもみんな言っていました。
小川:
会社としては、技術的な投資で解決できる問題には、しっかり投資していきたいと思っています。
Q. COMPASSで働く魅力とは?
小川:
ーーCOMPASSで働く魅力について教えてください。
■現場との距離が近い
佐藤:
現場(ビジネスサイド)と距離が近いことですね。今までの会社だと、開発は開発と隔てがあることが多かったので。本人が望めば、エンジニアが事業自体を考える部分にも関わることもできますよね。
平野:
教育はみんなが経験していて何かしらの原体験がある。そういう意味では、興味が沸きやすいプロダクトだと思います。
小川:
ーー学校現場に行く機会はもちろんあるし、実際に使っている人の顔が見えるのも魅力ですよね。社会インフラであるシステムを自分たちの手で作れるのはやりがいがありますよね。
■教育DXへの挑戦
佐藤:
サービス形態としてはいろいろと特徴的というか、特殊ですよね。
企業の管理画面からユーザーカスタマーに提供する、”B to B to C”のモデルは一般によくありますが、Qubenaは「児童生徒」と「先生」がオフラインの同じ場所にいて使ったりする" B to C&C "というか。
“B to B to C”だと、ユーザーである企業には技術に詳しい人がいますけど、Qubenaは必ずしもそうではなくて。従来のプロダクトにはなかったことを考える必要がありますね。
小川:
ーーいわゆる管理者向けの管理画面も、アカウント管理や設定変更のためではなく、Qubenaの場合は授業のためにも使っていますからね。先生はシステムの管理者ではなく、あくまでも学習の管理者なんですよね。
平野:
児童生徒や先生だけでなく、保護者、教育委員会など、関係者が相当多いので、各ステークホルダーに応じてシステムの特性を考えて作っていかないといけないところは非常に面白いですね。
佐藤:
公教育の現場が、ここ数年でテクノロジーを活用し始めたばかりということもあり、まださまざまな挑戦の余地があります。サービスに新機能が増えると、学校での活用シーンも変わってトランザクションががらっと変わったり、その度に新しく考えなければいけないことがあり楽しいですね。
小川:
ーーQubenaが現在公教育の現場で果たしている役割はまだほんの一部で、もっとたくさんの価値を提供していけると思っています。Scalaを使って教育現場をより良くするために、みんなで一丸となって頑張っていけたらと思っています!
小川さん、佐藤さん、平野さん、ありがとうございました!COMPASSでは現在一緒に働いてくれる仲間を募集しています。
Scala Matsuri 2023のお申し込みがまだの方はぜひこちらから!
昨年のScalaMatsuriに参加した際にもエンジニアインタビュー記事を公開しており、Scalaエンジニアによる愛の溢れるScalaトークをお届けしております。是非ご覧ください。