本記事は2023 夏のブログ連載企画 11日目の記事です。今週からテーマが「AI関連」に変わります。 前回投稿の記事は、はっとりさんの「TypeScriptの型実践」でした。 明日はA.Mさんの「GitHub Copilotの便利な使い方」です。
こんにちは、最近は朝の筋トレにハマっている大場です。
虎の穴ラボでは福利厚生として、 ChatGPT と GitHub Copilot (以降、Copilot) を会社負担で無料提供しており、通常業務で利用する事はもちろん、他にも生成AIの活用方法が無いか日々試行錯誤しています。私は自己研鑽を行う場合に、以下の流れで本を読み進めており、この中の工程で生成AIを活用できないか考えてみました。
■自己研鑽の流れ
- 書籍の選定、購入
- インプット作業 (読書、写経)
- アウトプット作業(書評記事を書く、アプリを作る)
このうち、 2.インプット作業 での、生成AIの活用アイディアは発信できそうな内容だなと思ったので、この記事で紹介します。
他の工程での生成AI活用については、以下の理由から言及しません。
1. 書籍の選定、購入
当たり前ですが、AIに相談するまでもなく個人の興味関心に委ねるべきです。
3. アウトプット作業
生成AIで作ったコンテンツをコピペした記事を出しても、読者からは良い反応を得られにくいかと思います。実際は考えてはみたものの、残念ながら真新しい活用方法は思いつきませんでした...
プログラミング入門書を読む際の生成AI活用法
さて、今回紹介する生成AIの活用のアイディアは以下の3つです。
- ChatGPTを利用してゴールを明確にし、モチベーションを上げる
- ChatGPTを利用して集中する章を決め、途中で挫折する可能性を下げる
- Copilotを有効化した状態で写経をし、コードを打ち込むより考える事に頭を使う
1.ChatGPTを利用してゴールを明確にし、モチベーションを上げる
何はともあれ、インプットは本を読まなければ始まりません!
これは積読人間のあるあるだと思うのですが、本は買った瞬間がモチベーションの最高潮でそれを逃すと、段々読む気が失われていき最悪買ったことすら忘れてしまいます。
そこで改めて書籍の「タイトルと目次」から習得スキルや最終的な成果物を明確にすることで、本を購入したてのあの頃のモチベーションを取り戻す作戦です。
私は数年に一度のペースでAndroid開発をやりたいという衝動に駆られるのですが、手元にはその時に買ったであろう「Androidアプリ開発の教科書 第2版 (2021年発行)」があります。(最新は第3版)
この書籍を題材に失われたモチベーションを取り戻すべく、ChatGPTを使ってゴールを明確にしていきます。
書籍詳細ページからタイトルと目次をコピーし、ChatGPTへ以下の通りプロンプトとして渡します。ChatGPTプラグインを使える方は、URLからページを読み込むプラグインを利用するのも良いと思います。
■入力
以下の書籍を読むことで、具体的にどんなアプリが作れるかサンプルを教えてください。 ■タイトル 基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第2版 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン ■目次 (省略)
■出力
正直なところイマイチ面白みにかけるものの、このように具体的なアプリが作れるようになる事を想像すると、いわゆる「完全に把握した」レベルに到達できるのではという期待感が生まれます。
ここでは「レストランレビューアプリ」を仮目標として先に進みます。実際にはレストランでは無く、アニメやゲーム等の趣味に関連するものに差し替える事でより意欲が湧いて良いと思います。
2.ChatGPTを利用して集中する章を決め、途中で挫折する可能性を下げる!
具体的なアプリが決まったので、更にそのアプリを実装するため、ChatGPTに「どの章に力を入れて学習を進めれば良いか」プロンプトを渡します。1冊全ページを読破するよりも、対象ページが絞られる事で達成ハードルが下がり、途中で挫折する可能性がグンと下がるかと思います。
■入力
レストランレビューアプリを作成するために、力を入れて学習すべき章を教えてください。
■出力
ChatGPTには、タイトルと目次を前回渡しているので、それを踏まえて回答されます。これで、どのページを重点的に学習すれば、目標とするアプリを実装するのに十分かが明確になりました。
また、全体ページ数と出力された各章ページの合計を比較すると、全体の50%以下という結果になりました。
- 出力された各章ページの合計:156ページ
- 書籍全体のページ数:約400ページ
3.Copilotを有効化した状態で写経をし、コードを打ち込むより考える事に頭を使う!
目標と目標への最短ルートが明確になったので、実際に読み進めながら写経をする工程に入ります。
ここは賛否両論あるかもしれませんが、私が考えるメリットとしては以下の通りです。
- 動くモノを作りつつ、コード内容の理解に重きをおける
- 素で写経するより、些細なミスが発生しにくい
私の場合、学習中のプログラミング言語に慣れてない状態で写経をすると内容の理解よりも、コードを書く方に意識が持って行かれてしまい「よくわからんけど動いた!ヨシ!」状態になりがちです。
実際にCopilotを有効化し写経を行ってみたところ、コードを書く作業の多くをCopilotに任せられる分、ただ写経するよりも内容の理解に頭を使えると感じました。
当初は「本質的にはCopilotを使う事はコピペをしているようなものなので、学習効果が低くなるのでは?」という懸念があり、 Copilotを無効化して写経を行っていましたが、Copilotはいわば補助輪付きで実装しているものなんだと解釈し納得しています。
また、コピペと写経はゼロベースから自分で考えたコードを書いていないという点は一緒なので、 写経する際にCopilotを使用する事は問題ないのでは、という考えに落ち着きました。
更に習熟度を上げたい場合は、書籍を見ながらCopilot と アプリを開発した後に、今度は書籍を見ず Copilotやググり力でアプリ開発ができるレベルまで持っていければ独学での言語学習としては 十分だと考えています。
まとめ
プログラミング習得に向けて「常にモチベーションが高い人」や「作りたいアプリが明確な人」は、 この記事を読んでも参考にならないかもしれません。
今回紹介した方法は、インプット作業に入る前の準備フェーズでの心の持ちようを工夫し、途中で学習を挫折しにくくする為に楽をするアイディアです。本来であれば生成AIに頼らずに自分で目標を明確にし、目標到達までの道筋さえも自分で考える事ができればベストだと思います。
私自身、プログラミング系の技術書は色々漁ってきましたが、基本的にページ数が多く、なかなか読み切るのが大変だと感じており、Android開発の入門書を「買っては挫折、買っては挫折...」を何回か繰り返しています。しかし、今回紹介した手順で実際に学習を進めてみたところ、生成AIを利用して絞り込まれた章を読み切る事ができました。 (もしかしたら、当記事を書くための試行錯誤が功を奏した可能性もあります。)
プログラミング入門書を題材にしましたが、プロンプトを工夫すれば他の技術書でも活用できると思います。 同じような悩みを持っているエンジニアがいれば、今回紹介したアイディアが役立つと幸いです!
採用情報
虎の穴では一緒に働く仲間を募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。
カジュアル面談やエンジニア向けイベントも随時開催中です。ぜひチェックしてみてください♪
yumenosora.co.jp