ビジネス

「開発者全員がテストコードを書く」「残業はナシ」……Abby経営陣が語るエンジニアの新しい働き方

「開発者全員がテストコードを書く」「残業はナシ」……Abby経営陣が語るエンジニアの新しい働き方

スマートフォン向けゲームの自社開発をメイン事業とするAbbyは、2004年6月に創業。この業界では“老舗”と言ってもいい会社だろう。

これまで手掛けたゲームタイトルは数知れず。最近では「リラックマ農園 ~ゆるっとだららんファーム~」や「すみっコぐらし 農園つくるんです」、「ムーミン ~ようこそ!ムーミン谷へ~」といった作品がヒットしており、すみっコぐらしについてはダウンロード数が累計500万を突破した(23年6月時点)。リリースしてからも安定運用が求められるスマホ向けゲームの大型開発をコンスタントに行うのは、決して並大抵ではない。しかし、それを軽やかにやってしまうのがAbbyの強さといえる。

しかも、驚くべきことに「一度もプロジェクトの失敗はありませんね」と社長の米林正明さんが断言するほど、開発レベルやサービス品質には揺るぎない自信がある。それを支える一人が、CTO(最高技術責任者)の松原豊さん。その実力は折り紙つきで、18年には米グーグルの「Open Source Peer Bonus Program」を受賞。これは全世界を対象にオープンソースへの貢献が顕著だと認められたエンジニアをグーグルが表彰するものだ。

そこで今回は、高品質なサービスを作り続けるための取り組みについて、米林さんと松原さんに話を聞いた。

テストコードを書くのはプロダクトのため

——AbbyではQA担当者と開発担当者を分断せず、開発者自身がテストコードを書いていると伺いました。珍しいことだと思いますが、いつ頃から定着したのですか?

米林: 具体的な時期は分からないですが、他のエンジニアが行っている良いことを真似るという風土が当社にはありますね。その一環として、自然と皆がテストコードを書くようになりました。

私のほうから杓子定規に「やりなさい」と指示した記憶はありませんね。開発に関して、ある程度は現場のエンジニア自身に任せています。でも、きちんとしたお手本が社内にいれば、それが文化として広まっていきます。その行動やコードを見て、良いところを真似して、そうやって定着したのだと思います。

——テストコードに関する基準はありますか?

松原: 明確なラインは引いていませんが、当然、書かれたプログラムの正しさを確かめるためのテストですので、一定以上のレベルは担保できるものにはなっているはずです。

米林: テストカバレッジは80パーセントを目標にしています。ただ、その数字を目指すことに固執するあまり、仕事のための仕事のような、言われたからやる無駄なテストコードが多くなってしまうことは避けたいです。無理やりカバレッジを上げるためのコードを書いていても意味がないですよ。

——メンバーのパフォーマンスはどのように管理していますか?

米林: テストカバレッジ率を見れば、「ああ、こいつは、テストが少ないなぁ」といった状況は分かります。ただ、少ないからテストコードをもっと書いてよという話にはなりませんね。最終的には自分に跳ね返ってきて、自分が苦労するだけですから。必要最低限というか、重要なところはテストコードをきちんと書くという意識で皆が進めています。

松原: テストコードを書いている本人が、自分のためにやっているという意識が、知らず知らずのうちに浸透しているのではないでしょうか。少なくとも書かされている感じはないと思います。

米林: 自分のため、そしてプロダクトのためという意識は強いですね。ただ、うちの会社にはいないけど、世の中には全くテストコードを書かないエンジニアもいると聞いて驚きました。

——関連して、プログラムの品質はどうやってチェックしているのでしょう?

米林: 書いたプログラムを他者にレビューしてもらうプロセスはあって、そこで最低限のクオリティを担保しています。例えば、その時点でテストコードを書いていなければ指摘しますね。

松原: 「こういうところもテストしといてください」という観点でやり取りすることはあるかもしれない。

AbbyでCTOを務める松原豊さん

米林: そう。テストコードは書いてあるんだけど、「これだとちょっと足りない。レアケースのテストができてないから、このパターンのテストを書いてください」とは言いますね。そうすることでプロダクト開発に入る前に全くテストコードを書いてない状況はなくなります。

あと、中途入社のメンバーに関しては、採用試験の時にテストコーディングを必須にしていて、そこできちんとテストコードを書いているかどうかを見ています。

松原: もちろん、そういう気質の人を意図的に採用している側面もあります。

プログラミング言語「Go」を採用した理由

——他にも品質を高めるためにやっていることはありますか?

米林: 会社としてのルールを開発環境に入れていて、変なコードを書くと警告が出るようにしています。最低限のラインとして、そうした仕組みを用意しています。

松原: そうですね。機械的にクオリティをチェックできるようになっています。

——組織としての技術力を高めていくためには新しいテクノロジーを導入することも大切だと思います。それについてはどうお考えですか?

松原: 僕自身はどんどん新しい技術を入れたいわけですが、僕だけが使えても仕方ないです。他のメンバーにも分かりやすいものをなるべく選ぶよう心がけています。便利だけど、使うのが難しい技術だと、キャッチアップするのに時間がかかってしまいます。ですから、今ある技術からステップアップしやすいものを選び、まずは個人的に試して、取捨選択した上で組織に展開しています。

