0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIがコードを書く時代に、あえて「手で書く」練習場を作った話

0
Posted at

はじめに

AIにコーディングを任せ始めたけれど、「自分の実装力が育っている実感がない」と焦っている若手・駆け出しエンジニア向けの記事です。

この記事を読むと、AIにコードを書いてもらいながらも、自分の「読める・書ける」を落とさないための学習ループが分かります。私が実際にやってみて手応えのあったやり方を共有します。

特別な前提知識はいりません。コード例は TypeScript ですが、考え方はどの言語でも同じです。

この記事の流れ

  1. 担当レイヤーが、1段上がった — AI時代に人間の仕事がどう変わったか
  2. 問題:設計を判断する基準は、コードを書ける土台の上にしか育たない — なぜ土台を落とせないのか
  3. やり方:業務の一部を切り出し、AIに「順番をコメント化した教材」を作らせる — 学習ループの3ステップ
  4. AIは、仮説を持って使う — 丸投げと何が違うか
  5. 実例:手で書く練習場を1つ作った — フォルダ構成つき

担当レイヤーが、1段上がった

最近、自分の仕事の感触が変わったと感じています。実装はAIがかなりの部分を書いてくれて、人間は「何を作るか」「どう組み立てるか」を考える側に回る。担当するレイヤーが、実装から設計へ1段上がった感覚です。

これ自体は良い変化だと思っています。ただ、ひとつ引っかかることがありました。

設計の良し悪しを、自分はちゃんと判断できているのだろうか?

問題:設計を判断する基準は、コードを書ける土台の上にしか育たない

AIが出してきた設計や実装を見て「これでいい」と思う。でもその「いい」は、何を基準にした「いい」なのか。

ここで気づいたのは、設計の良し悪しを判断する基準は、自分でコードを読めて書ける土台の上にしか育たないということです。

なぜこの関数はこう分割されているのか。なぜここでループではなくこのメソッドなのか。それを「自分なら書ける」レベルで分かっていないと、AIの出力に対して「なんか良さそう」以上の判断ができません。基準が自分の中にないと、AIに同意しているだけで、レビューしているつもりがレビューになっていない。

レイヤーが上がったからこそ、土台の「読める・書ける」を落とすわけにはいかない。ではどうやって、AIに任せながら土台を保つのか。私がたどり着いたやり方を書きます。

やり方:業務の一部を切り出し、AIに「順番をコメント化した教材」を作らせる

ポイントは3つです。

  1. 業務で出てくる処理を、部分的に切り出す
  2. AIに「実装の順番をコメントにした教材」を作らせる
  3. 人間がステップごとに、手で書く

順に説明します。

1. 業務の一部を切り出す

題材は、自分が普段の業務で触っている処理から持ってきます。教科書の練習問題ではなく、実際に意味のある処理の一部を切り出すのがコツです。「これは何のためにやるのか」が腹落ちしているぶん、頭に残りやすい。

たとえば私の場合は「あるリストの中から、特定の条件に当てはまる項目だけを拾って、重複なく集める」というよくある判定処理を1つ取り出しました。

2. AIに「順番をコメント化した教材」を作らせる

ここがこのやり方の肝です。AIに完成コードを書かせるのではなく、**実装の順番だけをコメントにした「穴あきの教材」**を作らせます。

index.ts
// ===== Step1: データを定義する =====
// 1件のデータが持つフィールドを type で定義し、サンプル配列を用意する

// ===== Step2: 条件に合うものだけ残す =====
// 配列から条件に一致した要素だけを残すメソッドを使う

// ===== Step3: 必要なフィールドだけ取り出す =====
// 配列を別の形に変換するメソッドを使う

// ===== Step4: 重複を消す =====

// ===== Step5: Step2〜4 を1つの関数にまとめる =====

AIには「答えのコードは書かないで。やる順番と、各ステップで何をするかのヒントだけコメントで書いて」と頼みます。こうすると、地図はもらうけど、歩くのは自分という状態が作れます。

3. ステップごとに、手で書く(コピペしない)

あとは、コメントの指示に沿って1ステップずつ自分で書きます。ルールはシンプルです。

