以下の内容はhttps://kojirooooocks.hatenablog.com/より取得しました。


Godot MCPでClaude Codeからゲームエンジンを操作してみた

はじめに

こんばんは。

今回は Godot MCP について書きます。

これを使うと、Claude Codeからゲームエンジンの操作ができます。

具体的には、シーンの作成、ノードの追加・削除・移動、プロパティの変更、GDScriptの編集、プロジェクトの実行やデバッグ出力の取得、などができます。

要するに、Godotエディタを開かなくても、ターミナルからゲームを組み立てられるということです。

環境

  • Claude Code
  • Godot Engine 4.x
  • Godot MCP(Godotプロジェクトにプラグインとして追加)

実際に使ってみた

シーンの作成

Claude Codeに「プレイヤーのシーンを作って」と指示すると、Godot MCPを通じてシーンファイルを作成してくれます。

ノードの階層構造も指示通りに組んでくれるので、手作業でポチポチやるより明らかに速いです。

スクリプトの編集

GDScriptの作成や編集もできます。

「プレイヤーの移動処理を書いて」と言えば、シーンにアタッチされたスクリプトを直接編集してくれます。

ここは普段のClaude Codeでの開発と同じ感覚ですね。コードを書く→レビューする→直す、のサイクルが回せます。

プロジェクトを実行して、コンソールのエラーやログを取得することもできます。

エラーが出たら、その内容をそのまま読み取って修正案を出してくれるので、エディタとターミナルを行き来する回数が減ります。

良かったこと

とにかく Claude Codeだけで完結できるのが自分にとっては最高でした。

あの独特なポチポチ操作がないってだけでも最高です。

気になったこと

複雑なUI周りはまだ苦手みたいです。

シンプルなシーンやスクリプトなら問題ないのですが、込み入ったUIレイアウトや、複数シーンのコンポジションになると、期待通りにいかないことがあります。

あとは、簡単な位置の調整に結構時間がかかるとかがありました。微妙な位置調整に10分とかかかったり...

Godot自体が初めてなので、MCPの問題なのか自分の理解不足なのか判別がつかない場面もありました。これは使っていく中で切り分けていくしかないですね。

まとめ

Godot MCPを使って、Claude Codeからゲームエンジンを操作してみた話でした。

普段の開発ワークフローがそのまま活かせるのが大きな利点で、設計に集中できる環境は個人開発と相性がいいなと感じています。

まだまだ始めたばかりですが、AIでどこまでゲームが作れるのか、引き続き試していきます。

もっと良いやり方や、Godot MCPの使い方のコツなどがあれば、ぜひ教えてください。

ではでは。

PixelLab MCPでゲームのドット絵を生成してみた

PixelLab MCPでゲームのドット絵を生成してみた

はじめに

こんばんは。

今回は PixelLab MCP について、実際に触ってみた感想を書きます。

PixelLab MCPとは

PixelLabは、AIでピクセルアートを生成できるサービスです。

そのMCPサーバーをClaude Codeに接続すると、ターミナルからテキスト指示でドット絵を生成できるようになります。

できることは主にこんな感じです。

  • キャラクターの生成(4方向・8方向対応)
  • アニメーションの追加(歩行、待機、攻撃など)

環境

  • Claude Code
  • PixelLab MCP(APIトークンが必要)

セットアップは公式サイトにガイドがあるので割愛します。Claude Codeの設定ファイルにMCPサーバーのURLとトークンを追加するだけです。

実際に使ってみた

キャラクター生成

Claude Codeに「剣を持った戦士のドット絵を作って」みたいな指示を出すと、PixelLab MCPを呼び出してキャラクターを生成してくれます。

指定できるパラメータがいくつかあって、キャンバスサイズ、方向数(4方向か8方向か)、カメラアングル(トップダウンかサイドビューか)、アウトラインのスタイル、シェーディングの複雑さ、などを調整できます。

