4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AutoHotKeyで作る超個人的作業効率化ツール① ChatGPTによるコーディング支援

Last updated at Posted at 2023-01-26

はじめに

個人的に使ってるAutoHotKeyのスクリプトを晒すだけの記事です。
コードの解説などはしていません。
というかAutoHotKeyの文法あんまり理解してないまま書いてます。

image.png
image.png

VSCodeにChatGPTの拡張機能がありますが、devContainer環境ではブラウザのパスを指定できずうまく動かなかったので自分で作りました。
わざわざこっちを使うメリットは
・アプリを問わず使える
・AIに対する指示を自由に登録できる
・APIを使っていないのでタダ
ぐらいです。

インストール方法

1 AutoHotKey Version 1.1.36.02をインストール

2 下記のchatGPT.ahkとorder.txtをコピペしUTF8 BOM付きで(重要)同じディレクトリに保存

3 chatGPT.ahkをAHKで開く

使い方

1.既定のブラウザでChatGPTにログインしておく

2.テキストを選択しCtrl+Shift+Xを押す

3.選択したテキストに対してChatGPTに行わせる指示をクリック

chatGPT.ahk
global CustomOrder


^+x::
  array := {}

  orderIndex := 0
  Loop, Read, order.txt
  {
    parts := StrSplit(A_LoopReadLine, ",")
    array[parts[1]] := parts[2]
    
  }
  length := 0
  for index, value in array
      length++

  clipboard := ""
  order := ""
  Send ^c
  ClipWait, 1
  my_Text := clipboard
  Gui, Font, s12
  For k, v in array
  {
    gui, add, button,x+5 vtext%v% ggeneric, % k
  }
    GUI Add, Edit, X10 y+20 W200 +Multi vCustomOrder
   GUI, Add, Button, x+5 Gcustom, カスタム
    GUI, Show, , ChatGPT
    GuiControl, Focus, CustomOrder
    Return


    custom:
    Gui, Submit, NoHide
    Gui, Destroy
    ORDER_GPT(customOrder,Clipboard)
    Return

    
    generic:
    StringReplace, order, A_GuiControl, text,
    Gui, Destroy
    ORDER_GPT(order,Clipboard)

    return

    ;Xボタンが押されたときのハンドラ
    GuiClose:
    Gui, Destroy
return


ORDER_GPT(order,body) {
 
  run, https://chat.openai.com/chat
  Sleep, 200
  while (A_Cursor = "AppStarting" or A_Cursor = "Wait") ; Wait for browser
    continue
  Sleep, 200
  while (A_Cursor = "AppStarting" or A_Cursor = "Wait") ; Wait for browser
    continue
  Sleep, 500

titleToWaitFor := "New chat"

SetTitleMatchMode, 2
while (!WinExist(titleToWaitFor))
{
    Sleep, 100
}

WinActivate, %titleToWaitFor%
WinGetTitle, currentTitle

IfInString, currentTitle, % titleToWaitFor
{
    clipboard := order
    sendinput, ^v
    Sleep, 200
    clipboard := body 
    sendinput, ^v
    Send, {Tab}
    Send, {Enter}
}
else
{
    MsgBox, エラーが発生しました
}
}
order.txt
バグ修正,このコードのバグを修正して下さい
リファクタリング,このコードをリファクタリングして下さい
解説,このコードを説明して下さい
TS型変換,このコードをTypescriptの型に変換して下さい

TS型変換はDBのスキーマからTypescriptの型を生成するときに使ってます。
くっそ便利。

指示の登録方法

order.txtを編集し
カンマの前にボタンのテキスト,カンマの後にそのボタンを押したときにchatGPTに対して与える指示を記述して下さい。

プログラミングに限らず文章の要約、校正、翻訳などにも利用できます。

校正,以下の文章を校正してください。
要約,以下の文章を校正してください。

その他

AutoHotKeyでブラウザをDOM経由で操作するには色々必要なので
単純にブラウザ開いて指示と選択した内容貼り付けてタブキー押してEnterとやってるだけです。

そのためブラウザでurlにフォーカスが当たっている、具体的には新しいタブを開いている(タブ一覧に新しいタブがあるだけならOK)状態だと変なところに入力してしまい、うまく動作しません。

結論

AIに仕事をやって欲しいけど仕事は奪わないで欲しい

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?