Rustを実案件で導入するポイント
使いこなすのに敷居が高い言語とも言えるRustを、ゆめみでは池口氏、ルーク氏が主導し、すでに社内外の実案件に活用している。
一つがゆめみ独自の文化である「チェックイン」をサポートするSlackボットへの活用である。ゆめみでは一日の始まりや会議の始まりに自分の感情や思っていることを吐露することが推奨されている。それを担うのがチェックインボットだ。そのボットに「チェックイン?」と問いかけると、「いま気がかりなことは何ですか」などという質問が投げかけられ、それに回答していくというシステムである。従来、同システムはTypeScriptで書かれていたが、Rustで書き換えることになった。この案件の開発をメインで携わっている池口氏は、Rustで書き換える理由について、「機械学習との連携など、将来像を実現するため、モダンで堅牢なRustでの書き換えが選ばれた」と話す。
一方、ルーク氏が携わっているのはクライアントのWebサービスの案件。同案件ではBFF(Backends For Frontends)を導入し、Rustで開発している。ちなみにフロントエンドはGraphQLサーバ、APIはgRPCを採用しているという。Rustを選んだ理由としてルーク氏は、「APIとBFFを分けない案件も多いが、今回の案件は通常よりも大きく、アクセスに耐えうることを検討しなければならなかった。そこでNode.jsやGoなどの速さを担保できる言語を探していたところ、技術的要件を満たせる言語の選択肢として挙がってきたのがRustでした。そこでRustにチャレンジしてみようということになりました」と話す。
クライアントの案件でのチャレンジ。それができたのは、舩戸氏の活躍があったからだ。「まずはRustでチャレンジしたいというプランを示して、お客さまに説明しました。私たちベテランエンジニアの役割は、お客さまの信頼性を担保しつつ、若手エンジニアが安心してチャレンジできる場を作ることです」(舩戸氏)
信頼性を担保するため、BFFならスモールスタートでき、問題があればすぐRustをやめて新しく作り直すというバックアッププランを提示。Rustを使う案件はほぼ初めてなので、実装コストがかかる。「ビジネス的にはメリットは薄いが、技術的には大きい。信頼性、生産性の高さを押して、お客さまに提案しました」(舩戸氏)
Rustの導入を伴走する、ゆめみの内製化支援とは
実際にRustを使用してみた感想をルーク氏は次のように語る。「バックアッププランを採って進めてきましたが、その必要性がないほど、言語の堅牢性、信頼性の高さに気づかされました。矛盾するコードはそもそもコンパイルが通りません。不定な動作を起こさないので手戻りもない。スムーズな開発ができている印象があります」(ルーク氏)
一方池口氏は「発展途上の言語なので、かゆいところに手が届かないところはあるが、堅牢性を求めるシステムには向いている」と語る。RustにはUnsafe RustとSafe Rustという概念があり、「アプリケーション開発にはSafe Rustのみを使うことで、Goより堅牢にできる」と池口氏は言う。
例えばGoは静的型付け言語だが、細かい型付けができずに、any型に入れるしかないことがしばしばある。そのため、コンパイル時にエラーとして検知できず、ランタイムでエラーが発生してしまうことがよくある。その場合はテストを書いてある程度担保するしかない。Rustであれば十分な型システムによって細かい型付けをコンパイル時に解決できる。
また、言語のエコシステム全体が整理されていることも、他の言語よりも優れているポイントだ。「PythonやPHPのような動的な言語だと並行処理やその中での排他処理でつまずきがちだが、Rustならコンパイラレベルで並行処理の完全性を担保できます」(ルーク氏)
今、大注目されているRustだが、今後、IT業界では主流の言語になっていくのだろうか。「言語は情報や既存の資産の多さで選ばれることも多いので、みんなが使うようになると流行になる可能性がある」と前置きした上でルーク氏は次のように予測する。「LinuxのカーネルにRustが使われはじめていたり、Meta(元Facebook)が社内のソフトウェア開発の言語の一つとしてRustを優先すると表明したり、IT業界でRustを採用しようとする動きが着実に起こっています。このようなことから鑑みると、数年後に廃れることはないと思います」
舩戸氏も、「Rustという言語のエコシステムは充実していますが、RubyにおけるRailsのようなキラーライブラリがないように、周辺環境が未成熟です。ですが、従来言語からの置き換わりは進んでいくと思います。まずはCやC++から始まり、次にGoやPHPからの置き換わりが進むのではないでしょうか」と語る。
当然、採用したいと考える企業も今後、増えることが予想される。だが、Rustは先述したように「人を選ぶ」言語であり、できる開発者を集めるのは難しい。そこで活用できるのが、ゆめみの内製化支援サービスである。「ここ1~2年のうちに、大規模な案件でも支援できるよう、Rustを書けるエンジニアを増やしていき、お客さまのニーズに応えていきたい」と舩戸氏は意気込みを語る。またRustを採用することは、企業のブランディングにもつながる可能性がある。成熟途上の技術に投資をすることは、その技術に貢献したパイオニアとして、名前が残る可能性があるからだ。
「Rustは触ってみて初めて、言語の思想がわかり、掘り下げれば掘り下げるほど、その良さが実感できる言語。ぜひ、一度触ってみてその良さを実感してほしい」とルーク氏。
「新たなプロジェクトの選択肢にRustが挙がっている場合は、ぜひ、ゆめみに相談ください。当社が提供する内製化支援を通して、Rustの未来を一緒に切り開いていきましょう」(池口氏)
Rustは候補に挙がっているものの、活用が難しいと考えている企業の方は、ぜひ、ゆめみに相談してみてほしい。きっと良い解決策が提示されるはずだ。