ワードRPGはトップダウン視点で考えているので、low top-down のカメラアングルで生成しました。

生成には2〜3分くらいかかります。4方向で2〜3分、8方向だと3〜5分くらいです。

アニメーション追加

生成したキャラクターに対して、歩行アニメーションを追加することもできます。

これもClaude Code経由で指示するだけです。既存のキャラクターIDを指定して、どのアニメーションを追加するかを伝えれば、PixelLabが処理してくれます。

良かったこと

コードを書く流れのまま、アセット生成までできるのが一番のメリットです。

普通だったら、コードを書く→別のツールを開く→ドット絵を描く→ファイルを保存→プロジェクトに取り込む、という手順が必要です。それがClaude Codeのターミナル上で完結します。

自分のようにドット絵が描けない人間にとっては、この環境がなかったらゲーム開発自体がかなり厳しかったと思います。

気になったこと

細かい調整が難しいです。

「もうちょっと左腕を上げて」とか「この色をもう少し暗く」みたいな微調整は、テキスト指示だけだとなかなか思い通りにいきません。

生成されるドット絵のクオリティは十分実用的なんですが、「このキャラはこうあるべき」という明確なイメージがあるときには、何度か試行錯誤が必要です。

例えば以下の命令で作ってみました。

PixelLabで以下のキャラクターを生成して。
- 説明: 若い冒険者。茶色の短髪で、スナフキンのような服装。
- キャンバスサイズ: 64
- 方向数: 右向きのみ
- アニメーション: 
  - 歩行
  - ダッシュ
- カメラアングル: 低めの見下ろし視点
- アウトライン: 黒の単色アウトライン
- シェーディング: 最大
- ディテール: 最大

微妙ですよね。。

こっからいろいろと試行錯誤する必要あります。

またその際はおそらく無料枠では間に合いません。

本格的に使うならサブスクリプションが必要になります。試す段階では無料枠で十分ですが、大量にアセットを作るなら考慮が必要です。

まとめ

PixelLab MCPは、ドット絵が描けないプログラマにとってはかなりありがたいツールです。

Claude Codeとの連携で、コーディングの文脈を切り替えずにアセット生成できるのは想像以上に快適でした。

細かい調整の難しさはありますが、プロトタイプ段階のアセットとしては十分な品質です。

次回はGodot MCPについて書く予定です。

ではでは。

ゲーム作り始めてみた。

はじめに

こんばんは。

最近、個人開発でゲームを作り始めました。

Claude Codeバリバリ開発してて、これはもうなにも出来ないものはないんじゃないかな?と思ったのがきっかけです。

「言葉」を使って戦うっていうコンセプトのゲームを考えてます。

まだ考えている段階のものも多いですが、コンセプトとしてはこんな感じです。

開発環境

今回の開発環境は以下です。

Claude Code + Godot MCP + PixelLab MCP

godotengine.org

www.pixellab.ai

Claude Code は普段の仕事でも使っているので慣れているのですが、今回はMCPサーバーを2つ接続して使っています。

Godot MCP は、GodotエンジンとAIを繋ぐMCPサーバーです。Claude Codeからシーンの作成やノードの操作、スクリプトの編集などができます。AIがエディタを直接操作できるようなイメージです。

PixelLab MCP は、ピクセルアートをAIで生成するMCPサーバーです。キャラクターのドット絵やアニメーションを、テキストの指示だけで生成してくれます。

コードを書くのも、ゲームエンジンを操作するのも、ドット絵を作るのも、全部Claude Codeを起点にしてやっています。

絵もかけないし、Unityもあの独自のUIの操作に断念した僕にとっては神環境でした。

なぜこの構成にしたか

もともとはバニラのJavaScriptとHTMLでプロトタイプを作っていました。

ただ、ゲームエンジンなしで本格的なゲームを作るのはやっぱり厳しいなと感じて、Godotに乗り換えることにしました。Godotはオープンソースで軽量だし、2Dゲームとの相性がいいです。

