0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

鳴潮 枠組み利用のプログラミングか、ゲームの中にプログラミング要素を入れるか

Last updated at Posted at 2025-08-24

鳴潮
https://wutheringwaves.kurogames.com/jp/main#main
というゲームがあることを知った。

この枠組み、プログラムを作る訓練にもいいかもってなった。

ゲームと同じような枠組みを作るか、
ゲームの中にプログラミング要素をいれちゃうか、
両方検討してもらうことにした。

題材として扱うプログラミング言語は、TOIBE 20から、10言語抜き出しました。
https://www.tiobe.com/tiobe-index/

C、Fortran、アセンブラは、自分が得意な言語で、Cの例から変換可能なため省略しました。
Rは、Pythonから逆算してなんとかならないかなっていう感じ。
AdaはDelphiから逆残。

Scratchは、数年教育に使いました。題材によっては有用ですが、今回はお見逃し。ごめんなさい。
Perl, PHP, SQLは、個人的に苦手。ソースコードみても良し悪しがわからない、ごめんなさい。

ChatGPT

鳴潮というゲームがあることを知った。
https://wutheringwaves.kurogames.com/jp/main#main
このゲームの枠組み、プログラムを作る訓練の枠組みにもいいかもってなった。

ChatGPT:

なるほど、興味深い着眼点です!👍
「鳴潮(Wuthering Waves)」のゲームデザインや構造を プログラム訓練の教材や演習枠組み に活かすのはかなり理にかなっています。理由と具体的な枠組み例を整理してみます。

  1. 鳴潮のゲーム構造の特徴
    多層的なシステム
    キャラクター、スキル、装備、環境の相互作用があり、動的に状態が変化する。
    例:キャラのステータス変化 → スキル発動 → 状態異常 → 環境影響。
    イベント駆動型
    プレイヤーの行動やタイミングでシナリオ・バトルが進行。
    内部的にはイベントリスナーや状態遷移管理が不可欠。
    リアルタイム演算
    戦闘やスキルの演算が連続して実行され、物理・確率計算が絡む。
    タイマーやフレーム単位での更新が必要。
    データ管理の複雑さ
    キャラクター情報、敵情報、スキル効果、アイテム履歴などの管理。
    DBまたはデータ構造の設計が学習に直結。
  2. プログラム訓練に活かすポイント
    (1) オブジェクト指向とデータ構造
    キャラクター、スキル、アイテムなどを クラス/構造体 で表現。
    状態変化やスキル発動のロジックを メソッド/関数 に分ける。
    配列やリスト、マップを使って動的管理を学習。
    (2) イベント駆動プログラミング
    入力(操作) → イベント発火 → 状態更新 → 表示更新 というサイクル。
    学習者は「イベントハンドラ」「状態遷移表」を作る練習になる。
    (3) リアルタイム演算とタイマー管理
    フレーム単位で計算する「簡易ゲームループ」を作成。
    例:攻撃力計算、スキルクールダウン、HP更新。
    CやPythonで簡単なシミュレーションから始めるのも有効。
    (4) テスト駆動の練習
    状態遷移や計算結果をテストコードで検証。
    「攻撃 → HP減少」「スキル使用 → 状態異常発生」の挙動をユニットテストでチェック。
  3. 訓練枠組みの例
    練習テーマ 内容 学習ポイント
    キャラクター管理 キャラのクラスを作り、ステータス管理 OOP、構造体、データ管理
    スキル発動シミュレーション コマンド入力でスキルを発動し、効果を反映 関数設計、条件分岐、確率計算
    簡易戦闘ループ 敵と交互に攻撃するループ ループ制御、リアルタイム更新
    イベントハンドラ実装 入力や条件でイベントを発火 イベント駆動型プログラミング
    テスト駆動開発 ユニットテストで状態変化を確認 TDD、バグ防止
    💡 ポイントは、ゲームそのものを作らなくても「内部ロジックの演習」として分解」 できること。
    鳴潮のような複雑なゲームは、状態遷移・イベント・リアルタイム演算をまとめて学習できる教材になります。
    もしよければ、この枠組みをもとに 「鳴潮風プログラム演習カリキュラム」 を作って、初級〜中級Cプログラマ向けの練習問題リストに落とし込むこともできます。
    作ってみますか?

はい。お願いします。

ChatGPT:

では、「鳴潮(Wuthering Waves)風」のゲーム構造をベースにした Cプログラマ向けプログラム演習カリキュラム を作成しました。
初級〜中級向けに段階を分けて、手を動かしながら学べる構成です。
🎮 鳴潮風プログラム演習カリキュラム(C言語版)
ステージ1:基礎データ構造とキャラクター管理
目標
構造体でキャラクター情報を管理
ステータス表示・更新ができる
課題例
struct Character を作成
typedef struct {
char name[20];
int hp;
int attack;
int defense;
} Character;
キャラクターを2体作り、ステータスを表示
ダメージ計算関数を作り、HPを減らす
void damage(Character *target, int dmg);
学習ポイント
構造体の扱い
ポインタによる状態更新
基本的な関数設計
ステージ2:スキル発動と状態異常
目標
スキルデータを構造体で表現
スキル発動でキャラクターの状態を変化させる
課題例
struct Skill を作成
typedef struct {
char name[20];
int power;
int cooldown;
} Skill;
スキル発動関数を作り、対象のHPや状態に影響を与える
void useSkill(Character *caster, Character *target, Skill *skill);
状態異常(例:麻痺・毒)をenumで管理し、確率で発動させる
学習ポイント
enumと構造体の組み合わせ
確率計算・ランダム処理
関数間でのデータ受け渡し
ステージ3:簡易戦闘ループ
目標
キャラクター同士のターン制戦闘をループで実装
勝敗条件を判定
課題例
whileループでターンを管理
各ターンで攻撃・スキル使用を選択
HPが0になったら終了、勝敗を表示
while (player.hp > 0 && enemy.hp > 0) {
// プレイヤーターン
// 敵ターン
}
学習ポイント
ループ制御
条件分岐
繰り返し処理と状態更新
ステージ4:イベント駆動型設計
目標
入力や条件でイベントを発火
イベントハンドラを関数でまとめる
課題例
プレイヤーがHP30%以下になると「必殺スキルイベント」を発火
タイマーイベントで毎5ターンごとに敵がバフを取得
イベント管理用関数を作る
void checkEvents(Character *player, Character *enemy, int turn);
学習ポイント
イベント駆動型設計
状態監視と条件判定
関数の役割分割
ステージ5:テスト駆動演習
目標
戦闘ロジックやスキル計算をテストで確認
バグを防ぐ習慣を身につける
課題例
HP減少関数のテストケースを作る
// input HP=100, damage=30 => HP=70
スキル発動時の状態異常発生確率をシミュレーションで確認
関数ごとに期待結果と実際の出力を比較
学習ポイント
TDD(Test Driven Development)基礎
再現性のあるテスト設計
デバッグ力向上
💡 カリキュラムのポイント
「鳴潮」の複雑なゲームロジックを分解して学習
実際にゲームを作る前に 状態管理・イベント・ループ・テスト を体験
初級〜中級Cプログラマ向けで、手を動かすことで理解を深める構成
💡 ご提案
このカリキュラムを チェックリスト形式 にして、1課題ずつ ✅ をつけながら進めると学習効果が高まります。
希望であれば、私が Markdown形式の練習チェックリスト に変換して作ることもできます。作りますか?

