学びの摩擦を調節する
学習効率というと、何もかも速くすることばかり考える人が多い。資料は自動で整理され、答えはすぐに出てきて、問題が起きてもワンクリックで解決できるのが理想だとされる。AI が登場してから、この傾向はさらに強まった。
しかし、学びはいつもスムーズであればよいとは限らない。
繰り返し呼び起こす必要がある知識は、過程があまりにスムーズだと記憶に残りにくい。一方で、学習課題の中には機械的な作業が大量に紛れ込んでいるものもあり、それを我慢して続けても時間と忍耐力をすり減らすだけだ。私たちは二つの摩擦を見分けなければならない。考えることを促す摩擦と、ただ疲れさせるだけの摩擦だ。
AI でコードを書きたいなら、まず従来の道を一度たどる
今では多くの人が、AI でコードを書き、Web サイトやアプリ、自分のプロダクトを作りたいと考えている。目標は具体的でも、いざ始めようとすると疑問が湧いてくる。
最初にプロンプトの書き方を学ぶべきか、それとも Python から始めるべきか。大規模言語モデルの仕組みを研究する必要はあるのか。Java はまだ学ぶ価値があるのか。フロントエンド、バックエンド、データベースはどこから手をつければよいのか。
とりわけ大学生は、ここで足踏みしやすい。毎日のように新しいモデルや開発ツール、プロダクト事例が目に入る。これからはプログラマーが不要になると言う人もいれば、一人と AI だけで完成したプロダクトを作れると言う人もいる。情報ばかりたくさん見て、エディターはいつまでも開かないままだ。
こんなときに最も役立つ方法は、とても素朴だ。腰を据えて、まず一つのプログラミング言語を学ぶ。
AI が普及する前にプログラミングスクールで使われていた学習順序は、実は今の初心者にもよく合っている。まず変数、型、条件分岐、ループを学び、次に関数、クラス、インターフェース、例外、コレクションへ進む。それから小さなプロジェクトをいくつか作り、データベースと、フロントエンドとバックエンドが連携するアプリケーションの作り方を学ぶ。
今では、Java を身につけることだけを目的に Java を学ぶ人は少ない。より現実的な目標は、AI の助けを借りてコードを書き、自分のプロダクトを作ることだ。ここで Java は、意図的に摩擦を増やす手段になる。Java の基礎から MySQL、Maven、Spring、Spring MVC、MyBatis、Spring Boot まで一通り進めば、型、依存関係、インターフェース、データベース、ログといった避けて通れない問題にぶつかる。少し時間はかかるが、プログラムがどのように構成され、動作し、どんなふうに失敗するのかが見えるようになる。そうして初めて、AI が生成したコードが正しいかどうかを判断できる。
次の画像は、Java 公式チュートリアルが class を説明するために使っている Bicycle の例だ。一つのクラスに、フィールド、コンストラクター、通常のメソッドが含まれている。コードは短いが、初心者はそれでも private、int、this、コンストラクターがそれぞれ何をしているのか理解しなければならない。自分で一度入力し、フィールドやメソッドを変更してみる。これが役に立つ摩擦だ。
Bilibili には、すでに無料の総合講座が数多くある。再生数が多く、章立てがそろい、ここ数年も更新されている講座を一つ選び、そのまま順に学べばよい。講座を何度も比較する必要はない。一つのレッスンを見終えたら、コードを自分で入力し、いくつかの値を変え、さらにわざと一行消して、プログラムがどのようなエラーを出すか確かめる。まずは自分でエラーメッセージを読み、十数分考えても手がかりがなければ AI に聞けばよい。
こうした摩擦は残す価値がある。手でコードを書けば構文に慣れ、自分で一度エラーを調べれば、プログラムがどう動くのかがわかる。プロジェクトの完成が少しくらい遅くても構わない。将来 AI を使ううえで最も必要になる判断力を、今まさに鍛えているからだ。
一つのリクエストがどのように Controller に入り、どこで Service が引き継ぎ、データがどのようにデータベースへ渡されるのかを理解して初めて、AI によるコーディングが役立つようになる。AI は定型的なコードを補い、見慣れないエラーを説明し、機能のたたき台をすばやく書くこともできる。自分で読めるからこそ、どのコードを残し、どのコードを書き直すべきか判断できる。
学んだ技術がすぐ時代遅れになるのではないかと心配する人は多い。初心者にとって、その心配はたいてい早すぎる。今日 Java を学び、明日 Python や TypeScript に移ったとしても、変数、関数、データ構造、インターフェース、データベース、デバッグの経験はそのまま生きる。同時に五つの学習ロードマップを保存するより、まず一つの言語で小さなプロジェクトを自力で書けるところまで学ぶほうが役に立つ。
外国語学習では、無駄な摩擦を取り除く
外国語の学習には、別の方法が向いている。
英語を学ぶ人の中には、学習の準備に多くの時間を費やす人が少なくない。単語を見つけると、まず辞書を引き、次に例文を探し、訳をコピーして、形式を整え、カードに登録する。10分たっても二、三語しか処理できず、実際に声に出して読んだり、思い出したりする時間はほとんど残らない。
こうした作業には大変な手間がかかるわりに、英語力の向上にはあまりつながらない。
外国語の習得には、大量に触れ、繰り返すことが欠かせない。一度見ただけの単語はたいてい覚えられない。異なる文の中で何度も出会い、時間を置いて思い出す必要もある。資料を探し、内容をコピーし、形式を整えるのは準備作業にすぎない。どれほど丁寧に準備しても、読むこと、聞くこと、復習することの代わりにはならない。
こういうときこそ、ツールを使って準備を短くすればよい。DuoCardsでは、記事、字幕付きの動画、Webページで出会った単語やフレーズをそのままカードとして保存できる。ソフトウェアが意味と例文を補い、記憶の状態に応じて復習の予定を組み、同じカードをリスニング、穴埋め、読解、会話の練習へつなげる。学ぶ人が省くのは検索、コピー、教材整理であり、単語を識別し、思い出し、使う作業は自分で続ける。
こうした機能は、どの工程を削るかで評価できる。例文の生成、復習時期の調整、練習教材の準備は、ツールの切り替えと整理作業を減らす。発音し、文を理解し、能動的に思い出す部分は学ぶ人に残る。準備が短くなっても、目標とする能力は使われている。
その一歩で何を鍛えているのかを見る
ある摩擦を残すべきか、取り除くべきかを判断するには、一つ問いかけてみればよい。この作業は、今学んでいる能力を自分に使わせるものだろうか。
Java のコードを手で書けば、構文や型を理解せざるを得ない。自分でエラーを一度追跡すれば、デバッグ能力が鍛えられる。こうした摩擦は残す価値がある。
一つの英語例文を探して Web ページを10分間見て回っても、検索とコピーに慣れるだけだ。カードの形式を整えるのに30分かけても、その単語に詳しくなるわけではない。こうした摩擦はツールに任せてよい。
AI は多くの面倒を避ける手助けをしてくれるが、どの面倒を避けてよいかは学ぶ人自身が決めなければならない。AI を使ってプロダクトを作りたいなら、まずプログラミングの基礎を身につける。英語を身につけたいなら、整理作業を減らし、できるだけ早く読む、聞く、話すことに戻る。
次にある工程が遅いと感じたら、それが実際に鍛える能力を書き出してみる。構文理解、デバッグ、想起、表現なら抵抗を残す。検索、コピー、書式調整にすぎないならツールへ渡せばよい。