それに加えて、MCPでClaude Codeと繋げられるというのが大きかったです。

普段の仕事でClaude Codeのワークフローはそれなりに固まっているので、その延長線上でゲーム開発もできるんじゃないかと思いました。

PixelLabも同じ理由です。自分はドット絵が描けないので、AIに頼れるのはありがたいなとおもったからです。

MCPで繋がっているので、コードを書く流れの中でそのままアセット生成まで持っていけます。

現状

正直、まだ全然できていません。

環境構築が終わって、ちょっと触り始めたくらいの段階です。

でも、この「AIにゲームエンジンもアセット生成も任せて、自分は設計に集中する」っていう開発スタイルが成り立つのかどうか、試していくのが楽しみです。

個人でゲーム作ってる方や、AIでゲーム開発してる方がいたら、ぜひ情報交換しましょう。

ではでは。

自分のスキルファイルをチームに公開した話

はじめに

こんばんは。

最近自分が作ってきたClaude Code のスキルファイル群を、お世話になっている企業のレポジトリに公開しました。

前提

僕は設計思想に関するスキルを作っていました。

このスキルは自分の開発ワークフローの中核で、日々の実装でかなり重宝していました。

もちろんお世話になってる企業には、Claude Codeを使用していいよと許可をもらってました。

ある日、お世話になっている企業から「そのスキルファイル、会社のレポジトリに入れてほしい」と言われました。

葛藤

正直、抵抗がありました。

僕はフリーランスなので社員として関わっているわけではありません。

このスキルファイルは、自分が試行錯誤しながら作ったもので、自分の開発の質を支えている一部でもあります。

で、思ったんです。

「これ公開したら、俺いらなくなるんじゃない?」

それでも公開した

結局、公開しました。

理由は3つです。

  1. チーム全体の生産性が上がるならその方がいいと思ったから
  2. 自分だけが効率よく開発できてもチームとして速くならなければ意味がないと思ったから
  3. シンプルにお世話になっているから

公開してみたら

公開したら、チームのメンバーがすごく喜んでくれました。早速使い始めてくれていて、それを見たときは素直に嬉しかったです。

自分が作ったものが誰かの役に立っている。それは普通に嬉しいことです。

それでも思うこと

ただ、公開したことで、自分が切られる可能性は増えたなとは思っています。

こういう人の良さみたいなので何でもOKしてたら、フリーランスは務まらないのかもしれないなと思ったりもしました。

でも、少なくとも今回の判断を後悔はしていないです。たぶん。いやしてるかも。

まとめ

こういう葛藤、フリーランスで働いている方はどう折り合いをつけているんでしょうか。もし考えがある方はぜひ教えてください。

ではでは。

Claude Code で新規実装するときの自分のワークフロー

はじめに

こんばんは。

最近、仕事で Claude Code を使って開発しています。

使い始めてからそれなりに経つのですが、最近ようやく自分なりのワークフローが固まってきました。

前提

Claude Code にはカスタムスラッシュコマンドという機能があります。

自分で作ったプロンプトを /コマンド名 で呼び出せる仕組みです。僕はこれを使って、開発の各工程ごとにスキル(コマンド)を作っています。

スキルの中身については今回は割愛しますが、ワークフローの全体像と、各ステップで何をやっているかを紹介します。

ワークフローの全体像

僕のワークフローは大きく4つのフェーズに分かれています。

仕様書作成 → 計画作成 → 実装 → レビュー対応

それぞれ見ていきます。

1. 仕様書作成

最初にやるのは仕様書作成です。

参考資料や既存の実装コードを読ませて、ドメインの仕様書を作らせます。その後、作った仕様書をレビューさせます。

ポイントは、いきなりコードを書かせないということです。

Claude Code は指示すればすぐコードを書いてくれますが、仕様の理解が浅いまま書かせると、的外れなものが出てきます。まず「お前はこのドメインをちゃんと理解してるか?」を確認するフェーズです。

