「じゃあ今年、発表してみない?」その言葉でScalaの道が開けた!

  • > インタビューイー ヌーラボ 吉澤
  • > インタビューワー アットウェア 北野

北野:こんにちは、アットウェアの北野です。Scala先駆者インタビュー第一回目は、ヌーラボの吉澤さんとトークしてみたいと思います。ヌーラボさんは、BacklogやCacooという開発者にとっては馴染みのサービス・ツールを開発している会社です。吉澤さんは、ヌーラボの中でもTypetalkというチャットサービスのリーダをしていて、そのプロダクトはScalaで開発されています。早速ですが、吉澤さんはどのようにScalaと出会ったんですか?

ヌーラボ吉澤さん。非常に気さくで人と話すことが大好きな方。

ヌーラボ吉澤さん。非常に気さくで人と話すことが大好きな方。

吉澤:Scalaとの出会いはそんなに昔ではありません。就職した頃は、最初はJava言語を扱うSIerに所属していて、その後の転職ではC#へ転向し、それまでは仕事では全くScalaに触れることはありませんでした。2009年か10年ぐらいの時に、Javaが1.5,16あたりで停滞していた時があったと思うのですが、その頃Scalaという存在を初めて知って、Option やコレクション周りで Java にはない機能を目の当たりにしてちょっと触ってみようとしたのが出会いです。

北野:それで、すぐにTypetalkを開発しようとしたのですか?

吉澤:いえいえ。まだまだ、そんなレベルまでは。仕事で使おうというより、初めてのきっかけは、協業している会社さんと合同で行っている勉強会で「吉澤くん、次、何か発表してみようか?」と無茶ぶり的に誘われたことです(笑)。そのお誘いに乗っかり、Scalaという言語がありますよ、的な内容でその勉強会で発表をしました。当時はまだWebのフレームワークとかも今とは違ってPlayは無く、Liftぐらいしかなくて、ちょっと正直、適応するには早いと思っていました。ただ、当時、世間的にはBDDのライブラリとかも流行り始めていて、そういう点でテストとかだったらいいから使ってみたらいいと思って、その発表をしたと思います。

北野:実際に少しずつ使ってみてどうでしたか?

吉澤:その後ぐらいに、ちょっとずつ使いだして、ちょうどTypetalkを作ろうと思って、それに適応してみようと思って。最初は、自分が作っているものが会社のプロダクトして正式に採用される確約は無く、正直自分の空き時間や趣味の時間なども使いながら作っていました。2012年ぐらいですかね?その時に選んだものは、自分がやってて好きなモノを選ぼう。それが楽しいって思って選んでいました。(笑)

北野:それでScala・Playを?

吉澤:そうですね。その時にJavaだったら、Seaser2とかSpringとか、Rubyなどを選択するというのもあったと思いますが、Seaser2はメンテナンスモードに入って進化が見えなくなっていた所だったし、ちょっといろいろチャレンジしてみたいなぁと思っていた頃でした。その頃、Play1を少し触っていて、面白いフレームワークだったのでやり始めたらちょうどそのタイミングでPlayが2.0のRC版を出しますってアナウンスがあり、この波に乗っかるしかないなって。(笑)全部Scalaで書かれているし。これはもう楽しい!そう思いました。 実際Play2.0に触ってみるとマイグレーションの機能だったり、Seasarでは出来ていたホットリローディングとかのそういう機能とかもあったので、勢いでTypetalkのプロトタイプを作りました。

北野:TypetalkをScalaで作り始めたって話だったんですけど、じゃあ実際作っていく中でScala的に苦労した点とかっていうのはありますか。

吉澤:ちょうどその開発を始めた頃、シンガポール支社の立ち上げで現地勤務になって、本当は勉強会とか日本のいろいろな勉強会へ参加して、色々聞きたかったんですけど、結局、シンガポールとかではそんなに盛んではなくて。手探り状態で、ネットを見ながら書いたところですね。

北野:大変でしたね。それを乗り越えて、素晴らしいプロダクトとしてTypetalkが出来たということをお聞きすると、なんだかいままで以上に愛着が湧いてきます!ところで、Scalaを使い始めた時に参考にした情報はなんでしょうか?

吉澤:そうですね、シンガポールに行くときに、日本からScala 逆引きレシピとかコップ本(Scalaスケーラブルプログラミング)を持って行きました。それ以外にもインターネットは役に立ちましたね。いろいろなリソースはありますから。でも、その中でもその本は、見よう見まねで書いていたあの頃には本当に役に立ちました。

北野:今はTypetalkは複数人で開発をしていると思うんですが、人を増やしていった時の話とか、苦労話や、Scalaイイね話があれば。

吉澤:そうですね。Typetalkが私の個人ワークから、会社のプロダクトへと成長した時に、1人女性の方に入ってもらいました。先ほど紹介した本を参考にしながらScalaに触れてもらったり、簡単な部分からTypetalkの開発を始めてもらったり、レビューをもちろんしながら徐々に進めていって、そしたら自然とScalaメンバが増えていきましたね。彼女に後で聞いてみたんですが、「もうJavaには戻りたくない」っていうぐらいの感じです。どこら辺がいいかっていうところを聞いたら、「やっぱり簡潔に書ける所」っていう。やっぱりJavaだとどうしても冗長になってしまうような所があるようですね。まだまだ私たちもScalaの真髄について学習中なところです。本当の意味で関数型を上手く活用できているか?というとまだだと思っています。

北野:Scalaでここはどうにかして欲しいとか未来への期待があればどこでしょうか?

吉澤:んー、唯一どうにかして欲しいと言えることは、コンパイル速度ですかね!(笑)これはScalaが進化していくに対しての大きな期待です。実際に開発者の方もDottyという新しいコンパイラを作っているとのことですし。

北野:いろいろ、お聞かせ頂いてありがとうございました!それでは、次の方を紹介してもらえますか? 吉澤:えっ、いいとも形式ですか? 北野:いい例えですね。吉澤さんも次の回に来ていただきたいので、ごきげんよう形式にしたいと思います。

吉澤:いいですね!いきます!では、瀬良さんという方はいかがでしょうか?Skinny FrameworkというScalaで書かれているWebアプリフレームワークを開発している方です。非常に活発にオープンソースに貢献されている方で、Scalaの普及にも多く力を注いでいます。

北野:先日のスマートニュースさんで行われた講演を聞かせていただきました。ついでにいうと、弊社、アットウェアの社内で開発しているナレッジシステムSiita(QiitaクローンでScalaで書かれているので、Siitaという)のベースがSkinny Frameworkです。すごく楽しみにしています。ありがとうございます。