FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

Chat GPT先生とNotebookLMくん!

はじめに

こんにちは、株式会社FLINTERSでFlinters Data Hubのプロジェクトマネージャー・プロダクトオーナー(以下PM・PO)をやっているTungです。

この記事はFLINTERSのブログ祭り梅雨の記事になります。

今回は、ChatGPTとNotebookLMを教師にして、プログラミング言語Rustを学んでみます。

目的

  • 2ヶ月間の学習プラン作成
  • AIツールを使って、多大の英語PDF資料学習

準備

  • Rust資料:Rust bookをダウンロード
  • 参考資料:Rust公開サイトである Cargo Book, RustDoc, Rustc などのPDFをダウンロード

Chat GPT先生に学習プラン作成依頼

Step1: 学習プランを作成する

Chat GPTへRustBookをアップして、以下のpromtを利用する

結果は以下になります

「The Rust Programming Language」という本を2ヶ月間で学習するための章ごとのスケジュールを以下に示します。このスケジュールは、各章を無理なく学習できるように1週間ごとに分けています。

### 1週目
- **1-2日目: 序文とイントロダクション**
- **3日目: 第1章 - はじめに**
- **4日目: 第2章 - 数当てゲームをプログラミングする**
- **5-7日目: 第3章 - 基本的なプログラミング概念**

### 2週目
- **1-3日目: 第4章 - 所有権を理解する**
- **4-5日目: 第5章 - 構造体を使用して関連データを構造化する**
- **6-7日目: 第6章 - 列挙型とパターンマッチング**

### 3週目
- **1-3日目: 第7章 - パッケージ、クレート、およびモジュールを使用してプロジェクトを管理する**
- **4-5日目: 第8章 - よく使われるコレクション**
- **6-7日目: 第9章 - エラーハンドリング**

### 4週目
- **1-3日目: 第10章 - ジェネリック型、トレイト、およびライフタイム**
- **4-5日目: 第11章 - 自動テストを書く**
- **6-7日目: 第12章 - I/Oプロジェクト: コマンドラインプログラムを作る**

### 5週目
- **1-3日目: 第13章 - 関数型言語の機能: イテレータとクロージャ**
- **4-5日目: 第14章 - CargoとCrates.ioについてさらに詳しく**
- **6-7日目: 第15章 - スマートポインタ**

### 6週目
- **1-3日目: 第16章 - 恐れない並行処理**
- **4-5日目: 第17章 - Rustのオブジェクト指向プログラミング機能**
- **6-7日目: 第18章 - パターンとマッチング**

### 7週目
- **1-4日目: 第19章 - 上級トピック**
- **5-7日目: 第20章 - 最終プロジェクト: マルチスレッドウェブサーバの構築**

### 8週目
- **1-2日目: 付録A - キーワード**
- **3日目: 付録B - 演算子と記号**
- **4日目: 付録C - Derivableトレイト**
- **5日目: 付録D - 有用な開発ツール**
- **6日目: 付録E - エディション**
- **7日目: 付録F - 翻訳 & 付録G - Rustの作成方法とナイトリRust**

### まとめと復習
- **1-2日目: 主要な概念の復習**
- **3-4日目: コーディング練習**
- **5-6日目: 残りの章や付録の完了**
- **7日目: 最終復習と次の学習または実践準備**

このスケジュールは、各章をしっかりと理解し、練習するためのバランスの取れたアプローチを提供します。自分のペースや理解度に応じて調整してください。

Step2: 各レッスンに対して、学習内容作成

以下の内容で、各レッスンの学習内容作成

結果は以下の内容になります。

## 1週目

### レッスン1-2: 序文とイントロダクション
#### 要約
序文とイントロダクションでは、Rustの基本的な背景、目標、そして本の目的について紹介します。Rustがどのようにシステムプログラミングに適しているか、なぜ安全性とパフォーマンスの両方を提供できるのかについても説明します。

#### 例
1. Rustの所有権システムがメモリ管理を安全にする例。
2. Rustのコンパイラがエラーを事前に検出することで、バグのないコードを書くのを助ける例。

#### 練習問題
1. Rustの3つの主要な設計目標を挙げてください。
2. Rustがシステムプログラミングに適している理由を説明してください。
3. 所有権システムがなぜ重要なのかを説明してください。
4. Rustのコンパイル時エラーの利点を説明してください。
5. Rustと他のプログラミング言語の主な違いを述べてください。

### レッスン3: 第1章 - はじめに
#### 要約
Rustをインストールし、最初のプログラムをコンパイル・実行する方法を学びます。また、Rustの基本的なツールチェーンについても理解します。

#### 例
1. "Hello, world!" プログラムを作成し、コンパイルして実行する例。
2. `cargo` コマンドを使って新しいプロジェクトを作成する例。

#### 練習問題
1. Rustをインストールする手順を説明してください。
2. "Hello, world!" プログラムを作成し、コンパイル・実行してください。
3. `cargo` コマンドを使って新しいプロジェクトを作成してください。
4. `cargo build` と `cargo run` の違いを説明してください。
5. `cargo check` コマンドの目的を説明してください。

### レッスン4: 第2章 - 数当てゲームをプログラミングする
#### 要約
Rustの基本的な構文と概念を使って、簡単な数当てゲームを作成します。標準ライブラリの使い方、変数、ループ、条件分岐、入力の取り扱いなどを学びます。

#### 例
1. 数当てゲームのロジックを説明する例。
2. ユーザー入力を受け取り、それを数値に変換する例。

#### 練習問題
1. 変数を宣言し、整数値を代入してください。
2. `loop` を使って無限ループを作成し、ユーザーからの入力を受け取ってください。
3. `if` 文を使って条件分岐を実装してください。
4. 標準ライブラリの `rand` クレートを使ってランダムな数を生成してください。
5. 入力を数値に変換し、それが正しいかどうかをチェックするコードを書いてください。

NotebookLM、手伝ってくれ!!!

NotebookLMとは

NotebookLMはデータに基づく回答を提供する新たなAIサービスです。 ユーザーがアップロードした資料を元に、大規模言語モデルが回答を生成します。

https://notebooklm.google.com/

NotebookLMへ学習資料アップ

Notebook LMへPDFまたWebページのURLでもソースとして入力可能です。準備した資料をNotebookLMへアップしましょう。

NotebookLMへ質問する

学習中に問題に直面したり、効率的に知識を再確認したりしたい場合は、直接NotebookLMに質問することができます。このアプリケーションの最も興味深い点は、各回答に参照した内容への直接リンクが含まれていることです。これにより、回答の正確性を最も迅速に確認することができます。

 結論

AIの技術の急速な発展により、学習方法は大きく変化しています。ChatGPTやNotebookLMのようなツールを使うことで、情報の検索や知識の統合、個別に適した学習ソリューションを容易に得ることができます。