🦁

AIは銀の弾丸ではない - Claude Codeとの爆速開発で学んだ、本当に重要なエンジニアの役割

に公開

Claude codeを利用し、全く知識も経験のないモバイルアプリケーション開発行った経験をまとめます。

導入

私は設計や問題解決が好きなので、これまでコーディングできない自分を口だけ野郎と捉えており、好きではありませんでした。しかし、生成AIのおかげで、私のようなアイデアはあっても実装できない人が「作る」ことが可能になりました。生成AIを上手く使うことで戦う道が開けたと感じています。

今回の記事ではAIとの協業で重要なのはコーディングスキル以上に『言語化能力』と『適切な判断力』であるという学びを、具体的な開発経験と共にお伝えします。

私は社会復帰の準備を行っています。活動再開するにあたってこの一連の活動で得た学びは大きいと感じています。皆様もぜひ経験してみてください。

この2週間での成果物

本題です。6月に入ってからの2週間でClaude codeを使って以下を作ってみました。
モバイルアプリは業務でも趣味でも経験なかったですが、それなりのものが出来てしまいました。

  1. 川崎市のバスナビアプリ
    私の住んでいる川崎市は複数のバス会社がバラバラの停留所を使っているため、わかりにくい。そしてそれをまとめるアプリがないということでバスナビアプリを作り始めました。
    3〜5日ほどで画面構成と時刻表APIとの疎通、GPS機能の利用までは作ることが出来ました。想定以上に難易度が高かったため、今は切りの良いところで中断しています。

画面は以下のような見た目です。

以下の技術を使っています。

  • フレームワーク: Flutter 3.24.5
  • 言語: Dart 3.5.3
  • 開発手法: テスト駆動開発(TDD)
  • CI/CD: GitHub Actions
  • 開発環境: Docker
  1. ダイスで次の行動を決めるTODOアプリ
    某どうでしょうのサイコロの旅をイメージして、次のTODOを決めるアプリです。直前の土日2日間で作成しました。
    バスアプリをFlutterで作ったので、Kotlinを使ってみたくなって作りました。また、Javaの経験があるので、Kotlinならコードを読むこともできるかなという背景もあります。

画面は以下のようになっています。

サイコロをふっているアニメーションがお気に入りです。

以下の技術を使っています。

  • 言語:Kotlin
  • 開発手法: テスト駆動開発(TDD)
  • CI/CD: GitHub Actions
  • 開発環境: Docker

共通項

どちらの開発でも、AIにコードを生成させるだけでなく、品質を担保するためテスト駆動開発(TDD)を採用しています。また、CI/CDパイプラインをGitHub Actionsで構築し、Dokcerを開発環境にするなどのモダンな開発手法を導入しています。

作ってみての感想・ふりかえり

  • AIは万能(銀の弾丸)ではない
    • コンテキスト(これまでの指示)を忘れて近視眼的解決を取りやすい
    • 立てた問題によっては、信じられない解決策を提案する
    • 明確な指示がなかった場合、平気でハードコーディングしてしまう
  • 自分の言語化能力・企画力が試される
    • 厳密な日本語で指示を出せば出すほど、AIが良い解決策を見つけやすい
      • プロンプトエンジニアリングの重要性を理解
      • 厳密な日本語は私生活でも仕事でも重要、学んで損はない
  • AIをより上手く活用するためには、利用者の知識・経験が重要
    • AIにすべて任せるとコードは生成されても動かないこともある
    • 適宜正しい判断が取れる監督役、プロジェクトマネージャーのような役割を担う場面が合った
      • そのためには、判断を下すための知識・経験・情報取得等の重要性を改めて感じた
      • これまで技術に触れて学んだ経験はそのまま活きている

AIが「テストコードを消せ」と提案してきた話

開発中、CIのテストが失敗するエラーに遭遇しました。解決策を求めてエラーログをClaudeに渡したところ、返ってきたのは「エラーを解決するために、該当するテストコードを削除してはいかがでしょうか?」という提案でした。
もちろん、これは根本解決にはなりません。この時、AIはあくまで文脈から確率の高い単語を予測するだけで、提案の妥当性や品質を保証するものではないという事実を痛感しました。AIの提案を鵜呑みにせず、最終的な判断を下す「監督役」の重要性を思い知らされた瞬間でした。

まとめ

今回の実験を通じて、生成AIによってエンジニアの価値は下がらないと確信しました。エンジニアの持つ本質的価値「問題解決能力」と「技術的判断力」の重要性が浮き彫りになったと感じています。

コーディングをAIに任せても、そのアウトプットを業務の文脈に合う形で適用できなければ意味がありません。成果物に責任を持つ役割や、そのための知識経験は相変わらす重要です。

私のように「アイデアは合っても実装力に欠ける」と感じていた人間にとってはAIは良い相棒です。そして、これまで技術と向き合ってきた経験が、その相棒を乗りこなすための手綱となります。

Claude Codeを活用するにあたり参照した記事

今回、アプリ開発・記事を作成するにあたり、以下を参照しています。特に、erukitiさんはnoteやX, zennでClaude code以前からAIコーディングの発信をされていたので参考にしています。

Discussion