はじめに
こんにちは、株式会社FLINTERSでFlinters Data Hubのプロジェクトマネージャー・プロダクトオーナー(以下PM・PO)をやっているTungです。
この記事はFLINTERSのブログ祭り梅雨の記事になります。
今回は、ChatGPTとNotebookLMを教師にして、プログラミング言語Rustを学んでみます。
目的
- 2ヶ月間の学習プラン作成
- AIツールを使って、多大の英語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のようなツールを使うことで、情報の検索や知識の統合、個別に適した学習ソリューションを容易に得ることができます。