2. 計画作成

仕様書ができたら、次は実装計画を作らせます。

「何をどの順番で、どのファイルに対して実装するか」を計画としてまとめさせます。これも作ったあとにレビューさせます。

ここで大事なのは、計画をアーキテクト視点でレビューさせるということです。

「この順番で大丈夫か?」「影響範囲は考慮されているか?」「もっと良い設計はないか?」といった観点で、AI自身に自分の計画を見直させます。

人間がやっていたレビューの一部をAIに肩代わりさせているイメージですね。

3. 実装

計画ができたら、やっと実装です。

計画書を元にコードを書かせます。計画があるので、AIが変な方向に行きにくくなります。

実装が終わったらセルフレビューさせます。自分で書いたコードの問題点を自分で指摘させる。さらに必要に応じて Feature テストも作らせます。

この「書く → 自分でレビューする → テストを書く」のサイクルを、全部AIにやらせるのがミソです。

4. レビュー対応

人間のレビュアーからフィードバックをもらったあとのフェーズです。

レビュー指摘を読み込ませて、まず対応方針をまとめさせます。方針が決まったら、それを元に修正させます。

ここも「いきなり直させない」のがポイントです。方針をまとめるステップを挟むことで、的外れな修正を防いでいます。

全体を通して意識していること

ワークフロー全体で共通して意識しているのは、各フェーズで必ず「作る」と「レビューする」をセットにするということです。

作る → レビューする → 次のフェーズへ

一つ大事なのは、最終判断は全部自分でやっているということです。AIが作った仕様書も計画も実装も、最後は自分の目で確認しています。AIは優秀なジュニアメンバーくらいの位置づけで、丸投げはしていません。

あくまで 現状は ですけど..

まとめ

今の自分のワークフローを紹介しました。

正直、まだまだ試行錯誤中です。もっと効率のいいやり方や、こういう工夫してるよ、というのがあればぜひ教えてください。

ではでは。

甥っ子がプログラミングの専門学校に入った

はじめに

こんばんは。

甥っ子がプログラミングの専門学校に入学することになりました。

先週地方から都内に引っ越してきました。

IT業界にいる身としては嬉しい気持ちと同時に、少し心配しています。

本題

僕は普段の仕事で Claude Code を日常的に使っています。

「指定時間に外部APIを叩いて銀行振込を実行するバッチを作って」と指示するとざっくり大枠が出てきます。

さらに「このコードの危険なポイントを挙げてみて?」と聞くと、リトライ処理や二重送金の防止について指摘してきます。

そして「作ったコードを自己レビューして」というと指摘ポイントをあげてきます。

ここまで数十分くらいです。

僕が新人の頃、こういう処理を書くのに1日以上はかかっていました。

調べて、試して、エラーを直して、先輩にレビューしてもらって。

それが今は、AIに指示を出して、AIが書いて、AIが自分のコードをレビューして、AIが修正します。

甥っ子が卒業するのは2年後です。

その頃、「プログラミング書けます」「SQL書けます」だけで生きていくのは、正直厳しいと思っています。

今でさえそのあたりはAIに任せるほうが精度いいし。

基礎は絶対に必要なので、プログラミングを学ぶこと自体が無駄ではないですが、これ以降はそれ以外の技術が必要だと思います。

終わりに

まぁ。専門学校はそのあたりを考慮したカリキュラムを組んでいる可能性もあるので、余計なお世話かもしれませんけど、プログラミングだけを学んで満足はしないでほしいなと思いました。

おじさんは心配してるけど、応援してます。

ではでは。

Biome の続き

Biome の設定をカスタマイズしてみた

はじめに

前回の記事 で Biome を試してみました。

今回は実際のプロジェクトに導入するにあたって、設定を色々と試してみました。

今回の設定

まだ色々演る予定ですが、現状はこうなりました。

