「前提」
Udemyの講座を学習中の初学者が何故?そうなるのか説明のない講義で分からなかった点をchat GPTやGoogle検索で模索した回答になります。ご了承下さい
SQLiteをインストールする手順は、使用しているオペレーティングシステムによって異なりますが、一般的な方法を以下に示します。
-
Linux (Ubuntuを例として),Windowsは省きます(?)
-
macOS
macOSには通常、SQLiteがプリインストールされています。ターミナルでsqlite3コマンドを実行して、SQLiteシェルを開始できます。
※既にインストールされている場合、☑️までスキップ
aqlite3
//sqlite3 インストール確認
sqlite> .exit
//sqlite3 を抜ける
① Homebrew(brew)のインストール:
ターミナルに次のコマンドを入力して、Homebrewをインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
このコマンドは、Homebrewのインストールスクリプトをダウンロードして実行します。指示に従ってインストールが進行します。インストールが完了すると、Homebrewが利用可能になります。
② SQLite(sqlite3)のインストール:
brew install sqliteを使用してSQLiteをインストール
brew install sqlite
これにより、最新のバージョンのSQLiteがHomebrewからダウンロードされてインストールされます。必要に応じて、依存関係も一緒に解決されます。
インストールの確認: インストールが完了したら、次のコマンドを使用してSQLiteが正しくインストールされたことを確認します。
sqlite3 --version
関数を使って確認することも可能です。☑️
sqlite> select sqlite_version();
3.26.0
このコマンドを実行すると、SQLiteのバージョンが表示されます。これでSQLiteが正常にインストールされ、使用可能になります。
これでSQLiteがインストールされました。必要に応じて、SQLiteを使用してデータベースを作成したり、操作したりすることができます。
「補足」
・macOS用のパッケージ管理システムであるHomebrewを使用してSQLiteをインストールするコマンド『brew install sqlite』
・brew install sqliteコマンドは、SQLiteをHomebrewのパッケージレポジトリからダウンロードし、適切にインストールします。これにより、ターミナルでsqlite3コマンドを使用してSQLiteシェルを開始できるようになります。
③ Xcode 15をインストール(※不要な方はスキップ?)
-> https://developer.apple.com/xcode
Install gcc C言語のライブラリをインポートする為GOがビルドする際に必要。
Xcode 15がmacOSにおいて必要な理由は、Xcodeが開発者向けの包括的なツールキットであり、C言語やJavaなどのプログラミング言語に関連するコンパイラや開発ツールを含んでいるからです。
gcc: Xcodeには、gcc(GNU Compiler Collection)も含まれています。gccは、C言語やC++言語、Objective-C言語などのプログラミング言語のコンパイラとして広く使用されています。
clang: C言語やC++言語のコンパイラ(コンピュータが理解できる形式に変換)であり、macOSおよびiOSのアプリケーション開発に広く使用されています。
私のPCはLate 2013のMacBook ProはmacOS Big Sur (11)の為、Xcode 12.5までがサポートされているので最新のバーションから落として環境を整えます。
④Go言語でデータベースを操作する場合、SQLデータベースのドライバーをインストールする必要があります。
# SQLiteのドライバのインストール
go get github.com/mattn/go-sqlite3
Modules を使う流れは以下。
go mod init //初期化する
go buil //ビルドコマンドで、依存モジュールを自動インストールする
go list -m all //現在の依存モジュールを表示する
go get //依存モジュールの追加やバージョンアップを行う
go mod tidy //使われていない依存モジュールを削除する
mattn/go-sqlite3が推薦される理由として「both included in and pass the compatibility test suite at https://github.com/bradfitz/go-sql-test .」この文は、Go言語で使用されるSQLデータベースドライバーが、特定の互換性テストをクリアしたことを述べているようです。
⑤ CGO_ENABLED=1を設定する手順は、プラットフォームによって異なりますが、一般的な方法を以下に示します。
Unix/Linux/macOS
ターミナルを開き、次のコマンドを入力します:
export CGO_ENABLED=1
これにより、現在のシェルセッションでCGO_ENABLEDが1に設定されます。また、.bashrcや.bash_profileなどの設定ファイルに上記の行を追加することで、永続的に設定を維持することもできます。
Windows
コマンドプロンプトを開き、次のコマンドを入力します
Mac
set CGO_ENABLED=1 //環境変数を設定
echo $CGO_ENABLED //確認 1が表示されていればOK
Windows
set CGO_ENABLED=1
$env:CGO_ENABLED=1
Linax
echo $CGO_ENABLED
(Windows)
echo %CGO_ENABLED%
これにより、現在のセッションでCGO_ENABLEDが1に設定されます。環境変数を永続的に設定するには、コントロールパネルの「システムとセキュリティ」>「システム」>「システムの詳細設定」>「環境変数」を開いて、ユーザー環境変数またはシステム環境変数にCGO_ENABLEDを追加します。
これらの手順に従うことで、CGO_ENABLEDを1に設定することができます
「補足」
CGO_ENABLEDは、Go言語のビルドシステムであるcgo(C Go)の有効化または無効化を制御する環境変数です。cgoは、GoプログラムがC言語のコードや外部ライブラリと連携するための仕組みを提供します。
CGO_ENABLEDは通常、次の3つの値を取ります
0: cgoを無効化します。これは、Goプログラムが純粋なGoコードのみでビルドされることを意味します。C言語のコードや外部ライブラリへの依存がない場合に使用されます。
1: cgoを有効化します。これは、GoプログラムがC言語のコードや外部ライブラリと連携する場合に使用されます。cgoを使用すると、GoからC関数を呼び出したり、CからGo関数を呼び出したりすることができます。
任意の非ゼロの値: 通常、cgoが有効かどうかを決定するために使用されます。例えば、CGO_ENABLED=1と設定することで、cgoが有効化されます。
CGO_ENABLEDの値は、go buildやgo runなどのビルドコマンドを実行する前に設定されることが一般的です。この環境変数を使用することで、プログラマはビルドプロセスを制御し、必要に応じてcgoを有効化または無効化することができます。