セプテーニ・オリジナルのCTOが語る!開発言語にScalaを採用した理由とは
TechAcademyでは、Scalaで開発を推進するセプテーニ・オリジナルと共同で、インターネット企業、Sl企業での勤務経験がある方向けのScala奨学生コースを特別企画として開催します。
短期間でScalaの技術を磨きたい、正しいエンジニアリングスキルを身につけたいと思っている方はぜひエントリーください。
今回は、全社でScalaの導入を進める株式会社セプテーニ・オリジナルとコミックスマート株式会社のCTOとして働かれている杉谷保幸さんにお話を伺いました。
いくつかの事業を立ち上げる上でScalaという言語を採用した背景、社内の教育制度や文化について語ってもらっています。
Scalaに興味を持っている方やこれからScalaを始めようと考えている方は、必見のインタビューでしょう。
前職の経験を生かしPHPからScalaを全社導入
――最初に、自己紹介をお願いします。
株式会社セプテーニ・オリジナルとコミックスマート株式会社のCTOを務めております杉谷と申します。どちらもセプテーニグループの会社で、Webサービスの企画、開発や、マンガ事業を手掛けており、私はそれぞれの会社の開発責任者という立場です。
この会社に入ったときはエクゼクティブエンジニアという立場だったのですが、最初のミッションはコミックスマートのマンガ配信サービス「GANMA!」を成功させることでした。
2つ目は、セプテーニ・オリジナルの開発文化を作るというミッションを任され、やること自体は今も昔も変わっていません。
――今、何人ぐらいのエンジニアの方が働いていらっしゃいますか?
日本とベトナムで、それぞれ60人ぐらいです。
――言語は何を使って開発されているのでしょうか?
ほぼ100%Scalaを使っています。ドメイン駆動設計(DDD)という手法も取り入れており、プロジェクトの運営スタイルとしては、スクラムという開発手法を採用しています。
僕が入社する前は、PHPで作っていましたが、コードの汚さや保守性の甘さが課題として残っていました。そこでまず初めに、開発体制の整備を行うことにしました。
具体的には、前職で当時流行っていたScalaとドメイン駆動設計を両方持ち込みました。
当然テストを書くという文化もまだなかったので導入しました。また、コードレビューの文化も育っていなかったので、Confluence、JIRA、Stash(現在はBitbucket)を導入し、コードレビューやドキュメントの集め方、タスクの進捗などを整えられるようにした上で、スクラムという手法を普及させていきました。
Scalaを使う良さとは
――新しくScalaのエンジニアも採用していたのですか?
当時は、そもそもScalaエンジニア自体がほとんどいなかったので、既存のエンジニアを教育してプロジェクトを進めました。
――Scalaを導入するタイミングに苦労などは無かったですか?
最初のミッションであった「GANMA!」の開発に関しては、問題は特にありませんでした。サーバもScalaでできていますし、AndroidアプリもScalaでできているくらいです。
新しいプロダクトを作る場合は、Scalaで開発できるように、まず「GANMA!」事業で基礎を学んだ後、Scalaで新プロダクトを作るところから始めていき、そこから株分けしていき導入を進めていきました。
――教育は、どのような形でされているのですか?
まずは、Scalaに慣れるためにTDD研修で使われるような身近な課題を元にテストを書きつつ、Scalaを書き始めました。
その次はPlay Frameworkを使って掲示板を作ってみる、そして、ドメイン駆動設計の本を読んだあとで、それをドメイン駆動設計で書き直してみるというのを1人あたりレビュアー5人で育てるという体制を敷いています。
中途入社で入ってきた方の研修プログラムの充実とフォローの厚さに関しては定評をいただいていまして、満足度が高いですね。
――Scalaを使う上でのメリットはなんですか?
慣れたあとで一番楽な言語はScalaだと思います。
色んな書き方ができて、大抵のことは簡潔に表現ができるため、どういう風に書けばいいのかなと考える時間も短縮できますし、確認するのも楽です。
きれいなコードを維持するのであればPHPは非常に難しいです。
JavaやPHPはちょっとしたことを確認するにもずらずらっと書かないといけない。読むのも書くのも大変ですが、Scalaであれば型もありますしエディタ、IDEの支援もよく利くので、とても楽だというのが最大の理由です。
エンジニアにとって働きやすい環境を作るために分社化
――教育の制度や働き方は、社内・社外においてどのような形になっていますか。
株式会社セプテーニ・オリジナルは、もともとは株式会社セプテーニの中の開発部門を、エンジニアにとって働きやすい環境を作るために2014年1月に分社化しました。
やはりエンジニアというのは、朝何時に来て何時に帰るというものではなくて、目標地点を決めてここまでやったらOKという方がパフォーマンスを最大限に発揮できると思ったので、まず勤務体系を変えました。
先ほど紹介したスクラムというのは、1週間や2週間という区切りでやることを決めた上で仕事に入り、日々確認をしながら最後にできたかできないかということを確認するやり方です。どこまでやるべきかというのがはっきりしているため、裁量労働制と相性がいいので裁量労働制もスクラムも導入しました。
――仕事をする時間帯や働き方はどう工夫されているのですか?
僕は9時ぐらいに来ていますが、遅めの人もいれば早めの人もいます。お昼頃にはだいたい揃っていますね。
スクラムに関しては、タスクに取り掛かる際にどういった作業をするのか、1時間とか30分単位で決めます。最初に1日2日まるごと検討して、残りの時間で進めるというやり方を採用しています。1日2日かけて検討するのでなかなか大変なのですが、それでも凄く安定して速度が出ていて、かつストレスなく実行できているので、優れた手法だと思います。
日々の進捗では、「やったこと」「やること」「気付いたこと」を共有しながらやっていきますし、できて終わりではなく、レビューやデモで実際に確認できる状況を作っているのも特徴です。
他の人が詰まっていたら助けてあげるし、自分が詰まっていたら助けを求めるという体制をとっています。
――その仕事の進め方は、最初からそのように行っていたのですか?
スクラム自体は「GANMA!」をリリースしたあとから導入をしていきました。初期のリリースまでは、走りきる形でいったのですが、その後はプロジェクトの動きを把握できるスクラムを持ち込みました。
当初は、まだ本を参考に我流でやっていたので、普及しきらないといった課題も出てきたのですが、トレーナーの方に来て頂いたり研修をしたりして、より源流に近いスクラムに移行していったのがここ最近の話ですね。
Scalaを普及させるために行っている活動とは
――社内・社外でのそれぞれの取り組みについて教えてください。
チャットワークに勤めている加藤潤一さんと麻植泰輔さんにアドバイザーとして入っていただいて、加えて僕を含めた社内の2人、合わせて4人で社内のすべてのコードを確認しています。
こういうことをやることによって、Scalaの変な書き方や不効率な書き方を直したり、間違ったDDDなどを防いだりしています。
DDD方面であれば加藤さんが確認してくれますし、Scalaであれば麻植さんが「こういう良い書き方があるよ」といった形で教えてもらっています。
新しくチームを作ったときはやっぱりレビューをするにも人数も少ないですし、経験値も足りなくて変なアーキテクチャが入ってしまう余地があるのですが、それを防いでいるというのもScalaを普及させるためには強力なものでした。
社外での取り組みでは、最も力を入れているのは「ScalaMatsuri」へのスポンサーの出展です。
当社が手掛ける広告運用最適ツールは、技術的には面白いのですが、対外的な知名度もないし、ぱっと見て面白さが分からないので、ScalaMatsuriでは、色々なScalaの技術エントリを載せたものを製本して配布をしたり、CM等を出したりして知名度の向上を図っています。
――イベントにはどういう人が参加しているんですか?
Scalaに興味がある、もしくはちゃんとやってみたいという人が多いです。
特に多いのは、SIerの方で比較的意識が高くて「ちゃんとやりたい、テストも書きたい」と思っている方ですね。
なぜScalaがいいのかメリットをちゃんと把握していて、正しいエンジニアリングをやりたいという方が多く、実際にイベントがきっかけで採用する人もいます。
入社後は全員問題無くScala等を習得できていますし、活躍しています。従来以上に力を発揮できるようになる分、収入もグッと増える方が多いです。
採用する上での大事なポイント
――採用する上で重要視しているポイントなどはありますか?
真面目にエンジニアリングをすることに関して誇りを持ちたい、エンジニアとしてプロの仕事をしたいというところを重視しています。
例えば、Scalaが単に流行っているからではなく、どこがいいのかとか何が特徴なのか、その特徴はなぜそういったことでできているのかを分かることが大事だと思っています。
また、いろんな情報に対してアンテナを張っているか、日頃から鍛錬をしているか、などのエンジニアとしての姿勢をよく見ていますね。
――他にScalaの普及活動として取り組みをされているものはありますか?
今回の「Scala 奨学生コース」の企画ですね。
僕はもともと前職から流行っていたものを拾ってきて、いろんな方の協力を得た上で色々やっているのですが、あまりアウトプットするところまでできていません。例えば、何かライブラリを公開するといったScala界に貢献するようなことがまだできていないのです。
今回の企画に関してはScala界に貢献をしたい、Scalaをやりたいという人の力になればいいなという思いが強く込められています。Scala自体は、使い勝手のいい言語なので、もっと普及して欲しいと思いますね!
――元々Scalaに触ったことがない人でも習得は問題ないのでしょうか?
プログラムをしたいかしたくないか、きれいに書きたいかと思えるか次第ですね。SIer出身であろうとBtoC系からであろうと、自分からプログラムを学ぶという姿勢があれば関係ないと思っています。
チュートリアルやトレーニングプログラムを手厚くやったあとで実践をやれば身につくので、Scalaだからといって怖気づく必要はないです。
――最後に、Scalaに興味を持っている人や、またこれから学習しようと思っている方に向けて何かメッセージをお願いします。
よく誤解されていることで、テストを書いたりレビューをしたりすると、「そんなことをやると遅くなるのではないか」と思われていることがあるのですが、そんなことは全然なく、ちゃんとプロの仕事をしたいのであれば、テストなり言語なり使う道具、全てにおいてちゃんと選ぶべきだと思っています。
少なくとも我々はそこに価値を感じていて、成果が出ている自信もあるので、真面目にエンジニアリングをやりたい人と一緒に働きたいと思います。
インタビューは以上です。
杉谷さん、貴重なお話をありがとうございました。
TechAcademyでは、インターネット企業、Sl企業での勤務経験がある方向けのScala奨学生コースを開催しています。
短期間でScalaの技術を磨きたい、正しいエンジニアリングスキルを身につけたいと思っている方はぜひご覧ください。これから働く上で役に立つ知識を身につけられるはずです。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 【2017年最新】徹底比較!PHPの人気フレームワークまとめ
- 【2017年最新】徹底比較!PHPの人気フレームワークまとめ
- NECがオープンソースソフトウェアとOpenStackにコミットする理由
- 今さら聞けない!WordPressとは【初心者向け】
- 基礎を固める!プログラミング入門におすすめの書籍10冊【超初心者向け】
- OpenStackの土台を支えるインフラとQAが抱える深刻な悩みとは
- 【学習タイプ別】入門向け!Pythonの学習サイト10選
- 開発手法を徹底比較!アジャイル vs.ウォーターフォール
- 3つのパートに分けて紹介!今すぐ分かるプログラミングの始め方
- GMOペパボの人事に聞いた!未経験でも新卒デザイナーを採用したワケとは