{
  "$schema": "https://biomejs.dev/schemas/2.3.15/schema.json",
  "vcs": {
    "enabled": true,
    "clientKind": "git",
    "useIgnoreFile": true
  },
  "files": {
    "ignoreUnknown": false,
    "includes": [
      "public/js/**/*.js",
      "resources/js/**/*.js",
      "resources/js/**/*.ts",
      "resources/js/**/*.vue",
      "vite.config.js"
    ]
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "style": {
        "useBlockStatements": "error"
      },
      "nursery": {
        "noExcessiveLinesPerFile": {
          "level": "warn",
          "options": {
            "maxLines": 500
          }
        }
      }
    }
  },
  "javascript": {
    "formatter": {
      "quoteStyle": "double"
    }
  },
  "assist": {
    "enabled": true,
    "actions": {
      "source": {
        "organizeImports": "on"
      }
    }
  },
  "overrides": [
    {
      "includes": ["resources/js/**/*.vue"],
      "linter": {
        "rules": {
          "correctness": {
            "noUnusedVariables": "off",
            "noUnusedImports": "off"
          }
        }
      }
    }
  ]
}

それぞれ見ていきます。

vcs - Git 連携

"vcs": {
  "enabled": true,
  "clientKind": "git",
  "useIgnoreFile": true
}

useIgnoreFile: true にすると、.gitignore に書かれているファイルを Biome も無視してくれます。

node_modules とか vendor とか、いちいち Biome 用に除外設定を書かなくて済むので楽。

files.includes - 対象ファイルを絞る

"files": {
  "ignoreUnknown": false,
  "includes": [
    "public/js/**/*.js",
    "resources/js/**/*.js",
    "resources/js/**/*.ts",
    "resources/js/**/*.vue",
    "vite.config.js"
  ]
}

今回は Laravel + Vue のプロジェクトなので、フロントエンドのファイルだけを対象にしました。

includes を指定すると、ここに書いたパターンにマッチするファイルだけが対象になります。

formatter - インデント設定

"formatter": {
  "enabled": true,
  "indentStyle": "space",
  "indentWidth": 2
}

デフォルトはタブなので、スペース派の人はここで変えます。

カスタムルールを追加

recommended だけだと物足りなかったので、いくつかルールを追加しました。

useBlockStatements

"style": {
  "useBlockStatements": "error"
}

これは if 文とかで波括弧を強制するルール。

// NG
if (foo) return;

// OK
if (foo) {
  return;
}

noExcessiveLinesPerFile

"nursery": {
  "noExcessiveLinesPerFile": {
    "level": "warn",
    "options": {
      "maxLines": 500
    }
  }
}

1 ファイルの行数が 500 行を超えると警告を出すルール。

nursery は実験的なルールが入っているカテゴリで、まだ安定版じゃないルールを試せます。

overrides - ファイルごとにルールを変える

"overrides": [
  {
    "includes": ["resources/js/**/*.vue"],
    "linter": {
      "rules": {
        "correctness": {
          "noUnusedVariables": "off",
          "noUnusedImports": "off"
        }
      }
    }
  }
]

Vue ファイルだけ noUnusedVariablesnoUnusedImports を off にしてます。

Vue の <script setup> で定義した変数は <template> で使うことが多いんですが、Biome がそれを検知できずに「使ってないよ」って怒ってくることがあったので。

experimental な Vue 対応がもう少し進んだら、このあたりも改善されるかもしれません。

assist - import の自動整理

"assist": {
  "enabled": true,
  "actions": {
    "source": {
      "organizeImports": "on"
    }
  }
}

前回の記事で organizeImports を有効にしていたのですが、v2 系から設定の書き方が変わってました。

assist というセクションで、エディタ連携時のアクションを設定します。

まとめ

色々と試してるんですが、個人的には何も考えずBiomeだけになってほしい。

ではでは。




以上の内容はhttps://kojirooooocks.hatenablog.com/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14