中学1年 / Web / App / AI-assisted Development

K_Z_U Portfolio

自分や身近な人が困っていることから、Webサービス、macOSアプリ、Minecraftサーバーの仕組みを作っています。

実装には複数のAIも使います。出力をそのまま採用せず、別モデルのレビュー、テスト、自分での確認を入れています。

Portfolio

代表作品

作品画面だけではなく、作った理由、技術上の工夫、AIを使った範囲、自分で判断したこと、実際の利用、残っている問題までまとめました。

01 / 実際の利用

Know Me

自分についての2択クイズを作り、URLを送ると、友達が「この人ならどっち?」を予想できるWebサービスです。

TypeScriptCloudflare PagesD179 tests
Know Meのトップ画面
Know Meの結果画面。理解度80%、16/20問正解、ランクA

アプリ本体。左は公開中のトップ画面、右は同じコードをローカルで動かした結果画面です。画面内の名前は匿名ラベルへ置き換えています。

学校内のコミュニティのSlackでKnow Meが共有され、12件の返信で結果を送り合っている様子。名前とアイコンは匿名化済み

学校内コミュニティでの共有例。知らない人が回答し、返信でも反応がありました。名前は匿名ラベルへ、アイコンは無地のタイルへ置き換えています(本文はそのまま残しています)。

15作られたクイズ
58回答数
131クイズの最多回答

なぜ作ったか

友達同士で、自分のことをどれくらい知っているかを手軽に遊べるものを作りたいと思ったからです。

何を作ったか

クイズ作成、URL共有、回答、採点、ランク表示、ランキング、OGP表示までを1つのサービスにしました。

技術的に難しかったところ

採点をサーバー側で行い、問題IDが変わっても正しく判定できるようにしました。問題は180件からカテゴリの偏りを抑えて選びます。

AIを使ったところ

設計案、TypeScriptの実装、レビュー、テスト作成に使いました。1回の出力で終わらせず、動作確認と修正を繰り返しました。

自分で判断したところ

遊び方、質問内容、画面の流れ、公開範囲を決め、実際の反応を見ながら直す場所を選びました。

実際にどうなったか

2026年9月2日11:38時点で、15クイズ、58回答、回答が付いたクイズは11件です。共有した人とは別の人も自分のクイズを作って広げています。

今残っている問題

一般のSNSへ広げる前に、分かりにくい部分と荒らし対策を直したいです。

確認できるもの

公開中のサービス、実際の共有画面、79件の自動テストがあります。数値はデータベースのバックアップから集計しました。

集計基準日: 2026-09-02 11:38 / 同じ人を重複なく数えた「利用者数」は未確定のため掲載していません。

02 / 技術と安全設計

MineSSH

MinecraftサーバーへSkriptを送信し、reloadに失敗した場合は前のファイルへ戻すmacOSアプリです。

Tauri 2RustReactSSH / SFTP365 tests
MineSSHのアプリ画面。右側の更新履歴に、エラー検知で直前の版へ戻した記録が並んでいる

実際のアプリ画面。右側の更新履歴に、エラーが出たため直前の版へ戻した記録(ロールバック済み)、戻せるバックアップが無かった記録、reloadの結果を確認できなかった記録が並んでいます。

MineSSH 紹介動画のサムネイル。デプロイ実行中の進行ダイアログが表示されている紹介動画を見る(YouTube・別タブで開きます)

紹介動画。送信前チェックからreload、失敗の検出、自動復元までの動作をこの1本で確認できます。

実装した更新の流れ

送信前チェック
バックアップ
対象だけreload
ログから失敗判定
復元して再reload
43Frontend
276Rust
46Integration
365Total / 0 failure

なぜ作ったか

手作業の更新には時間がかかり、reloadコマンドが成功してもSkriptが正しく読み込めていないことがあったからです。

何を作ったか

