SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

キーパーソンインタビュー(AD)

Rustはなぜ開発者に愛されているのか、そして「人を選ぶ」理由とは? 実案件でRustを採用するゆめみに聞く

  • このエントリーをはてなブックマークに追加

 昨今、開発者の中で人気が増しているプログラミング言語「Rust」。気になっている開発者は多いものの、業務での採用はまだこれからと考えている人も多いだろう。そんな中、ゆめみではRustに力を入れ、自社内外の案件でRustの活用を進めている。なぜ、ゆめみではRustの習熟を推奨するのか。その理由とともに、Rustの特徴、実際に使って見た感想、さらにはRustの今後の展望などについて、ゆめみでRustの推進に関わっているチャレンジCTO(最高技術責任者)の池口直希氏、エンジニア兼チャレンジ取締役のスミス 祐一郎 ルーク氏、サーバサイドエンジニアの舩戸隆氏に話を聞いた。

  • このエントリーをはてなブックマークに追加

ゆめみでRust活用を牽引するエンジニア

 2006年にグレイドン・ホアレ氏という個人プロジェクトとして開発されたプログラミング言語「Rust」。2009年にMozillaが開発に参入してプロジェクト化。その後、仕様変更を繰り返し、バージョン1としてリリースされたのは2015年。プログラミング技術に関するナレッジコミュニティ「Stack Overflow」が2020年6月に発表した調査で、Rustは開発者が好きな言語の1位に選ばれるなど、人気が高まっている。

 Webサービスの内製化支援を行うモバイルインターネット業界の老舗ベンチャー、ゆめみではRustへの積極的な投資を行うという方針の下、社内外の案件への活用に取り組んでいる。そういう新しい技術の社内への普及を支援する役割を担っているのが、チャレンジCTOの池口氏とチャレンジ取締役のルーク氏、サーバサイドエンジニアの舩戸氏である。

 池口氏は2021年4月にゆめみに入社。サーバサイドエンジニアとして活躍しつつ、2022年4月にチャレンジCTOに就任した。チャレンジCTOとは、「社内の技術的なアンテナ役として、技術標準を主導し、社内外に広く伝えていく役割」と池口氏は話す。例えば技術的に困っているエンジニアがいれば、解決に結びつけていけるようフォローすることもチャレンジCTOの役割の一つだ。そんな池口氏とRustとの出会いは趣味での開発で使い始めたことだったと明かす。「馴染みやすく、自分に合う言語だと思いました」(池口氏)

株式会社ゆめみ チャレンジCTO 池口直希氏
株式会社ゆめみ チャレンジCTO 池口直希氏

 池口氏と共にRustの推進に取り組んでいるのは、エンジニア兼チャレンジ取締役のルーク氏だ。大学在学中からインターンやアルバイト、業務委託という形で開発に関わり、「知り合いが起業した会社ではCTO的なポジションを務めていました」と話す。そういう流れから2022年4月にゆめみに入社し、チャレンジ取締役にも就任した。Rustとの関わりについてルーク氏は、「他の人が作ったプロジェクトにコントリビュートする形で触れていましたが、本格的に使い始めたのはゆめみに入ってから」と語る。

 池口氏、ルーク氏という若手エンジニアと共に、Rustを使った案件にチャレンジしているのが、業界歴20年、ベテランのサーバサイドエンジニアの舩戸氏だ。舩戸氏がコンピュータに親しんできたのは中学生の頃から。学生時代はバンド活動にはまり、プロを目指すものの「夢破れて、プログラミングを仕事にすることにしました」と話す。SIerに就職し、Javaでエンタープライズ系のシステム開発に従事。その後事業会社など複数の企業を経て、2016年にゆめみに入社した。現在はアーキテクト的な役割を担っており、システムの全体設計、エンジニアやプロジェクトマネージャーのフォロー、お客さまとの調整などに従事しているという。

なぜ今、Rustが注目されているのか

 Rustは先述したように2015年にバージョン1がリリースされ、人気が出始めたのは2020年頃という比較的新しい言語である。その人気の背景にあるのが、高速さと効率的なメモリ管理ができること。速度に関しては「Goと太刀打ちできる」と池口氏は評価する。またメモリ管理については、比較的新しい言語の多くはガベージコレクタという仕組みを使っているが、Rustはそれとは異なるメモリ管理を採用し、より効率的なメモリ管理を実現する。新しい言語であり、最近の開発者が使いやすいツールキットやコンパイラ、依存関係の管理がモダンに設計されている点が、評価されている理由と池口氏は語る。

 ルーク氏は「Rustの特徴は、Cなどで使われていた低レベルの部分を担える抽象的なメモリ管理をしつつ、関数型言語の書き味を加味していること。こういう風にモダンに書けると思っていなかったところに切り込んでいける言語設計、エコシステムになっています。

株式会社ゆめみ エンジニア 兼 チャレンジ取締役 スミス祐一郎ルーク氏
株式会社ゆめみ エンジニア 兼 チャレンジ取締役 スミス祐一郎ルーク氏

 Rustは、安全・高速・モダン・シンプルというすべてを兼ね備えた言語。Cで作られていたエコシステムを置き換えられるポテンシャルがあり、アプリケーションのような抽象化された部分でも活用できるなど、言語としての幅広さが注目されている理由だと思います」と語る。

 このような特徴を持つ言語ではあるが、実際書くとなると、敷居が高く、人を選ぶと評価されがちだ。敷居が高く感じられる理由として舩戸氏は、「メモリ管理はプログラムを書くことの制約で実現している。Javaの使い手など、メモリ管理をプログラミング言語に任せていた開発者にとっては、『なんでそんな制約がいるんだ』というジレンマを感じてしまう。だから人を選ぶ言語なんです」と説明する。

 一方CやC++などの言語を使っていた開発者からも、「とっつきにくい面がある」とルーク氏。それは関数型やオブジェクト指向で使われている抽象的な概念が出てくるからだ。「ポテンシャルはある言語だと言えるが、今まで書いていた言語とは異なる考え方が要求される、一筋縄では習得できない言語と言えます」(ルーク氏)

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は候補に挙がっているものの、活用が難しいと考えている企業の方は、ぜひ、ゆめみに相談してみてほしい。きっと良い解決策が提示されるはずだ。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16416 2022/09/29 13:26

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング