Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ

Book description

Rustは速度や安全性、並行性に優れたプログラミング言語で、ゲームエンジン、オペレーティングシステム、ブラウザなど、さまざまな分野で使われています。Rustは学習が難しい言語だと言われていますが、本書では小さなコマンドラインツールを多数書くことを通して、Rustの機能やテスト方法を素早く学ぶことができます。各章では、Rustの重要な概念を取り上げ、関連するコマンドラインツールを作成しながら学習を進めていきます。Rustの初心者から経験者まで、実際にプログラムを書きながらスキルを向上させたい人に最適な一冊です。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  賞賛の声
  5.  訳者まえがき
  6.  まえがき
  7.  1章 イントロダクション
  8.   1.1 Hello, world!
  9.   1.2 Rustプロジェクトのディレクトリ構成
  10.   1.3 Cargoを使ったプロジェクトの作成と実行
  11.      Cargoコマンド
  12.   1.4 統合テストの書き方と実行方法
  13.    1.4.1 プロジェクトに依存関係を追加する
  14.    1.4.2 プログラムの終了コードを確認する
  15.    1.4.3 プログラムの出力をテストする
  16.    1.4.4 終了コードはプログラムを組み合わせ可能にする
  17.   1.5 まとめ
  18.  2章 echoコマンド
  19.   2.1 echoの動作
  20.   2.2 プロジェクトの作成
  21.    2.2.1 コマンドライン引数へのアクセス
  22.    2.2.2 依存関係にclapを追加する
  23.    2.2.3 clapを使ったコマンドライン引数の解析
  24.    2.2.4 プログラムの出力を作成する
  25.   2.3 統合テストの作成
  26.    2.3.1 テスト用ファイルの作成
  27.    2.3.2 プログラムの出力を比較する
  28.    2.3.3 Result型の使用
  29.      スタックとヒープ
  30.   2.4 まとめ
  31.  3章 catコマンド
  32.   3.1 catの動作
  33.   3.2 プロジェクトの作成
  34.    3.2.1 テストから始める
  35.    3.2.2 ライブラリクレートの作成
  36.    3.2.3 引数の定義
  37.    3.2.4 ファイル引数の反復処理
  38.    3.2.5 ファイルまたは標準入力を開く
  39.    3.2.6 テストスイートの使い方
  40.   3.3 解答例
  41.    3.3.1 ファイルから行を読み込む
  42.    3.3.2 行番号の表示
  43.   3.4 今後の学び方
  44.   3.5 まとめ
  45.  4章 headコマンド
  46.   4.1 headの動作
  47.   4.2 プロジェクトの作成
  48.    4.2.1 文字列を数値に変換する機能の単体テスト
  49.    4.2.2 文字列をエラーに変換する
  50.    4.2.3 引数の定義
  51.    4.2.4 入力ファイルの処理
  52.    4.2.5 バイトと文字の読み込み
  53.   4.3 解答例
  54.    4.3.1 ファイルを1行ずつ読み込む
  55.    4.3.2 改行を保持したままファイルを読み込む
  56.    4.3.3 ファイルからバイトを読み込む
  57.    4.3.4 ファイルセパレーターを表示する
  58.   4.4 今後の学び方
  59.   4.5 まとめ
  60.  5章 wcコマンド
  61.   5.1 wcの動作
  62.   5.2 プロジェクトの作成
  63.      クロージャを引数に取るイテレータのメソッド
  64.    5.2.1 ファイルの反復処理
  65.    5.2.2 ファイルの要素を数える関数の作成とテスト
  66.   5.3 解答例
  67.    5.3.1 ファイルや標準入力の要素を数える
  68.    5.3.2 出力の整形
  69.   5.4 今後の学び方
  70.   5.5 まとめ
  71.  6章 uniqコマンド
  72.   6.1 uniqの動作
  73.   6.2 プロジェクトの作成
  74.    6.2.1 引数の定義
  75.      変数の生存期間
  76.    6.2.2 プログラムのテスト
  77.    6.2.3 入力ファイルの処理
  78.   6.3 解答例
  79.      クロージャと関数の比較
  80.   6.4 今後の学び方
  81.   6.5 まとめ
  82.  7章 findコマンド
  83.   7.1 findの動作
  84.   7.2 プロジェクトの作成
  85.    7.2.1 引数の定義
  86.    7.2.2 引数の検証
  87.    7.2.3 検索の実装
  88.   7.3 解答例
  89.   7.4 UnixとWindowsでの条件付きテスト
  90.   7.5 今後の学び方
  91.   7.6 まとめ
  92.  8章 cutコマンド
  93.   8.1 cutの動作
  94.   8.2 プロジェクトの作成
  95.    8.2.1 引数の定義
  96.    8.2.2 ポジションリストの解析
  97.    8.2.3 文字またはバイトの抽出
  98.    8.2.4 区切り文字を含むテキストファイルの解析
  99.   8.3 解答例
  100.    8.3.1 文字列から文字を選択する
  101.    8.3.2 文字列からバイトを選択する
  102.    8.3.3 csv::StringRecordからフィールドを選択する
  103.    8.3.4 最終版
  104.   8.4 今後の学び方
  105.   8.5 まとめ
  106.  9章 grepコマンド
  107.   9.1 grepの動作
  108.   9.2 プロジェクトの作成
  109.    9.2.1 引数の定義
  110.    9.2.2 検索対象のファイルを探す
  111.    9.2.3 入力にマッチする行を検索する
  112.   9.3 解答例
  113.   9.4 今後の学び方
  114.   9.5 まとめ
  115.  10章 commコマンド
  116.   10.1 commの動作
  117.   10.2 プロジェクトの作成
  118.    10.2.1 引数の定義
  119.    10.2.2 入力ファイルを検証してから開く
  120.    10.2.3 ファイルの処理
  121.   10.3 解答例
  122.   10.4 今後の学び方
  123.   10.5 まとめ
  124.  11章 tailコマンド
  125.   11.1 tailの動作
  126.   11.2 プロジェクトの作成
  127.    11.2.1 引数の定義
  128.    11.2.2 正負の数値引数の解析
  129.    11.2.3 符号が付きうる整数への正規表現を用いたマッチング
  130.    11.2.4 コマンドライン引数の解析と検証
  131.    11.2.5 ファイルの処理
  132.    11.2.6 ファイルの行数とバイト数を数える
  133.    11.2.7 表示開始行の特定
  134.    11.2.8 表示開始バイトの特定
  135.    11.2.9 巨大な入力ファイルを使ったプログラムのテスト
  136.   11.3 解答例
  137.    11.3.1 ファイルの行数とバイト数を数える
  138.    11.3.2 表示開始位置の特定
  139.    11.3.3 行の表示
  140.    11.3.4 バイトの表示
  141.    11.3.5 解答例のベンチマーキング
  142.   11.4 今後の学び方
  143.   11.5 まとめ
  144.  12章 fortuneコマンド
  145.   12.1 fortuneの動作
  146.   12.2 プロジェクトの作成
  147.    12.2.1 引数の定義
  148.      乱数生成器のシード設定
  149.    12.2.2 入力ソースの検索
  150.    12.2.3 ファイルを読み込む
  151.    12.2.4 引用句のランダムな選択
  152.    12.2.5 パターンに一致する引用句の表示
  153.   12.3 解答例
  154.   12.4 今後の学び方
  155.   12.5 まとめ
  156.  13章 calコマンド
  157.   13.1 calの動作
  158.   13.2 プロジェクトの作成
  159.    13.2.1 引数の定義と検証
  160.    13.2.2 プログラムを書く
  161.   13.3 解答例
  162.   13.4 今後の学び方
  163.   13.5 まとめ
  164.  14章 lsコマンド
  165.   14.1 lsの動作
  166.   14.2 プロジェクトの作成
  167.    14.2.1 引数の定義
  168.    14.2.2 ファイルの検索
  169.    14.2.3 長形式の整形
  170.    14.2.4 パーミッションの8進表記
  171.    14.2.5 長形式のテスト
  172.   14.3 解答例
  173.   14.4 難易度の高いテストへの挑戦
  174.   14.5 今後の学び方
  175.   14.6 まとめ
  176.  付録A clapの新しいAPI
  177.   A.1 Builder APIとDerive API
  178.   A.2 Derive APIを使う準備
  179.   A.3 Derive APIの基本
  180.   A.4 #[command]属性
  181.   A.5 引数の定義
  182.    A.5.1 位置引数
  183.    A.5.2 値を取るオプション
  184.    A.5.3 値を取らないオプション
  185.   A.6 おわりに
  186.  エピローグ
  187.  著者紹介
  188.  奥付

Product information

  • Title: Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ
  • Author(s): Ken Youens-Clark, 中山 光樹
  • Release date: January 2024
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784814400584

You might also like

book

サイトリライアビリティワークブック ―SREの実践方法

by Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara, Stephen Thorne, 澤田 武男, 関根 達夫, 細川 一茂, 矢吹 大輔, 玉川 竜司

『SRE サイトリライアビリティエンジニアリング』で、サイトリライアビリティエンジニアリング(SRE)はプロダクションサービスの稼働と信頼性の維持がサービス設計の基本であるとし、行動の基礎となる原則と理論を述べました。その実践編であり副読本でもある本書は、SREを組織やプロジェクトで導入するにあたり、必要となる具体的な方法や手順を解説します。またこれまでGoogle内部で得た技術的ノウハウを解説し、さらにEvernote、The Home Depot、New York Timesなどさまざまな企業での事例を紹介します。

book

Pythonではじめるオープンエンドな進化的アルゴリズム ―発散型の機械学習による多様な解の探索

by 岡 瑞起, 齊藤 拓己, 嶋田 健志

人工生命の研究分野で開発された、「発散型」アルゴリズムが近年注目を浴びています。深層学習を含む多くの機械学習アルゴリズムが、1つの最適解を求める「収束型」のアルゴリズムであるのに対し、進化計算をベースにして開発された「発散型」アルゴリズムは多様な解を求めることができる画期的なアプローチです。本書はこの革新的な発散型アルゴリズムに焦点を当て、進化計算の基礎となる集団的探索の考え方、既存の収束型アルゴリズムとの違い、そして有用性について説明します。NEAT、新規性探索、品質多様性、共進化といった代表的なアルゴリズムのほか、CPPN、POETなどの最新アルゴリズムも取り上げています。この本は、未来のAI技術を先導するための必読書です。

book

エンジニアリングマネージャーのしごと ―チームが必要とするマネージャーになる方法

by James Stanier, 吉羽 龍太郎, 永瀬 美穂, 原田 騎郎, 竹葉 美沙

本書は、エンジニアリングチームのマネジメントの仕事全般を紹介し、エンジニアリングマネージャーに必要な考え方やスキルを解説します。はじめに、自分の役割と組織のさまざまな部分がどう関係するかを理解し、習慣を整えることで自分自身を管理することを学びます。そして、日々のマネジメント業務で必要なツールとプロセスを紹介し、スタッフとの関係性の構築、モチベーションの理解、評価や採用などを解説します。さらに社内政治や難しい状況での判断、その後のキャリアについて説明します。 マネジメントのさまざまな段階に沿って、日々の仕事に取り入れられる実践的なアドバイスを紹介する本書は、エンジニアリングチームのマネージャーに必携の一冊です。

book

初めてのTypeScript ―型安全なJavaScriptでWeb開発を加速する

by Josh Goldberg, 今村 謙士, 原 隆文

TypeScriptの本格的な入門書。TypeScriptは、世界で最もよく使われ、かつ最も好まれているプログラミング言語の1つです。本書では、JavaScriptの基礎的な知識のあるプログラマーを対象に、「型」や「型システム」の基本から、明快かつ包括的にTypeScriptを解説します。TypeScriptはバグやタイプミスを防ぎ、コードを読みやすくするのに有用なだけでなく、JavaScriptがどのように動くべきかを宣言し、それを維持するのに役立つ優れたシステムです。読者は本書を読むことで、TypeScriptの基礎と最も重要な機能をマスターできるでしょう。