システム開発で生成AIを使うのが当たり前の時代
今や生成AIの話題は花盛り。
2023年の後半くらいから、chatGPTで話題に火がついてから急速に発展しています。
生成AIもハイプサイクルが訪れ失速するという見方もありましたが、失速するところかむしろ加速しているように思えます。
システム開発においても生成AIを使うのは当たり前になってきました。
生成AIはシステム開発における様々な問題解決、コーディングに最も効力を発揮すると思っています。(他の分野も、勿論そうですが・・・)
今や、システム開発において、生成AIを使うことが当たり前でそれを前提としたQCD(品質、コスト、納期)を求められるようになりました。
逆に、生成AIを使わないことはQCDを大きく落とすことになってしまいます。
IntelliJでMCP使いたいねん
現在、kotlin、spring、PostgreSQLでサーバサイドアプリを開発しています。
既存の.Net、Oracleで作られたレガシーなアプリのモダナイゼーションなんですが、
- なんでもOracleのSQLでやろうとしている
- プログラムコードでできそうなものでもSQLに寄せている(怒!)
- Oracleのストアド(Pl/SQ)を使いまくり
- 軽く、500行を超える、1000行クラスのSQLがザラにある (;^_^A
- SQLにビジネスロジックを持ちすぎ
等々、まー、レガシーシステムにありがちな状況。(;^_^A
開発言語はkotlinなのでIDEは、今の所はIntelliJが唯一無二です。
近い将来、vscodeでもできるようになるようですが
サーバサイドはIDEがIntelliJでkotlin、以前からGitHub copilotは使用していました。
GitHub Copilotはpro(昔のindvisual)で10ドル/月と生成AIの中では比較的に安く、vscode、intelliJ、VisualStudio、Eclipse(最近、公式プラグインが出た)と色々なIDEで使えるのでお勧めです。
kotlinのソース上、PostgreSQLのSQL(てか、OracleのゴリゴリのSQLを直したやつ)が出現するので、そこを生成AIで何とかしたい。
で、
MCPを使って、kotlin上のコードのSQLと実際のDBの情報を組み合わせて生成AIにプロンプトを投げると、よりよい結果が得られるんじゃないか、と思ったのですが
このMCPの設定が、色々難しくて、各IDEにも依存するのか、vscode系(vscode、cursor)ではMCPは動くんですが、IntelliJではなかなか動いてくれませんでした
というか、それぞれのIDEのプラグインに依存するかもしれません。
GitHub Copilotプラグインはvscodeが一番早くで進んでいます。
IntelliJのプラグインはvscodeのよりも一歩も、二歩も遅れているように感じます。
で、最近IntelliJのプラグインもアップデートされ、やっとMCPが動くようになりました。
intelliJのGitHub Copilotプラグイン
MCPの設定
-
intelliJのGitHub Copilot Chatのウィンドウを開きます
Agentモードにします。(Agentモードじゃないと設定画面出てこない)
この画像では既にMCPが設定されているので、左端のツールのアイコンの横が 19/28になっていますが、最初は0/0になっているはずです。 -
ツールのアイコンをクリックする
この画像では既にMCPが設定されているので一覧にでてきますが、最初は何も出てこないはずです -
青い、Add More Tool・・・のリンクをクリックする
すると、mcp.jsonがウィンドウに開きます。
ホーム\AppData\Local\github-copilot\intellij\mcp.json
にできている模様 -
ここでmcp.jsonを編集
上記のPostgreSQL MCPサーバのページによると色々な設定方法がありますが、これでうまくいきました。
{
"postgresql-mcp": {
"command": "npx",
"args": [
"-y",
"@henkey/postgres-mcp-server",
"postgresql://hoge:hoge@localhost:5432/hogehoge"
]
}
}
}
また、IDEにMCPは複数設定することも可能なので、複数の場合はこのように書きます
{
"servers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
},
"postgresql-mcp": {
"command": "npx",
"args": [
"-y",
"@henkey/postgres-mcp-server",
"postgresql://hoge:hoge@localhost:5432/hogehoge"
]
}
}
}
あとはAgentモードでプロンプトを入力して、ツールアイコンをクリックしてMCPで使うtool、使わないtoolをクリックして選択、送信するだけです。
MCPの未来
生成AIがシステム開発に於いて、強力な効果を発揮することは以前からわかっていましたが、生成AIも所詮は学習データに無いものから答えは導き出すことはできません。
そこは、プロンプトとして人間が与えなければいけないんですが、その量が膨大であったり、その情報が外部のシステム(googleDrive、gitHub等々)やクローズドなDBにあったりすると、いちいちそれを入力するのが面倒です。
MCPによって、それが一気に簡略化されたのは喜ばしいことです。2023年後半からの生成AIブームのウェーブ(波)に更に、MCPのウェーブ(波)が二段になってやってきたような感じです。
MCPもまだまだ発展途上で色々問題もあります
- mcp.jsonの設定が難しい
- 設定方法が各IDEによって、微妙に異なる
これらを解決するために既にvscodeではMCPがマーケットプレースのような仕組みを取り入れています。
vscodeの最新のMCPの設定方法はこちら。
vscodeの場合はmcp.jsonの定義の一部を外部化、inputsというのが使えるらしい。
おそらく、今後の他のIDEもこのようなマーケットプレィス方式で使いたいMCPをワンクリックでIDEに設定できるような仕組みを導入していくのではないでしょうか?