SSH/SFTP接続、バックアップ、SHA-256確認、一時ファイル転送、対象ファイルだけのreload、ログ解析、自動復元をまとめました。

技術的に難しかったところ

ログが無い場合を成功にせず「不明」とすること、似たファイル名を誤判定しないこと、復元後も再reloadして確認することです。

AIを使ったところ

Claude Codeが詳細設計、Rust/TypeScriptの実装、テスト、文書作成を多く担当しました。CodexとChatGPTは要件整理や別視点のレビューにも使いました。

自分で判断したところ

実際の運営で起きた問題から必要な安全条件を決め、機能の優先順位、AI出力の採用・修正、最終確認は自分で行いました。実装とテストにはClaude Codeを中心にAIを使っています。

実際にどうなったか

Frontend 43、Rust 276、統合46の合計365テストが成功しています。オフラインで試せるDemo Modeも作り、2026年のU-22プログラミング・コンテストへ応募済みです。

今残っている問題

配布時のコード署名と、アプリ自体の更新方法が未対応です。現在はソースからビルドするか、Demo Modeで動作を確認してもらう形になっています。

過去に起きたこと

手動でバックアップを探して戻し、ログを確認しながら復旧する場合、更新作業に最大50分近くかかることがありました。Skriptのreloadをきっかけにサーバーがクラッシュしたことや、本来更新できないはずの記録を更新できる不具合が約10分間続いたこともあり、安全設計の理由になっています。

テスト結果の記録: 2026-08-12 / 2026年 U-22プログラミング・コンテストへ応募済み。

03 / 公開と運用

PaperTrade

100万円の仮想資金で日本株の売買を試し、ランキングや実績を友達と楽しめる学習用サービスです。

React 19HonoCloudflare WorkerD174 tests
PaperTradeのランキング画面。総資産順の順位表と、この日の参加者22人が表示されている

公開中のランキング画面。総資産で順位が決まります。このとき総合ランキングには22アカウントが並んでいました。他の利用者の表示名とアイコンは匿名ラベルへ置き換えています。

PaperTradeの保有株画面。株式評価額・評価損益・実現損益・保有銘柄数と、銘柄ごとの取得単価と損益

保有株。評価額・評価損益・実現損益と、銘柄ごとの平均取得単価・現在値・データ種別が並びます。

PaperTradeの銘柄検索と銘柄詳細。15分遅延の株価、チャート、売買パネル

銘柄検索と銘柄詳細。株価は15分遅延であることを明示し、同じ画面から売買できます。

PaperTradeの利用者が順位や保有株について会話している様子。名前とアイコンは匿名化済み

実際の利用者が、順位の低下や保有株の値下がりについて話しています。名前は匿名ラベルへ、アイコンは無地のタイルへ置き換え、銘柄についての噂や売買をすすめる発言は掲載範囲から外しました。

¥1M開始時の仮想資金
74自動テスト
22ランキングに並んだアカウント

なぜ作ったか

株価や投資の仕組みを、実際のお金を使わずに友達と試せるものがほしかったからです。

何を作ったか

登録・ログイン、セッション、銘柄検索、仮想売買、保有資産、損益、ランキング、シーズン、実績、バッジ、学習用AIを実装しました。

技術的に難しかったところ

  • 残高と株数をD1トリガーで同時に更新
  • 同じ注文の二重実行を防止
  • 市場時間・祝日・古い株価をサーバー側で判定
  • ブラウザ側から残高や約定価格を決められない設計

AIを使ったところ

API、画面、テスト、セキュリティ観点のレビューに使いました。学習用AIには、個別銘柄の売買をすすめない制約を入れています。

自分で判断したところ

ゲームとして必要な機能と、投資学習として避けるべき表現を決めました。実際の利用中の会話を見て、分かりにくい場面を確認しています。

実際にどうなったか

友達が売買し、ランキングや保有株の変化について会話する状態まで公開しました。

公開後に起きた問題