はい。お願いします。

ChatGPT:

了解です!
では先ほどの 鳴潮風プログラム演習カリキュラム を、Cプログラマ向けに Markdown形式のチェックリスト に変換しました。
各ステージごとに課題を ✅ 形式で整理してあります。
📝 鳴潮風プログラム演習カリキュラム(C言語版)チェックリスト
ステージ1:基礎データ構造とキャラクター管理
struct Character を作成する
キャラクター2体を作り、ステータスを表示する
ダメージ計算関数 damage(Character *target, int dmg) を作り、HPを減らす
ステージ2:スキル発動と状態異常
struct Skill を作成する
スキル発動関数 useSkill(Character *caster, Character *target, Skill *skill) を作る
状態異常(麻痺・毒など)を enum で管理し、確率で発動させる
ステージ3:簡易戦闘ループ
whileループでターン制戦闘を実装する
各ターンで攻撃・スキル使用を選択できるようにする
HPが0になったら終了、勝敗を表示する
ステージ4:イベント駆動型設計
プレイヤーHP30%以下で「必殺スキルイベント」を発火させる
タイマーイベントで5ターンごとに敵がバフを取得する
イベント管理用関数 checkEvents(Character *player, Character *enemy, int turn) を作る
ステージ5:テスト駆動演習
HP減少関数のテストケースを作る(例:HP=100, damage=30 → HP=70)
スキル発動時の状態異常発生確率をシミュレーションで確認する
関数ごとに期待結果と実際の出力を比較し、テストする
✅ 活用のコツ
各課題を1つずつクリアしてチェック
実装後はコードレビューや自己レビューを行い、理解を深める
ステージごとにファイルを分けて管理すると、進捗が可視化しやすい
💡 ご希望であれば、さらに 「初級→中級→上級」用に難易度別に色分けした拡張版チェックリスト も作れます。
作りますか?

はい。お願いします。

ChatGPT:

了解です!
では、先ほどの 鳴潮風プログラム演習カリキュラム をさらに発展させて、難易度別(初級・中級・上級)に色分けしたチェックリスト を作成しました。
色分けは Markdown の表現上、チェックリストの横に難易度を明記しています。
📝 鳴潮風プログラム演習カリキュラム(C言語版)難易度別チェックリスト
難易度 課題 チェック
🟢 初級 struct Character を作成する [ ]
🟢 初級 キャラクター2体を作り、ステータスを表示する [ ]
🟢 初級 ダメージ計算関数 damage(Character *target, int dmg) を作り、HPを減らす [ ]
🟢 初級 struct Skill を作成する [ ]
🟢 初級 スキル発動関数 useSkill(Character *caster, Character *target, Skill *skill) を作る [ ]
🟡 中級 状態異常(麻痺・毒など)を enum で管理し、確率で発動させる [ ]
🟡 中級 whileループでターン制戦闘を実装する [ ]
🟡 中級 各ターンで攻撃・スキル使用を選択できるようにする [ ]
🟡 中級 HPが0になったら終了、勝敗を表示する [ ]
🟡 中級 プレイヤーHP30%以下で「必殺スキルイベント」を発火させる [ ]
🟡 中級 タイマーイベントで5ターンごとに敵がバフを取得する [ ]
🟡 中級 イベント管理用関数 checkEvents(Character *player, Character *enemy, int turn) を作る [ ]
🔴 上級 HP減少関数のテストケースを作る(例:HP=100, damage=30 → HP=70) [ ]
🔴 上級 スキル発動時の状態異常発生確率をシミュレーションで確認する [ ]
🔴 上級 関数ごとに期待結果と実際の出力を比較し、テストする [ ]
🔹 色分けの目安
🟢 初級:構造体・関数の基本理解と操作
🟡 中級:ループ、条件分岐、イベント駆動、状態管理
🔴 上級:テスト駆動、確率処理、シミュレーション、コード品質管理
💡 活用ポイント
各ステージの課題を順番にクリアしながら進める
難易度別に分かれているので、自分のレベルに合わせて挑戦可能
進捗を可視化してモチベーション維持
上級課題は単なる実装だけでなく、テストやシミュレーションも意識して「実戦的なCプログラマ力」を養う
希望であれば、このチェックリストに 課題ごとのサンプルコードやヒント を添付した 完成版練習教材 にも拡張できます。
作りますか?

はい。お願いします。

ChatGPT:

