ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Genie アプリケーションをロードする
Genie で開発しているとき、コントローラの新規作成・ルート定義の確認・REPL からのモデル操作などを行うには、アプリケーションを REPL にロードしておく必要があります。本記事ではロード手順とつまずきポイントを整理します。
ロードしないと起こるエラー
アプリ依存のコマンドをロードせずに実行すると以下のエラーが出ます。
julia> MyApp.newcontroller("Books")
ERROR: UndefVarError: MyApp not defined
Stacktrace:
[1] top-level scope at none:0
これは MyApp モジュールがまだ Julia の名前空間に読み込まれていないため。
正しいロード手順
1. アプリディレクトリに移動して Julia を起動
重要: Julia を起動するのは必ずアプリディレクトリに cd してからです。これを忘れると Project.toml が読まれず以降の手順が機能しません。
# 例: c:\T\Projects\MyApp に移動
cd c:\T\Projects\MyApp
# Julia 起動
julia
2. Pkg を使ってアプリプロジェクトを有効化
julia> using Pkg
julia> pkg"activate ."
# 別の書き方
julia> Pkg.activate(".")
これで Project.toml に定義された依存パッケージが解決され、Manifest.toml で確定されます。
3. Genie.loadapp() でアプリをロード
julia> using Genie
julia> Genie.loadapp()
_____ _
| __|___ ___|_|___
| | | -_| | | -_|
|_____|___|_|_|_|___|
┌ Info:
│ Starting Genie in >> DEV << mode
└
[ Info: Logging to file at c:\T\Projects\MyApp\log\dev.log
これでアプリのモジュール(MyApp)が REPL に登録され、アプリ依存のコマンドが使えるようになります。
4. コントローラを作成
julia> MyApp.newcontroller("Books")
2026-06-11 14:24:53:DEBUG:Main: New controller created at app\resources\books\BooksController.jl
ロード後に使えるコマンド
| コマンド | 意味 |
|---|---|
MyApp.newcontroller("Users") | コントローラ作成 |
MyApp.newresource("Books") | リソース一式(コントローラ + ビュー + モデル)作成 |
MyApp.newmodel("Book") | SearchLight モデル作成 |
MyApp.newmigration("create_books") | DB マイグレーション作成 |
up() | HTTP サーバー起動 |
down() | サーバー停止 |
routes() | 登録されたルート一覧 |
サーバーまで一気に起動したい場合
Genie.loadapp() でロード後すぐにサーバーを起動するには:
julia> Genie.loadapp(); up()
またはシェルから一発で:
# bin/server (Genie 自動生成) を使う
./bin/server # Linux / macOS
bin\server.bat # Windows
Revise.jl で自動リロード
ファイルを編集するたびに REPL を再起動するのは面倒なので、Revise.jl で自動再読み込みを設定しておくと開発体験が良くなります。
# ~/.julia/config/startup.jl
using Revise# REPL を起動するたびに Revise が読まれる
julia> using Revise
julia> Genie.loadapp()
# ↓ ここでコントローラを編集すると保存と同時に反映
julia> ↑↑↑ も自動で取り込まれる
よくあるトラブル
| 症状 | 原因 / 対処 |
|---|---|
UndefVarError: MyApp not defined | Genie.loadapp() 前に MyApp.xxx を呼んだ。先にロードする |
| Project.toml not found | アプリディレクトリに cd していない |
サーバー起動中にもう一度 up() | ポート競合。up(port=8001) で別ポート指定 |
| 変更が反映されない | Revise を導入するか REPL を再起動 |
FAQ
Q: using MyApp と Genie.loadapp() の違い
A: Genie.loadapp() は Genie のロガー初期化やルーティングテーブル構築も含む。素の using ではこれらが行われない。
Q: VS Code から実行するには
A: julia.environmentPath をアプリディレクトリに設定し、Julia REPL を起動 → Genie.loadapp()。Julia 拡張機能の Terminal が同じ流れを補助。
Q: テスト時はどうロードする
A: test/runtests.jl の冒頭で using Pkg; Pkg.activate(joinpath(@__DIR__, "..")) と Genie.loadapp(@__DIR__) を呼ぶのが定型。
環境変数で挙動を切り替える
Genie は GENIE_ENV 環境変数でdev / prod / test 設定を切り替えます。各環境ファイルは config/env/ 配下に置かれます。
# 本番モードで起動
GENIE_ENV=prod julia --project=. -e "using Genie; Genie.loadapp(); up()"
# テストモード
GENIE_ENV=test julia --project=. -e 'include("test/runtests.jl")'
bootstrap.jl の中身を理解する
Genie アプリの起動時には bootstrap.jl が読まれます。Genie.loadapp() は内部でこのファイルを読み込み、ルート定義・初期化処理を一括で実行します。
| ファイル | 役割 |
|---|---|
| bootstrap.jl | 環境変数読み込み + Pkg activate + ルート登録 |
| config/routes.jl | URL → コントローラのマッピング定義 |
| config/initializers/ | DB接続 / ロガー / 認証等の初期化 |
| config/env/dev.jl | 環境別設定(ポート / ログレベル / DB URL) |
| app/resources/ | コントローラ / モデル / ビューの本体 |
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?