at backyard

Color my life with the chaos of trouble.

ChatGPTとRust学習の相性について

ChatGPTとRust学習の相性は良い

最近Rustを学習する際はChatGPTを用いながら行うことが多い。

私はRustに関する知識がまだまだ足りず、

  • なぜこのようなコードを書く必要があるのか?
  • この実装の意味はわかったが、なぜそうする必要があるのか?
  • どうしてこのようなエラーが出るのか?またどのように修正すれば動くのか?

というような疑問が浮かんでくることが多々ある。

そんな疑問を抱えているとき、Google検索では問題解決までに時間がかかるケースが多い。
なぜなら自分が今抱えている課題・疑問点を解決するためのキーワードがわからないからだ。

Google検索の場合、キーワードが分からないとなかなか最初の一歩を踏み出すのが難しい。
そのときに感じていることをそのまま検索窓に打ち込んでもよいのかもしれないが、そんなことしてもSEOに全振りしたような中身の薄いサイトが上位に上がってきてしまうだろう、という諦めが常にあるので、あまりそういう行動を撮ろうとは思わない。
(まあ、ただRustあたりにあるとそういうサイトは少ない気もするが)

そこで私は最近ChatGPTに対して、今抱えている課題・疑問点を質問するようにしている。
コードも理解してくれるので例えば、


以下のようなコードで使われている 'a はどういう意味なのでしょうか?

impl<'a> Foo for Bar<'a> {
    ・
    ・
    ・
}

というような質問もできるし、疑問に感じている部分のキーワードを知らなくても、ふんわりとしたニュアンスを用いて確信に向けた最初の一歩を踏み出すことが出来る点で、とても有効だと思う。
書き方だけは認識していたが、その文法の名称なども知ることができたりして、Rustの理解を深めて行けている感はある。

また対話形式で話ができるので会話の中で分からない部分が出てきたらそちらについても深堀りして聞くことが出来るし、気兼ねなくRustのわからない部分をぶつけられる、というのはRustを学ぶ上でかなり大きい。

あとコンパイラの出したエラーメッセージの解説をしてくれるのも地味にありがたい。

別にエラーメッセージを読めば済む話ではあるが、会話の中で噛み砕いて教えてもらえる、というのは自分でも思った以上に理解の助けになる、ということをChatGPTを通じて知った。

まるでペアプロをしているような気分になるし、一人だと行き詰まりがちなRust学習に追い風を吹かせてくれるという意味でも非常に有用だ。

もちろん回答には誤りも多いため、本当にあっているかどうかをGoogle検索を使って(というか主にRustのドキュメントを読んで)調べている。

ちなみにRustのとあるライブラリについて調べたとき、Google検索だと該当する検索結果が1ページ分も出なかったのだけど、ChatGPTだとものすごく詳しく応えてくれた。

たまたまそのライブラリに関する情報がGoogleのデータベースにはインデックス化されていなかっただけだろうか?

まあ、そんなわけでRust学習とChat GPTの相性は良いと感じている。

Chat GPTと会話したあとに、下記の本の関連箇所を読み返すなどすると、自分の中でうまく噛み砕いて理解できるので個人的にはおすすめ。
(購入してから定期的に読み返している本。購入した技術書関連でも3本の指に入るぐらいよく読んでいる書籍かもしれない)

www.oreilly.co.jp

ChatGPTでもなかなかコンパイルエラーを解決できないケースはある

Rust学習から一歩踏み込み、Chat GPTにサポートしてもらいながらRustのコードを書こうとすると結構大変になる。

試しにChat GPTを用いてRustで書いたライブラリに機能追加をしてみようと思い、追加したい機能要件をChat GPTに伝えたことがあるが、サンプルコードを生成するところまでは他のコード同様行えるものの生成したコードをそのままエディターに貼り付けてもコンパイルが通るケースは少ない。

例えばJavaScriptのコードなら意図した動きを生成してくれるケースでも、それをRustで生成するように依頼したソースコードは殆どの確率でどこかしらにコンパイルエラーが潜んでいる。
その場合、コンパイルエラーのメッセージを伝えてコードを修正してもらえるが、それでもなかなか解決できない。
(要はコンパイルエラーを解決できない)

もしかしたら自身のChat GPT力が足りないだけかもしれないが、現状ではRust学習には活用できるが、実際にコード書く際は普段どおり自身の力で書きつつ、局所的に分からない箇所のみ教えてもらうようにしたほうが良いかもしれないと思った次第。