28
6

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時代にコードの理解を「習慣にする」ために1日5問の学習アプリを作った話

28
Last updated at Posted at 2026-09-09

1. AI駆動開発とコードレビューの変化

昨今、AIによって実装速度は大きく向上しました。AIの作業量が増えることで、自分でコードを書くよりも確認の工数が増えていっているのは、多くの人に共通する流れだと思います。私のチームでも、人によるレビューに加えてAIにも別の観点からレビューさせ、見落としを減らす工程が増えました。確認の手段が厚くなる一方で、人間が重要な設計や制約を理解できているか、システムの全体像を把握できているかという不安も生まれてきました。

2. 「理解を関門にする」から「理解を習慣にする」へ

そんなとき、t-wadaさんの発表資料「2026年のソフトウェア開発を考える」を読んでこの状況を脱却する良いヒントを得られました。

スライド29では「理解を関門にする: Plan Modeの出口で理解をチェックする」という例が紹介されています。AIが作った計画をそのまま実装へ流すのではなく、設計上の重要な判断について人間が答えられる状態にしてから次へ進む、というものです。

この「問いによって理解を確かめる」という発想を、チームの開発のプロセスに取り入れようと考えました。
最初はPRを出す直前など、今の実装について自由文で答えるクイズをClaude Codeのコマンドで出してみました。しかし、正確に答えるには難易度が高く、うまく正解できないという苦手意識が生まれ、継続されませんでした。

ここで学んだのは、「理解を深く確認できること」と「チームで続けられること」はまったく別物だということです。本当に必要なのは、理解できるまで先に進めない厳しい関門ではなく、毎日少しずつ理解を更新していける習慣なのではないか。そう考えて、カジュアルに続けられるアプリとして作り直したのがRepoDojoです。

なぜクイズなのか

テレビ番組『笑ってコラえて!』の「山里亮太の人生はクイズだ!の旅」では、街の人へのクイズをきっかけに、本人の人生や家族、個人的なエピソードを掘り下げていきます。

ここでのクイズは、「問題を出されたらついつい答えてしまう」という特性を活かして、普段は出てこない話を引き出す入口になっています。RepoDojoのクイズも同じ位置づけです。正解者を選別する試験ではなく、シンプルなクイズに答えていくだけで、コードベースへ触れ、自分の理解や勘違いに気づくための入口になればよいと捉えています。

3. 1日5問のリポジトリ道場「RepoDojo」

RepoDojoは、リポジトリの内容から作った問題に、1日5問だけ挑戦する社内向けの学習アプリです。短時間で毎日続けられる学習アプリを参考にしつつ、用語や演出を「道場」に揃えています。

ログインして道場を選び、「今日の稽古」に答えると、正誤と解説がその場で出ます。根拠となるGitHubのファイルページへ飛べるので、間違えたところからコードを確認可能です。テキスト入力はなくし、クリックか数字キーで回答できるようにしました。自由記述クイズが続かなかった反省から、「1問を数秒で答えられること」を設計基準に据えています。

その日の5問は、日付をシードにした擬似乱数でクライアント側が選ぶため、毎日問題を選ぶための再デプロイなどは不要です。間違えた問題は翌日以降に優先して出し学習効率を高めようとしています。未回答の問題をまとめて解く「総ざらい稽古」もあります(1日5問より一気にこれをやったほうがいい説もあります…)。

また、楽しく続けられるUIとしてアニメーションや効果音、習熟度に応じた帯の色などを用意しました。「連続稽古」は、土日祝に休んでも途切れないようにしています。祝日データは内閣府公開のCSVを取り込んでビルドに同梱しています。「番付」は他人の進捗が見える機能ですが、競争や管理のためではなく「他にも稽古を続けている人がいる」と感じられるように置いています。

音もなくて伝わりにくいですが、実際の動きをGIF動画にしてみましたのでご覧ください。

RepoDojoで今日の稽古を始め、回答と解説を確認して次の問題へ進む様子

4. 問題を作るにあたって

RepoDojoの問題は、Claude Code用に作ったクイズジェネレータースキルが対象リポジトリのコードとドキュメントを読み、問題バンクとして生成します。
問題の対象はプロジェクトの前提となる知識や、挙動、因果関係、境界条件、設計判断などです。各問題には、根拠となるファイル、行番号、コミットSHAを付けており、間違えた問題からすぐにGitHubのコードに飛べます。

一般的な知識とは違って、リポジトリは日々変更されていくので、運用が続いていくと問題が古くなり、コードとの整合が取れなくなっていきます。その時は問題を再生成し、古い問題は取り下げるようにします。今は生成から発行まで手作業ですが、今後はGitHub Actionsで差分を日次検出し、変わった機能を中心として生成できるようにしていきたいと考えています。

また、同じ仕組みで、AWSの利用ルール、セキュリティ、障害対応、オンボーディングなども問題を作ってしまえば道場にできます。エンジニア関連に限らず、さまざまな人が使える学びのプラットフォームにすることもできるかもしれません。

5. 構成と運用

フロントエンドはReactとTypeScriptで、S3とCloudFrontから単一HTMLとして配信しています。ログインはCognitoとGoogle Workspace。問題バンクはLambdaとS3、進捗はDynamoDBです。
(お試しで作っているサービスなので、コスト優先の構成になっています)

エンジニア正社員は、社員名簿に基づいてすべての道場を見られます。非エンジニア正社員、業務委託、インターン、アルバイトは道場ごとの招待制で、招待と解除はエンジニア正社員がUIから行います。名簿の更新は、入退社や職種変更のときに管理者が手でやっています。

RepoDojoのシステム構成。認証、問題配信、進捗保存、問題発行の関係

認証はGoogle WorkspaceとCognito、問題の閲覧可否はAPI側で判定します。AIは問題生成時にだけ利用し、利用者が回答するときは、事前に検証した問題バンクを配信します。問題バンクには、スキーマや根拠コードの実在チェックを行い、人のレビューを通したものだけを登録しています。

6. 終わりに

AIが生成するコードの量が増えるほど、人間がすべてを記憶することは難しくなります。必要なのは、すべてのコードを暗記することではなく、重要な設計や制約について繰り返し問い直せる状態を作ることなのかもしれません。
RepoDojoがその最適解かはまだ分かりません。継続日数や正答率、利用者の声を確認しながら、「理解の習慣化」を改善していきたいと思います。


9月11日(金)のOpen Sapeet!でお待ちしています

2026年9月11日(金)19:30から、株式会社Sapeetの三田オフィスで「Open Sapeet!〜AIやこれからの働き方について語らう夜〜」を開催します。AIとの付き合い方や、これからの開発・働き方に興味がある方は、ぜひお気軽にご参加ください。入退場自由で、軽食とドリンクもご用意しています。RepoDojoが実際に動いているところもお見せできますので、ぜひお申し付けください!

イベント詳細・参加申し込み(connpass)はこちらから
image.png

28
6
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
28
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?