米林: 松原さん自身がやりたいと思うような尖った技術を、いきなり会社のアーキテクチャに入れることはないですね。ただ、グーグルのプログラミング言語「Go」の時は別でした。当社は2014年に導入したのですが、それは松原さんがいきなり「これからはGoで行こう」と言ったから。情報もないし、無理じゃないかと思いましたが、ムーミンのゲームを作るときにGoを使って成功したので、それ以降は、当社が開発するゲームタイトルは全部その言語です(2023年インタビュー時点)。今振り返ると、あの時は松原さんの選択が正しかったわけです。業界でもメインストリームを走っている言語になりましたから。

大切な仲間なのでメンバーにはずっとAbbyに勤めてもらいたいけど、松原さんが推している技術を皆が習得していけば、将来的には転職にも有利になるのではと思います。そういうところも大事かなと。これをやっておけば10年はつぶしが利く。我々はそういう技術を採用しています。

松原: 何かがあってよそに行っても通用するレベルにしてあげたいという思いがあります。だからある程度は定期的に新しい技術を取り入れていくようにしていますね。

自分のノウハウをタダで配る文化

——そうした新しい技術などの情報収集はどのように行っているのでしょうか?

松原: SNSや海外の著名なサイトだったり、GitHubのトレンドを見たり。あとは、他社がやっている取り組みを参考にしますね。オープンに技術情報を公開している会社もあるので、それを見て、一部を取り入れることもあります。あとは、エンジニア仲間に直接聞くこともよくあります。

エンジニアの世界は、情報交換するコミュニティーがあって、常日頃からコミュニケーションを取る文化が根付いています。なぜなら、自分の仕事をもっとラクにしたり、楽しんだりすることにつながるから。他の職種よりも情報交換が頻繁だと思います。

米林: それこそGitHubもそうですけど、自分が書いたコードを無料で公開して、世界中の人に使ってもらうなんて、他の業界ではないのでは。自分のノウハウは、自分の中だけにとどめておきたい人が大半だと思うので。それを平気で、タダで配る。エンジニアならではの文化ですよね。

元々、我々が出会ったきっかけもそこ。GitHubの前身みたいな、自分で書いたプログラムを皆で共有するコミュニティーがあって、そこで知り合いました。あの頃から、我々はそういう気持ちが強かったですよ。腕自慢というか、「俺、プログラムできるんだぜ」とアピールする精神は当時からありましたね。

松原: 10年、20年前のことですね。当時は勉強会もブームになっていたよね。

米林: 毎週のように勉強会をやっていて、そこで発表したり、他のエンジニアから技術をキャッチアップしたり。それを会社に持ち帰って、皆にフィードバックして。そうやって技術力を高めていったわけです。

残業しないエンジニアたち

——Abbyは働き方改革も進んでいると聞きました。基本的には定時退社だとか。

米林: プライベートの時間を充実させることで、それを仕事につなげてほしいという方針でやっています。実際、残業はそれほど多くないから、モチベーションの高いメンバーは、その分、自分の時間を確保して、勉強しています。

松原: 僕の直下のチームメンバーには、次にやるプロジェクトなどを早めに共有して、「こういう技術が必要になるから、時間がある時に見ておいてくださいね」と伝えています。

あとは、メンバーのタスクの空き具合によって、新しいアーキテクチャの調査などをお願いすることもあります。新しいチャレンジをするとなるとどうしても時間がかかるので、早めに助走期間は設けるようにしていますね。そうすることでいざプロジェクトが始まっても、効率的に仕事ができるようになります。

米林: そもそも、一人のメンバーにタスクが集中しないように気をつけています。そうなる前に「あの人大変そうだから、誰かタスクを巻き取ってあげてよ」などと、他のメンバーに声をかけます。もちろん、自分から手を挙げてくれる人もいますよ。「○○さんがタスクを抱えているから、私が手伝いましょうか」と。そういったフォローがあるから、皆残業せずに働けているのかなと思います。

テストをせずにリリースするなどあり得ない

——改めて、テストの重要性についてお聞かせください。

米林: 開発案件のオファーが来たとき、まずは大前提として「うちは一回もプロジェクトを失敗させたことがない。絶対大丈夫です」と公言しつつ、そのために必要なこととして、見積もりには全ての開発項目に対してテスト工程を必ず入れています。開発工数と同等とまでは言わないけど、最低でも1、2カ月はテスト期間がほしいと伝えます。サービスの品質を担保するためには絶対に必要です。

逆を言えば、自分たちの基準を満たすテストをせずにリリースするなどあり得ません。例えば、いろいろな事情で新作ゲームのリリース日を動かせないとします。そんな中でリリースの数カ月前に「この機能も追加してね」と言われた場合には、「テストが間に合わないので、ローンチ後に入れる形にしてください」と断って、了承してもらいます。

当社は中途半端にスケジュールを詰め込むことはしません。誰も幸せにならないから。だって、土日も働いて、残業もすることになるから。そんなこと絶対に無理ですよ。

松原: でも、何だかんだ言って、うちが開発したゲームは割と安定しているよね。

米林: そう、ゲームでは致命的なシステム障害を起こしたことがありません。それによってサービスが終わってしまうゲームも世の中にはたくさんあるから、ビジネスを長続きさせるためにはとても重要。

これまで一回も失敗したことがないから、我々が考えるスケジュールや方法でやらせてほしいと言えば、クライアントには納得してもらえます。サービスを落とさないという実績は大きいですよ。納品して終わりではなく、ユーザーに使い続けてもらって、サービスが繁栄し続けてこそです。

SNSシェア

この記事は面白かったですか?

今後の改善の参考にさせていただきます!

Ranking

ランキング

もっと見る