【感想】詳解Rustプログラミング

TimMcNamara, 吉川邦夫 / 翔泳社
(4件のレビュー)

総合評価:

平均 3.8
0
3
1
0
0

ブクログレビュー

"powered by"

  • おぬま

    おぬま

    プログラミング言語Rustを詳しく記載されている本。Rust言語は何たるかを知りたくて、適当に本屋で相性良さげで選んだ本。
    著者は海外の方で、この本は包括的な教科書や参考書ではないと断言されている。なんとなくで選んだので、後悔はしていないが、ちょっとポリシーに乏しい印象を私は抱いた。
    ざっと目を通した。Rustを使いながら、プログラミングを中心にベーシックなコンピュータサイエンスを学んでいく…ような印象かもしれない。もちろんRustならではの所有権やライフタイムなどの記載はあり、Rust言語をざっくり学べる。

    悪くはないんだが…、結局そこまでこの本とは深く付き合うことはなさそうだ。
    続きを読む

    投稿日:2023.10.27

  • ふえるわかめ

    ふえるわかめ

    # 1周目感想 2023-01-06

    Rust in Actionの和訳版。サンプルプロジェクトをベースに解説が展開される。最初にいくつかの小さなコードを交えながら前提となる基礎を示す。用意ができたら、大きめなサンプルに取り掛かる。そこで登場するパーツに対して、付加的に解説をするというスタイルで進められる。そのため、Rustの基礎を一通り解説しているわけではない。この進め方が好ましいかどうかどうかは人によると思われる。少なくとも、まったくはじめてRustに取り組む場合には適切ではないように思う。公式の優れた入門書がオンラインで無料で公開されているので、そのことも念頭におかれているのだろう。Rust自体を集中的扱っているというよりも、実践で必要となる周辺の分野にどうやってRustを適合させるかを重視している。Rust自体を十分な掘り下げているわけでもない。その周辺の分野については、よく整理されていて一読の価値のあるものだった。Rustの基礎を一通り終えたあとで、現実の問題を解くためのヒントを得たい場合には良い選択肢になるかもしれない。どの章もよく整理されてはいるけど、さほど深入りはしていない。まだその分野の入口に過ぎず、これから中に飛び込んでいくための準備体操のようなところまでだ。準備体操としては申し分ない内容で、今後の足がかりとなるだろうということで、読んで損はなかった。

    最後のカバーの袖にひっそりと[この本の内容]というのが書かれていた。まさに書いてあるとおりの内容だった。

    「本書の主な対象は、これまでオンラインリソースでRustを学習し、いよいよ次のステップに踏み出そうとする人たちだ。本書には、興味深くて、気の向くまま時間の許す限り拡張できる、数多くのサンプルが含まれている。これらのサンプルと12章からなる本文は、Rustの生産的な部分と、そのエコシステムでもっとも重要なサードパーティライブラリとをカバーしている。

    サンプルによって、Rust初心者は、エレガントで標準的なRustを学べるだろう。Rustプログラマとしての知識を持っている読者には、スタイルの一部に異論があるかも知れないが、それらは初心者に向けた親心なので、どうかご辛抱願いたい。

    本書は包括的な教科書や参考書ではない。Rustとその標準ライブラリに関して、専門的で特別な扱いが必要な部分は略している。本書の目標は、十分な基礎知識を提供し、必要に応じて特殊なトピックを学べるという自信を与えることだ。」

    最初にこの趣旨を理解して意識して読めば、困惑することは少なくなるかも知れない。


    ## 12章を読み終えた

    「シグナルと割り込みと例外」

    最後を締める章としては変わり種なトピックに思える。Cで書かれた本ではよく扱われる。まず、シグナルとは何か、割り込みとは何か、例外とは何かをちゃんと理解することが重要になる。いつものようにきれいに整理されている。この章のサンプルはあまり実用的な価値はなく、実験的なコードとなっている。Rustでsetjump/longjumpを実現するにはどうやればいいかを示している。その特殊なコード自体の価値よりも、一見その言語では無理そうなことをなんとかして可能にする方法を、言ってしまえばハックに近いような気もするが、引き出す考え方を身につけるきっかけとして価値があるように思う。


    ## 11章を読み終えた

    「カーネル」

    QEMUのx86-64で動く超ミニマルなOSの原型を作る章。こんな簡単でいいのかと嬉しいのと同時に不安でもある。組み込みOSが想定されている。とりあえずブートして動くだけで、OSとまで呼べるものではない。それだけであっても、従来はとても大変なものだった。読んだだけで動かしていないので、あまり吸収はできていない。今更だが、コードの掲載の仕方が冗長なように思える。一部を改変しただけで全体を再掲するのは、紙面がもったいない。他に良い方法があるとは言えないので仕方ないといえばそうだ。


    ## 10章を読んだ

    「プロセスとスレッドとコンテナ」

    最初に、マルチスレッドの基礎とどのように性能に影響するのかのベンチマーク。サンプルはSVGフォーマットの画像ファイルを動的に生成するプログラム。最初にシングルスレッドのバージョン始まって、rayonとcrossbeamそれぞれを使ったバージョンに変更していくという流れ。並行性に関する用語集というのがあって、スッキリしていてよかった。


    ## 9章を読んだ

    「時間とタイムキーピング」

    目標はNTPサーバーとローカルの時刻を同期すること。これだけだとそんなに難しそうには見えないし、そう思っていたのだけど、事前に知っておかないといけないことは結構多い。コンピューターにおける時間と現実の時間がそもそも何なのかのちゃんとした理解が必要になる。あとは、システムの時刻を設定するためにはOSに依頼としないといけない。そのために、unsafeなシステムコールを発行しないといけなくて、そのやり方も書かれている。Rust固有の話ではないけど、時間に関する用語の分類が載っていた。C++のchrnooライブラリにも登場する、steady clockとかhigh resolutionなどの分かりやすい解説が載っている。一つ謎が解けたようなすっきりした感触が得られた。


    ## 8章を読んだ

    「ネットワーク」

    上位の層から徐々に下まで下がっていく流れになっている。最初はHTTPのリクエストから、最後はMACアドレスとOSまで下がっていく。まとめとして、生のTCPで通信を行うややスケールの大きなサンプルプロジェクが掲載されている。Rustに関しては、異なるErrorを一つのブロックでどのようにまとめ上げるか、とトレイトオブジェクトが新しいトピックとなっている。これはなかなか良い収穫だった。


    ## 7章を読んだ

    「ファイルとストレージ」

    メインコンテンツはキーバリューストアを自作。サンプルプロジェクトの規模としてはこれまでで一番大きい。一部おかしな、もしくは理解できないコードがあった (P271:L196..=198)。なぜ古い位置を返すのか?PathとPathBufの必要な理由が挙げられているのだが、パスの文字にUnicodeではない文字が含まれる可能性があるため、Rustの文字列(str)では対応できないから必要となるという重要な点に触れらていないのが気になった。


    ## 6章を読んだ

    「メモリ」

    前章に続いて、もう少し低レイヤーの解説が続く。この本を読み始めてから、ようやく面白くなってきたと思えることができた。前の章を読んだ直後は、このまま読み進めるかどうかをちょっと迷っていた。読む価値のある本で、読み進めて大丈夫だと分かった。

    2つの興味深いプログラムが掲載されている。

    ・ヒープメモリのアロケーションの効率を視覚化するためにPistonを使ったグラフィカルなプログラム
    ・実行中のプログラムのメモリを探索するWindows APIを使ったプログラム

    単なる言語の仕様と機能を解説するだけにとどまらないで、実際にOS、CPUはどのようにメモリを扱っているのかまで踏み込んでいる。コンピューターアーキテクチャの本が解説するような領域で、それをプログラミング言語の側から覗いている。コンピューターアーキテクチャの本ではないので、あまり深くには踏み込んでいない。Rustから離れ過ぎず、丁度いいところまでにとどまっている。


    ## 5章を読んだ

    「データの詳細」

    浮動小数点数の内部表現や、自作の数値フォーマット、CPUエミュレータといった低レベルな処理に関する話題。なかなか面白いのだけど、Rust固有の話ではない。Rustらしいサンプルコードというわけでもない。この第2部からは、応用編ということでRustを使ってシステムプログラミングに挑戦するという目標がある。このような感じで進んでいくのだろうか。


    ## 4章を読んだ

    「ライフタイムと所有権と借用」

    これまでと同じように擬似的なデモプログラムをモチーフに解説が進められる。なんか微妙な感じがする。この章だけでタイトルにあるこの重要な領域ついての十分な理解が得られるものではない。全2部のうち、第1部はこれで終わりになる。基本のおさらいといったところだった。補助的なものであって、完全な説明をしようという目的ではないのだろう。次からの実践的な内容が本編なのだろう。


    ## 3章を読んだ

    「複合データ型」

    struct、enum、トレイトがメイン。擬似的なFileというデータ型をモチーフに解説が進められる。あまり詳細ではなく、表面的なところにとどまっている。すでにオライリーので一通り学習済みなので、特に迷うこともなく読めるが、初めてRustにふれる読者が満足できる内容かというと疑問の余地がある。それでも、ドキュメントの生成方法などの細かい実用的なヒントがあるので、まったく新しいことがなかったというわけでもない。


    ## 2章を読んだ

    「言語の基礎」

    実際的なサンプルを提示しながら、そのサンプルに必要な言語の機能を導入しながら解説していくというスタイルになっている。おそらくこの本全体を通してそのスタイルになっているだろうと思われる。サンプルのメインディッシュは、マンデルブロ集合とミニgrepだろうか。導入編には丁度いい規模になっている。個々の言語機能についてはさほど深入りしていない。この章だけで基礎が十分に身につくかと言うと疑問ではある。そもそも、この本の対象読者が一度はRustに入門したことのある人となっているようので、懇切丁寧に解説しようという目的はないのかもしれない。サンプル主体で学んでいくやり方にうまくマッチすれば、良いスタートを切れるかもしれない。


    ## 1章を読んだ

    「Rustとは」

    Rustの実績や将来性について、やや誇張気味に思えた。この章を一言で言うと、Rustいいよ、ということになる。一方で、今はちょうどブームになって加熱している段階で、誇大広告が入り込む余地は十分ある、というようなことを指摘している。
    続きを読む

    投稿日:2023.01.06

  • yhorikiri

    yhorikiri

    Rustらしく、低レイヤーの話の割合が多く、一介のWebエンジニアが役立てられるか?というとよく分からなかった。 後半は飛ばし飛ばしになっちゃった。

    投稿日:2023.01.05

  • ofellabuta

    ofellabuta

    Rustの中級者向けの解説書。
    一応、チュートリアル的な言語解説の記載もあるが、これだけで学習するのは厳しい。ある程度、Rustの文法など基本的な知識がある人向けの内容。
    取り上げられている内容はシステムプログラミングよりで実践的だが、アプリケーションプラグラマにとってはすぐに応用が利くという感じではないが、入門書を読んでいざ実際にコードを書いていくというときの具体的な指標にはなりそう。続きを読む

    投稿日:2021.12.03

クーポンコード登録

登録

Reader Storeをご利用のお客様へ

ご利用ありがとうございます!

エラー(エラーコード: )

本棚に以下の作品が追加されました

追加された作品は本棚から読むことが出来ます

本棚を開くには、画面右上にある「本棚」ボタンをクリック

スマートフォンの場合

パソコンの場合

このレビューを不適切なレビューとして報告します。よろしいですか?

ご協力ありがとうございました
参考にさせていただきます。

レビューを削除してもよろしいですか?
削除すると元に戻すことはできません。