読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(rust report) splitのマージ. そしてRust引退

Rustによるcoreutils rewriteプロジェクトのsplit実装を宣言してから今日で26日目となる. 私のsplitがついにマージされたことを報告する.

https://github.com/uutils/coreutils/blob/master/split/split.rs

カーネル/VM(Writeboost絡みで忙しくて参加出来なかったがustで見た)でRustという言語が面白いと感じて, 何かOSSに関わることで強制的に学ぶ方が良いと考えて, coreutilsのsplitを実装すると手を挙げて, 26日でマージ. 日にちだけ見ると, 初期値がほぼゼロだったことを考えると, 上出来という感じがするが, 本当に苦しい戦いだった. はっきり言って, 投げ出したい気分だった. 手を挙げた時はこのおれさまに出来ないことはないという自信にあふれていたが, 言語を学び進めるにつれて, 後悔が深まってきた. しかし, OSSのコミュニティは狭く, ここでバツをつけられると他のフィールドにも悪影響が出る. とにかく完遂してマージする以外に生き残る道はない. 気分はさながら, 5億円を取り戻さないと人生が破滅してしまう半沢直樹のようであった.

Rustはまだver.1に達していない言語だ. 先日コンパイル出来たコードが今日になったらエラーだらけなんてことはざらだし, 日本語のドキュメントなんて当然存在しない. ドキュメントと呼べるのは, 公式のドキュメント(チュートリアル/API)くらいで, ネットに転がってるブログはあまり質が高くないので参考にならなかった(大体において, 紹介されているコードがコンパイラをパスしないことが多い). さらに絶望的なのが, グーグル先生の学習が進んでおらず, 疑問があってもグーグル先生が十分に賢くないことがほとんどだったことだ. Rust自体, 言語仕様が難しいので, リリースされたあともJavaのように一般的に広まることはないと思うし, この状況で挑んだのはなお厳しかった. 言語を広めたければ, 妥協が必要なのだと思う. しかし私は, ソフトウェア一般について, 広まったもん勝ちという意見は, 好まない. Rustが広まらなくても, Rustは悪い言語ではない.

チュートリアルに書いてある基本的な概念は80%くらいは理解したが, それでは当然ながら, 実用的なコードは書けない. ここで助かったのがIRCだ. IRCへはWebChatで入室出来る http://client00.chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust . ここにはRustの開発者が張り付いていて, 質問がほぼ即答される. オーソドックスな質問の仕方は以下,

  1. 悩む
  2. 悩む
  3. 悩みをもっともシンプルに表したコードを http://play.rust-lang.org/ に書く. Wandboxでもいいと思うが, 標準に準じるのが良い.
  4. こういうことを実現したくてこんなコードを書いたけどダメだということを書く. 質問の基本だが, 「私は何を実現したいか」を言わないで質問するのは, おろかしいことだ. きっと質問されたことがないんだろうと思う.

当然, 英語は必須だ. 英語に抵抗があると, 技術者としては大きくマイナスとなる.

IRCで多くのことが解決された. 本当に助かった. 彼らはむちゃくちゃ頭がいいし, 私の意図を100%汲み取って, 120%の回答をしてくれた.

今後?私はRustを引退する. splitにはまた少しだけやり残した実装がある. これは責任を持ってやるとして, その後はたぶん関わらない. コンパイラの変化への追従はコミュニティが自動的にやってくれるだろうし, 性能改善についても見当だけは示したので完全な育児放棄ではない. そもそも, GNU版に2倍ほど, busyboxには1.5倍未満の差なのだから, はっきり言って改善する強いモチベーションはわきあがらない(もし本当に遅いならばマージされていないと思う).

Rustを引退して出来た時間はすべてOCamlに注がれる予定だ. OCaml関数型言語の一つだが, これもプログラマの質が, Rustに負けず劣らず高い. 私はこの言語に大変興味を持った. OCamlを学ぶことでRustへの理解も深まるだろうし, Rust学習にとっても良い影響を及ぼすだろう. そしていつか, ver1.2とか2.0くらいになって, その時Rustがまだ魅力的な言語だったら, また勉強をしようと思う. 現状, Rustを学ぶのはとてつもなくコスパが悪い(学ぶことが難しい. 学んだからと言って転職市場で大きく評価されるわけではない)ので, 貴重な時間を割くほどではないというのが私の本音だ. RustはC++の後継としては大変有力な言語だと思うので, 広まれば, Rustの狙いどおり, システムソフトウェアの質を改善することに成功すると思うが, あまりに難解なので, 広まることはないだろうと思う.

多くの言語でcoreutilsのrewriteが試みられているが, 私の知る限りではRustのそれがもっとも盛況している. それだけ多くのプログラマがRustに興味を示しているということだと思うし, coreutilsをrewriteするのに適切な言語だと判断されているのだと思う(私もだ. だからRustを学ぼうと思った時, coreutilsに辿り着いた. プログラマならば, 同じように考える). そこに名を残せたし, 余は満足じゃ. マージされた瞬間は大変興奮した. いい思い出にもなった. ありがとうRust