⚠️ AIが書いたコードはコピペしない。見ないで自分で打つ。 詰まったら、答えではなくヒントをもらう。

これは「写経」とは少し違います。写経は手本を見て書き写すことですが、ここでやりたいのはこれから実装する処理を、自分の手で再構成して理解することです。手が止まったところが、自分が分かっていないところ。そこだけAIにヒントを聞けば、ピンポイントで穴が埋まります。

実際、私はStep2で「条件に合わないものを削除しよう」とループを書いて手が止まりました。調べると、削除ではなく「条件に合うものを新しい配列に詰めて返す」メソッド(filter)を使えばいいと分かった。手で書いて詰まったからこそ、「なぜループで削除しないのか」まで理解が残りました。AIに最初から完成形をもらっていたら、この理解は素通りしていたはずです。

AIは、仮説を持って使う

もうひとつ大事にしているのが、AIに丸投げしないことです。

「これやって」ではなく、「たぶんこうだと思うんだけど、合ってる?」と自分の仮説を持って聞く

❌ 丸投げ ✅ 仮説を持つ
この処理書いて ループで削除しようとして詰まった。配列から条件で絞るのは別の方法がある気がするけど何?
エラー直して この型エラーは、戻り値の型と返してる値が合ってないからだと思う。合ってる?

仮説を持って聞くと、返ってきた答えが「自分の予想とどう違ったか」という差分で頭に入ります。差分は記憶に残る。一方で丸投げすると、答えだけが手元に残って、理解は自分の外を通り過ぎていきます。同じAIを使っても、仮説の有無で残るものが全然違いました。

特に気をつけているのが、エラーや「出力が期待値にならない」場面で、内容をそのままAIに貼って終わりにしないことです。これが一番やりがちで、一番もったいない。詰まった瞬間こそ、自分の頭で「なぜこうなった?」を考える絶好のタイミングだからです。

ここでコピペに逃げると、実装の理解が育たないだけでなく、問題解決の思考そのものが育ちません。「どこが怪しいか」「何を試せば切り分けられるか」を自分で立てて、その仮説をAIにぶつける。仮説が当たっても外れても、その思考プロセスが血肉になります。私が鍛えたいのは、実装の理解だけでなく、こういう詰まったときに自力で前に進む思考力のほうです。

実例:手で書く練習場を1つ作った

このやり方で、業務の判定処理を1つ題材にした小さな練習場を作りました。フレームワークも設定ファイルも全部はがして、node 1コマンドで動くだけの最小構成です。

フォルダ構成はこれだけです。

practice/
├── README.md         # AIに作らせた「お題」=何を作るか・実装の順番
├── index.ts          # README の順番に沿って、自分の手で書くファイル
└── LEARNING_LOG.md   # 書いた処理を自分の言葉で説明 → AIに添削してもらう記録

node_modulespackage.json もありません。node index.ts だけで動きます。環境構築でつまずいて学習が止まるのを避けたかったので、あえてここまで削りました。

役割は3つに分かれています。

  • README.md … AIに作らせた教材。何を作るか(お題)と、実装の順番が書いてある
  • index.ts … README の順番に沿って、自分の手で1ステップずつ書くファイル
  • LEARNING_LOG.md … 書いた処理を「なぜこう書くか」自分の言葉で説明し、AIに添削してもらう記録

最後の LEARNING_LOG.md が地味に効きます。書けても説明できないものは、まだ理解できていない。説明しようとして詰まると、分かったつもりだった箇所があぶり出されます。

まとめ

AIがコードを書いてくれる時代でも、土台の「読める・書ける」を落とすと、上がったはずの設計レイヤーで足元が崩れます。今回試した学習ループはこうでした。

  • 業務の処理を部分的に切り出す
  • AIに「順番だけコメント化した教材」を作らせる
  • 自分の手で1ステップずつ書く(コピペしない)
  • AIは仮説を持って使い、丸投げしない

AIに任せる部分と、自分で握り続ける部分を分ける。そのための小さな練習場を1つ持っておくと、安心してAIに頼れるようになります。皆さんも、業務の処理を1つ切り出して試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?