了解です!
では、先ほどの 鳴潮風プログラム演習カリキュラム(難易度別)チェックリスト をさらに拡張し、 課題ごとのサンプルコードや実装ヒント付きの完成版教材 を作りました。
📝 鳴潮風プログラム演習カリキュラム(C言語版)完成版
🟢 初級課題

  1. struct Character を作成する
    サンプルコード
    typedef struct {
    char name[20];
    int hp;
    int attack;
    int defense;
    } Character;
    ヒント
    typedef struct で型を作ると簡単に変数定義可能
    配列で名前を持たせる場合は文字数に注意
  2. キャラクター2体を作り、ステータスを表示する
    サンプルコード
    Character player = {"Hero", 100, 20, 5};
    Character enemy = {"Goblin", 50, 10, 3};
    printf("%s HP:%d ATK:%d DEF:%d\n", player.name, player.hp, player.attack, player.defense);
    printf("%s HP:%d ATK:%d DEF:%d\n", enemy.name, enemy.hp, enemy.attack, enemy.defense);
    ヒント
    printf で簡単にステータス表示
    初めは固定値でOK、後で入力やランダム値に拡張可能
  3. ダメージ計算関数
    サンプルコード
    void damage(Character *target, int dmg) {
    target->hp -= dmg;
    if(target->hp < 0) target->hp = 0;
    }
    ヒント
    ポインタで関数内から構造体を変更
    HPが0未満にならないようにチェック
  4. struct Skill を作成する
    サンプルコード
    typedef struct {
    char name[20];
    int power;
    int cooldown;
    } Skill;
    ヒント
    スキルごとにダメージ・発動条件を管理
    後で配列にして複数スキル管理も可能
  5. スキル発動関数
    サンプルコード
    void useSkill(Character *caster, Character *target, Skill *skill) {
    printf("%s uses %s!\n", caster->name, skill->name);
    damage(target, skill->power);
    }
    ヒント
    関数でスキルの効果を一元管理
    後で状態異常や確率効果を追加
    🟡 中級課題
  6. 状態異常を enum で管理
    typedef enum { NORMAL, POISONED, PARALYZED } Status;
    Status playerStatus = NORMAL;
    Status enemyStatus = NORMAL;
    ヒント
    enumで状態を明確に
    条件分岐で状態異常の効果を処理
  7. ターン制戦闘ループ
    while(player.hp > 0 && enemy.hp > 0) {
    // プレイヤーの行動
    // 敵の行動
    }
    ヒント
    whileで勝敗条件を管理
    各ターンの処理は関数化すると整理しやすい
  8. イベント管理関数
    void checkEvents(Character *player, Character *enemy, int turn) {
    if(player->hp < 30) {
    printf("%s can use Ultimate!\n", player->name);
    }
    if(turn % 5 == 0) {
    printf("%s gains a buff!\n", enemy->name);
    }
    }
    ヒント
    ターン数や状態を条件にイベント発火
    イベントごとに関数分割すると管理しやすい
    🔴 上級課題
  9. HP減少関数テスト
    サンプルテスト
    Character testChar = {"Test", 100, 10, 5};
    damage(&testChar, 30);
    assert(testChar.hp == 70); // を利用
    ヒント
    単体テストで関数の挙動を検証
    他の関数も同様にテストケースを作る
  10. 状態異常確率シミュレーション
    if(rand() % 100 < 30) { // 30%で毒
    enemyStatus = POISONED;
    printf("%s is poisoned!\n", enemy.name);
    }
    ヒント
    rand() で簡単に確率処理
    シミュレーション回数を増やして挙動を確認
  11. 関数ごとの期待結果確認
    方法
    テストケースを作り、assert または printf で結果確認
    例:攻撃力計算、スキル効果、状態異常処理
    💡 運用のポイント
    チェックリストに従って段階的に実装
    各ステージでコードをGit管理し、履歴を確認
    中級・上級課題は、学んだ内容を自分のプロジェクトに応用
    希望であれば、これをさらに 「ステージごとに完成サンプルコード付きPDF教材」 にまとめることもできます。
    作りますか?

鳴潮のゲームそのもののコーナとしてプログラミングを組み込んで、課金なくても特典を受けれるように提案したく、企画書を作成してください。

ChatGPT:

承知しました。
では、鳴潮(Wuthering Waves)の ゲーム内コーナーとしてのプログラミング体験企画 の企画書を作成します。
課金不要で特典が得られる設計も組み込んだ形です。
🎮 鳴潮プログラマブルチャレンジ企画書(案)

  1. 企画名称
    「鳴潮コーディングチャレンジ」
    ゲーム内でプログラミング演習やミニゲームを体験し、達成度に応じた特典を獲得できるコーナー。
  2. 企画趣旨
    プレイヤーが ゲームを楽しみながらプログラミングの基礎を学ぶ 新規コンテンツ。
    C/C++/Pythonなど、初級〜中級レベルのプログラミング課題を ブラウザやゲーム内UIで完結。
    課金不要で誰でも挑戦可能、特典として ゲーム内アイテムや限定アバター を入手できる。
    ゲームの世界観と連動することで、教育的コンテンツに親和性を持たせる。
  3. コンテンツ概要
    コンテンツ名 概要 学習内容 特典例
    キャラクター管理課題 自分のキャラクターを構造体で作成・ステータス表示 構造体、変数、関数 キャラクター名変更券
    スキル発動シミュレーション スキルを使い敵にダメージ 条件分岐、確率計算 スキルエフェクト変更アイテム
    簡易戦闘ループ ターン制戦闘で勝利 ループ、状態管理 経験値ボーナス
    イベント発火チャレンジ 特定条件でイベント発生 イベント駆動設計 限定称号・バフアイテム
    テスト&デバッグ バグ修正・挙動確認 TDD、デバッグ スキン、限定アクセサリー
  4. システム構成案
    Webベース or ゲーム内UIでのコード入力
    エディタ内でコードを入力、簡単なシミュレーションが実行される
    自動判定システム
    課題達成条件を満たすと成功判定
    成功時にゲーム内特典を付与
    段階的難易度
    初級:変数・関数
    中級:ループ・条件分岐・確率処理
    上級:イベント管理・テスト駆動
    進捗管理
    ゲーム内ミッションとして「達成度」に応じた報酬を可視化
  5. 特典設計(課金不要)
    ミッション報酬
    限定アバター、スキルエフェクト、称号など
    累積報酬
    複数課題をクリアで追加アイテムや経験値ボーナス
    ランキング報酬
    自分の進捗やクリアタイムを表示、SNSシェア可能
  6. ユーザー導線
    ゲーム内「鳴潮コーディングチャレンジ」コーナーにアクセス
    初級課題から挑戦、コードを入力して即時結果を確認
    課題クリアで特典獲得、次の課題に進む
    ミッションをすべてクリアすると限定称号・アバター入手
  7. 開発メリット
    課金なしでもゲーム体験を強化
    教育的価値を付与し、新規プレイヤー獲得に貢献
    コミュニティ内でのシェア・ランキング機能で話題性向上
    プログラミング学習者層を取り込み、新規ファン層を拡大
  8. 実装上の注意
    ブラウザ実行 or サンドボックス環境 で安全にコードを実行
    ミッション難易度は段階的に、初学者でも達成感を得られる設計
    特典付与のバランス調整でゲーム内経済を崩さない
    💡 この企画は、「学びながら楽しむ」教育+ゲーム体験を両立するものです。
    希望であれば、この企画書をさらに プレゼン用スライド形式(図解付き) に展開して提出用に整えることもできます。
    作りますか?

C++, Python, JAVA, C#, JavaScript, Go, Matlab, Rust, kotlin, Delphiの10言語対応企画として展開してください。

