「感覚的には分かる」と理解した気になっていた
こんにちは、けけずんです。
この記事は モニクル Advent Calendar 2025 の13日目の記事です。
2025年4月、半年の育児休暇から復職しました。
育児休暇に入る前はGitHub Copilotの補完機能が主流で、AI Agentなるものは(多分)存在していない時期でした。復職して初めてAI Agentに触れ、大体のコードをAIに書かせて、自分は書いてもらったコードを読み、必要があれば微修正をする、という開発スタイルに変化しました。
AIが書いてくれたコードは読むことができました。そしてそのコードが何をしているのかも分かりました。しかし、いざ自分で書こうとすると、最初の一行が書けませんでした。
背景
2024年10月から育児休暇に入り、2025年4月に復職しました。
復職後は、Result型を前提にした、関数型寄りのプロジェクトにアサインされました。関数型言語はだいぶ昔にHaskellに少しだけ触れたことがある程度で、関数型プログラミングについての理解はほぼありませんでした。
AIが書いたコードは理解できた
AIにコードを書いてもらうと、Result型のmapやandThen、matchを使ったコードが返ってきました。そのコードが何をしているかは、読むと分かりました。ここでの「分かる」は、処理の流れを追って説明できる、という意味での「分かる」でした。
- 関数からResult型が返される
- 正常系も異常系も、Result型として同じ流れの中で処理される
- パターンマッチングで分岐も網羅されている
少なくとも読めないコードではありませんでした。
でも、自分では書けなかった
問題は、自分で同じような処理を書こうとしたときでした。
まず何から書き始めればいいのか分かりませんでした。今でこそ、Result型を起点としてパイプを構築することや、Result型を返す関数の入出力を考えること、mapとandThenを使い分けることが出来ます。
しかし当時は頭が真っ白になっていました。
ライブラリの使い方が分からないというよりも、設計として何を先に決めるべきかが分かっていませんでした。加えて、関数型プログラミングの考え方がコード上でどう表現されるのかを、まだ理解できていませんでした。
なぜ読めるのに書けなかったのか
いま思えば、理由は単純でした。
AIが出してくれたのは完成形のコードでした。
しかし自分は、そのコードに至るまでの判断をしていませんでした。正確には、関数型プログラミングの経験がほとんどなく、判断の優先度や判断基準そのものが分かっていなかったのだと思います。
今はどう書いているか
今はいきなりコードを書くのではなく、「どんな判断を、どの順序で行うべきか」を意識するようにしています。
- まず関数の責務を言葉で書く
- 次に返り値の型だけを決める
- その上で、処理を少しずつ組み立てる
これは実装手順というよりも、判断の優先度や判断基準を身につけるためのトレーニングです。その際はAIにコードは書かせず、自分が判断すべきポイントについてのヒントだけをもらうようにしています。
おわりに
AIが書いたコードを読んで分かった気になるのは簡単です。しかし自分で書けないなら、少なくともそのコードに至るまでの判断を理解できていないのだと思います。今回はそれを関数型プログラミングとAI Agentを通して痛感しました。
「感覚的には分かる」「なんとなく分かる」
そう思った瞬間に、立ち止まってみてもいいのかもしれません。
Discussion