ChatGPTを利用し、実験的なことを行うのは非常に楽しいのですが、やはり仕事に役立つような使い方をして、楽したいですよね!(2回目)

・・・と書きましたが、結論から言うと「生半可な知識で挑んだら痛い目を見るぜ」という感じですね。確かに全体で考えると面倒なコマンドを入力しなくていいので、楽は出来るのです。楽は出来るのですが・・・

実際に行ってみたところ、こんな感じです。

1.正しい出力が得られるようガチャを引いている感覚
2.欲しい情報が得られるよう、入力文字を修正して何度もトライする必要がある
3.出力されるコマンド、プログラムが最新バージョンと旧バージョンで入り乱れる
4.頻繁に使われるパターンは、説明しても簡単には正しく出力してくれない


「簡潔な日本語で指示するだけで、こんなに簡単に動くプログラムが作成されます!」

・・・というのは真実でもありますが、本当に知りたい技術やコマンド、生成したいプログラムは簡単には出力されません!
Googleでの検索と同様、欲しいものを入手するための技術(スキル)が必要になってきます!

余談ですが、「4.頻繁に使われるパターンは・・・正しく出力してくれない」についての例は下記の通りです。

sudoをインストールする方法を教えて下さい。ただし、root権限でログインしたユーザーで実行しますので、root権限を与えるためのsudoコマンドは不要です。


GPT_12.png 66.99 KBsudoを使ってsudoをインストールする訳ですね・・・
そのsudoを使う為にはsudoのインストールが必要・・・

「sudo(スードゥー)の呪い」と勝手に命名します!



さて、
前回の続きをChatGPT(GPT-3.5)を利用する前提で進めたいと思います。

下記条件でシステムを生成します。

・OSはWindows11とし、環境を汚したくないのでDockerを利用する
・データベースは無償のPostgreSQLを利用する
・今後の拡張としてAIもシステムに組み込みたいので画面側はPythonを利用する


今回は画面側のシステムの生成となります。

私はpythonを使ったGUI画面のシステムを構築をするのは初めてです。ですので、知識のない人がChatGPTを利用してどこまで動くものを生成できるか?という検証として読んでいただければと思います。

まず、何も分からないので、ChatGPTに聞いてしまいましょう

Docker Desktop for Windows(導入済)の環境でコンテナ上にあるLinuxのpythonで作成されたクラサバのアプリケーションをWindowsのGUIで表示する最もおすすめで実例が多い方法を1つだけ簡潔に言葉で説明してください。また、それを実行するために必要なアプリケーションをダウンロードするページを提示してください。


GPT_9.png 86.75 KBVcXsrvをおすすめされました。早速、導入しましょう。

VcXsrvをインストールして起動しましたが、何を選択していいのか分かりません
image.png 145.75 KB
とりあえず、ChatGPTに聞いてみます。

コンテナ内でGUIアプリケーションを実行を前提とした場合、VcXsrvの起動時に何を選択すればいいですか?


GPT_10.png 54.62 KB答えてくれました!
これでWindows側の準備が整いました。後はコンテナ内でGUIアプリケーションを動かせば良さげです。
これぐらい簡単だと、世の中のすべてのマニュアル類はChatGPTに学習させてほしいところですね。

次に、GUIアプリケーションを作りましょう。下記の質問を投げてみます。

Docker Desktop for Windows(導入済)の環境でDocket上にVcXsrv(導入済)によるGUI画面の起動を前提としたubuntu LinuxOS(latest)にpython3を導入してください。Dockerfileは面倒なので作成したくないです。docker pullも省略したいです。コンテナは自動で消さないでください。ローカルPCのIPアドレスは192.168.11.12です。

※入力文字は求める出力内容を得るために何度も変更しています。

image.png 87.13 KB上記コマンドを直接実行したら、OS(Linux)とpythonのインストールまで完了してしまいました。とても楽です!

次は業務アプリケーション生成に必要なライブラリのインストールについて聞いてみましょう。

pythonのGUI画面を動かそうとしています。下記を行うための必要なライブラリのインストールコマンドを提示してください。
・GUIで画面操作する。
・PostgresSQLに接続する。


image.png 96.93 KB
コマンドを順次実行していくと、最後のコマンドで下記のエラーになりました。

bash: pip3: command not found


とりあえず、何も考えずに、エラーの文字をChatGPTに入力してみたところ、「教えてくれ」という言葉さえ入れずに、ChatGPTが対応策を考えてくれました。

image.png 49.54 KBこのコマンドを実行したら正しくライブラリのインストールが出来ました!エラーになっても安心ですね!

今度はpythonのプログラムの生成になりますが、その前にpythonのプログラムを入力するためのテキストエディタが欲しいところです。ChatGPTに聞いてみましょう。

簡単に利用できるテキストエディタの導入コマンドを提案してください


image.png 88.98 KB nanoとvimの2つが提案されました。
とりあえず、簡単そうなnanoを使うことしました。出力されたコマンドを元にインストールします。

試しに起動してみて日本語を入力したところ、文字化けしました。
文字化け.png 13.26 KB
原因について、ChatGPTに聞いてみましょう。

nanoで日本語が文字化けしてしまいます。日本語環境が整っていないからと思われますが、どのようにした方がいいですか?


image.png 87.35 KB回答の通りのコマンドを実行してみました。
再びnanoを開いて日本語入力すると、文字化けしていないことが確認できました。不明な現象が発生しても、ChatGPTに相談すれば解決ですね!

image.png 19.66 KB
では、業務システムの画面のプログラムを作ってもらいましょう。

