自社サービス開始直前にWebフレームワークが消えた
また、インターフェース記述言語(IDL:Interface Description Language)を利用したインタフェース定義でも苦労している。ペイルドではOpenAPIを利用して、サーバー・サイドとフロントエンドの間でインターフェースについて合意を取っている。
フロントエンドのコードはOpenAPIの設定ファイルから生成できるが、サーバー・サイドのRustのコードを生成させようとすると相当な手間がかかる。サーバー・サイドのコードの自動生成をあきらめて、インターフェース定義を人間が見て実装することもあるそうだ。そこで、Protocol Buffersを利用したインターフェース定義を試し始めているが、「Go言語を想定して作られている部分が多いため、Rustとの組み合わせが難しいところがある」(森氏)。
そして、森氏が最も衝撃を受けた話として挙げたのが、Rust用のWebアプリケーション・フレームワークである「Actix Web」の話だ。ペイルドではこのactix-webを利用してWebサービスを開発しているのだが、サービス開始2カ月前に、メンテナが開発終了を宣言して、リポジトリも丸ごと消えた事件が起こった。
「オープンソース・ソフトウェアである以上、当然想定できる事態ではあるが、当時はかなり心配した」と森氏は振り返る。結局、新しいメンテナが就任して、actix-webの供給体制は元に戻ったが、「枯れていないコミュニティならではの大騒ぎだった」と森氏は語る。そして、その後継メンテナは現在、ペイルドで働いている。
ここで森氏はRustエンジニアの採用について話し始めた。「Rustで開発していると言うと、エンジニアは確保できるんですか? とよく聞かれるが、幸いなことにペイルドではRustエンジニアの採用ではそれほど苦労していない」と森氏は実情を打ち明ける。そして「言語として勢いがあるせいか、Rustを使いたいエンジニアは多い」ともいう。
ただし世間を見渡しても、本番でRustを使った経験があるエンジニアがに多数いるわけではない。では、どうしているのか。入社後2〜3週間、ひたすらRustを勉強する時間をペイルドでは提供しているそうだ。
「Rust言語に習熟しようと思うとかなりの時間が必要だが、Webアプリケーション・フレームワークを使ってWebサーバー・アプリケーションを書くなら、書き方は大体決まってくる。2〜3週間で習得できる人がほとんど」と森氏は語る。
そして森氏は、「プログラミング言語を習得することよりも、Webシステム開発の本質的な難しさを理解することの方が大切だし、大変なこと。Rustでなくても、何らかの言語でWebサービスを開発した経験がある人なら、ペイルドに入社してもそれほど苦労しない」ともいう。
ただし、ペイルドが人材についてそれほど苦労していないのは、ペイルドの開発チームがそれほど大規模なものではないからという大きな理由がある。森氏も「『来月から納期3カ月で、合計15人月調達』とかいう話になると難しいのではないか」と言う。
エンジニアなら、新しい技術を試してみたい、できれば本番で使ってみたい気持ちを抱くのは当たり前だろう。だからといって、「今回のプロジェクトでは新しい技術を採用しましょう」と提案するだけでは相手にされない。
森氏は「興味がある技術について日頃から情報を収集した方が良い。その技術のメリットだけでなく、デメリットも知っておき、提案時には両方合わせて説明できるようにすべきだろう。メリットとデメリットの両方を提示すれば、相手は判断材料ができる。そうすれば採用の可能性が少しずつ高まっていく」とエンジニアにメッセージを送って講演を締めくくった。