本書)の目次を公開します。購入前の参考にしてください。実は本書は私が想像していたのよりずいぶん早く書店に並びそうで、ずっと書きかけのままにしていたこの記事を慌てて仕上げました。本当は3人の著者についても簡単に紹介しようと思っていたのですが、それはまた別の機会に。183mm)576ページ3,980円+税(消費税8%なら税込で4,298円)大きめの判型でページ数も多いので、かなりの重厚感が出そうです。企画段階ではもっとコンパクトな本になる予定でした。書きすぎてしまいました。本書の特徴などRustは学習が難しいといわれています。その理由はたくさんあります。所有権に基づくメモリ管理、システムプログラミング向けの詳細なリソース管理、一般的なオブジェクト指向とは勝手の違うトレイトによるポリモーフィズムなど。学ばなければならないことが多く、これらをきちんと理解していないとコンパイルすらできません。本書に限らずRustの書籍はどれも分厚いので、なかなか読み進められずに苦労しているような声も聞こえてきます。いう状況をふまえ、本書では以下のことを目標にしました。実践的な内容にする:言語仕様を網羅的に解説するのではなく、重要と思われるものを選択して紹介することで学ぶ量を少しでも減らす。開発環境のセットアップについても丁寧に解説することで、準備にかかる時間も最短にする手を動かして学習できるようにする:実際に動作する豊富なサンプルプログラムが用意し、それらを実行することで理解を深めてもらう。達成感が得られるので、きっと飽きずに読み進めてもらえる実際に使えるサンプルプログラムにする:単なるコード片ではなく、実際の開発でも使えそうな、意味のある仕事をするプログラムを用意する。プログラミング入門書にありがちな、読み終わった後に次になにをしたらいいのかわからず途方に暮れる、といったことを少なくしたいこれをどこまで実現できたかはわかりません。いう本を書くのは初めてなので、うまくできたのか、あまり自信はないです。説明不足だったり、偏った内容のところも多いような気がします。本書を読む機会があったら、率直な感想(特に悪い点、改善できる点)をぜひお聞かせください。本書は「基礎編」と「応用編」の2部構成です。基礎編ではRustの特徴や文法を学び、Rustプログラムが読み書きできるようになることを目標にしています。Rustの特徴Rustという言語はどのようなニーズから生まれ、どのような特徴があるのか。導入事例も紹介します。Rustプログラム本章では開発環境を準備します。Codeと関連する拡張機能をセットアップします。簡単なプログラムを作成し、対話型のデバッガを通して実行します。クイックツアーマルチスレッドのプログラムの開発を通してRustの特徴的な機能を体験します。第1部の残りの章で学習する内容を事前に体験することで、それらの章の内容をより深く理解することをねらいとしています。本章と次の第5章ではRustプログラムの安全性と高速性に大きく貢献する「型」について学習します。本章では言語に組み込まれている数値型などの型を扱います。本章では標準ライブラリで定義されている主な型を見た後に、構造体や列挙型を使った新しい方の定義と、型変換の方法などを学びます。基本構文Rustプログラムを読み書きするための基本的な構文について学習します。いままで出てきたいろいろな構文をまとめて整理して、続く第7章「所有権システム」、第8章「トレイトとポリモーフィズム」という難所に挑みます。所有権システムRustの最も特徴的な機能の1つである所有権システムについて学びます。基本的な概念について学んだあと、簡単なベクタの作成をとおして所有権の中で特につまづきやすいライフタイムを中心に理解を深めます。トレイトとポリモーフィズムRustにおけるオブジェクト指向の側面について学びます。ポリモーフィズム(多相性)を実現するためのトレイトとジェネリクスを扱い、あわせて標準ライブラリのトレイト利用例や演算子のオーバーロードも見ていきます。静的ディスパッチと動的ディスパッチの節では、Rustにおいて選択可能な性能と柔軟性のトレードオフについて説明し、2種類のディスパッチ方法を目的に応じて使い分けられるようにします。実践編では実践的なサンプルプログラムを紹介します。Rustで何をどうやって実現できるのかを知るだけでなく、人気のあるライブラリやフレームワークについても基本的な使い方を学べます。パーサを作る数式をパースするライブラリを作成します。構文解析を扱いますが、そのあとに続くインタプリタやコンパイラも作ることで、数式に対応する抽象構文木を構築するだけでなく、電卓として機能させます。Rustにおける手続きの抽象化やエラーの扱いなど実用的なプログラミングには欠かせない技法も紹介します。パッケージを作る簡単なコマンドラインプログラムの作成を通じて、パッケージの作成とcrates.ioというセントラルリポジトリでの公開方法を学習します。あわせてrustdocによるドキュメント作成や、テストの書き方についても学びます。CIとAppVeyorを利用したテストの自動実行も扱い、作成したプログラムがLinux、macOS、Windows上で正しく動作することを確認できます。Webアプリケーション、データベース接続Web用途でのRustの活用法を紹介します。あわせてFuturesによる非同期IOの実現や、Rustからリレーショナルデータベース上のデータを操作する方法なども学習します。APIサービスを取り上げ、サンプルプログラムを通してRust製の各種フレームワークの基本的な使い方を学びます。FFIFFIを通じてRustプログラムとCプログラムを相互に呼び出す方法を学習します。動的または静的ライブラリとのリンク、ビルドスクリプトのサポート、Cのデータ型の扱い方などを学習し、さらにリソースが解放されるタイミングを制御する方法についても学びます。(tatsuya6502)Erlang/OTPやRustで分散DBを開発してます。最近、Rustの本を書きました。(tatsuya6502)。