ChatGPT:

了解です。それでは、先ほどの「鳴潮プログラマブルチャレンジ」を 10言語対応版 に拡張した企画書案を作成します。
各言語に対応することで、幅広いプログラマ層・学習層を取り込める構想です。
🎮 鳴潮プログラマブルチャレンジ 10言語対応企画書(案)

  1. 企画名称
    「鳴潮マルチランゲージチャレンジ」
    ゲーム内で複数プログラミング言語を選択して課題に挑戦でき、達成度に応じて特典を獲得。
  2. 対応言語
    言語 対象層・特徴
    C++ システム・ゲーム開発、オブジェクト指向学習
    Python 初心者向け、簡単なシンタックスで即時結果確認
    Java 企業開発・オブジェクト指向、型安全
    C# Unity連携、ゲーム開発・GUI開発
    JavaScript Web連携、ブラウザ内実行可
    Go 並行処理・サーバーサイド学習
    Matlab 数値計算・シミュレーション、学術系ユーザー
    Rust 安全性重視のシステム開発
    Kotlin Android開発、モバイルアプリ寄り
    Delphi レガシー系・RADツール利用者向け
  3. コンテンツ概要(言語共通課題)
    ステージ 課題例 学習内容 特典例
    初級 キャラクター作成・ステータス表示 構造体/クラス/変数/関数 キャラクター名変更券
    初級 スキル発動シミュレーション 関数・条件分岐・確率計算 スキルエフェクト変更アイテム
    中級 ターン制戦闘ループ ループ・状態管理・オブジェクト操作 経験値ボーナス
    中級 イベント発火チャレンジ イベント駆動・状態監視 限定称号・バフアイテム
    上級 テスト&デバッグ TDD・ユニットテスト・シミュレーション 限定スキン・アクセサリー
    すべての課題は 言語選択可能。プレイヤーが自身の得意言語や学習したい言語で挑戦可能。
  4. システム構成案
    マルチ言語エディタ
    ゲーム内またはブラウザで選択言語を切り替え可能
    入力したコードをリアルタイムでシミュレーション実行
    自動採点・判定システム
    言語ごとに課題成功条件を判定
    成功時にゲーム内特典を付与
    段階的難易度
    初級:構造体・クラス・変数・簡単な関数
    中級:ループ・条件分岐・状態管理
    上級:イベント駆動・確率・テスト駆動・多言語比較
    進捗・報酬管理
    言語ごとの達成度を可視化
    全言語クリアで特別報酬(限定アバターや称号)
  5. 特典設計(課金不要)
    課題報酬:言語ごとの課題クリアでアイテムや経験値
    累積報酬:同一言語で複数課題をクリアで追加特典
    全言語達成報酬:全10言語で課題クリアすると限定スキン・称号を獲得
    ランキング報酬:クリアタイム・効率などで競うランキング機能(SNSシェア可能)
  6. ユーザー導線
    ゲーム内「マルチランゲージチャレンジ」コーナーにアクセス
    言語を選択して初級課題から挑戦
    各課題クリアで特典獲得
    中級・上級課題に挑戦、ランキングや全言語達成を目指す
  7. 開発メリット
    プログラミング学習層の幅広い獲得
    ゲーム内教育コンテンツとして話題性向上
    無課金でも特典獲得可能で、ライトユーザーを巻き込める
    マルチ言語対応でキャリア志向・教育機関向けプロモーションも可能
  8. 実装上の注意
    安全なサンドボックス環境 で各言語コードを実行
    課題難易度は段階的に調整
    特典付与・ゲーム内経済のバランスを保つ
    💡 この企画は、ゲーム体験 × マルチ言語プログラミング学習 × 無課金特典 を同時に提供できる、新規性の高い施策です。
    希望であれば、このマルチ言語企画を 図解入りスライド形式の提案書 に変換して、社内や運営向けに提出できる形に整えることも可能です。
    作りますか?
    ChatGPT の回答は必ずしも正しいとは限りません。重要な情報は確認するようにしてください。

似た機能を10言語でサンプルをお示しいただけませんか。
ChatGPT:
もちろんです!
では、先ほどの「鳴潮風プログラマブルチャレンジ」の 基本課題(キャラクター作成とHPダメージ計算) を、10言語それぞれでサンプルコードとして示します。
課題内容は共通:
課題

キャラクター名・HP・攻撃力を持つ構造体/クラスを作る
ダメージを与える関数/メソッドを作る
キャラクターのHPを表示する
1️⃣ C++
#include
#include
using namespace std;

struct Character {
string name;
int hp;
int attack;
};

void damage(Character &target, int dmg) {
target.hp -= dmg;
if(target.hp < 0) target.hp = 0;
}

int main() {
Character hero{"Hero", 100, 20};
damage(hero, 30);
cout << hero.name << " HP: " << hero.hp << endl;
}
2️⃣ Python
class Character:
def init(self, name, hp, attack):
self.name = name
self.hp = hp
self.attack = attack

def damage(target, dmg):
target.hp = max(target.hp - dmg, 0)

hero = Character("Hero", 100, 20)
damage(hero, 30)
print(f"{hero.name} HP: {hero.hp}")
3️⃣ Java
class Character {
String name;
int hp;
int attack;

Character(String name, int hp, int attack) {
    this.name = name;
    this.hp = hp;
    this.attack = attack;
}

}

public class Main {
static void damage(Character target, int dmg) {
target.hp -= dmg;
if(target.hp < 0) target.hp = 0;
}
public static void main(String[] args) {
Character hero = new Character("Hero", 100, 20);
damage(hero, 30);
System.out.println(hero.name + " HP: " + hero.hp);
}
}
4️⃣ C#
using System;

class Character {
public string Name;
public int HP;
public int Attack;
}

class Program {
static void Damage(Character target, int dmg) {
target.HP -= dmg;
if(target.HP < 0) target.HP = 0;
}

static void Main() {
    Character hero = new Character { Name="Hero", HP=100, Attack=20 };
    Damage(hero, 30);
    Console.WriteLine($"{hero.Name} HP: {hero.HP}");
}

}
5️⃣ JavaScript (Node.js)
class Character {
constructor(name, hp, attack) {
this.name = name;
this.hp = hp;
this.attack = attack;
}
}

function damage(target, dmg) {
target.hp = Math.max(target.hp - dmg, 0);
}

let hero = new Character("Hero", 100, 20);
damage(hero, 30);
console.log(${hero.name} HP: ${hero.hp});
6️⃣ Go
package main
import "fmt"

