2022年まとめ

2022年は戦争がはじまり、時代が逆行したような年でした。我々は技術者・研究者であるので、社会的・政治的には時代が逆行しても、科学と技術を進歩させ、科学技術で社会問題を解決してきたい所存であります。

『ゼロから学ぶRust』を執筆した

2022年12月13日に講談社より『ゼロから学ぶRust』が発売されました。本書は私の2作目となります。1作目は2021年8月にオライリー・ジャパンより発売された『並行プログラミング入門』となります。どちらも好評発売中ですので、よろしくお願いいたします。

『ゼロから学ぶRust』の執筆と苦労した点

『ゼロから学ぶRust』の執筆依頼を受けたのが、2021年7月頃で、その頃はちょうど『並行プログラミング入門』の執筆が終了したときに思います。『並行プログラミング入門』の執筆が終了し、ようやく一息つけると思った折りに依頼が舞い込み、正直断ろうと思いました。しかし、『並行プログラミング入門』には収録できなかった、システムソフトウェアに関する内容や、線形型システムについても書きたく思っていたので、引き受けることにしました。書籍の執筆はかなり大変で、個人的な金銭的面からのみ考えると、かけた労力に見合うものではありません。ですが、Rust言語の普及はコンピュータサイエンスとしても重要な課題であると考えていたので、引き受けることにしました。『並行プログラミング入門』が3年半ぐらい、『ゼロから学ぶRust』が1年半ぐらいの執筆期間なので、5年は連続して執筆していたことになります。

『ゼロから学ぶRust』ですが、執筆に関して重要視していたのはライブラリの説明や言語の説明に終始しないことです。Rustでは、Rustの公式チュートリアルが非常に良く書かれているため、Rust自体の解説だけする書籍の価値は低いと考えています。また、ライブラリは流行り廃りが激しく、数ヶ月で時代遅れになることはざらにあります。そこで、本書では、なるべく公式チュートリアルとは異なる側面からRustを解説し、文法解説以上の説明をRustで行うように心がけました。特に、私が当時は大学で講義をしていたことから、大学の情報系学部での利用に耐えうるような、コンピュータサイエンスの内容を含めたものにしたつもりです。

そのため、本書はプログラミング言語の書籍ではありますが、オートマトン正規表現、シェル、デバッガ、線形型システムなどの基本的な事も学べる内容となっています。当然、Rustでプログラミングする際にもこれら概念は重要になります。大学、高専、専門学校の場合、単純にプログラミング言語を教えるのではなく、アルゴリズムコンピュータサイエンスと関連付けて教える場合が多いと重いのですが、それを意識しました。

本書執筆で一番苦労したのは、ページ制限です。ページ数が300ページ以内と制限があったため、いかにページ内で説明するかを考えるのが大変でした。ページ内におさめるために、すべてのソースコードを本に載せるのではなく、似たようなコードは省略し、GitHubソースコードを参照してもらうようにしました。これにより、説明がコンパクトで重要な点のみにしぼられるため重要な点のみ理解すればよくなります。一方、すべてのコードがないので、残りは読者が自分で考える必要があります。一長一短ありますが、今回はコンパクトにまとめることを優先したので、この形に落ち着きました。
書籍中に省略したソースコードGitHubから御覧ください。

GitHub - ytakano/rust_zero

ちなみに、電子書籍版は2023年春頃予定だそうです。

今後のRust本

Rust関連書籍が充実してきました。書店をみると、Rustというコーナーが出来ており、Rustが広く認知され始めていることが実感できます。Rust関連で欲しい書籍は、やはり、アルゴリズムの書籍に思います。残念ながら私はアルゴリズムの専門家ではないため書けませんが。個人的には、Rustで本格的にOSを実装する本を書きたい気もしますが、OS実装の本はどれも超大作なのでキツそうだなあという印象です。RustでRustをつくるというのも挑戦したいのですが、時間がなく進んでいません。こういった教科書の執筆は本来ならば大学の先生の仕事だったのでしょうが、いまは教科書執筆のような本質作業はほとんど評価されず、海外経験、社会人経験、性別などといったレア属性であったり、予算獲得能力が評価されるので、なかなか厳しそうですね。

大学から民間企業に転職した

もともとは大学へ残ろうと思っていたのですが、色々なご縁があり、民間企業に転職しました。民間企業は正直不安でしたが、技術レベルについては特に問題ないかなと思います。大学教員をしていた都合上、大学の学部レベルの情報系学問はほぼ修得していたので、問題はなさそうでした。逆に言うと、技術的な話のみでいうなら、大学や国研の方が最先端です。これは、最先端技術が必ずしも飯の種になるとは限らないからに思います。しかし、私のいるところはディープテックなベンチャー企業なので、大学や国研レベルの最先端を目指していくつもりで日々奮闘しています。最先端をめざすには、やはり論文を読んだ方が良いというのが国研、大学、民間企業を経験してみた結論です。

Stack Overflow創業者は以下のように語っていますが、論文を読んで実装できる、というのは新しい領域を開拓したい場合には全く間違っているので、真に受けない方が良いと思います。Stack Overflowが使っているであろうクラウドサービスでは、GoogleAWSMicrosoftから発表された論文に基づく技術が山のように使われているのは言うまでもありません。

大学や国研にいると、論文を読むことが多くあります。多く読む分、イマイチな論文も沢山読むことになるのですが、そうすると論文の価値について半信半疑となってしまいます。しかし、民間企業へ来て、論文の価値を再評価できたのは良かったです。最近ではUSENIXやACMも、論文の再現性について重要視しているので、一時期よりも質が向上しているように思います。その分、書くのは大変になりましたが。

今年は業務でROS2というロボティクス用のミドルウェアを触っていたのですが、それのRustクライアントライブラリを実装して、SWEST24という組み込みソフトウェアむけのワークショップで発表しました。タイトルは『Rustとモデル検査器を用いたROS2クライアントライブラリの設計と実装および安全性検証』というもので、TLA+というモデル検査器を利用して、デッドロックフリー、スタベーションフリーを検証しており、ソースコードGitHubで公開中です。まだ機能が一部足りませんが近々追加予定です。こちらはSWEST24でベストポスター賞(シルバー)を受賞しました。

github.com

これを皮切りとして、来年もどんどんCutting Edgeなものをリリースしてきたいと思います。大学時代は日々、ワード、エクセル、パワポと戯れていたのですが、民間企業だと開発する時間も多くあり、とても良いですね。Stack Overflowの創業者に言わせると、これも「頭は切れるが役に立たない」という事例なのでしょうか?気になります。

2022年の成果

2022年の成果は以下となります。

特許

書籍

  • 高野 祐輝, "ゼロから学ぶRust", 講談社, Dec. 2022.

論文誌(査読有り)

  • Atsuko Miyaji, Kaname Watanabe, Yuuki Takano, Kazuhisa Nakasho, Sho Nakamura, Yuntao Wang, and Hiroto Narimatsu, "Privacy-Preserving Distributed Medical Data Integration Security System for Accuracy Assessment of Cancer Screening: Development Study of Novel Data Integration System", JMIR Preprints, https://preprints.jmir.org/preprint/38922, Dec. 2022.

国際会議(査読有り)

  • Nobuyuki Kanaya, Yu Tsuda, Yuuki Takano, Yoshitada Fujiwara, Ryoichi Isawa, and Daisuke Inoue, "NEMIANA: Cross-Platform Execution Migration for Debugging", The Third ACM/IEEE International Conference on Automation of Software Test, pp.138-147, May 2022
  • Liu Xiaolong, Yuuki Takano, and Atsuko Miyaji, "Design and Implementation of Session Types-based TCP and Unix Domain Sockets", The Eitgh International Conference on Information and Network Technologies, ICINT 2021, May 2022

国内研究会

  • 尾崎 純平, 高野 祐輝, 宮地 充子, "eBPFの動作検証用フレームワーク及びデバッガの提案", (CSEC2022-99), 2022年12月
  • 高野 祐輝, "Rustとモデル検査器を用いたROS2クライアントライブラリの設計と実装および安全性検証", SWEST24, 2022年9月
  • 斎藤 文弥, 高野 祐輝, 宮地 充子, "Coqで検証可能なTEEシェル基盤の実装", 情報通信システムセキュリティ研究会, (CSEC2022-97), 2022年5月

受賞

  • SWEST24, ベストポスター賞(シルバー), 2022年9月

こうして振り返ってみると、思ったよりも色々と行っていますね。日々積み重ねです。それでは皆さん、良いお年を!