$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

最近エンジニアリングにどうAIを活用しているか

最近CLINEに全部賭けろのような記事もあったように、AIエージェントによるコーディングが非常に話題になっている。一方自分は色々試してみるものの、仕事上ではなかなかAIエージェントによるコーディングをうまく使いこなせていない。

ただAIエージェントによるコーディングは置いておいて、エンジニアリングに普通に便利にAIを使えている。それによって数年前と比較するとかなり生産性が上がっている。

そこで今回は自分がエンジニアリングにどうAIを活用しているか、何が便利に思っているかをまとめてみる。

  • CursorのTabキーによる補完
  • 自分が知りたい技術領域について壁打ちしてもらって作りながら学ぶ
  • コードを読み込んで概要をmermaidで図にする
  • 7割くらいの精度でざっくり理解したい時のコード調査
  • コーディングエージェントでPoCを作る
  • 枯れた技術の使い方のキャッチアップにChatGPT、新しい技術にPerplexity Pro

CursorのTabキーによる補完

AI活用の中でもっとも大きく貢献を受けているのはCursorのTabキーによる補完だと思う。マルチライン編集、スマートリライト、カーソル予測が強力すぎて助かる。

なぜ便利かなと考えてみると、この補完は自分が一瞬でレビューできるような規模の自動コード生成なため、コーディングエージェントと比べれば高速にフィードバックを回しながら初めから品質の高いコードに修正していけるからかなと思った。

最近はVSCodeもNext Edit Suggestionsが出てきているので同じような体験になっていきそう。

自分が知りたい技術領域について壁打ちしてもらって作りながら学ぶ

自分が知りたい技術領域を学ぶ時には書籍を読むことが多かった。しかしその技術領域について実際に手を動かしてみて作ってみた方が理解が深まることも感じていた。ただ、以前はいろんな領域でそのようなことをするのはなかなかハードルが高かった。

しかし最近はChatGPTなどに壁打ちしてもらうことで、自分が知りたい領域を学ぶための作る題材を案出ししてもらい、さらに壁打ちしながら実装を進めることができるようになった。そのため作ることで学ぶということがしやすくなった。

たとえば最近だと、リアルタイム通信サーバーの技術を学びたいと思った時がある。そのときChatGPTやClaudeに壁打ちしてもらいながらMQTT+Protocol Buffersを使ってリアルタイムに2次元位置を同期するサーバーを作った。単純に書籍を読むよりだいぶ知識が深まったと思うし、その過程でGoでサーバー実装をするときのポイントも理解が深まったと思う。

また、自分が学びたい範囲以外だが最低限必要な部分を、雑にコーディングエージェントに任せられるようになっているのも嬉しい。先ほどの話だと、リアルタイム通信サーバーの動きを理解するために簡単なクライアントもあった方が嬉しい。一方それは別に今学習する必要のあるものではないので、Cursor Agentにすべてお任せしてTUIでクライアントを書いてもらった。このくらいなら一発生成できるので便利。

コードを読み込んで概要をmermaidで図にする

あまりよく分かってない領域について、コードを読み込んで概要をAIに説明してもらうのも非常に便利に使っている。とくにmermaidで図にしてもらいながら解説してもらう方法が良い。

たとえば最近だと

  • Terraformのコードを読み込んで、どのようなコンポーネントが作られていてどのようにそれらのコンポーネントが組み合わさっているかを図で解説してもらう
  • そして今後のためにその図をREADME.mdに貼り付けておく

という使い方がめちゃくちゃ便利だった。

7割くらいの精度でざっくり理解したい時のコード調査

実現性調査やweek単位程度のざっくり見積もりを出したい時に、7割程度の精度でいいのでコードや仕組みを理解したいことがある。これまでは頑張ってコードを追いかけていたが、大規模アプリケーションだとなかなか大変だった。

こういうケースではCursor Agent + コンテキストが多いGemini 2.5 Proを使ってコードを調査してもらうと非常に便利。たとえば、DBのhogeテーブルのfugaフィールドを更新している場所を知りたいような時は以下のように質問を繰り返して、数分程度でざっくりと理解していけた。

  • hogeテーブルのfugaフィールドの値を更新しているところはどこ?
    • フィールドを更新しているメソッドを教えてもらえた
  • そのメソッドはどこから呼ばれているか辿っていって、どのAPIで更新しているかを教えて
    • API定義の部分まで辿って教えてくれた
  • ではそのAPIはどこから呼ばれているか?クライアントのコードも辿って教えて
    • 叩いている場所を教えてくれた

こういう調査をするときはCursor Rulesやドキュメントを使って以下のような情報を与えると精度が高まる。一度準備しておけば使いまわせるので時間をとって準備しましょう。

  • プロジェクトのディレクトリ構造
  • 利用しているフレームワークとして、あるURLが与えられたときにどのコントローラーにマッピングされるのか
  • 利用しているORMとして、フィールドがどういう構造にマッピングされるのか

コーディングエージェントでPoCを作る

仕事上でコーディングエージェントで本番用のコードを書くことはなかなか成功していないものの、PoCを作ってそもそも動きが良いかを確認するのには非常に便利に使えている。

最近はMySQLのスキーマ構造を圧縮して返すMCPサーバーのmysql-schema-explorer-mcpを作ったが、そもそもこのようなMCPを作った時にSQL生成の精度が上がるのかが不明だった。そこでまずはコーディングエージェントにほぼお任せで3時間程度で動くものを作り、実際に試してみるというのをやった。その結果、なんとなくうまく動いていそうということが分かったので、その後細かい調整やリファクターをしていき、公開をするという流れを行えた。

枯れた技術の使い方のキャッチアップにChatGPT、新しい技術にPerplexity Pro

あとはやはり単純にChatGPTやPerplexity Proを使って、知らない技術のキャッチアップをしたり、ライブラリの使い方を調べたりするのが便利。使い分けとしては

  • すでに枯れた技術の場合、モデルの中に知識が入っているのでChatGPTで調べる
  • 新しい技術の場合は検索してまとめて欲しいのでPerplexity Proで調べる。ChatGPTのウェブ検索などもあるが、Perplexity Proの方がなんとなく見やすく速いので多用している

関係ないけどPerplexity Proは子供が「ゲームでこういうことしたいんだけどどうしたらいいの?」という雑質問が来た時に使うのが便利すぎてずっと使っている。

まとめ

このようにエンジニアリングのためにAIを便利に使っている。仕事でバリバリコーディングエージェントを使いこなせているとは言えないものの、これまでのやり方と比較するとかなり生産性が上がっていて嬉しい。自分としてはものづくりするときのだるい部分をかなりAIに任せられているなと感じている。

AIエージェントによるコーディングについてはまだ使いこなせていないものの、今後も色々お試ししてみたいなと思う。