にたまごほうれん草ブログ

はてなダイアリーから移行したブログ。以前のはこちら→http://d.hatena.ne.jp/emergent/

私だって『実践Rustプログラミング入門』を書きました

8月22日に『実践Rustプログラミング入門』を発売してからすでに1か月弱経ってしまいましたが、共著者の1人として参加するという貴重な経験をしましたので、私もブログにしたためておこうと思います。書かずにいる間に増刷が決まっていました。ありがとうございます!

他の共著者の方々のブログ記事

執筆のきっかけや感想など

2019年のクリスマス、フォルシアの松本さん(id:matsu7874)からのメールでRust本執筆にお誘いいただいたのがきっかけでした。その後、年が明けてから共著者陣で集まりテーマをブレストし、大まかな方向性が決まったと記憶しています。しかし、3月ぐらいまでは皆なかなか筆が進まず…という状況で、4月に入るか入らないかあたりでみなさんエンジンがかかったような気がしています。

最初のブレストの際におおまかな章立てと分担は決めたものの、少し書き始めたところで全体を俯瞰すると「あれも足りないこれも追加したい」と色々意見が出てボリュームが増えていきました。校正に出すタイミングでは、時期的にフルリモートワークのときでしたが、日中に会社の仕事をやってから間髪入れずに執筆・レビュー作業に突入していて、本業なんだっけ状態に陥りつつも、非常に充実した日々でした。ちなみに私は、4章と、11章の「FFI」「Rustを仕事で使う」、3章のFutureを書きました。

それにしても、7人も執筆者が集まると、自分の知らないRustのネタや知識がたくさんあるということを思い知らされました。メンバーの中でプログラマーとして一番未熟な私にとっては、執筆やレビュー自体がとても勉強になり、ますますRustのことを好きになることができました。

現状の自分の立場にも恵まれ、Rustを趣味だけではなく業務で実戦投入することができたことは、これからもRustを使い続ける口実にはなるでしょう。Rustを使ったソフトウェアプロダクトの開発は、いいことが多いので、これからもどんどん発見・発信していけたらと思います。

私とRust

ここから先は、ほぼ自分語りです。

私がRustを本格的に勉強し始めたのは、2019年の初頭だったと思います。新卒で就職した2005年から、数年のソフトウェア開発者(家電のソフトウェアをC言語で書いていた)だった期間を経て、それ以降は長らく開発の上流工程やプロマネ的な立場でばかり仕事してきました。ここでいう上流工程とは、企画や基本設計ぐらいの領域を言っています。つまり、プロダクトのコードを触ることはほとんどなく、業務の合間にちょっとしたスクリプトを作成する程度。それなのに、40歳まで後2年というところでやっぱりコードを書く仕事をしたいと思い、現在の会社に転職しました。当然選考を受けている時点ではソフトウェア開発者としての期待値はそんなに高くなかったと想像していますが、チームマネジメントをすることを期待されて(だと思っています)採用してもらえました。そのときは自分含め6名だけの開発チームだったので、チーム環境の整備しつつ、既存のC++プロダクトをベースに機能追加やバグ修正を積極的にやっていきました。

しかし、入社当初持っていた「C言語をやっていたからC++もすぐ習得できるだろう」という考えは甘く、やればやるほどC++は難しい…と実感することになります。既存プロダクトの多くはC++で書かれていて非同期処理も多用されていました。ロジックが難しいということもありましたが、C++をメンテナンスできる人は限られる一方、非同期処理由来のバグはどんどん見つかって増えていく→自分ほか数名でバグを直さないといけない、という悩みがありました。そんな経緯もあって「もっと別の言語で安全に作り直せないだろうか」と考え始めたのでした。

そんな中で、いろいろ調べているうちにRustを知ることとなり、半年ほどの自分の勉強期間を経て、新規に作成するサブシステムを、自らRustで開発して商用ローンチまで持っていくことができたのでした。言語仕様やコンパイラの動作を実際に試していくうちに、Rustは非常にプロダクト開発向きだという思いがどんどん大きくなっていったのを覚えています。開発に着手するまでに「Rustはすごく良い!なぜならば〜(省略)。だからこれは私がRustで作る!」と社長やチームメンバーにアピールしまくっていました。今思うと、半ばゴリ押しだったな、と。

プロダクトがWebサーバーであり、ちょうどactix-webのバージョンが1.0.0になったばかりだったのはいいタイミングだったと思えます。着手タイミングあたりで、マネージャー(管理職)になったのもあって、「日中はマネージャーのお仕事、それ以外の時間は全部コード書く時間」みたいな生活をしてたような気がします。帰宅してからも土日もずっとRustでコード書いていた(か、試行錯誤していた)ような気がします。

そのときは、まだFutureを知ったばかりで、サンプルコードを読んで動かして、関係しそうなクレートのコードを読んで試行錯誤して…と、あまりスマートじゃないやり方でしたが、徐々に馴染んでくると、「コンパイラに怒られて直して、動かすとちゃんと動く」というRustの開発体験が非常に心地よく感じるようになってきました。怒られ続けて丸二日、みたいなときもありましたが…。

そのような日々を経て、バックエンドでプロダクトをローンチできたときは、感激もひとしおでした。そんなこんなの体験談をShinjuku.rsに投下していたら、松本さんに執筆のお声がけをいただけたので、これはもう是非!という形で引き受けていました。その後は冒頭に書いた通りです。

おわりに

『実践Rustプログラミング入門』は、発売後すぐに非常に好評をいただき、2週間経たずに増刷が決まりました。これには、Rustや競プロ界隈で名を知られた共著者の方々のおかげによるところが大きいですが、私も仕事での立場上、他社の人と関わることも多いので、この本を持ってRustを世の中の企業にもっと広めていければいいなと思います。