생성 AI 시대의 PHP 학습을 고민하며 — PHPLearn으로 '정답'보다 '학습 방법'을 만들다
요약
본 글은 생성 AI가 제공하는 즉각적인 코드 정답 대신, 학습자가 스스로 고민하고 과정을 거치며 지식을 습득하도록 돕는 시스템 PHPLearn을 소개합니다. 이 시스템은 GitHub Copilot의 커스텀 에이전트와 Skill을 활용하여, 단순히 코드를 완성해주는 것이 아니라 '정답에 도달하는 과정' 자체를 지원하는 학습 흐름을 설계했습니다.
핵심 포인트
- AI가 정답 대신 학습 과정을 지원하는 방법론 제시
- Copilot Custom Agent와 Skill로 역할 및 절차 분리 구현
- 학습자에게 생각할 시간을 주고, 필요 시 해답을 제공하는 균형점 확보
생성 AI에게 질문하면 코드의 정답이 바로 돌아옵니다. 하지만 초심자가 그 정답을 이해하지 못한 채 받아들이게 된다면, 다음에 비슷한 문제에 직면했을 때 스스로 생각하는 힘이 생길까요?
저는 머리를 써서 고민하고 실제로 손으로 직접 해보는 것이 학습이라고 생각합니다. 그래서 GitHub Copilot의 커스텀 에이전트(custom agent)와 Skill을 사용하여, 정답을 바로 보여주기보다 학습자가 조금씩 생각해 볼 수 있도록 하는 시스템 PHPLearn을 만들었습니다.
PHP Conference Kansai 2026에 제출한 프로포절과 관련하여, 이 글에서는 PHPLearn의 설계와 데모 흐름을 소개합니다. 완성된 PHP 애플리케이션이 아니라, PHP를 학습하기 위한 커스텀 에이전트, Skill, 그리고 5분 분량의 데모 대본으로 구성된 프로젝트입니다.
소스 코드는 PHPLearn 리포지토리에서 공개하고 있습니다.
- AI가 즉시 정답을 제시하는 것과 학습자가 이해하는 것의 차이점
- Agent와 Skill을 활용하여, 정답을 서두르지 않는 학습 흐름을 만드는 방법
- PHPLearn 데모 대본이 보여주는 PHP 학습 예시
- 동일한 학습 설계를 다른 주제에 응용할 때 고려해야 할 점들
생성 AI는 코드를 작성하거나 오류를 설명하는 강력한 지원 역할을 합니다. 반면, 초심자가 질문할 때마다 완성된 코드를 받아들이고 그것을 실행하고 끝내는 식으로는, 왜 그 코드가 작동하는지 고민해 볼 기회가 사라질 수 있습니다.
물론 정답을 바로 보고 싶은 상황도 있습니다. 오류의 원인을 급하게 조사해야 할 때나, 학습자가 충분히 시도한 후에 정답 예시와 비교해보고 싶을 때 말입니다. 문제는 'AI가 답을 제시하는 것' 그 자체가 아니라, 학습자가 생각하거나 시도하기 전에 정답만 받아들이는 것입니다.
PHPLearn은 AI에게 아무것도 가르치지 않는 것이 아니라, 정답에 도달하기까지의 과정(경로)을 지원받는 것을 목표로 합니다. 학습자가 자신의 예상(가설)을 말로 표현하고, 힌트를 바탕으로 코드를 수정하며, 결과를 확인하는. 이러한 일련의 경험을 통해 스스로 설명할 수 있는 지식을 늘리고자 합니다.
PHPLearn은 GitHub Copilot용 커스텀 에이전트와 Agent Skill, 그리고 5분 데모 대본으로 구성되어 있습니다. 일반적인 PHP 애플리케이션처럼 화면을 실행하고 학습자를 등록하는 방식이 아닙니다.
| 요소 | 역할 |
|---|---|
| 🤖 PHP Learning Coach | 일본어로 PHP 학습을 지원하는 코치의 행동 양식을 정의함 |
| ... | |
| Agent는 '어떤 코치로서 행동할지'를 담당하고, Skill은 '어떤 순서로 학습을 진행할지'를 담당합니다. 역할을 분리함으로써 단순히 '정답을 알려주지 말라'고 요청하는 것을 넘어, 학습을 지원하는 구체적인 절차를 정의할 수 있습니다. |
Skill에서는 학습을 다음과 같은 단계로 진행합니다.
코치는 짧은 코드 요청이 들어왔다고 해서 바로 완성된 코드를 반환하지 않고, 먼저 예상이나 빈칸 채우기(穴埋め) 질문 하나를 던집니다. 필요에 따라 질문으로 상황을 확인하고, PHP 공식 매뉴얼도 안내합니다.
다만, 정답을 영구적으로 숨기는 설계는 아닙니다. 학습자가 명시적으로 정답을 요청하거나 충분히 시도한 후에는 완성된 해답을 제시하여 이해도를 확인합니다. 학습자에게 생각할 시간을 주는 것과 필요한 순간에 설명으로 넘어갈 수 있는 두 가지를 모두 중요하게 다루고 있습니다.
데모 대본에서는 [120, 250, 80]의 합을 구하는 PHP 코드를 소재로 사용합니다. 처음에는 학습자 역할이 가산 연산자 +가 아닌 문자열 연결 연산자 .를 사용한 코드부터 다룹니다.
이 시점에서 코치가 완성된 코드를 건네주는 것이 아니라, 학습자에게 '이 코드를 실행하면 무슨 일이 일어날지'를 예상해 보라고 요청합니다. .는 값을 문자열로 연결하는 연산자이기 때문에, 대본상의 출력은 012025080입니다. 학습자는 그 결과를 확인하고, 숫자를 더하려면 어떤 연산자가 필요한지 고민하여 +로 수정합니다.
수정 후 기대되는 합계는 450입니다. 이어서 calculateTotal($prices) 함수로 정리하고, 일반적인 2개 항목/3개 항목 경우와 빈 배열의 3가지 케이스를 확인합니다. 대본에 명시된 예상 결과는 OK: 3 tests입니다.
이 예시의 핵심은 오류를 숨기는 것이 아닙니다. 학습자가 먼저 예상하고, 실행 결과와 비교하며, 연산자의 차이를 스스로 설명할 수 있게 만드는 것입니다. 대본에서는 발표자가 구문 확인과 실행을 진행하고, 에이전트가 PHP를 실행하는 것처럼 보이게 하지 않는 것까지 명시되어 있습니다.
대본에서는 PHP 8.3 계열의 CLI를 확인하고, 미완성된 shopping-total.php 파일을 준비한 후, 에이전트 목록에서 PHP Learning Coach를 선택하는 것을 가정합니다. PHP 문법을 확인하고 실행하려면 다음 명령어를 사용합니다.
php -l shopping-total.php
php shopping-total.php
리포지토리의 데모 대본에 있는 출력은 시연 당시를 가정한 결과입니다. 이 글에서는 라이브 실행 로그로 소개하는 것이 아니라, 대본에 기재된 학습 흐름과 기대치를 설명하고 있습니다. 실제로 시도할 때는 이용하는 환경에서 명령어를 실행하여 결과를 확인해 주십시오.
연산자의 의미를 확인할 때에는 PHP 매뉴얼의 문자열 연산자나 산술 연산자도 참고할 수 있습니다. AI의 설명만으로 끝내지 않고, 공식 문서와 실행 결과 양쪽을 모두 확인하는 것도 학습의 일부입니다.
이 메커니즘은 PHP 전용이 아닙니다. PHPLearn이 구현된 기능으로서가 아니라, 학습 진행 방식을 다른 주제에 응용할 아이디어로 다음과 같이 생각해 볼 수 있습니다.
| 주제 | 학습자에게 생각하게 할 것 |
|---|---|
| 🧮 수학 | 답을 계산하기 전에, 식이나 근사치를 예상하는 것 |
| ... | |
| 다른 주제에 응용할 때도 다음 흐름은 공통적으로 사용할 수 있습니다. |
- 학습자가 현재 어느 정도 이해하고 있는지 확인한다
- 한 번에 다룰 목표를 작게 한다
- 답을 보여주기 전에, 예상이나 생각을 말로 표현하게 한다
- 필요할 때만 조금씩 힌트를 준다
- 직접 손으로 움직여 결과를 확인하고, 마지막에 되돌아본다
한편, 학습 내용별로 정답을 확인할 자료나 연습 방법은 다릅니다. PHP의 경우 공식 매뉴얼과 실행 결과를 사용할 수 있지만, 다른 분야에서는 신뢰할 수 있는 교재나 평가 방법을 별도로 준비해야 합니다. Agent와 Skill의 형태만 복사한다고 해서 학습 효과가 보장되는 것은 아닙니다.
'답을 보여주지 않는다'는 지시만으로는 학습자가 무엇을 해야 할지 알 수 없게 될 수도 있습니다. 그래서 상황을 확인하고, 목표를 작게 하고, 예상하게 하고, 힌트와 실행을 거쳐 되돌아보는 순서를 Skill에 정의했습니다.
코치가 처음에 던지는 질문도 한 번에 여러 개를 내는 것이 아니라, 먼저 하나로 합니다. 이렇게 하면 학습자는 무엇에 답해야 할지 명확히 알고, 답변을 보고 다음 지원을 조정할 수 있습니다.
학습자가 답을 명시적으로 요청했을 때나, 충분히 시도한 후에도 계속 힌트만 주는 것은 적절하지 않습니다. PHPLearn에서는 완성된 정답과 이해 확인 단계로 넘어갈 조건도 Skill에 포함하고 있습니다.
학습자 스스로 생각하게 하는 것은 AI의 답을 일절 보여주지 않는 것을 의미하는 것이 아닙니다. 답을 보기 전에 예상하거나, 본 후에 자신의 말로 설명하는 등 학습자의 행동을 설계하는 것이라고 생각합니다.
AI의 설명이나 힌트가 항상 정확한 것은 아닐 수 있습니다. PHPLearn의 Agent는 PHP 공식 매뉴얼을 안내하도록 하고 있지만, 링크를 보여주는 것만으로는 이해가 보장되는 것이 아닙니다. 학습자나 발표자가 자료를 읽고 코드를 실행하며, 기대했던 동작인지 확인해야 합니다.
데모 대본에서도 에이전트가 명령어를 실행했다고 가정하지 않고, 발표자가 터미널에서 확인하는 흐름으로 하고 있습니다. 이는 AI가 설명한 것, 실제로 실행해서 알게 된 것, 아직 확인할 수 없는 것을 나누어 전달하기 위함입니다.
AI가 바로 답을 내놓을 수 있는 시대이기에, 초심자가 스스로 생각하고 손을 움직이는 시간을 어떻게 만들지 고민해보고 싶습니다. PHPLearn에서는 커스텀 에이전트에게 코치 역할을 부여하고, Skill에 학습 절차를 담아 답보다 학습 방법을 지원하는 것을 목표로 했습니다.
이번 주제는 PHP의 연산자이지만, 목표를 작게 하고, 예상하고, 힌트를 얻고, 실행 결과를 확인하며, 되돌아보는 흐름은 다른 주제에서도 응용할 수 있을 것입니다. 완성된 정답을 받는 것뿐만 아니라, 왜 그렇게 되는지 자신의 말로 설명할 수 있는 학습 방법을 앞으로도 고민해나가고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기