「僕らが育てるのだから、何かあっても僕らが責任取ろう!
 PIVOTのElixirチャレンジにある熱い想い」

株式会社PIVOTは、企画、Webサイト構築~運営支援、アプリ開発、システム開発まで、UIを中心にしたモノづくりでユーザー体験を追求しているデザイン会社です。

https://pivot.jp/

エンジニア、デザイナー、ディレクターといった、様々なスキルを持つメンバーが集まり密に連携、お客様のご要望にフィットした提案を柔軟に組めることが強みです。

使いやすさや見た目の美しさだけで無く、「心を動かす体験」をユーザーに提供するために、表には出ない裏側の仕組みや構造も含めたトータルの設計を手掛けています。

今回は、フロントサイドやアプリから、サーバサイドまで、エンジニアリング全般を担当している、福岡支社の上野さんにお話を伺いました。


――Elixirを知ったきっかけとは?

AIや機械学習の勉強をしようと個人的に思っていて、fukuoka.exを主催する森さんが、別で主催しているAI・MLコミュニティ「福岡x人工知能x...」の勉強会に行ったとき、初めて知りました。

それまで、Elixirのことは全く知りませんでしたが、森さんの登壇内容や懇親会で、ちょいちょいElixirのことを小出しされるんですよ(笑)。

最初は、「そんなものがあるんだな」と思うくらいだったのと、弊社はバックエンドのスペシャリストというわけではないので、Elixirの知識を吸収しようとは、正直、思っていませんでした。

そんな頃に「福岡x人工知能x...」の勉強会開催の情報を得るため、森さんのTwitterをフォローし始めたのですが、AIの情報に混じって、Elixirの情報が目に入って来て…だんだんElixirについて興味を持っていったんです。

その後、自社サービスのプロダクトが始動する流れがあり、僕が、テクニカルな部分のサポートを担当することとなったことをきっかけに、Elixirのことを業務で使うことを考え始めました。


――新しい自社サービスにElixirを選んだ理由は?

この新しいサービスを作るにあたり、言語選定の話になったのですが、これまで社内では、PHPがメインで、JavaやPerlを少し使用する程度でした。

言語選定は難しく、新しい言語を使用するにしても学習コストがかかり、見積もりもしにくい。みんな忙しいですし、勉強する時間はなかなか取れない、という現状です。

そんな中、社内のチャットでは、PHPを使用する案が出ていて、「またPHPか」と思ったんです。自社サービスとして大きく展開していく目標があるので、「慣れているから」という安易な理由で決定していいのかな?、という疑問が、素直に湧き上がりました。

まず、大規模サービスを運営していくときに、PHPでは、頼りなさを感じていたんです。

たとえば、これまで作ってきた中規模サービスであれば、PHPで何とかもたせていましたが、それ以上に拡大するとなったとき、速さを本気でチューニングするにあたって、やれることが少ないと実感していました。

実際に、売れるサービスになるかは分からないのですが、もしそうなった場合、性能を改善する手立てがあまり無いインタプリタ言語で本当に大丈夫なのかな?、と不安を感じていたり。

また、会社としても、今後、サービスやデータが増えていくことを考えたとき、言語の選択肢が1~2個しかないと苦しめられることが容易に想像でき、大規模サイトや大規模サービスに強い言語を、そろそろ身に付けていった方が良い時期なのではないか?

それと、以前、お客様から「今のままの言語ではセキュリティ面で心配」などの意見もあったり、そのような意見や要望に対応するためには、他の言語のことも知らないと正しく答えられない、という懸念など。

こうした、様々な面から、今回は、言語の選択肢を増やす良いチャンスだと捉えました。

言語選定としては、Goや、Pythonなどの意見もありましたが、個人的には、fukuoka.exが開催する勉強会に、何度か足を運ぶうちに、「Elixirって結構、良いんじゃない?」と思い始めました。

特に、森さんが今年2月発表していたスライドが印象的でしたね。

まず、IT・SI業界に起こる人手不足の課題と、2~3年後にはIoTや宇宙データがもっと身近になり、サーバに溜まっていくデータ量が200~500倍になる課題…といったことが挙げられていましたが、これらは容易に想像がつきます。その上で、Elixirが実現するメリットと合わせて考えると、これからElixirを使っていくことへの納得感がありました。

また、ベトナムでリモートをしている社員から、「知り合いの会社では、イギリスから受託した仕事をElixirで開発・構築している。Elixir/Phoenix系は単価が高く、その会社で受注している仕事の中では、トップレベルの金額だ」という話を聞き、海外の高単価な案件でElixirが使用されていることや、全世界でElixir導入が伸びてきていること。

そして何より、fukuoka.exの説得力のあるスライドが印象深かったことが、Elixirを選択する後押しとなりました。

そこで、Elixirの採用について上司に相談すると、「面白そうだね」と、話が進んでいきました。うちの上司は、元々エンジニアということもあり、興味を持ったのかも知れません。

ちなみにこの自社サービスのプロジェクトは、将来的には、自社サービスとして運用していくのですが、最初はグループ会社に納めるという形になっているので、最初のステップとしては、受注案件のようなところがあります。

そのため、「Elixirを採用したい」と納品先のグループ会社担当にお伝えすると、「本当にそんなマイナー言語を、しかも、まだ勉強途中のものを採用して大丈夫なのか?」という声が挙がりました。

お金を出して開発してもらう立場からすれば、本当に大丈夫なのか?、という点が気になるのは、ごもっともです。ただ。僕らとしては、挑戦する気満々でしたので、その壁をどう突破するかについて真剣に話し合いましたね。

最終的には、自社サービスとして、僕らが育てていくものとなるから、何かあったら僕らが責任を取ろう、ということで、Elixirでチャレンジすることとなりました。


――Elixirを実際に使用してみての感触は?

現在、そのプロジェクトが始動して1ヶ月経ったところで、僕は、10月頃から実際にコードを書く予定です。

先発して始めた社員の反応をみると、みんなオブジェクト指向に慣れ切っているので、関数型へ移行するときの思考の切り替えに、なかなか苦労しているようです。試行錯誤している様子がチャットで飛び交っていますよ(笑)。

オブジェクト指向言語同士の切り替えであれば、今までの経験を活かして書けるところが、やはりすぐに書けないジレンマを感じているようです。

ただ、そこはどんな会社でも想定されるフェーズなので、仕方無いところですね。

Elixirに慣れることで訪れるであろう生産性向上を焦らず待ちます。


――今後、Elixirをどう使用していきますか?

まずは、現在進行中のプロジェクトでの導入を成功させることです。

その過程を通じて、オブジェクト指向から関数型に言語が変わると、エンジニアの思考も大きく変わる気がしています。みんながハッピーになる仕組みを作っていく上で、Elixirに期待している部分はあります。

Elixirにすることで余裕が生まれて、与えられた仕事を仕様通りに作るだけでは無く、エンジニアの方から、技術面の改善アイデアや企画に対するアイデア、チームビルディングに対するアイデアを出していけるようになるといいな、と思っています。

言語をガラッと変えた意味として、性能面やスケーラビリティを得るだけで無く、そういったエンジニアやチームの前向きな変化やリフレッシュも得られそうなのが、Elixirという新しい世界の面白さですね。