type Character struct {
Name string
HP int
Attack int
}

func damage(target *Character, dmg int) {
target.HP -= dmg
if target.HP < 0 {
target.HP = 0
}
}

func main() {
hero := Character{"Hero", 100, 20}
damage(&hero, 30)
fmt.Printf("%s HP: %d\n", hero.Name, hero.HP)
}
7️⃣ Matlab
hero.name = 'Hero';
hero.hp = 100;
hero.attack = 20;

function hero = damage(hero, dmg)
hero.hp = max(hero.hp - dmg, 0);
end

hero = damage(hero, 30);
disp([hero.name ' HP: ' num2str(hero.hp)])
8️⃣ Rust
struct Character {
name: String,
hp: i32,
attack: i32,
}

fn damage(target: &mut Character, dmg: i32) {
target.hp -= dmg;
if target.hp < 0 {
target.hp = 0;
}
}

fn main() {
let mut hero = Character { name: "Hero".to_string(), hp: 100, attack: 20 };
damage(&mut hero, 30);
println!("{} HP: {}", hero.name, hero.hp);
}
9️⃣ Kotlin
data class Character(var name: String, var hp: Int, var attack: Int)

fun damage(target: Character, dmg: Int) {
target.hp = (target.hp - dmg).coerceAtLeast(0)
}

fun main() {
val hero = Character("Hero", 100, 20)
damage(hero, 30)
println("${hero.name} HP: ${hero.hp}")
}
🔟 Delphi (Object Pascal)
program CharacterDemo;
{$APPTYPE CONSOLE}

type
TCharacter = class
Name: string;
HP: Integer;
Attack: Integer;
end;

procedure Damage(Target: TCharacter; Dmg: Integer);
begin
Target.HP := Target.HP - Dmg;
if Target.HP < 0 then Target.HP := 0;
end;

var
Hero: TCharacter;
begin
Hero := TCharacter.Create;
Hero.Name := 'Hero';
Hero.HP := 100;
Hero.Attack := 20;
Damage(Hero, 30);
Writeln(Hero.Name, ' HP: ', Hero.HP);
Hero.Free;
end.
💡 ポイント
全言語で課題内容は統一(キャラクター作成+HP計算)
初級課題として 多言語比較学習 が可能
中級以降はスキル・イベント・戦闘ループなどを同様に言語対応できる
もし希望であれば、次のステップとして 各言語で戦闘ループ+スキル発動+状態異常まで対応したサンプル を作り、
「10言語で統一カリキュラム教材」としてまとめることも可能です。
作りますか?

あなた:
はい。お願いします。
ChatGPT:
了解です。
では、先ほどの 10言語対応キャラクター作成+ダメージ計算 を拡張して、 戦闘ループ+スキル発動+状態異常 まで対応したサンプルコード例を作成します。
初級から中級レベルの演習用教材として使えます。
🎮 鳴潮風プログラマブルチャレンジ(10言語サンプル)
共通課題:ターン制戦闘+スキル+状態異常
課題内容
キャラクター作成(名前・HP・攻撃力・防御力)
スキル作成(名前・威力・状態異常付与確率)
ターン制戦闘ループ
状態異常(毒、麻痺)を簡易実装
ダメージ計算+HP更新
各ターン表示と勝敗判定
1️⃣ C++ サンプル
#include
#include
#include
#include
using namespace std;

enum Status { NORMAL, POISONED, PARALYZED };

struct Character {
string name;
int hp;
int attack;
Status status = NORMAL;
};

struct Skill {
string name;
int power;
int poisonChance; // %
};

void damage(Character &target, int dmg) {
target.hp -= dmg;
if(target.hp < 0) target.hp = 0;
}

void applySkill(Character &caster, Character &target, Skill skill) {
cout << caster.name << " uses " << skill.name << "!\n";
damage(target, skill.power);
if(rand() % 100 < skill.poisonChance) {
target.status = POISONED;
cout << target.name << " is poisoned!\n";
}
}

void applyStatusDamage(Character &c) {
if(c.status == POISONED) {
cout << c.name << " takes 5 poison damage!\n";
damage(c, 5);
}
}

int main() {
srand(time(0));
Character hero{"Hero", 100, 20};
Character enemy{"Goblin", 80, 15};
Skill fire{"Fireball", 25, 20};

int turn = 1;
while(hero.hp > 0 && enemy.hp > 0) {
    cout << "=== Turn " << turn << " ===\n";
    applySkill(hero, enemy, fire);
    applyStatusDamage(enemy);
    if(enemy.hp <= 0) break;
    applySkill(enemy, hero, fire);
    applyStatusDamage(hero);
    turn++;
}
cout << ((hero.hp > 0) ? "Hero wins!" : "Enemy wins!") << endl;

}
2️⃣ Python サンプル
import random

class Status:
NORMAL = 0
POISONED = 1
PARALYZED = 2

class Character:
def init(self, name, hp, attack):
self.name = name
self.hp = hp
self.attack = attack
self.status = Status.NORMAL

class Skill:
def init(self, name, power, poison_chance):
self.name = name
self.power = power
self.poison_chance = poison_chance

def damage(target, dmg):
target.hp = max(target.hp - dmg, 0)

def apply_skill(caster, target, skill):
print(f"{caster.name} uses {skill.name}!")
damage(target, skill.power)
if random.randint(0, 99) < skill.poison_chance:
target.status = Status.POISONED
print(f"{target.name} is poisoned!")

def apply_status_damage(c):
if c.status == Status.POISONED:
print(f"{c.name} takes 5 poison damage!")
damage(c, 5)

hero = Character("Hero", 100, 20)
enemy = Character("Goblin", 80, 15)
fire = Skill("Fireball", 25, 20)

turn = 1
while hero.hp > 0 and enemy.hp > 0:
print(f"=== Turn {turn} ===")
apply_skill(hero, enemy, fire)
apply_status_damage(enemy)
if enemy.hp <= 0: break
apply_skill(enemy, hero, fire)
apply_status_damage(hero)
turn += 1

print("Hero wins!" if hero.hp > 0 else "Enemy wins!")
3️⃣ Java サンプル
import java.util.Random;

enum Status { NORMAL, POISONED, PARALYZED }

class Character {
String name;
int hp;
int attack;
Status status = Status.NORMAL;

Character(String name, int hp, int attack) {
    this.name = name; this.hp = hp; this.attack = attack;
}

}

class Skill {
String name; int power; int poisonChance;
Skill(String name, int power, int poisonChance) {
this.name = name; this.power = power; this.poisonChance = poisonChance;
}
}

