Genie

Genieとは、Juliaで最新のWebアプリケーションを開発するためのフルスタックMVC Webフレームワークである。

Genieのインストール

Genieをインストールするには、JuliaのREPLを起動して、]キーを押下する。Enterキーを押下する必要はない。

julia> ]

]キーを押下すると、Juliaがパッケージモードに切り替わり、プロンプトの表示が変わる。

(v1.1) pkg>

Juliaがパッケージモードに切り替わったら、addコマンドでGenieパッケージを追加する。

(v1.1) pkg> add https://github.com/essenciary/Genie.jl
 Cloning git-repo `https://github.com/essenciary/Genie.jl`
Updating git-repo `https://github.com/essenciary/Genie.jl`
 Cloning default registries into `C:\Users\tsuka\.julia`
 Cloning registry from "https://github.com/JuliaRegistries/General.git"
  Added registry `General` to `C:\Users\tsuka\.julia\registries\General`
Resolving package versions...
Installed AbstractTrees ────── v0.2.1
Installed Reexport ─────────── v0.2.0
Installed Compat ───────────── v2.0.0
Installed IniFile ──────────── v0.5.0
Installed Codecs ───────────── v0.5.0
Installed Nettle ───────────── v0.4.0
Installed OrderedCollections ─ v1.0.2
Installed BinDeps ──────────── v0.8.10
Installed HttpCommon ───────── v0.5.0
Installed LoweredCodeUtils ─── v0.2.0
Installed MiniLogging ──────── v0.2.0
Installed Nullables ────────── v0.0.8
Installed TextWrap ─────────── v0.3.0
Installed YAML ─────────────── v0.3.2
Installed Revise ───────────── v2.0.0
Installed URIParser ────────── v0.4.0
Installed HTTP ─────────────── v0.8.0
Installed Gumbo ────────────── v0.5.1
Installed MbedTLS ──────────── v0.6.8
Installed JuliaInterpreter ─── v0.3.1
Installed BinaryProvider ───── v0.5.3
Installed Millboard ────────── v0.2.0
Installed CodeTracking ─────── v0.4.0
Installed JSON ─────────────── v0.20.0
Installed ArgParse ─────────── v0.6.2
Updating `C:\Users\tsuka\.julia\environments\v1.1\Project.toml`
[c43c736e] + Genie v0.8.9 #master (https://github.com/essenciary/Genie.jl)
Updating `C:\Users\tsuka\.julia\environments\v1.1\Manifest.toml`
[1520ce14] + AbstractTrees v0.2.1
[c7e460c6] + ArgParse v0.6.2
[9e28174c] + BinDeps v0.8.10
[b99e7846] + BinaryProvider v0.5.3
[da1fd8a2] + CodeTracking v0.4.0
[19ecbf4d] + Codecs v0.5.0
[34da2185] + Compat v2.0.0
[c43c736e] + Genie v0.8.9 #master (https://github.com/essenciary/Genie.jl)
[708ec375] + Gumbo v0.5.1
[cd3eb016] + HTTP v0.8.0
[77172c1b] + HttpCommon v0.5.0
[83e8ac13] + IniFile v0.5.0
[682c06a0] + JSON v0.20.0
[aa1ae85d] + JuliaInterpreter v0.3.1
[6f1432cf] + LoweredCodeUtils v0.2.0
[739be429] + MbedTLS v0.6.8
[39ec1447] + Millboard v0.2.0
[f59402ec] + MiniLogging v0.2.0
[49dea1ee] + Nettle v0.4.0
[4d1e1d77] + Nullables v0.0.8
[bac558e1] + OrderedCollections v1.0.2
[189a3867] + Reexport v0.2.0
[295af30f] + Revise v2.0.0
[b718987f] + TextWrap v0.3.0
[30578b45] + URIParser v0.4.0
[ddb6d928] + YAML v0.3.2
[2a0f44e3] + Base64
[ade2ca70] + Dates
[8bb1440f] + DelimitedFiles
[8ba89e20] + Distributed
[7b1f6079] + FileWatching
[b77e0a4c] + InteractiveUtils
[76f85450] + LibGit2
[8f399da3] + Libdl
[37e2e46d] + LinearAlgebra
[56ddb016] + Logging
[d6f4376e] + Markdown
[a63ad114] + Mmap
[44cfe95a] + Pkg
[de0858da] + Printf
[3fa0cd96] + REPL
[9a3f8284] + Random
[ea8e919c] + SHA
[9e88b42a] + Serialization
[1a1011a3] + SharedArrays
[6462fe0b] + Sockets
[2f01184e] + SparseArrays
[10745b16] + Statistics
[8dfed614] + Test
[cf7118a7] + UUIDs
[4ec0a83e] + Unicode
Building Nettle ─→ `C:\Users\tsuka\.julia\packages\Nettle\SES5O\deps\build.log`
Building MbedTLS → `C:\Users\tsuka\.julia\packages\MbedTLS\X4xar\deps\build.log`
Building Gumbo ──→ `C:\Users\tsuka\.julia\packages\Gumbo\G7Qbw\deps\build.log`

(v1.1) pkg>

パッケージを追加したら、Backspaceキーを押下して、パッケージモードを終了する。

usingコマンドでGenieをスコープに追加する。

julia> using Genie
[ Info: Precompiling Genie [c43c736e-a2d1-11e8-161f-af95117fbd1e]
[ Info: Generating builtins for this julia version...

julia>

Webアプリケーションの生成

アプリケーションを生成する。

julia> Genie.REPL.new_app("example")
2019-03-21 22:07:03:INFO:Main: Done! New app created at C:\Users\tsuka\AppData\Local\Julia-1.1.0\example
2019-03-21 22:07:03:DEBUG:Main: Changing active directory to example
2019-03-21 22:07:03:DEBUG:Main: Installing app dependencies
Updating registry at `C:\Users\tsuka\.julia\registries\General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Installed CodeTracking ─ v0.3.1
Installed Revise ─────── v1.1.0
2019-03-21 22:08:27:INFO:Main: Starting your brand new Genie app - hang tight!
_____         _
|   __|___ ___|_|___
|  |  | -_|   | | -_|
|_____|___|_|_|_|___|

┌ Info:
│ Starting Genie in >> DEV << mode
└
[ Info: Logging to file at C:\Users\tsuka\AppData\Local\Julia-1.1.0\example\log\dev.log
2019-03-21 22:08:52:WARN:Main: Failed Revise tracking of C:\Users\tsuka\AppData\Local\Julia-1.1.0\example\config\initializers\searchlight.jl
[ Info: Ready!
2019-03-21 22:09:15:DEBUG:Main: Web Server starting at http://127.0.0.1:8000
2019-03-21 22:09:15:DEBUG:Main: Web Server running at http://127.0.0.1:8000

julia>

Webブラウザを起動して、URL「http://127.0.0.1:8000」を開くと、アプリケーションの画面が表示される。

Genie Welcome
Figure 1. Genie Welcome

生成されたWebアプリケーションのファイル構造は、次のようになっている。

生成されたフォルダの中に.gitkeepというファイルが入っていることがあるが、これはダミーファイルである。Gitでは空のフォルダをリポジトリに登録できないため、空のフォルダには.gitkeepというファイルを配置するのが慣習となっているためである。

生成されたアプリケーションには、次のものが含まれている。