1
/
5

Donutsエンジニアの『Go言語使ってみた』 【ゲーム事業部×ミクチャ事業部 エンジニア座談会】

Googleが開発したことで有名なプログラミング言語であるGo言語(Golang)はシンプルで
実用性が高く、実行が高速なことから注目されている言語です。
DonutsでGo言語を活用し、開発に取り組んでいるエンジニアに集まってもらい
実際に取り組んだ感想や魅力、特徴について語ってもらいました。

《ゲーム事業部》
■S・Mプロフィール
職種:エンジニア
入社年月:2012年8月
担当:単車の虎アプリ版のサーバー周りを担当

■J・Mプロフィール
職種:エンジニア
入社年月:2017年4月
担当:新規開発を担当

《ミクチャ事業部》
■K・Tプロフィール
職種:サーバーサイドエンジニア
入社年月:2018年4月
担当:新機能開発を担当

■Y・Yプロフィール
部署/職種:サーバーサイドエンジニア
入社年月:2020年4月
担当:サーバーとインフラ周りを担当

■T・Tプロフィール
職種:クライアントエンジニア
入社年月:2020年9月
担当:現在はミクチャのインフラとフロントエンド周りを担当

ーGo言語を使った業務

ゲーム事業部 S:
今まではPHPしか業務で使ったことがなかったのでGoは初めてでした。
Go言語は素直な言語という印象で、元々大学時代にC言語を使っていたこともあって、取りかかり易かったと思います。
あとは、Go Tour(Go言語基礎文法最速マスター)という公式のラーニングページがあったのでそこで学んで業務に入っていったという流れでした。
その後は構造体を使ったり、構造体にメソッドを持たせたり、継承のようなこともできたのでオブジェクト思考っぽいこともできてかなり書き易かったですね。
そんな経緯で機能を使いながら、艦つくのサーバー側、APIなどを作って業務に取り組んでいました。

ゲーム事業部 J:
2017年に入社してからずっとクライアントサイドを担当しており、2019年の夏頃から先輩エンジニアのSさんご指導の元、サーバーサイドを担当することになりました。Goについてはそこで初めて触れました。
ご指導のおかげもあって、最終的には大きいイベントをひとりで丸々1つ作ることができたので良い経験になりました。

今現在新規開発ではクライアントサイドをやっているので、プロジェクトがGoを用いてサーバサイドを実装するのであれば、またやってみたいと思います。

ミクチャ事業部 Y:
ミクチャ事業部では全面的にGoを採用しています。
今までPHPやスクリプトの言語がメインだったので、Goで最初に書いた時は、ポインタという概念が登場してきて苦戦しました。
また、先ほどSさんが“Cを触っていたので違和感がない”と話していましたが、私は逆にそういった言語を触ってこなかったので分からず、慣れるまでは大変でした。
しかし、慣れるとかっちりした言語なので使い易いと思います。
コンパイルソースから安心感があるので(笑)

ミクチャ事業部 K:
私も入社してから、ミクチャのサーバーサイドの実装でGoを使っています。Goを実際に書いてみて、書きやすい良い言語だなという印象でした。また例えば Ruby on Rails だと動的型付けなので、実行するまでその実装が正しいかどうか分からないです。それに対してGoだとビルドできるので、その時にエラーが分かり、安心して実行できるのは良い点だと思っています。

ミクチャ事業部 T:
現在、入社して1ヶ月半ぐらいなのですが、Donutsへ来て初めてGoを触っています。
それまではC+なども触っていたのでポインターなどの概念もすんなり受け入れつつ、シンプルでソースコード上で何をやっているかが分かり易いと思います。
ただ、セミコロンを付ける癖が抜けなくて、慣れるまでに少し時間がかかりそうです。
例えば、JavaScriptでコードを書いた後Goのコードを書いたりするとセミコロンつけてしまうことがありますね。
その逆でGoのコードを書いた後にJavaScriptのコードを書くとセミコロンを忘れてエラーになったりします。

ーGoの習得について

ミクチャ事業部 T:
Go Tourをやりつつ、実際に業務で触って覚えるのが一番早いですね。
必要なものを入れないといけないので業務をやりつつ、休日はGo Tourで基礎の部分をまとめていくというやり方ですね。
あとは気になった部分のソースコードを実際に書いてみて実行して確認してみるという繰り返しが多いですね。

ゲーム事業部 S:
私も同じくGo Tourで基礎的な部分を学んでみて、その後は実務のコードを見て触りながら覚えていきました。当時、私はプロジェクトの途中から入ったので、前任者が結構プロジェクトのコードを書いてくれている状態でした。
そこでプロジェクトで使われている技術について、基礎的なものはGo Tourで学ぶようにして、それでも知らないものは都度調べてプロジェクトに馴染んでいきました。