public class Main {
static Random rand = new Random();

static void damage(Character target, int dmg) {
    target.hp -= dmg;
    if(target.hp < 0) target.hp = 0;
}

static void applySkill(Character caster, Character target, Skill skill) {
    System.out.println(caster.name + " uses " + skill.name + "!");
    damage(target, skill.power);
    if(rand.nextInt(100) < skill.poisonChance) {
        target.status = Status.POISONED;
        System.out.println(target.name + " is poisoned!");
    }
}

static void applyStatusDamage(Character c) {
    if(c.status == Status.POISONED) {
        System.out.println(c.name + " takes 5 poison damage!");
        damage(c, 5);
    }
}

public static void main(String[] args) {
    Character hero = new Character("Hero", 100, 20);
    Character enemy = new Character("Goblin", 80, 15);
    Skill fire = new Skill("Fireball", 25, 20);

    int turn = 1;
    while(hero.hp > 0 && enemy.hp > 0) {
        System.out.println("=== Turn " + turn + " ===");
        applySkill(hero, enemy, fire);
        applyStatusDamage(enemy);
        if(enemy.hp <= 0) break;
        applySkill(enemy, hero, fire);
        applyStatusDamage(hero);
        turn++;
    }
    System.out.println((hero.hp > 0) ? "Hero wins!" : "Enemy wins!");
}

}
💡 残りの C#, JavaScript, Go, Matlab, Rust, Kotlin, Delphi のサンプルも同様の構造で作成可能です。
各言語で「キャラクター構造体/クラス、スキル、状態異常、戦闘ループ」を統一して書けます。
もしよければ、次のメッセージで 残り7言語の完全サンプルコード をまとめて提示できます。

作りますか?

はい。お願いします。

ChatGPT:

