• 株式会社インテリジェンス
  • MIIDAS COMPANY 技術責任者
  • 大谷 祐司

経験者ゼロの状態からGo言語を採用。「効率性」だけを求めない、その理由とは

今回のソリューション:【Go言語/golang】

〜新規事業の開発言語をGo言語にすることで、優秀な技術者が集まる環境を作り上げた事例〜

新規事業の開発を始めるとき、プログラミング言語の選定は重要だ。素早く構築できるのか、メンバーが確保できるのか、ライブラリやフレームワークは豊富なのか。検討すべき項目はいくつもあり、選定する言語やその理由は各社の特徴を色濃く反映する。

株式会社インテリジェンスの新規事業「MIIDAS」では、経験者ゼロの状態からGo言語を採用した。言語としての魅力もさることながら、そこには「優秀な技術者が集まる会社を作る」という目的があった。事業部の技術責任者を務める大谷 祐司さんに、Go言語を選んだ理由、そして組織づくりの観点から技術を選ぶ理由について伺った。

※採用を見据えた技術選定を行う、MIIDASのチーム作りに関する記事はこちらです。
「採用のために」技術を選ぶ!? 優秀なエンジニアを惹きつけるチーム作りとは

テクノロジーの会社にするために、技術を選定する

私は、技術責任者として新規事業のMIIDASを担当しています。インテリジェンスは、まだまだテクノロジーの会社というイメージは無いと思います。そのイメージを変えるためには、まずは優秀なエンジニアが集まるような環境作りが重要だと思いました。そのため、MIIDASの開発では積極的に新しい言語や技術を取り入れています。

もともと技術に積極的でなかった弊社のような会社では、普通にやっても良いエンジニアは採用できないんですよね。ただ、優秀なエンジニアというのは、新しくて優れている技術が好きなんです。

だからそういう人たちに響くポイントを意図的に狙った技術選定をして惹きつけることで、インテリジェンスを技術好きなエンジニアが集まる会社にしていきたいと思っています。

いくつかの言語と比較して、選んだのはGo言語

MIIDASは新規開発のプロジェクトなので、開発言語をいくつかの候補の中から検討しました。正月休みにメジャーな言語をはじめ、RustやElixirなどの新しい言語もさわってみてどれを使うのが良いのか考えました。

結果としては、MIIDASではGo言語を使うことに決めました。自分でさわってみて「これは流行るな」と確信したというのが一番の理由ですね。

私は7年くらいずっとPHPを書いてきたのですが、全体的に緩くスピード感をもって作れるのが特徴の言語です。一方で潜在的なバグを発見しづらい部分もありましたが、Go言語ならそういった不満を突破できると思いました。そして何より、ソースコードを書いていて、とても楽しかったんです。

MIIDASでは、主にバッチ処理の部分をGo言語で書いています。WebのサーバサイドはHackというPHPベースの言語で書いていますが、そちらにも徐々にGo言語を導入したいと考えています。実際に、管理画面はリリース後にGo言語で作り直しました。これは完全にメイン業務の隙間時間でやったことなのですが(笑)。

Go言語はいいとこどりのプログラミング言語

Go言語っていくつかのプログラミング言語の問題解決をしていると思うんですよ。固い言語と、PHPのようにスピード開発できる言語のいいとこ取りをしていて、どっちのエンジニアも食いつくだろうなと。これから盛り上がっていって、プレイヤーも増えていく言語だと思います。

PHPはバージョン7が最近リリースされたのですが、現行の5系が3年後にはサポートが切れてしまうんですよ。そうなったときにPHP7に移行するかと言われると、たぶん全部が移行することはないと思います。その代替として、アプリのAPIやバッチなどパフォーマンスが求められる部分はGo言語に流れていくのではないかなと思っています。

ただ、Go言語にも完全に満足しているわけではなくて、現状ではテンプレートエンジンの使い勝手がいまいちですね。あとはGo1.5である程度解消されましたが、依存ライブラリのバージョン管理機能も非常に弱いです。

まだまだ新しい言語でプレイヤーが少ないので、勉強会に出ても試行錯誤している話が多く、特にWebサービスを作ったという事例はまだ少ないですね。

20時間におよぶGo言語のハンズオンが採用時の惹きつけに

Go言語は、学習コストで言うと正直低くないと思っています。関数型言語などと比べると概念は理解しやすいかと思いますが、1週間で書けるようになるかと言われると難しいですね。

ただ、今のMIIDASチームで採用したエンジニアで、最初からGo言語の経験がある人は1人もいませんでした。全員がゼロの状態から始めて、今では全員が使えるようになっています。

業務委託で入ってもらっている方も何名かいますが、その人たちもGo言語未経験の状態から始めました。採用時に「勉強会やハンズオンを積極的にやっているので、Go言語が習得できる環境です」という打ち出し方をすることで、良い人を紹介してもらっています。

ハンズオンはこれまで20時間くらい行いましたね。これによってエンジニアを育成しつつ、Go言語の文化を浸透させています。今はまだプレイヤーが市場に少ないので、書ける人を増やしていくことが重要だと考えています。

「いいものを作るチーム」には再現性がある

クイックにサービスの立ち上げだけを考えるチームであれば、新しい言語を試すようなことはやらないほうがいいと思っています。短期的に考えると非効率ですし、それで事業の成長が止まるリスクがありますので。

では、なぜ僕らは新しい言語に挑戦しているかと言うと、「事業を作る」ということと「優秀な技術者が集まる会社を作る」ということを、どちらも実現したいと考えているためです。

事業そのものは運やタイミングの問題もありますし、いろいろな要因でうまくいかない可能性があると思います。ただ、優秀なエンジニアを集め、ものづくりが出来る環境を整えると「いいものを作る再現性」が生まれるはずなんですよ。いいものを作るチームって、何度やってもいいものが作れるという。

そのため、事業を作るという観点と、技術力のある会社を作るという観点の2つを合わせた上で、Go言語やHackを導入するという挑戦を行っています。

いくつもの言語を見ることでエンジニアの視野は広がる

効率だけを考えるなら、1つのサービスでGo言語とHackという複数の言語を入れることはないと思います。同じような仕組みを別の言語で2回作らないといけないこともあるので(笑)。

ただ、複数の言語を見ることで視野が広がっていくということはあると思います。PHPだけしか使ってこなかった人が、他の言語も使うことでPHPの強いところ、弱いところが見えてくるので、エンジニアの成長につながると思っています。

今後、新規事業部門ではGo言語を積極的に採用していきたいと思っています。PHPは個人的にとても好きな言語ですが、今の時代にPHPだけが使える会社として打ち出していくのもあまりインパクトがないので。Go言語の技術を突き詰めていって、サービス開発にも教育にも活かせるようにしていきたいですね。 (了)

;