ミクチャ事業部 K:
基本的には私も同じですね。
はじめに Go Tour で勉強して、既に書かれているミクチャのコードを見ながら書き方や機能を勉強して、そこにない機能があればググってそれを実際に実装する形でやっていました。

ミクチャ事業部 Y:
私はGo Tourはやっていなかったです。
前職でGoを初導入するタイミングで担当することになったのですが、作りながら分からない部分は調べて覚えていましたね。
その時はAPIだったのですが、どうやってやれば動くのだろうと都度ドキュメントを見ながらやりました。一つ作ると理解し易いかなと思います。

ゲーム事業部 J:
私もGo Tourは一応やったのですが、実務ではいつも隣にSさんがいらしゃったので分からないことはいつでも聞ける環境でした。常にSさんのプルリクレビューをもらえたことは振り返ってみるととても恵まれていたなと思います。

ーGo言語の魅力

ゲーム事業部 S:
私はDonutsでPHPを多く使っていたのでその比較になるのですが、PHPと違うのは型がしっかりとしている点ですね。安心感があります。
あとはポインターを使ったり、型もあるし、何もなければnilも入れられるし、判定にも使えたりします。構造体を結構簡単に作れたり、そこにメソッドを追加してクラスみたいにできたり、あとはインターフェイスもちゃんと使えるのでそれによって様々な動きを制御しやすかったり、そういったところはGoのいいところかなと。
あとは、配列とは別にスライスみたいな概念があったりして、使い方は大体配列と同じなのですが、途中の切り取り方法もGoには用意されていたりして、そこら辺もあって綺麗に書きやすいなと思うことはありましたね。

ミクチャ事業部 K:
Goの利点はやはりシンプルな文法だと思っていて、実際に書いてみると結構見やすくかけるのがよいですね。例えば、コードレビューの時にそのプログラムがどのような振る舞いをするかが分かり易いのは良い点だと思います。
あとは、トライキャッチを基本的に使わないのでプログラムの流れが見やすいのが良いですね。

ミクチャ事業部 Y:
私が思うのは、書き方もなのですが、ビルドすると一つのバイナリになるところが良いです。
あらゆる環境で動かすことができて、PHPだと環境を構築するのに全ファイルを持っていかないといけないのでとても大変です。
その点ビルドしたバイナリだけで、どの環境でも同じように動くのはとてもメリットだと思っています。

ミクチャ事業部 T:
個人的には、とっかかりやすく、どの人でも入りやすいのが正直一番大きなメリットだなと思います。
要はクライアントをやっていた人やフロントだったり、サーバーだったり、毛色が違うプログラマーでも大体見れば何となく分かってやれるという点が、現状1ヶ月ぐらいやってみての魅力かなと思います。

ーエンジニアとしてのやりがい・苦労した点

ミクチャ事業部 T:
これまでずっとゲームを作っていたので、今担当しているインフラ周りは経験がありませんでした。そんな状況で入社したため、“覚える”という点においては苦労しています。ただ、新たなインプットをできるという意味では楽しいという気持ちも大きいです。
様々な言語を触ってきたのですが、全部中途半端な気がしているのでこれを機に一つの言語を深掘っていきたいと思います。

ミクチャ事業部 K:
少人数なので、例えば新機能を作る際に自分で解決手段を見つけていかないといけない点が苦労する点だと思います。ただ、見方を変えれば自分の力で機能を作っていくので達成感を感じることができると思います。

ミクチャ事業部 Y:
ミクチャチームは少数精鋭のチームでして、実際に私がインフラ周りをほぼ1人で担当している為、自由にやれる環境だと思っていて、「自分でこういう部分を使いたい」、「こういう風にやりたい」ということが達成できる点はやりがいを感じています。
反対に、少人数だからこそ、あらゆる部分を自分で見なければいけないので大変ですね。
例えば、複数人であたっている場合であれば役割分担できると思うのですが、そういう面においては難しいので、人によってメリット、デメリットが別れるところかもしれません。

ゲーム事業部 S:
自分で作ったものが思った通りに動いた時が一番楽しいですね。
例えば、細かく動かせるバッチを作ったり、APIを作ったり、テストを細かい作業でやっている時が一番楽しいと思いますね。逆に大変な時は大体、

①動かない時
②解決できない時
③どう書けば良いか分からない時

に大別されます。このような場合は大体自分で調べるのですが、調べても分からない時は目的さえ達成できれば手順はどういうルートでも良いので、最初の道を諦めて別の道を探す形で取り組んでいます。

ゲーム事業部 J:
Goを使う事自体自分としては新鮮で楽しかったですね。
Goを書くようになってからは、ひとつの大きな機能をクライアントサイド・サーバサイドの両面からひとりで実装し切ったことは良い経験であり、エンジニアとしての自信につながっています。

ゲーム事業部 S:
ゲーム事業部ではエンジニアが企画の場で提案することができる空気です。
例えば、「このイベントのこの部分はこうした方が良いのではないか?」といった提案を取り入れて貰えると嬉しいですね。

ー各事業部の特徴

ゲーム事業部 S:
私は今まで2つのチームでしか経験していないですけど、そこはメンバー同士仲が良く、気軽に話すことができる環境だったと思います。
エンジニア同士はSlackでコミュニケーションを取りますし、『単車の虎』では、企画をやる時にプランナーの人とエンジニアの人で大体ペアになって企画をコネ回して作っていくので、その過程でコミュニケーションをとるので風通しはとても良かったと思います。

ミクチャ事業部 K
ミクチャもクライアントとサーバーの2つのサイドがあるのですが、きちんと連携を取らないといけないので、新機能を作る場合でもどういう仕様にするかを話し合ってから設計や実装を行うようにしてます。

ーエンジニアメンバーからみたDonutsが求める人物像

ミクチャ事業部 Y:
Goをバリバリ書ける方が絶対条件ではないと思っています。
Goの経験はないけど、他の言語は経験したことあって、新しいことをキャッチアップしていきたい方がいいですね。また、自分で積極的に学ぶ意欲のある方と一緒に働きたいと思います。

ミクチャ事業部 K:
大体同じなのですが、新たな技術に好奇心を持ってキャッチアップができて、その上で自分のプロダクトに対して日々課題を見つけて、自分で解決していく力がある方にきて欲しいと思います。

ミクチャ事業部 T:
私はDonutsに入社してから初めてGoをやったので、正直なところGoを全くやったことがない人でも考える力があればいいと思います。逆に考える力がないと、何をするにも完成できないのでその点は大事かなと。

ゲーム事業部 S:
私もGo自体については既に知っている必要はないと思っていて、何かプログラミングした経験があれば、入っていける言語だと考えています。
どういう人が来て欲しいかというところでは、ゲームなので自分の作っているゲームをプレイして遊んで好きになってくれる人だといいなと思いますね。

ゲーム事業部 J:
入社してからGoをやることになった場合、柔軟に学んでいける人であれば、入社時に必ずしもGoを書ける必要はないかと思います。
またゲーム事業部であれば、いい意味で仕様に意見することができるエンジニアがいいと思っています。プランナーやデザイナーと円滑にやり取りできる力も重要です。

ーいい波がきたら乗りましょう!

ミクチャ事業部 T:
転職の経験でいうとDonutsで2社目になるのですが、1社目は元々派遣で行っていた会社にそのまま転職する形で入りました。
今回は、先月の全社会で京都事業所の方にアプリの事業委託があって、譲渡される事業の方でエンジニアをやっていて、「良ければDonutsに来ませんか?」という誘いに乗る形でDonutsに入社しました。正直まともな転職経験がないので転職したい人に一言というと難しいですが、「いい波があったら乗っておけ!」と言いたいですね。
できる時に「自分はもう行けるぞ!」と思った瞬間に動いた方がいいと思います。

ミクチャ事業部 K:
ミクチャのプロダクト的には課題がたくさんあるので、自分で課題を見つけて解決したい人にとってはやりやすい場だと思っています。自走できる方は是非Donutsに来てくれたらと思います。

ミクチャ事業部 Y:
私はDonutsで3社目で2回転職を経験しているのですが、ミクチャ事業部はまだまだレガシーな部分があって、その部分を自分が持つ技術で変えていきたいというモチベーションのある人であれば活躍できると思います。

ゲーム事業部 J:
Donutsは自分でやりたいと手を挙げたことについては、きちんとやらせてくれる環境だと思います。
言われたものつくるのではなく、「自分の考えたものをどんどん作っていきたいんだ!」という方であれば、いい会社なのではないかなと思います。

ゲーム事業部 S:
Donutsは受注ではなくて、自社開発しているのでスピード感があるし、自由度が高いのでやりやすいなと思っています。本当に自分達でゲームを作っている感覚がとても感じられる職場なので、ゲームが好きな人は是非来て一緒に作っていきたいです。

株式会社DONUTS's job postings
18 Likes
18 Likes

Weekly ranking

Show other rankings
Invitation from 株式会社DONUTS
If this story triggered your interest, have a chat with the team?