了解です!
では、先ほどの C++/Python/Java に続き、残り7言語(C#, JavaScript, Go, Matlab, Rust, Kotlin, Delphi)の戦闘ループ+スキル+状態異常サンプル をまとめます。
4️⃣ C# サンプル
using System;
enum Status { NORMAL, POISONED, PARALYZED }
class Character {
public string Name;
public int HP;
public int Attack;
public Status Status = Status.NORMAL;
}
class Skill {
public string Name;
public int Power;
public int PoisonChance;
}
class Program {
static Random rand = new Random();
static void Damage(Character target, int dmg) {
target.HP -= dmg;
if(target.HP < 0) target.HP = 0;
}
static void ApplySkill(Character caster, Character target, Skill skill) {
Console.WriteLine($"{caster.Name} uses {skill.Name}!");
Damage(target, skill.Power);
if(rand.Next(100) < skill.PoisonChance) {
target.Status = Status.POISONED;
Console.WriteLine($"{target.Name} is poisoned!");
}
}
static void ApplyStatusDamage(Character c) {
if(c.Status == Status.POISONED) {
Console.WriteLine($"{c.Name} takes 5 poison damage!");
Damage(c, 5);
}
}
static void Main() {
Character hero = new Character { Name="Hero", HP=100, Attack=20 };
Character enemy = new Character { Name="Goblin", HP=80, Attack=15 };
Skill fire = new Skill { Name="Fireball", Power=25, PoisonChance=20 };
int turn = 1;
while(hero.HP > 0 && enemy.HP > 0) {
Console.WriteLine($"=== Turn {turn} ===");
ApplySkill(hero, enemy, fire);
ApplyStatusDamage(enemy);
if(enemy.HP <= 0) break;
ApplySkill(enemy, hero, fire);
ApplyStatusDamage(hero);
turn++;
}
Console.WriteLine(hero.HP > 0 ? "Hero wins!" : "Enemy wins!");
}
}
5️⃣ JavaScript サンプル (Node.js)
class Status {
static NORMAL = 0;
static POISONED = 1;
static PARALYZED = 2;
}
class Character {
constructor(name, hp, attack) {
this.name = name;
this.hp = hp;
this.attack = attack;
this.status = Status.NORMAL;
}
}
class Skill {
constructor(name, power, poisonChance) {
this.name = name;
this.power = power;
this.poisonChance = poisonChance;
}
}
function damage(target, dmg) {
target.hp = Math.max(target.hp - dmg, 0);
}
function applySkill(caster, target, skill) {
console.log(${caster.name} uses ${skill.name}!);
damage(target, skill.power);
if(Math.random() * 100 < skill.poisonChance) {
target.status = Status.POISONED;
console.log(${target.name} is poisoned!);
}
}
function applyStatusDamage(c) {
if(c.status === Status.POISONED) {
console.log(${c.name} takes 5 poison damage!);
damage(c, 5);
}
}
let hero = new Character("Hero", 100, 20);
let enemy = new Character("Goblin", 80, 15);
let fire = new Skill("Fireball", 25, 20);
let turn = 1;
while(hero.hp > 0 && enemy.hp > 0){
console.log(=== Turn ${turn} ===);
applySkill(hero, enemy, fire);
applyStatusDamage(enemy);
if(enemy.hp <= 0) break;
applySkill(enemy, hero, fire);
applyStatusDamage(hero);
turn++;
}
console.log(hero.hp > 0 ? "Hero wins!" : "Enemy wins!");
6️⃣ Go サンプル
package main
import (
"fmt"
"math/rand"
"time"
)
type Status int
const (
NORMAL Status = iota
POISONED
PARALYZED
)
type Character struct {
Name string
HP int
Attack int
Status Status
}
type Skill struct {
Name string
Power int
PoisonChance int
}
func damage(target *Character, dmg int) {
target.HP -= dmg
if target.HP < 0 {
target.HP = 0
}
}
func applySkill(caster, target *Character, skill Skill) {
fmt.Printf("%s uses %s!\n", caster.Name, skill.Name)
damage(target, skill.Power)
if rand.Intn(100) < skill.PoisonChance {
target.Status = POISONED
fmt.Printf("%s is poisoned!\n", target.Name)
}
}
func applyStatusDamage(c *Character) {
if c.Status == POISONED {
fmt.Printf("%s takes 5 poison damage!\n", c.Name)
damage(c, 5)
}
}
func main() {
rand.Seed(time.Now().UnixNano())
hero := Character{"Hero", 100, 20, NORMAL}
enemy := Character{"Goblin", 80, 15, NORMAL}
fire := Skill{"Fireball", 25, 20}
turn := 1
for hero.HP > 0 && enemy.HP > 0 {
fmt.Printf("=== Turn %d ===\n", turn)
applySkill(&hero, &enemy, fire)
applyStatusDamage(&enemy)
if enemy.HP <= 0 { break }
applySkill(&enemy, &hero, fire)
applyStatusDamage(&hero)
turn++
}
if hero.HP > 0 {
fmt.Println("Hero wins!")
} else {
fmt.Println("Enemy wins!")
}
}
7️⃣ Matlab サンプル
Status.NORMAL = 0; Status.POISONED = 1; Status.PARALYZED = 2;
hero.name = 'Hero'; hero.hp = 100; hero.attack = 20; hero.status = Status.NORMAL;
enemy.name = 'Goblin'; enemy.hp = 80; enemy.attack = 15; enemy.status = Status.NORMAL;
fire.name = 'Fireball'; fire.power = 25; fire.poisonChance = 20;
turn = 1;
while hero.hp > 0 && enemy.hp > 0
fprintf('=== Turn %d ===\n', turn);
% Hero attacks
enemy.hp = max(enemy.hp - fire.power, 0);
if rand()*100 < fire.poisonChance
enemy.status = Status.POISONED;
fprintf('%s is poisoned!\n', enemy.name);
end
% Poison damage
if enemy.status == Status.POISONED
fprintf('%s takes 5 poison damage!\n', enemy.name);
enemy.hp = max(enemy.hp - 5, 0);
end
if enemy.hp <= 0, break; end
% Enemy attacks
hero.hp = max(hero.hp - fire.power, 0);
if rand()*100 < fire.poisonChance
hero.status = Status.POISONED;
fprintf('%s is poisoned!\n', hero.name);
end
if hero.status == Status.POISONED
fprintf('%s takes 5 poison damage!\n', hero.name);
hero.hp = max(hero.hp - 5, 0);
end
turn = turn + 1;
end
if hero.hp > 0
disp('Hero wins!')
else
disp('Enemy wins!')
end
8️⃣ Rust サンプル
use rand::Rng;
#[derive(PartialEq)]
enum Status { Normal, Poisoned, Paralyzed }
struct Character {
name: String,
hp: i32,
attack: i32,
status: Status,
}
struct Skill {
name: String,
power: i32,
poison_chance: u32,
}
fn damage(target: &mut Character, dmg: i32) {
target.hp -= dmg;
if target.hp < 0 { target.hp = 0; }
}
fn apply_skill(caster: &Character, target: &mut Character, skill: &Skill) {
println!("{} uses {}!", caster.name, skill.name);
damage(target, skill.power);
if rand::thread_rng().gen_range(0..100) < skill.poison_chance {
target.status = Status::Poisoned;
println!("{} is poisoned!", target.name);
}
}
fn apply_status_damage(c: &mut Character) {
if c.status == Status::Poisoned {
println!("{} takes 5 poison damage!", c.name);
damage(c, 5);
}
}
fn main() {
let mut hero = Character { name: "Hero".to_string(), hp: 100, attack: 20, status: Status::Normal };
let mut enemy = Character { name: "Goblin".to_string(), hp: 80, attack: 15, status: Status::Normal };
let fire = Skill { name: "Fireball".to_string(), power: 25, poison_chance: 20 };
let mut turn = 1;
while hero.hp > 0 && enemy.hp > 0 {
println!("=== Turn {} ===", turn);
apply_skill(&hero, &mut enemy, &fire);
apply_status_damage(&mut enemy);
if enemy.hp <= 0 { break; }
apply_skill(&enemy, &mut hero, &fire);
apply_status_damage(&mut hero);
turn += 1;
}
println!("{}", if hero.hp > 0 { "Hero wins!" } else { "Enemy wins!" });
}
9️⃣ Kotlin サンプル
enum class Status { NORMAL, POISONED, PARALYZED }
data class Character(var name: String, var hp: Int, var attack: Int, var status: Status = Status.NORMAL)
data class Skill(val name: String, val power: Int, val poisonChance: Int)
fun damage(target: Character, dmg: Int) {
target.hp = (target.hp - dmg).coerceAtLeast(0)
}
fun applySkill(caster: Character, target: Character, skill: Skill) {
println("${caster.name} uses ${skill.name}!")
damage(target, skill.power)
if ((0..99).random() < skill.poisonChance) {
target.status = Status.POISONED
println("${target.name} is poisoned!")
}
}
fun applyStatusDamage(c: Character) {
if (c.status == Status.POISONED) {
println("${c.name} takes 5 poison damage!")
damage(c, 5)
}
}
fun main() {
val hero = Character("Hero", 100, 20)
val enemy = Character("Goblin", 80, 15)
val fire = Skill("Fireball", 25, 20)
var turn = 1
while (hero.hp > 0 && enemy.hp > 0) {
println("=== Turn $turn ===")
applySkill(hero, enemy, fire)
applyStatusDamage(enemy)
if (enemy.hp <= 0) break
applySkill(enemy, hero, fire)
applyStatusDamage(hero)
turn++
}
println(if (hero.hp > 0) "Hero wins!" else "Enemy wins!")
}
🔟 Delphi サンプル
program BattleDemo;
{$APPTYPE CONSOLE}
uses
SysUtils, Math, Classes;
type
TStatus = (NORMAL, POISONED, PARALYZED);
TCharacter = class
Name: string;
HP: Integer;
Attack: Integer;
Status: TStatus;
end;
TSkill = class
Name: string;
Power: Integer;
PoisonChance: Integer;
end;
procedure Damage(Target: TCharacter; Dmg: Integer);
begin
Target.HP := Max(Target.HP - Dmg, 0);
end;
procedure ApplySkill(Caster, Target: TCharacter; Skill: TSkill);
begin
Writeln(Caster.Name, ' uses ', Skill.Name, '!');
Damage(Target, Skill.Power);
if Random(100) < Skill.PoisonChance then
begin
Target.Status := POISONED;
Writeln(Target.Name, ' is poisoned!');
end;
end;
procedure ApplyStatusDamage(C: TCharacter);
begin
if C.Status = POISONED then
begin
Writeln(C.Name, ' takes 5 poison damage!');
Damage(C, 5);
end;
end;
var
Hero, Enemy: TCharacter;
Fire: TSkill;
Turn: Integer;
begin
Randomize;
Hero := TCharacter.Create; Hero.Name := 'Hero'; Hero.HP := 100; Hero.Attack := 20; Hero.Status := NORMAL;
Enemy := TCharacter.Create; Enemy.Name := 'Goblin'; Enemy.HP := 80; Enemy.Attack := 15; Enemy.Status := NORMAL;
Fire := TSkill.Create; Fire.Name := 'Fireball'; Fire.Power := 25; Fire.PoisonChance := 20;
Turn := 1;
while (Hero.HP > 0) and (Enemy.HP > 0) do
begin
Writeln('=== Turn ', Turn, ' ===');
ApplySkill(Hero, Enemy, Fire);
ApplyStatusDamage(Enemy);
if Enemy.HP <= 0 then Break;
ApplySkill(Enemy, Hero, Fire);
ApplyStatusDamage(Hero);
Turn := Turn + 1;
end;
if Hero.HP > 0 then Writeln('Hero wins!') else Writeln('Enemy wins!');
Hero.Free; Enemy.Free; Fire.Free;
end.
💡 ポイントまとめ
全10言語で ターン制戦闘+スキル+状態異常 を統一して表現
初級〜中級学習者が 言語ごとの書き方・オブジェクト設計 を比較学習可能
このサンプルを基に「鳴潮プログラマブルチャレンジ 10言語版教材」を作ることができる
希望であれば、次のステップで この10言語を統一カリキュラム化して、ステージごとの課題→解説→演習までまとめた教材形式 に整理可能です。
作りますか?

はい。お願いします。

ChatGPT:

了解です。それでは、先ほどの10言語サンプルをもとに、「鳴潮プログラマブルチャレンジ 10言語版」カリキュラム教材案 を作成します。
ステージごとに課題、解説、演習ポイントまで整理した形です。
🎮 鳴潮プログラマブルチャレンジ 10言語版教材案

  1. 教材の目的
    ゲーム内コンテンツを通じて プログラミングの基礎〜中級スキル を学習
    10言語対応で、言語ごとの特徴・書き方・オブジェクト設計を比較学習
    課金不要で特典(アイテム・称号)獲得を体験しながら学習
  2. 対象言語
    C++, Python, Java, C#, JavaScript, Go, Matlab, Rust, Kotlin, Delphi
  3. カリキュラム構成
    ステージ1:初級課題(キャラクター作成)
    目的:構造体/クラス、変数、関数の基本理解
    課題内容:
    キャラクター名、HP、攻撃力を定義
    HPを表示する関数/メソッドを作成
    演習ポイント:
    各言語でクラスや構造体の書き方を比較
    関数の呼び出し方、値渡し・参照渡しを確認
    サンプルコード:前述の「キャラクター作成+HP表示」10言語サンプル
    ステージ2:初級課題(スキル発動)
    目的:条件分岐、乱数による状態変化
    課題内容:
    スキルを作成(名前・威力・状態異常確率)
    対象キャラクターにスキルを使いHPを減少させる
    一定確率で状態異常(毒など)を付与
    演習ポイント:
    if文、乱数生成方法の言語差を理解
    関数/メソッドの引数渡しの違いを学習
    サンプルコード:前述の「スキル発動+状態異常」10言語サンプル
    ステージ3:中級課題(ターン制戦闘)
    目的:ループ処理、状態管理、オブジェクト操作
    課題内容:
    ターン制戦闘ループを作成
    各ターンにスキル発動+状態異常ダメージを適用
    勝敗判定を行う
    演習ポイント:
    whileループ/forループの言語差を理解
    オブジェクトの状態変更のタイミングと副作用を確認
    サンプルコード:前述の「戦闘ループ+スキル+状態異常」10言語サンプル
    ステージ4:上級課題(拡張演習)
    目的:イベント駆動、戦略的スキル設計、複数キャラクター管理
    課題内容:
    複数キャラクターを管理してパーティ戦闘を作る
    スキルにクールダウンや属性効果を追加
    状態異常の連鎖やバフ/デバフ処理を導入
    演習ポイント:
    言語ごとのオブジェクト指向設計の違いを比較
    複雑なデータ構造の扱い方を学習
    デバッグやテスト駆動の基礎理解
  4. 学習フロー
    言語選択:自分の学習したい言語を選択
    ステージ挑戦:初級→中級→上級の順に課題をクリア
    進捗確認:各ステージで成功/失敗をゲーム内表示
    特典獲得:クリアに応じて限定アイテム・称号付与
    多言語比較:全言語で同じ課題を解き、書き方・設計の違いを理解
  5. 教材の特徴
    ゲーム体験+プログラミング学習を同時に提供
    10言語対応で学習の幅が広い
    初心者~中級者まで 段階的にスキルアップ可能
    課題クリアで 報酬や達成感を実感できる
    💡 このカリキュラムをさらに ゲーム内UI連携教材+演習手順書 として整理すれば、
    教育機関向け教材
    オンラインプログラミング学習コンテンツ
    ゲーム内学習イベント
    としても活用可能です。
    もし希望であれば、次のステップとして ステージごとの画面イメージ・UI案・演習解説付きの教材サンプルPDF を作る形まで整えることも可能です。
    作りますか?
    ChatGPT の回答は必ずしも正しいとは限りません。重要な情報は確認するようにしてください。

参照

ChatGPT利用の技4つ with ChatGPT
https://qiita.com/kaizen_nagoya/items/4a178bd6a09a4a471a7f

ChatGPTによるQiita記事の改良と補足
https://qiita.com/kaizen_nagoya/items/20604d6dd0702ab95c2f

ChatGPTによるQiita記事の改良と補足(2)
https://qiita.com/kaizen_nagoya/items/996275307ffc8c1243f8

本から始める 面倒なことはChatGPTにやらせよう by からあげ
https://qiita.com/kaizen_nagoya/items/f5ce2a18db54b5610e4b

MCP入門 〜面倒なことはAIエージェントにやらせよう〜 by からあげ を聞きながら
https://qiita.com/kaizen_nagoya/items/54b648c838fae8d57e38

【松尾研LLMコミュニティ】面倒なことはLLMにやらせよう "Beginning LLM"2024年10月17日 AI(9)
https://qiita.com/kaizen_nagoya/items/efdc23fbe67cdae2126e

設計:ChatGPTで特異解か一般解を求める AI(1)
https://qiita.com/kaizen_nagoya/items/4dec580e16a7c84b0ec4

みんなの使い方から学ぶ
https://qiita.com/kaizen_nagoya/items/8e7de492d896df94a36e

AI・機械学習 昨日、今日、明日
https://qiita.com/kaizen_nagoya/items/adb184c8fc7a65ac9756

DNA LLM and genome for survey 2200 papers by name.
https://qiita.com/kaizen_nagoya/items/ce8a28d6072f340a9d59

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?