1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeと一緒に個人開発して気が付いた AIとの付き合い方

Posted at

はじめに

皆さんメリークリスマス。
Claude Codeアドベントカレンダーの25日です。
現在26日です。
仕事終わって熟睡してたら完全に遅刻しました。

この記事は、Claude Codeと一緒に個人開発した結果どうだったのかの開発感想文です。
技術的な文章というよりは天下り的に今Claudeとはこういうコミュニケーションをとるとうまくいくというお話になります。

作ったサービスについて

TRPG、マーダーミステリーに特化したシナリオエディタ / 公開プラットフォームです。
他のサービスよりエディターに機能大量に入れています。

ですが、執筆時点で登録者1(つまり僕だけ!!)で使ってほしいので、いいものは作れた気がするけど…という感じです。

特にログインしないとよくわからないサービスを個人で作るのは微妙な感じもしました。
なので、新しくゲームを作るか、これをもうちょっと頑張るかは悩んでいます。

ClaudeやAIへの付き合い方

AIに求めるべきもの

明確な答えとして、AIは自分の苦手分野を補完するものだと思うと確実だと思います。
逆に自分の得意分野をやらせると「自分でやった方が早い」になります。

僕の場合は得意分野と苦手分野が以下のように分かれていました
image.png

この中で特に今まで自分はここまでできてあとは量産するだけというようなところで、飽きてしまい完成までこぎつけなかったことが多々あります。
それに対してAIは単調な実装をやってくれるので非常にフィットしていました。

苦手を苦手のままにしない

上記苦手のうち、この二つについては勉強すれば理解できる分野です。

  • CSSやデザイン
  • Web系の技術スタック

特に、Web系は自分の近接領域でもありましたから、Claudeに実装してもらうときに併せて勉強をしていました。

  • Lexical Editor
    • Metaのブロックエディタ
  • サーバー関連
    • サーバーの立て方
    • ドメインの取り方
    • DNSの登録方法
  • Azureでのサーバー構築
    • クッソ高い
  • VPSでのサーバー構築
    • 安くて個人ではこっちがいいね
  • Vueやhtmlのフロントエンド技術
    • SPAって難しい

などです。
これらはClaudeなしで勉強するならば非常に時間がかかったでしょう。
それを半年程度でそこそこのレベルまで引き上げてくれました。

一方で単調な実装が苦手というのはAIの本当に得意な分野なので、これは僕的にはAIに任せちゃおうと思っています。楽しくないし~

Claudeの苦手なこと

逆に現時点ではClaudeには明確な苦手がいくつかあると感じました。
それについて説明しようと思います。

コーディングルールを守ること & コードの再利用

かなり苦手です。
対処方法はありますが、コードベースが大きくなるとコーディング規約などを守ることができなくなります。
これは公式にはCLAUDE.mdでカバーする部分ですが、残念ながらルールが大きくなりすぎると無視するようになります。

対応方法は作業前に今回使うルールを教えたりコードを明示的に読み込ませることです。

特に問題になるのはUIで、同じ機能のボタンを全く違う見た目で作ろうとします。
なので、共通コンポーネントいっぱい作らせました。

また、テストの存在を知覚しないことがおおく個人開発だからいいやろであきらめました。
テストめっちゃ壊れます。

独自の実装

よく言われることですが、典型的なよくあるコードの実装は得意な一方で、少しでも複雑なアルゴリズムになると諦めます。
それを修正させようとしても基本的にうまくいくことはなかったです。

こういう場合自分で書いた方が早いです。

Claudeが書きやすいコードルール

いくつかやっていて、Claudeが書きやすく人間も理解しやすいコードを作るためのコツがあることに気が付きました。
これは人間の描きやすいコードとは少しずれている感じがします。

その中でも是非お勧めしたいのが、

  • メソッドの引数の順番を厳密に固定する
  • 命名規則や使う動詞や使う場面を固定する

です。

メソッドの引数の順番を厳密に固定する

以下のような年齢と性別を登録するメソッドがあったとします

void RegisterData(int age, Sex sex);

これに対して、データをアップデートするメソッドが、以下のように引数が逆でもそんなに人間は気にしないと思います。[^args]: 実際はこの例では気になるかもしれませんが、より引数の多い場合を考えてください。多少引数が入れ替わっていてもあまり気にならないでしょう。

void RegisterData(Sex sex, int age);

しかし、Claudeにこのようなコードを渡すと、引数の順番がどんどんめちゃくちゃになります。
これは、ランダムの結果として順番がたまたま入れ替わるとそのたまたまが増幅するものと考えています。
そのため、Claudeにコードを書かせる前にこの順番は固定するべきです。最初は間違えますが、しばらく書いていると固定されていきます。

命名規則や使う動詞や使う場面を固定する

こちらも同様の理由です。
Set,Updateなどの近い単語の場合用途や仕様が単語ごとに一貫しなくなることが多々あります。
そのためこちらもルール化しておくとよさそうです。

まとめ

以上となります。
特にAIは人間に近いコードを書きますが、ところどころ違うのでうまく付き合うとよくなるよという記事でした。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?