Keiです。最近は長らく愛用していたPythonを捨ててJuliaにゾッコンの自分ですが、大学院の研究でJuliaを使うだけではWebフレームワークまで触る機会がなくてなんだかもどかしいなーと感じていました。
そんな中最近やっと少し時間が取れたので早速JuliaのWebフレームワークの中で最も開発が盛んなGenieから触っていこうと思います。
Genie公式
相変わらず日本語の情報が少ない & 古くてほぼ当てにならなかったので潔くGenieの公式レポジトリの説明を読むことにしました。恐らく以下が最新のGenie環境構築手順になります。
実行環境はUbuntu 18.04 LTS, Julia v1.1です。Julia本体の環境構築自体は本記事では説明しませんが、Macであればbrew cask install juliaですんなり入りますし、ソースからビルドしても(時間はかかりますが)特にハマりどころもなくインストールできますので、こちらの記事など参考にJuliaを使えるようにしてから以下読み進めてください。
1. Julia REPL起動後プロジェクト用の仮想環境を作り、その環境内に入る
$ julia # julia REPL起動
julia > # ] を押してpkgモードに入る
(v 1.1) pkg > activate project_env_name # project_env_name は各自適切な仮想環境の名前に置き換えてください
この時点ではまだ作成した仮想環境名を持つディレクトリはls
しても見えませんが、仮想環境内に入れている事はpkgモードの表示が
(v 1.1) pkg >
から
(project_env_name) pkg>
に変わっていることで確認できます。
2. この仮想環境内にGenieをインストール
(project_env_name) pkg > add https://github.com/essenciary/Genie.jl
これが終わった時点で初めて仮想環境名を持つディレクトリが見えるようになります。
REPLで;
を押してshellモードに入りls
するとproject_env_name
を持つディレクトリが出来ており、その中に
Project.toml
とManifest.toml
ファイルが出来ていることが確認できます。
shell > ls
project_env_name
shell > tree project_env_name
project_env_name/
├── Manifest.toml
├── Project.toml
3. 仮想環境内に入り新規プロジェクト作成と同時にサーバー起動
shell > cd project_env_name
julia > using Genie
julia> Genie.REPL.newapp("project_name") # 新規Genieプロジェクト作成 & サーバー起動
なおGenie.REPL.まで打ってタブ補間するとnewapp()の他にnew_app()という関数も出てきますがこれは恐らく古い方のコマンド?で、new_app()でプロジェクトを作成すると依存関係にあるパッケージの一部がインストールされず、再度サーバー起動しようとする時に自分の環境ではコケたので注意してください。
また参考にした記事ではこの後
julia> Genie.AppServer.startup()
が必要と書いてありましたが最新のGenieでは不要で、新規プロジェクト作成と同時にhttp://127.0.0.1:8000
でサーバーも起動するようになったようです。またここで起動したサーバーはJuliaのREPL自体をexit()で抜けない限りずっと立ち上がったままなので、例えばログが出ている状態でctrl + c
とかしてもログが一時的に画面から消えるだけでサーバー自体は生きている点に注意。
以後別セッションでサーバーを再度起動したい時などは、上で作成したプロジェクト内(not仮想環境内)で再度pkgモードに入り、
pkg > activate . # 仮想環境を有効化した後pkgモードを抜ける
julia > using Genie # Genieの使用宣言
julia > Genie.loadapp() # プロジェクトコードのロード & DevモードでGenie起動
julia > ProjectName.startup() # サーバー起動
でOK。
参考URL: