見出し画像

ChatGPTに業務システム移行について聞いてみたメモ

 巷で流行りのChatGPTについて、仕事につかえるかどうか試してみた。
使えるところ・使えないところがありそう。
 一般論のやりとりでは問題ない。専門的なコーディングに関しては相当の技術力を誇る。けど、指示の仕方が悪いと、どんどん変な回答をしてくる。今のところはまだ、指示出しという観点で、人間さまのエンジニアの仕事はたっぷり残っていそうな気はする。

※ヘッダ画像は、「基幹業務システムの移行作業のことをAIに聞いてみた」というお題で、AI(DALL-E)に作ってもらった。

(1)移行作業の見積について聞いてみる

【所感】

 無償利用の範囲でも、よい壁打ち相手・チェッカーになってくれる印象。
 タスク・リスク・見積項目・実装案について尋ねたが、どの質問についてもそつのない回答をくれた。リスクにダウンタイムを挙げるなどは、運用を経験している玄人の仕草だ。
 無償利用では生の業務データを食わせるわけにもいかないけど、固有の事例集などをインプットにしたら、あっさり人間以上になりうる。

タスクを実施順に列挙

【データ移行としか言ってないのに、ユーザのトレーニングのことまで書いてくれた。親切。】

リスク要素を重大度の順に列挙

【システムのダウンタイムは、エンジニア視点ではなかなか出せないと思う。運用経験者かな。】

見積書の項目を列挙

【保証のことも忘れずに書いてる。今後の長いお付き合いを考慮する、できる営業のようだ。】

データ移行スクリプトの実装案を列挙

【そつがない。ログの作成も忘れていない。やはり運用経験者か。】

(2)移行用のスクリプトを実装してもらう

【所感】

 答えは早いけど気は利かない、優秀なエンジニアを相手にしている印象。
 前提を明示して、順に指示をすると、まともな答えを返してくれる。
(これは、相手が人間でも同じだろう。)
 生成してくれるコードは、指示出し次第で細かく更新もしてくれるけれど、実環境での動作確認まではしてくれない。今回はちゃんと動くものを出してくれたけれど、時々ぽっかりウソを言うこともあるようだ。油断はできない。

実装案の列挙

【まっさきにSSISを出してくるあたり、Microsoftの回し者かとさえ思う。】

bcpを生成するためのSQLクエリの実装

【ちゃんと説明付きで出してくれる。スクリプトはちょっと微妙だったけど一応、動いた。】
SELECT 'bcp ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ' out "C:\Data\' + name + '.dat" -S <source_server> -T -n' as bcp_command
FROM sys.tables


【こちらのスクリプトも、ちゃんと動作した。】
SELECT 'bcp ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ' in "C:\Data\' + name + '.dat" -S <destination_server> -T -n' as bcp_command
FROM sys.tables


【ちょっと違う、この3番目だけは、文脈の読めてないスクリプトになっている。】
DECLARE @format_file_path VARCHAR(200)
SET @format_file_path = 'C:\Data\format_file.fmt'

SELECT 'bcp ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ' format nul -S <source_server> -T -f "' + @format_file_path + '"' as bcp_command
FROM sys.tables

仕様変更への対応

【指摘したら即修正してくれた。仕事が早い。】
DECLARE @format_file_path VARCHAR(200)
SET @format_file_path = 'C:\Data\'

SELECT 'bcp ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ' format nul -S <source_server> -T -f "' + @format_file_path + name + '_format_file.fmt"' as bcp_command
FROM sys.tables

(3)【失敗例】移行用のスクリプトを実装してもらう

【所感】

 こちらの指示出し前提が曖昧なまま、完全な実装をさせようとしてしまうと、このように迷走してしまった。これはたぶん、こちらの指示の出し方が悪かった。

差異箇所を確認するスクリプト

【これは頼んだ通りの仕事をしてくれている。】

動作仕様の変更

【変更依頼にも即対応。】
【ちゃんと変更点についての説明もしてくれる。誠実。】

要件の変更

【バックアップ取ってから実行してよね、と注意してくれる。親切。】

さらに仕様変更

【引き続きバックアップについて心配してくれている。ちょっと心配性かも。】

またまた仕様変更

【「バックアップを取って」…。仕様変更依頼を繰り返す人間を、信用してくれてないのかも。】
【でもごめんよ、こっちがやってほしいこととは、まだやっぱり違うのだ。】

四たびの仕様変更

【なんど仕様変更リクエストしても、気を悪くせず即対応してくれる。】
【…ほんとうに彼が気を悪くしていないかは分からないが、表向き文句は言ってこない。】

(この人間は更に思い付きで仕様変更を言いだす)

【こんないい加減な人間にも、bcpのバージョン差異などの注意点も教えてくれる。親切。】
【でも、これだとこっちの求めているものとは違う…。どうしようか、説明が難しいな。】

(人間は更にダメだしを行う)

【申し訳ありません、というところから回答してくれる。気遣い。】
【けど、違うんだ、こっちはbcpを使ってほしかったんだよ。】

(人間は重ねて違うことを言ってくる)

【即答で直してくれたけど…そこじゃないんだ、bcpコマンドの作り方が変なのだよぅ。】

(まだ人間が手直しを求めてくる)

【ついに匙を投げられたのか。できません、と言われてしまった。】
【「ちっ、こいつ面倒なことばっか言ってきやがって、何をやらせたいんだか分かんねぇよ、もういいや『できません』って答えちゃえ」とか、思われてしまったのかしら……。】
【前述の(2)のやり方で、「bcpコマンドを利用」して「レコードを過不足なく複写する」クエリーはあっさり作れるのだけど、人間のほうの誘導が悪いと、こんなふうに回答もおかしくなる。】


*実際の順序としては、(3)を先に進めてみて、らちがあかなくなったのでやり直して(2)を行ったのだった。
 いちど上手くいかなくて、御破算にしてやり直しをしても、気を悪くせずに付き合ってくれるというのは、非常に有り難い。

以上。