ペイルドはプログラムのエラーが極端に少ない
こうして聞くと、あまり深く考えずにパッと決めてしまったんだなと感じるかもしれない。しかし森氏はRustを選んで良かったと言う。ペイルドが提供しているクラウド管理型の法人カードサービス「paild」は、決済サービスでもある。決済サービスでは「いつでも決済できる」、つまりシステムを止めてはいけないことが当然のように求められる。
「Rustはコンパイラによる静的なチェックが非常に優秀。ペイルドはプログラムに起因するエラーが極端に少ない」と森氏はRustがもたらした利点を挙げた。
そうは言ってもRustは「枯れている」とはとても言えない言語だ。そして森氏もRustを選んだが故に苦労したこともあるとして、一つひとつ話し始めた。
まず、Rustの非同期周りの環境だ。特にランタイムの事実上標準がなかなか決まらなかったこと。有力なランタイムが複数存在し、ユーザーを奪い合っていたのだ。その結果、ライブラリによっては特定のランタイムでなければ動かないことが起こるなど、かなり苦労した。現在は「Tokio」という非同期ランタイムが事実上の標準となったが、ランタイム以外の点でも「Diesel」というORマッパーが非同期に対応していないほか、非同期なトレイトを作ろうとしても言語の標準ではその機能がないなど、まだ苦労はある。
続いて各種SDKの問題。「paild」では認証に「Auth0」というサービスを利用しているが、公式SDKがない。ほかにもいろいろな外部サービスを利用しているが、Rust向けSDKがないので、APIを直接操作するしかないという。
AWSについては、Rusoto(ラソト)という非公式SDKがあったが、ある日突然、Rusotoがメンテナンス・モードに入ってしまった。今後を心配していたが、Rusotoのメンテナの一人がAWSで働いていることを明かし、AWSに掛け合ったところ、AWSが公式SDKを提供することを発表した。しかし、その公式SDKは発表から1年近く経った現在でも開発者向けプレビューの状態にとどまっており、「本番環境では使わないように」というただし書きが外れないそうだ。「Auth0やAWSに限らず、SDKに関してはRustはまだまだ恵まれていない」と森氏はこぼす。