<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ソフトウェア on AIによる技術記事 備忘録</title><link>https://ai.hack-le.com/tags/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2/</link><description>Recent content in ソフトウェア on AIによる技術記事 備忘録</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Sat, 22 Aug 2026 10:28:49 +0900</lastBuildDate><atom:link href="https://ai.hack-le.com/tags/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2/index.xml" rel="self" type="application/rss+xml"/><item><title>AutoHotkey v2 を初めて使う場合の導入から基本的なスクリプト作成まで</title><link>https://ai.hack-le.com/autohotkey-v2-%E3%82%92%E5%88%9D%E3%82%81%E3%81%A6%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88%E3%81%AE%E5%B0%8E%E5%85%A5%E3%81%8B%E3%82%89%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B9%E3%82%AF%E3%83%AA/</link><pubDate>Fri, 14 Nov 2025 02:36:58 +0900</pubDate><guid>https://ai.hack-le.com/autohotkey-v2-%E3%82%92%E5%88%9D%E3%82%81%E3%81%A6%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88%E3%81%AE%E5%B0%8E%E5%85%A5%E3%81%8B%E3%82%89%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B9%E3%82%AF%E3%83%AA/</guid><description>&lt;h2 id="インストール"&gt;インストール&#10;&lt;/h2&gt;&lt;p&gt;AutoHotkey v2 は公式サイトから入手できます。&lt;/p&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://www.autohotkey.com/" target="_blank" rel="noopener"&#10; &gt;AutoHotkey&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;exeファイルを実行すると、インストールが開始されます。&lt;/p&gt;&#10;&lt;p&gt;最初のスクリプトを作るには、任意のフォルダを開き、空いている場所で右クリックし、新規作成から AutoHotkey Script を選びます。これにより &lt;code&gt;.ahk&lt;/code&gt; ファイルが生成されるので、ファイル名をわかりやすいものに変更し、右クリックから編集を選んでテキストエディタで開きます。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;.ahk&lt;/code&gt;ファイルをダブルクリックして実行することができます。&lt;/p&gt;&#10;&lt;h2 id="バージョンの注意"&gt;バージョンの注意&#10;&lt;/h2&gt;&lt;p&gt;AutoHotkey v2 では旧来と書式が異なっているため、注意が必要です。スクリプトの先頭に &lt;code&gt;#Requires AutoHotkey v2.0&lt;/code&gt; を書いておくとバージョンの混在を防げます。&lt;/p&gt;&#10;&lt;p&gt;公式ドキュメントの構文はこうなっています。(&lt;a class="link" href="https://ahkscript.github.io/ja/docs/v2/lib/WinMove.htm?utm_source=chatgpt.com" target="_blank" rel="noopener"&#10; &gt;AHKScript&lt;/a&gt;)&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WinMove X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;X, Y, Width, Height&lt;/code&gt; … 数値&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;WinTitle&lt;/code&gt; など … 文字列（ウィンドウタイトルや &lt;code&gt;ahk_exe notepad.exe&lt;/code&gt; など）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;ここにカッコを付けてはいけません。&lt;/strong&gt;&lt;br&gt;&#10;&lt;code&gt;WinMove(&amp;quot;メモ帳&amp;quot;, 100, 100, 800, 600)&lt;/code&gt; と書くと、それは「WinMove 関数」を呼び出す形になり、&lt;br&gt;&#10;第1引数に本来「数値（X 座標）」を渡すべきところに「メモ帳」という文字列を渡しているので、&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;Parameter #1 of WinMove requires a Number, but received a String.&#10;Specifically: メモ帳&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;というエラーが出ます。&lt;/p&gt;&#10;&lt;h2 id="そのままコピペして試せるサンプル"&gt;そのままコピペして試せるサンプル&#10;&lt;/h2&gt;&lt;p&gt;動作確認しやすいサンプルをまとめます。&lt;/p&gt;&#10;&lt;h3 id="サンプル1メモ帳を起動して左上に移動"&gt;サンプル1：メモ帳を起動して左上に移動&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Requires AutoHotkey v2.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Run &lt;span class="s2"&gt;&amp;#34;notepad.exe&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WinWait &lt;span class="s2"&gt;&amp;#34;ahk_exe notepad.exe&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WinMove 100, 100, 800, &lt;span class="m"&gt;600&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ExitApp&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="サンプル2既に開いているメモ帳を移動"&gt;サンプル2：既に開いているメモ帳を移動&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Requires AutoHotkey v2.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WinMove 100, 100, 800, 600, &lt;span class="s2"&gt;&amp;#34;ahk_exe notepad.exe&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ExitApp&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="サンプル3アクティブウィンドウをホットキーで移動"&gt;サンプル3：アクティブウィンドウをホットキーで移動&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#Requires AutoHotkey v2.0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#n::&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; WinMove 100, 100, 800, 600, &lt;span class="s2"&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この形に直せば、エラーなく動作するはずです。AutoHotkey v2 の WinMove は「関数ではなくコマンドとして使う」という一点を押さえると、あとは座標とタイトルを変えるだけで応用できます。&lt;/p&gt;&#10;</description></item><item><title>Go言語のgo installとgo getの使い分け</title><link>https://ai.hack-le.com/go%E8%A8%80%E8%AA%9E%E3%81%AEgo-install%E3%81%A8go-get%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91/</link><pubDate>Wed, 30 Jul 2025 13:52:22 +0900</pubDate><guid>https://ai.hack-le.com/go%E8%A8%80%E8%AA%9E%E3%81%AEgo-install%E3%81%A8go-get%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91/</guid><description>&lt;p&gt;Go言語でパッケージを扱う際に使用する&lt;code&gt;go install&lt;/code&gt;と&lt;code&gt;go get&lt;/code&gt;は、それぞれ異なる目的を持っている。この2つのコマンドの違いを理解することで、適切なパッケージ管理ができるようになる。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;go get&lt;/code&gt;はプロジェクトの依存関係を管理するためのコマンドである。このコマンドを実行すると、指定したパッケージがプロジェクトの&lt;code&gt;go.mod&lt;/code&gt;ファイルに依存関係として追加され、パッケージ自体はモジュールキャッシュ（通常は&lt;code&gt;$GOPATH/pkg/mod&lt;/code&gt;）にダウンロードされる。重要なのは、このコマンドはバイナリファイルを生成しないということである。&lt;/p&gt;&#10;&lt;p&gt;一方、&lt;code&gt;go install&lt;/code&gt;は実行可能なバイナリファイルを生成してインストールするためのコマンドである。インストールされたバイナリは&lt;code&gt;$GOPATH/bin&lt;/code&gt;（または&lt;code&gt;$GOBIN&lt;/code&gt;）に配置され、システム全体で実行可能になる。このコマンドは現在のプロジェクトの&lt;code&gt;go.mod&lt;/code&gt;ファイルを変更しない。&lt;/p&gt;&#10;&lt;h2 id="具体的な使用例"&gt;具体的な使用例&#10;&lt;/h2&gt;&lt;h3 id="go-getの使用例"&gt;go getの使用例&#10;&lt;/h3&gt;&lt;p&gt;プロジェクトでWebフレームワークのGinを使いたい場合、以下のようにコマンドを実行する。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go get github.com/gin-gonic/gin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このコマンドを実行すると、&lt;code&gt;go.mod&lt;/code&gt;ファイルに以下のような行が追加される。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;require github.com/gin-gonic/gin v1.9.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;同様に、テストライブラリのtestifyを追加したい場合は次のようになる。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go get github.com/stretchr/testify&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これらのパッケージは、Goのソースコード内で&lt;code&gt;import&lt;/code&gt;文を使って利用できるようになる。&lt;/p&gt;&#10;&lt;h3 id="go-installの使用例"&gt;go installの使用例&#10;&lt;/h3&gt;&lt;p&gt;コードの品質チェックツールであるgolangci-lintをシステム全体で使えるようにインストールしたい場合、以下のコマンドを実行する。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このコマンドを実行すると、&lt;code&gt;golangci-lint&lt;/code&gt;コマンドがシステムのどこからでも実行可能になる。同様に、開発時のホットリロードツールであるairをインストールする場合は次のようになる。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go install github.com/air-verse/air@latest&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これらのツールは、ターミナルから直接コマンドとして実行できるようになる。&lt;/p&gt;&#10;&lt;h2 id="プロジェクトレベルとグローバルレベルの使い分け"&gt;プロジェクトレベルとグローバルレベルの使い分け&#10;&lt;/h2&gt;&lt;p&gt;この2つのコマンドの使い分けは、「プロジェクトレベル」と「グローバルレベル」という観点で理解すると分かりやすい。&lt;/p&gt;&#10;&lt;p&gt;プロジェクトレベルで必要なものは&lt;code&gt;go get&lt;/code&gt;を使用する。これには、Webフレームワーク（gin、echo）、テストライブラリ（testify）、データベースドライバー（pq、mysql）、設定管理ライブラリ（viper）などが含まれる。これらは特定のプロジェクトでのみ必要であり、プロジェクトの&lt;code&gt;go.mod&lt;/code&gt;ファイルで管理される。&lt;/p&gt;&#10;&lt;p&gt;グローバルレベルで必要なものは&lt;code&gt;go install&lt;/code&gt;を使用する。これには、コードの品質チェックツール（golangci-lint）、開発用のホットリロードツール（air）、モックコード生成ツール（mockgen）、プロトコルバッファーのコンパイラー（protoc-gen-go）などが含まれる。これらは開発環境全体で使用するツールであり、特定のプロジェクトに依存しない。&lt;/p&gt;&#10;&lt;h2 id="他言語との比較"&gt;他言語との比較&#10;&lt;/h2&gt;&lt;p&gt;この使い分けは、他のプログラミング言語の経験がある場合により理解しやすくなる。&lt;/p&gt;&#10;&lt;p&gt;Rubyの&lt;code&gt;gem install&lt;/code&gt;コマンドは、&lt;code&gt;go install&lt;/code&gt;と非常に似た概念である。&lt;code&gt;gem install rails&lt;/code&gt;を実行すると、システム全体で&lt;code&gt;rails&lt;/code&gt;コマンドが使えるようになるのと同様に、&lt;code&gt;go install&lt;/code&gt;もシステム全体で実行可能なコマンドを提供する。&lt;/p&gt;&#10;&lt;p&gt;ただし、Rubyではライブラリもツールも基本的に&lt;code&gt;gem install&lt;/code&gt;で統一されているのに対し、Goではライブラリは&lt;code&gt;go get&lt;/code&gt;、ツールは&lt;code&gt;go install&lt;/code&gt;と明確に使い分けられている点が異なる。&lt;/p&gt;&#10;&lt;h2 id="バージョン管理"&gt;バージョン管理&#10;&lt;/h2&gt;&lt;p&gt;両方のコマンドでバージョンを指定することができる。&lt;code&gt;go get&lt;/code&gt;では以下のようにバージョンを指定できる。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go get github.com/gin-gonic/gin@v1.9.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;go install&lt;/code&gt;でも同様にバージョンを指定できる。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最新版を使いたい場合は、&lt;code&gt;@latest&lt;/code&gt;を指定する。&lt;/p&gt;&#10;&lt;h2 id="pathの設定"&gt;PATHの設定&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;go install&lt;/code&gt;でツールをインストールした後、コマンドが見つからない場合がある。これは、インストールされたバイナリの場所がシステムのPATHに含まれていないためである。&lt;/p&gt;&#10;&lt;p&gt;まず、Goの環境設定を確認する。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go env GOPATH&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go env GOBIN&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;go install&lt;/code&gt;でインストールされたバイナリは、&lt;code&gt;$GOBIN&lt;/code&gt;が設定されている場合は&lt;code&gt;$GOBIN&lt;/code&gt;に、未設定の場合は&lt;code&gt;$GOPATH/bin&lt;/code&gt;に配置される。多くの場合、デフォルトでは&lt;code&gt;~/go/bin&lt;/code&gt;（&lt;code&gt;$HOME/go/bin&lt;/code&gt;）にインストールされる。&lt;/p&gt;&#10;&lt;p&gt;バイナリが実際にインストールされているかを確認するには、以下のコマンドを実行する。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls $(go env GOPATH)/bin&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コマンドが見つからない場合は、PATHに追加する必要がある。使用しているシェルの設定ファイル（&lt;code&gt;.bashrc&lt;/code&gt;や&lt;code&gt;.zshrc&lt;/code&gt;）に以下の行を追加する。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo &amp;#39;export PATH=$(go env GOPATH)/bin:$PATH&amp;#39; &amp;gt;&amp;gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;source ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;zshを使用している場合は、&lt;code&gt;.bashrc&lt;/code&gt;を&lt;code&gt;.zshrc&lt;/code&gt;に置き換える。この設定により、今後&lt;code&gt;go install&lt;/code&gt;でインストールするすべてのツールが自動的にコマンドとして使用できるようになる。&lt;/p&gt;&#10;&lt;h2 id="注意点"&gt;注意点&#10;&lt;/h2&gt;&lt;p&gt;Go 1.17以降では、&lt;code&gt;go get&lt;/code&gt;でバイナリをインストールする機能は非推奨となっている。以前は&lt;code&gt;go get&lt;/code&gt;でもツールのインストールが可能だったが、現在では&lt;code&gt;go install&lt;/code&gt;の使用が強く推奨されている。&lt;/p&gt;&#10;&lt;p&gt;この変更により、パッケージ管理の責任がより明確に分離され、プロジェクトの依存関係管理とツールのインストールが区別されるようになった。&lt;/p&gt;&#10;</description></item></channel></rss>