00.0 環境チェック — このコースを始める前に¶
このノートブックは、このコースを最後まで進められる環境が整っているかを確認します。
このコースでは Go でバックエンド開発を学びます。ノートブックのカーネルは Go (gonb) です。 上のセルを順に「Run」(Shift+Enter)またはメニューの「Run All」で実行してください。 すべてのチェックが「✅」表示になれば準備完了です。
このノートブックを通過できない場合: まず
README.mdの「環境構築」を確認してください。
1. Go が動くか¶
まず、Go のランタイムが動作していることを確認します。
%% で始まるセルは GoNB が main 関数に自動で包んで実行する、いわば「スクリプト風」のセルです。
println は Go の組み込み関数で、import なしで使えます。
%%
println("✅ Go は動作しています (1+1 =", 1+1, ")")
✅ Go は動作しています (1+1 = 2 )
2. 関数の定義と再利用(このコースの基本のセル書式)¶
GoNB では、関数の定義はセルの先頭に %% を付けない「宣言セル」に書きます。
宣言した関数は、その後のセルから再利用できます(ノートブック内で同じパッケージとして累積されます)。
func double(x int) int {
return x * 2
}
func greet(name string) string {
return "こんにちは、" + name
}
%%
println("double(21) =", double(21))
println(greet("Recursion"))
double(21) = 42 こんにちは、Recursion
3. import と fmt¶
標準ライブラリ fmt を import して使います。import は宣言セルに書きます。
import "fmt"
%%
fmt.Println("fmt が使えます:", fmt.Sprintf("円周率は約 %.3f", 3.1415926535))
fmt が使えます: 円周率は約 3.142
4. HTML 表の表示(gonbui)¶
このコースでは、DB のクエリ結果や構造の一覧を HTML 表で「見て分かる」ように表示します。
github.com/janpfeifer/gonb/gonbui の DisplayHTML を使います。
import "github.com/janpfeifer/gonb/gonbui"
%%
gonbui.DisplayHTML(`
<table border="1" cellpadding="4" style="border-collapse:collapse">
<tr><th>チェック項目</th><th>結果</th></tr>
<tr><td>gonbui (HTML表示)</td><td>✅ 動作</td></tr>
</table>`)
gonbui.Sync()
| チェック項目 | 結果 |
|---|---|
| gonbui (HTML表示) | ✅ 動作 |
5. グラフの表示(gonum/plot)¶
量的な関係は PNG グラフで可視化します。gonum.org/v1/plot でグラフを作り、
PNG としてノートブックに埋め込みます。
🔴 注意: gonum/plot のデフォルトフォントは日本語グリフを描画できません(文字化けではなく、
該当文字が無音で消えるため見落としやすい)。このコースの規約として、PNG内のテキスト
(タイトル・軸ラベル・凡例)は短い英字のみにし、日本語の説明はPNGの直下のMarkdown/HTML表に書きます。
このグラフのタイトルも y = x^2 (try it!) のように英字のみにしています。
import (
"bytes"
"gonum.org/v1/plot"
"gonum.org/v1/plot/plotter"
"gonum.org/v1/plot/vg"
)
%%
p := plot.New()
p.Title.Text = "y = x^2 (try it!)"
p.X.Label.Text = "x"
p.Y.Label.Text = "y"
pts := plotter.XYs{{0, 0}, {1, 1}, {2, 4}, {3, 9}}
line, err := plotter.NewLine(pts)
if err != nil {
panic(err)
}
p.Add(line)
w, err := p.WriterTo(8*vg.Centimeter, 5*vg.Centimeter, "png")
if err != nil {
panic(err)
}
var buf bytes.Buffer
w.WriteTo(&buf)
gonbui.DisplayPNG(buf.Bytes())
gonbui.Sync()
6. SQLite が動くか¶
データベースのレッスンで使う SQLite(純 Go 実装)を確認します。
このコースの規約として、:memory: ではなく一時ファイル DB を使い、再実行できるように最初にテーブルを消し直します。
(なぜ :memory: がダメなのかは 02 章で詳しく学びます。)
import "database/sql"
import _ "modernc.org/sqlite"
func openCourseDB(path string) *sql.DB {
db, err := sql.Open("sqlite", path)
if err != nil {
panic(err)
}
return db
}
%%
db := openCourseDB("file:_envcheck.db")
defer db.Close()
db.Exec("DROP TABLE IF EXISTS env_check")
db.Exec("CREATE TABLE env_check (id INTEGER PRIMARY KEY, name TEXT)")
db.Exec("INSERT INTO env_check (name) VALUES ('apple'), ('banana'), ('cherry')")
rows, err := db.Query("SELECT id, name FROM env_check ORDER BY id")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
rows.Scan(&id, &name)
println(" ", id, name)
}
println("✅ SQLite が動作しています")
1 apple 2 banana 3 cherry ✅ SQLite が動作しています
まとめ¶
すべて ✅ が表示されましたか?
- ✅ Go が動く
- ✅ セルの書式(宣言セル +
%%実行セル)が分かった - ✅ import(fmt / gonbui / plot / sqlite)が動く
- ✅ HTML 表と PNG グラフを表示できる
これで 01-oop から始められます。次のレッスンへ進みましょう。