ランキングを自動で更新し続ける実装がCloudflare D1の無料枠を大きく消費し、枠に到達しました。原因を調べ、自動更新をやめて更新ボタンを押したときだけ再計算する方式に変更し、解消しました。現在は通常どおり動作しています。

確認できるもの

公開中のサービス(ランキング・保有株・銘柄検索・銘柄詳細)、74件の自動テスト、実際の利用者の会話があります。株価は15分遅延であることを画面上に明示しています。

D1の無料枠に到達した件は対応済みで、公開版はそのまま利用できます。

Development

AIを使った開発方法

AIには役割を分けて使っています。実装したモデルとは別のモデルにも確認させ、最後は自分が採用するか、直すか、使わないかを決めます。

01 / 自分問題と必要条件を決める
02 / 司令塔作業を分ける
03 / 実装AIコードを書く
04 / 別モデルレビュー・酷評
05 / 確認バグ候補を調べる
06 / 修正問題を直す
07 / テスト自動・手動で確認
08 / 自分採用・修正・却下
採用しなかった例

MineSSHの制作背景で、AIが「以前はFTPで上書きしていた」など実際とは違う経緯を書きました。自分のサーバー運営の記録と合わなかったため採用せず、手作業にかかっていた時間、reload後の見落とし、過去に起きた障害の内容に直しました。

判断の基準

AIの文章もコードも、自然に見えても正しいとは限りません。根拠を確認できないものは採用しません。

Operation

Minecraftサーバー

自分が実際に運営しているサーバーで、参加者の反応を見ながら機能を追加・修正しています。MineSSHもこの運営上の問題から生まれました。

Paper / Skriptで継続開発

PvPだけではなく、遊び方、マッチング、成績、Discordとのつながりまで含めて作っています。

対戦システムレート / TierレースゴーストDiscord連携独自ゲームモード

参加者がいるサーバーの運用

実際の参加者がいるため、バグ修正、ゲームバランス、分かりやすさ、サーバーを止めない更新が必要です。手元には複数の対戦・レート・ショップ・移動系Skriptがあります。

Archive

その他の制作

代表3作品以外から、今後の方向につながるものだけを載せています。

言い方トランスフォーム

言い方トランスフォーム

相手に合わせた言い方を考える学力向上アプリ制作コンテスト作品。

Leave

Leave

登録した場所を出るとき、その場所専用の持ち物リストを通知するiOSアプリ。

N-Helper

N-Helper

学校生活の疑問に答えるWebツール。

EyeVideo

EyeVideo

失敗した録画をホットキーで破棄し、すぐ録り直せるmacOSアプリ。

Nikki

Nikki

学校の月次日誌をスマホやPCから記入するWebアプリ。

MTM

MTM

音楽ファイルを解析し、Minecraft内で演奏するデータパックへ変換するmacOSアプリ。

Next

今後やりたいこと

認定後の支援は、新しい作品を増やすだけでなく、外部テスト、正式公開、継続運用に使いたいです。

iOSアプリの正式公開

無料のApple IDでも自分の端末での動作確認はできますが、TestFlightとApp Store Connectは有料のApple Developer Programが必要で、外部の人へ継続的に配布できません。加入して、LeaveをTestFlightで試してもらい、修正後にApp Storeへ申請したいです。

朝の最初の行動を助けるアプリ

朝起きたあと、最初の授業や予定へ移るのが難しいときに使えるものを作りたいです。学校の友達に話を聞きながら、小さく試作するところからはじめます。まだ構想段階です。

Know Meの次の公開先

学校内のコミュニティで使われはじめたので、次は一般のSNSでも共有しやすい形を試したいです。

継続運用を学ぶ

CloudflareやAI APIを無料枠だけに頼らず、利用量、費用、障害、復旧を確認しながら運用できるようになりたいです。

コンテストへの応募

作ったものに合うコンテストへ今後も応募して、外部からの評価と改善点をもらいたいです。