![見出し画像](https://assets.st-note.com/production/uploads/images/99978563/rectangle_large_type_2_f7b22c3d1c53ed29800fdfb29dc18af6.png?width=800)
ChatGPTに業務システム移行について聞いてみたメモ
巷で流行りのChatGPTについて、仕事につかえるかどうか試してみた。
使えるところ・使えないところがありそう。
一般論のやりとりでは問題ない。専門的なコーディングに関しては相当の技術力を誇る。けど、指示の仕方が悪いと、どんどん変な回答をしてくる。今のところはまだ、指示出しという観点で、人間さまのエンジニアの仕事はたっぷり残っていそうな気はする。
※ヘッダ画像は、「基幹業務システムの移行作業のことをAIに聞いてみた」というお題で、AI(DALL-E)に作ってもらった。
(1)移行作業の見積について聞いてみる
【所感】
無償利用の範囲でも、よい壁打ち相手・チェッカーになってくれる印象。
タスク・リスク・見積項目・実装案について尋ねたが、どの質問についてもそつのない回答をくれた。リスクにダウンタイムを挙げるなどは、運用を経験している玄人の仕草だ。
無償利用では生の業務データを食わせるわけにもいかないけど、固有の事例集などをインプットにしたら、あっさり人間以上になりうる。
タスクを実施順に列挙
![](https://assets.st-note.com/img/1679703675259-2dqd1Byyj0.png?width=800)
リスク要素を重大度の順に列挙
![](https://assets.st-note.com/img/1679703748750-nm1XwHf4ZW.png?width=800)
見積書の項目を列挙
![](https://assets.st-note.com/img/1679703783773-fao83gWyhZ.png?width=800)
データ移行スクリプトの実装案を列挙
![](https://assets.st-note.com/img/1679703850813-rLJwDQ8XNp.png?width=800)
(2)移行用のスクリプトを実装してもらう
【所感】
答えは早いけど気は利かない、優秀なエンジニアを相手にしている印象。
前提を明示して、順に指示をすると、まともな答えを返してくれる。
(これは、相手が人間でも同じだろう。)
生成してくれるコードは、指示出し次第で細かく更新もしてくれるけれど、実環境での動作確認まではしてくれない。今回はちゃんと動くものを出してくれたけれど、時々ぽっかりウソを言うこともあるようだ。油断はできない。
実装案の列挙
![](https://assets.st-note.com/img/1679704006578-4nSMPEz9zC.png?width=800)
bcpを生成するためのSQLクエリの実装
![](https://assets.st-note.com/img/1679704109241-B85iFmmQKq.png?width=800)
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
![](https://assets.st-note.com/img/1679704166894-WTtgAxcsPd.png?width=800)
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
![](https://assets.st-note.com/img/1679704188581-vXl2cn1NwL.png?width=800)
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
仕様変更への対応
![](https://assets.st-note.com/img/1679704235970-KdkqQt8Mp8.png?width=800)
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)【失敗例】移行用のスクリプトを実装してもらう
【所感】
こちらの指示出し前提が曖昧なまま、完全な実装をさせようとしてしまうと、このように迷走してしまった。これはたぶん、こちらの指示の出し方が悪かった。
差異箇所を確認するスクリプト
![](https://assets.st-note.com/img/1679704393910-dn0LO2mif1.png?width=800)
動作仕様の変更
![](https://assets.st-note.com/img/1679704428549-mQHViFk5A0.png?width=800)
![](https://assets.st-note.com/img/1679704450321-XR1Ewa49wV.png?width=800)
要件の変更
![](https://assets.st-note.com/img/1679704493356-eNjlu75LgN.png?width=800)
さらに仕様変更
![](https://assets.st-note.com/img/1679704567522-eCOLw3Sden.png?width=800)
![](https://assets.st-note.com/img/1679704587498-hCH7ykKOA2.png?width=800)
またまた仕様変更
![](https://assets.st-note.com/img/1679705235226-Ni65T2S8OQ.png?width=800)
![](https://assets.st-note.com/img/1679705261560-sVpnG8nOrj.png?width=800)
【でもごめんよ、こっちがやってほしいこととは、まだやっぱり違うのだ。】
四たびの仕様変更
![](https://assets.st-note.com/img/1679705404885-2shJwdIN0o.png?width=800)
![](https://assets.st-note.com/img/1679705439667-TBQFo5pAry.png?width=800)
![](https://assets.st-note.com/img/1679705458021-0HJUifb6Ye.png?width=800)
【…ほんとうに彼が気を悪くしていないかは分からないが、表向き文句は言ってこない。】
(この人間は更に思い付きで仕様変更を言いだす)
![](https://assets.st-note.com/img/1679705590735-n26EsK7MWf.png?width=800)
![](https://assets.st-note.com/img/1679705628980-6hMaB7si7G.png?width=800)
【でも、これだとこっちの求めているものとは違う…。どうしようか、説明が難しいな。】
(人間は更にダメだしを行う)
![](https://assets.st-note.com/img/1679705775638-X3RBo32sgJ.png?width=800)
![](https://assets.st-note.com/img/1679705808400-niqb8D1nnX.png?width=800)
【けど、違うんだ、こっちはbcpを使ってほしかったんだよ。】
(人間は重ねて違うことを言ってくる)
![](https://assets.st-note.com/img/1679705919222-mVmj272W9y.png?width=800)
![](https://assets.st-note.com/img/1679705956181-ONDVHtrJxb.png?width=800)
(まだ人間が手直しを求めてくる)
![](https://assets.st-note.com/img/1679706038002-ego7nLtV8i.png?width=800)
【「ちっ、こいつ面倒なことばっか言ってきやがって、何をやらせたいんだか分かんねぇよ、もういいや『できません』って答えちゃえ」とか、思われてしまったのかしら……。】
【前述の(2)のやり方で、「bcpコマンドを利用」して「レコードを過不足なく複写する」クエリーはあっさり作れるのだけど、人間のほうの誘導が悪いと、こんなふうに回答もおかしくなる。】
*実際の順序としては、(3)を先に進めてみて、らちがあかなくなったのでやり直して(2)を行ったのだった。
いちど上手くいかなくて、御破算にしてやり直しをしても、気を悪くせずに付き合ってくれるというのは、非常に有り難い。
以上。