pythonのGUI画面でPostgresSQLに検索条件(HEAD)を入力し、その結果(BODY)を表形式で表示するサンプロプログラムを提示してください。
各種情報は下記の通り
 サーバー=192.168.11.12
 データーベース名=sampledb
 ユーザー名=sample
 パスワード=sample
 スキーマー=sample
 検索対象テーブル=login_users
 検索条件(あいまい検索)=address
 出力結果=user_id(ユーザーID),name(名前),address(住所)

 
下記のように簡単にプログラムが生成されました。
※コピー可能なように画像ではなくテキスト形式にしました。

import tkinter as tk
import psycopg2
from tkinter import ttk

# PostgreSQLに接続する
conn = psycopg2.connect(
    host="192.168.11.12",
    database="sampledb",
    user="sample",
    password="sample"
)
cur = conn.cursor()

# 検索条件を入力するGUI画面を表示する
def show_search_window():
    search_window = tk.Toplevel(root)
    search_window.title("検索条件入力")
    search_window.geometry("400x200")

    label = tk.Label(search_window, text="検索条件を入力してください")
    label.pack()

    # 検索条件を入力するテキストボックス
    search_textbox = tk.Entry(search_window)
    search_textbox.pack(pady=10)

    # 検索ボタンをクリックした時の処理
    def search():
        # 入力された検索条件を取得
        search_condition = search_textbox.get()

        # 検索結果を取得
        cur.execute(f"SELECT user_id, name, address FROM sample.login_users WHERE address LIKE '%{search_condition}%'")
        rows = cur.fetchall()

        # 検索結果を表形式で表示するGUI画面を表示する
        result_window = tk.Toplevel(root)
        result_window.title("検索結果")
        result_window.geometry("600x400")

        table = ttk.Treeview(result_window, columns=["user_id", "name", "address"])
        table.heading("#0", text="No.")
        table.heading("user_id", text="ユーザーID")
        table.heading("name", text="名前")
        table.heading("address", text="住所")

        for i, row in enumerate(rows):
            table.insert("", "end", text=i+1, values=row)

        table.pack(fill="both", expand=True)

    # 検索ボタン
    search_button = tk.Button(search_window, text="検索", command=search)
    search_button.pack()

# メインウィンドウを表示する
root = tk.Tk()
root.title("PostgreSQL検索ツール")
root.geometry("400x200")

# 検索条件入力画面を表示するボタン
search_button = tk.Button(root, text="検索条件入力", command=show_search_window)
search_button.pack(pady=50)

root.mainloop()

# 接続を閉じる
cur.close()
conn.close()


なんとなく動きそうなプログラムです!
下記手順で「test.py」という名前でプログラムを保存し、実行したいと思います。
※前回構築したPostgresのデータベースサーバーの起動を忘れずに。

1.「nano test.py」と入力してnanoを起動
2.ctrl + "V"で生成されたプログラムを貼り付け
3.ctrl + "X" でnanoの終了を指示すると、保存するかを聞いてくるので"Y"を選択
4.「python3 test.py」でプログラムを実行


image.png 6.98 KB
実行すると、画面の文字が化けていますね・・・聞いてみましょう。

pythonで作成したGUI画面内の文字が化けます。


GPT_13.png 104.82 KBここまで来れば慣れたもので、「Copy code」のクリックと貼り付けを駆使して、サクサクとコマンドを実行していきます。

これで、下記のように日本語が表示されました。
image.png 11.14 KB
ここまでの実装はそこそこ簡単でした。
むしろ、ブログを書く為に、ChatGPTへ再度文字入力をして正しい結果を得ることに時間がかかりました。

そして、とうとう解決が難しい問題が発生しました・・・

日本語を入力するためのIMEが起動しません!


これについて、実現する環境や方法が複数ある?ためか、出力結果が安定せず、綺麗な出力を得ることが出来ませんでした。とにかくChatGPTの出力結果の断片を片っ端から試し、それらを取捨選択し組み合わせて、何とか動くようになりました。

結果としてChatGPTを利用して集めた情報を元に、下記コマンドを実行して、ようやくIMEを使う事が出来るようになりました。

apt install -y ibus ibus-anthy

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS="@im=ibus"

apt install -y dbus-x11

ibus-setup


image.png 67.84 KB日本語入力可能になっていることを確認

ibus-daemon -x -d
ibus restart


そして「python3 test.py」でプログラムを実行してみましょう!
image.png 65.07 KBとりあえず、正常に動作しました!
ただし、とりあえず動いたというだけで、恐らく変な操作をしたらエラーが発生すると思います。

以上で、今回の実装は完了です。
これは一例ですので、例えばVisual Studio CodeでWebシステムを構築する場合も、同じようにChatGPTを利用しつつ実装すれば・・・

環境を整えて何かしら動かすところまでは一気に実装できます!


しかし、そこから先は・・・しっかりした技術力が必要だと感じました。そして、ChatGPTにも助けてもらい、しっかりと勉強して技術力を身に着けた先には・・

超高速でシステムの構築、プログラムの実装が行える未来が待っている!


・・・そう思いました。

「ChatGPTを使えば、技術的に何も知らなくても楽して簡単に業務プログラムが作れますよ!」っていう結論を期待して書き始めましたが、ちょっとその方向でまとめることが辛くなったので、この結論とします。
※GPT-4でも試しましたが大きく変わりませんでした。

ChatGPTを使って正解を探し続けるのに疲れたら、一度基本に戻って、きちんと勉強をし直す事も必要・・・という結論で締めたいと思います。